音訊與語音對抗性攻擊
針對具備語音能力 AI 系統的對抗性攻擊,涵蓋超音波注入、ASR 對抗性雜訊、隱藏語音指令、用於繞過認證的語音複製,以及即時音訊操縱。
音訊與語音對抗性攻擊
具備語音能力的 AI 系統 — 語音助理、轉錄服務、語音認證銀行、客服中心 AI 與音訊內容審核 — 容易受到對抗性攻擊,這類攻擊利用人類聽覺與機器音訊處理之間的落差。一段音訊對人類可能聽起來像是寂靜、雜訊或無害語音,卻攜帶指令讓 ASR 系統轉錄為攻擊者選定的文字。
ASR 架構與攻擊面
理解語音處理流水線可揭示各攻擊類別的著陸點。
Audio → Preprocessing → Feature Extraction → Acoustic Model → Decoder → Text
↑ ↑ ↑ ↑ ↑
| Sampling rate MFCC / Mel Neural network Language model
| Noise gate Spectrogram (CTC, Seq2Seq) beam search
|
Ultrasonic Adversarial noise Hidden commands Voice cloning
injection targets these layers exploit masking targets speaker
verification
攻擊面地圖
| 攻擊點 | 鎖定對象 | 技術類別 |
|---|---|---|
| 麥克風擷取 | 硬體頻率響應 | 超音波注入、海豚攻擊 |
| 前處理 | 噪音閘、VAD、AGC | 為通過前處理設計的對抗性雜訊 |
| 特徵擷取 | MFCC / mel-spectrogram 計算 | 頻譜域構造的擾動 |
| 聲學模型 | 神經網路推論 | 梯度式對抗性樣本 |
| 語言模型解碼器 | 集束搜尋 / CTC 解碼 | 利用解碼器對常見片語的偏好 |
| 語者驗證 | 聲紋比對 | 語音複製、重放攻擊 |
超音波注入
超音波注入利用麥克風會擷取人類聽覺範圍以外(20kHz)的頻率這一事實 — 麥克風硬體與放大電路中的非線性能將超音波訊號解調至可聽頻段。
超音波攻擊運作方式
產生語音指令
使用 TTS 引擎將目標指令合成為正常音訊波形(例如 "Hey Siri, send a message")。
調變到超音波載波上
將語音指令振幅調變到 25-45kHz 的載波頻率上。載波本身對人類不可聽。
透過超音波喇叭傳送
將調變後訊號透過能輸出超音波的喇叭(壓電換能器、參數式喇叭)播放。
麥克風非線性解調
目標裝置的麥克風與放大電路引入非線性失真,將超音波訊號解調,在可聽頻段重建原始語音指令。
ASR 處理解調後的指令
ASR 系統收到看似正常的語音指令並予以轉錄。
import numpy as np
from scipy.io import wavfile
def create_ultrasonic_payload(command_audio, carrier_freq=25000,
sample_rate=96000):
"""
Amplitude-modulate a voice command onto an ultrasonic carrier.
"""
# 將指令音訊正規化至 [0, 1] 以利 AM 調變
command_normalized = (command_audio - command_audio.min()) / \
(command_audio.max() - command_audio.min())
t = np.arange(len(command_normalized)) / sample_rate
carrier = np.sin(2 * np.pi * carrier_freq * t)
# 振幅調變:carrier * (1 + modulation_depth * signal)
modulation_depth = 0.8
modulated = carrier * (1 + modulation_depth * command_normalized)
modulated = np.int16(modulated / np.max(np.abs(modulated)) * 32767)
return modulated, sample_rateASR 對抗性雜訊
對 ASR 模型的梯度式對抗性攻擊,是在音訊訊號上加入精心計算的雜訊,使模型產出攻擊者選定的轉錄。擾動可加在寂靜上(產生聽起來像雜訊卻被轉錄為指令的音訊)或現有音訊上(產生聽起來正常卻被轉錄為不同內容的音訊)。
攻擊方法
完全存取 ASR 模型(權重、架構、梯度)時,使用 CTC 損失最佳化找出產生目標轉錄的最小擾動。
import torch
def adversarial_asr_attack(model, audio, target_text, epsilon=0.02,
steps=1000, lr=0.001):
"""White-box adversarial attack against a CTC-based ASR model."""
target_ids = model.tokenizer.encode(target_text)
target_tensor = torch.tensor([target_ids])
delta = torch.zeros_like(audio, requires_grad=True)
optimizer = torch.optim.Adam([delta], lr=lr)
for step in range(steps):
adv_audio = audio + delta
log_probs = model(adv_audio)
input_lengths = torch.tensor([log_probs.shape[1]])
target_lengths = torch.tensor([len(target_ids)])
loss = torch.nn.functional.ctc_loss(
log_probs.transpose(0, 1), target_tensor,
input_lengths, target_lengths
)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 將 delta 投影至 epsilon 球
with torch.no_grad():
delta.clamp_(-epsilon, epsilon)
return (audio + delta).detach()沒有梯度存取時,使用遺傳演算法、估計法(NES)或從開源 ASR 模型(Whisper、DeepSpeech)轉移攻擊。
黑盒攻擊關鍵做法:
- 針對開源代理(如 Whisper)訓練對抗性擾動
- 透過 API 查詢測試轉移到目標系統
- 若 API 回傳信心分數,採用以查詢為基礎的精煉
Whisper 到商用 ASR API 的轉移率介於 15-40%,視目標轉錄長度與擾動預算而定。
空中傳輸攻擊需在喇叭播放、房間聲學與麥克風擷取後存活,需要:
- 房間脈衝響應 (RIR) 模擬:最佳化時將對抗性音訊與模擬 RIR 做卷積
- 較大擾動預算:Epsilon 需比數位攻擊大 3-5 倍
- 頻帶限制:將擾動限於喇叭可重現的頻率(約 100Hz-18kHz)
- 變換期望 (EoT):在隨機音量、背景雜訊與房間條件下最佳化
在受控環境中,空中傳輸對抗性音訊攻擊成功率 30-60%,吵雜的真實世界則顯著下降。
隱藏語音指令
隱藏語音指令將語音訊號嵌入主音訊訊號的心理聲學遮蔽閾值以下。人耳無法感知隱藏語音,但麥克風捕捉完整訊號,ASR 系統會轉錄兩層。
心理聲學遮蔽利用
| 參數 | 值 | 效果 |
|---|---|---|
| SNR 閾值 | 低於主訊號 -25 到 -35 dB | 低於此值隱藏語音不可聽 |
| 頻率遮蔽範圍 | 遮蔽者的 1/3 八度帶內 | 鄰近頻率遮蔽較強 |
| 時間遮蔽 | 遮蔽者停止後 5-20ms | 短暫視窗內隱藏訊號被遮蔽 |
| 最佳嵌入 | 將隱藏語音頻譜內容對準遮蔽訊號 | 最大化感知不可見性 |
def embed_hidden_command(cover_audio, command_audio, snr_db=-30):
"""Embed a hidden voice command below the masking threshold of cover audio."""
if len(command_audio) > len(cover_audio):
command_audio = command_audio[:len(cover_audio)]
else:
command_audio = np.pad(command_audio,
(0, len(cover_audio) - len(command_audio)))
cover_power = np.mean(cover_audio ** 2)
command_power = np.mean(command_audio ** 2)
scale = np.sqrt(cover_power / command_power * 10 ** (snr_db / 10))
hidden = cover_audio + scale * command_audio
return hidden用於繞過認證的語音複製
語音複製攻擊合成目標語者的聲音以繞過語者驗證系統。現代 TTS 與語音轉換模型僅需 3-10 秒參考音訊。
攻擊方法論
蒐集目標語音樣本
從公開來源(會議演講、Podcast、社群媒體影片、語音信箱問候)蒐集目標語者錄音,目標為 10-30 秒乾淨語音。
訓練或微調語音複製模型
使用開源語音複製框架(Coqui TTS、OpenVoice、VALL-E 變體)建立模型以目標聲音產生語音。零樣本模型無需微調但保真度較低。
產生認證片語
合成目標系統所需的特定片語(例如 "My voice is my password"、隨機密碼短語或特定句子)。
對語者驗證測試
將複製音訊送至認證系統,記錄接受/拒絕與信心分數。迭代產生參數(語速、音高變化、雜訊等級)以最大化相符分數。
套用後處理以擊敗活體偵測
加入微量房間迴響、麥克風頻率響應模擬與低強度背景雜訊,讓複製音訊聽起來像現場錄音而非乾淨合成。
語者驗證規避技術
| 防禦 | 規避 |
|---|---|
| 重放偵測(通道分析) | 模擬目標麥克風頻率響應並加入房間脈衝響應 |
| 活體偵測(呼吸、唇齒聲) | 加入合成呼吸聲與微停頓 |
| 挑戰-回應(隨機片語) | 使用即時語音轉換以目標聲音說出片語 |
| 行為生物辨識(節奏、遲疑) | 以較長樣本微調 TTS 模型以捕捉說話風格 |
即時音訊操縱
即時攻擊作用於即時音訊串流 — 以最小延遲攔截、修改並轉發音訊。目標為 VoIP 通話、即時轉錄與即時語音助理。
即時攻擊向量
| 攻擊 | 延遲預算 | 使用情境 |
|---|---|---|
| 即時語音轉換 | <100ms | 在即時通話中冒充特定語者 |
| 即時指令注入 | <50ms | 對 ASR 正在處理的即時音訊串流注入指令 |
| 對抗性雜訊疊加 | <20ms | 加入即時擾動以改變進行中語音的轉錄 |
| 選擇性字詞替換 | <200ms | 在即時轉錄中偵測並替換特定字詞 |
realtime_audio_injection 使用 PyAudio 開啟輸入與輸出串流,逐塊讀取即時音訊、依目標 SNR 將注入訊號混入,並寫至虛擬音訊裝置,直到注入訊號結束。
紅隊評估框架
列舉音訊輸入面
辨識目標接受音訊的所有點:麥克風輸入、檔案上傳、VoIP 串流、語音認證、音訊分析 API。若可辨識,記下所用 ASR 引擎。
先測試重放攻擊
錄製並重放合法音訊。若重放能擊敗語音認證,更複雜攻擊不必要。這建立基準。
測試超音波注入(實體存取情境)
若威脅模型包含實體距離,於 1m、3m、5m 對目標裝置測試超音波指令注入。
構造對抗性音訊樣本
以開源 ASR 模型作為代理,為 5-10 個目標片語產生對抗性樣本,測試轉移到目標系統。
測試隱藏語音指令
在 -25dB、-30dB、-35dB SNR 下將指令嵌入覆蓋音訊,判斷目標 ASR 仍能轉錄的最低 SNR。
評估語音複製影響
若目標使用語者驗證,蒐集公開語音樣本並測試複製音訊是否能通過認證,回報所需最短樣本長度。
儘管載波頻率高於人類聽覺範圍,超音波注入攻擊為何依然有效?
相關主題
- 多模態攻擊向量 — 涵蓋影像與文件向量的多模態攻擊面總覽
- 對抗性擾動攻擊 — 對視覺編碼器使用類似技術的梯度式攻擊
- 文件式注入 — 透過文件格式的非音訊注入向量
- 社交工程與人因 — 社交工程攻擊鏈中的語音複製
參考文獻
- Zhang et al., "DolphinAttack: Inaudible Voice Commands" (2017) — 奠基性超音波注入研究
- Carlini & Wagner, "Audio Adversarial Examples: Targeted Attacks on Speech-to-Text" (2018) — 白盒 ASR 對抗性攻擊
- Abdullah et al., "Practical Hidden Voice Attacks against Speech and Speaker Recognition Systems" (2019)
- Chen et al., "Real-Time Adversarial Attacks Against Deep Learning-Based Speech Recognition Systems" (2019)
- Wang et al., "ASVspoof 2019: A Large-Scale Public Database of Synthesized, Converted and Replayed Speech" (2020) — 語者驗證攻擊基準
- Schonherr et al., "Adversarial Attacks Against Automatic Speech Recognition Systems via Psychoacoustic Hiding" (2019)
- Li et al., "Adversarial Music: Real World Audio Adversary Against Wake-word Detection System" (2019)