## Digital Signal Processing Final Project ### 林謙 R10922A06 ### 閱讀論文 主題為語音辨識攻擊以及防禦攻擊實例 1. Audio Injection Adversarial Example Attack 2. SIEVE: Secure In-Vehicle Automatic Speech Recognition Systems reference: https://openreview.net/forum?id=iEkBFdmcSv https://www.usenix.org/conference/raid2020/presentation/wang-shu ### 動機 我目前在研究所的研究領域是自駕車與資訊安全(vehicle trajectory intrusion detection),而資訊安全一直以來都是相當重要的主題,與我們生活各方面息息相關,因此我想將老師上課時曾提過的語音辨識主題與資訊安全結合。 我們普遍都有聽說過對影像的攻擊,像是在一張長頸鹿圖片中加入人類看不到的noise就可以讓機器判斷成熊貓。但是相比起在影像中做攻擊,在聲音中做攻擊是更難的一件事情,因為聲音在Mel-Frequency Cepstrum(MFC)的預處理上是相當複雜的,因此我認為多研究關於聲音攻擊是很有價值的。 我選擇了兩篇論文作為我報告的主題,第一篇是介紹一個具有高隱蔽性的語音攻擊模型。而第二篇是防禦語音辨識攻擊應用在汽車系統中。一攻一守的搭配,相信可以讓我綜觀語音辨識在資訊安全中的流程。 ### Audio Injection Adversarial Example Attack 作者提出現有的語音攻擊模型有著以下缺點: 1. 因為訊號修改的部分分佈在整個頻譜上,因此攻擊容易被發現。 2. 現有的攻擊模型容易無法同時兼容修改前後語句的意思,只能取得修改後語句的意思,因此也增加攻擊被發現的風險。 因此作者提出了一個具有高隱蔽性的攻擊模型。 #### 實驗架構 首先定義好需要用到的參數。 | $x$ | $\delta$ | $p$ | $t$ | |:----------:|:---------:|:---------:|:---:| | 原始 audio | 偏差(perturbation) | audio語意 | 目標語句 | | $f()$ | $l()$ | |:----------:|:---------:| | Threat model | 產生attack的loss function | | $l_{model}()$ | $l_{metric}()$ | |:---------:|:---:| | output和目標語句差的loss function | attack和audio差的loss function | 我們的目標是將原始input audio $x$的語意$p$轉換成目標語句$t$。語音攻擊的實例可以藉由原始audio加上偏差$\delta$。換句話說,產生語音攻擊的目標即是$$ f(x+\delta) = t $$。 藉由迭代運算ASL演算法中的loss function $l()$ 的梯度下降,最終可以得到語音攻擊的資料。 $$ l(x, \delta, t)=l_{model}(f(x+\delta),t)+c\times l_{metric}(x, x+\delta) $$ ASL演算法的數學相較複雜,我在這裡附上該演算法的連結做為額外補充。(https://arxiv.org/abs/1901.10300) 我們可以用圖例說明結果: ![](https://i.imgur.com/rAoR1Si.jpg) 在輸入聲音"How are you"後,經過迭代運算ASL演算法的梯度下降後,產出的語音攻擊會被機器視為"Open the door and how are you",就可以讓系統回應你"Great"的同時,做出攻擊者想要的任務(偷偷地打開門)。因此,訊息接收方因為得到了原有指令的完成,很難發現會有問題。 #### 實驗結果 作者使用上述辦法產生語音攻擊的成功率有0.85,而且成功產生出的語音攻擊因為加入的偏差($\delta$)很小,而且修改的部分只在頻譜中很靠前的位置,所以並不容易被發現。 我們也可以由下圖看到使用此演算法的特點,很明顯的使用既有的演算法(第三列)產生攻擊資料時,對於訊號的擾動是遍布整個頻譜的。而使用作者提出的演算法(第二列)只會在開頭的部分產生些微的擾動。 ![](https://i.imgur.com/gSIp79P.jpg) ### SIEVE: Secure In-Vehicle Automatic Speech Recognition Systems 銜接上篇論文,如果被攻擊的對象是個safety critical system,像是交通工具、核電廠等系統,一個錯誤的命令就可以導致危及生命的後果,因此如何防範語音辨識攻擊是個很重要的課題。我選擇了一篇汽車系統防禦語音辨識攻擊的論文做為第二篇報告的主題。我認為這篇論文的重點是它在防禦方法中同時提出了訊號層面和物理空間上解決的辦法。 #### 實驗架構 給定一輛四人座汽車,其中$D$為駕駛者,$P_F$為副駕駛座,$P_{RL}$和$P_{RR}$分別為後排的左側乘客和右側乘客。並且汽車的四角皆搭載著音響(喇叭)$S$,$M1$和$M2$為兩個接收語音指令的麥克風。 ![](https://i.imgur.com/Zf7ImB2.jpg) 實驗中預期駕駛者$D$會發送語音指令給麥克風$M1$和$M2$,不過也有可能語音指令被不同種類模式所攻擊,讓車輛無法做出正確的行動。 #### 攻擊模型 論文中使用了多種語音攻擊模式: 1. 從四周的音響發出的聲音: 例如攻擊者可以將指令潛藏在下載的音樂中,我們很難從旋律上聽得出來問題在哪裡,或者是將攻擊訊號放在超出人類能聽到的頻率。很可惜的是論文中並沒有確切提到更改語音訊號的數學公式。 2. 駕駛或乘客的手機通話 3. 駕駛者以外的乘客所發出的聲音: 像是有時候小朋友會因為好奇心,故意去亂下指令給系統。 #### 防禦系統 總共分成三個方法來偵測語音攻擊並且防禦,我主要會將重點放在方法二和方法三。 1. 偵測聲音是否是單一來源而不是多重來源: 因為指令只會是由駕駛所發出的,過濾掉多餘的聲音可以讓指令更明顯。 2. 分辨聲音是駕駛人發出還是由音響發出 3. 分辨聲音是由駕駛還是其他乘客發出 **方法二:分辨聲音是駕駛人發出還是由音響發出** 這個方法是在訊號層面上辨識出語音攻擊,分為兩個步驟。 補充說明:以下作者皆設定音響聲為語音攻擊的來源。 1. frequency-domain power spectrum verification 分析聲音內高低頻的分佈來判斷是否是人聲。人發出的聲音落在85至4kHz的範圍中,尤其在低頻(85至2kHz)中的佔比較高。而由音響所發出的聲音音頻雖然也落在85至4kHz中,不過在低頻有相當程度的銳減,所以音響聲在高頻的比率會比人聲來的高,可以由以下兩張圖片作為參考。 ![](https://i.imgur.com/gc3aOYz.jpg) 不過,比較厲害的攻擊者為了避免掉高頻的比率高這個特性,會加強音響聲在低頻的強度。 藉由計算transmission properties $K(f)$,攻擊者可以設計出inverse filter $K^{-1}(f)$,且符合 $$ K(f)*K^{-1}(f) = 1 $$ 將音響聲乘上$K^{-1}(f)$就可以得到新的帶有高比率低頻的音響聲。而為了辨識出改良過後的攻擊,使用了接下來要提到的演算法。 2. time-domain local extrema cross-check 在改良後的音響聲雖然在高低頻的分佈上更趨近於人聲,不過在音響聲在time domain的訊號上存在著ringing artifact的特性。我們可以從下圖中很明顯地看到音響聲在訊號上時不時有著細小的連續震盪,這就是ringing artifact。 ![](https://i.imgur.com/sXWCj5N.jpg) 最後可以使用sliding window對整組訊號作分析,如果在sliding window中的中點是maxima或minima,就定義這個中點為local extrema,統計完整組訊號中的local extrema後,取一個threshold作為它是人聲或是音響聲的分界點。 **方法三:分辨聲音是由駕駛還是其他乘客發出** 這個方法則是在物理空間層面上分辨出語音攻擊。 1. Time Difference of Arrival 回顧先前提到的實驗架構,汽車包含了駕駛以及其他三位乘客,我們要如何正確地分辨出聲音是由駕駛所發出的?很簡單,就是藉由聲音接收器(麥克風)與聲音來源的角度來判斷。 下圖是sensor以及訊號關係圖。$M1$和$M2$是聲音接收器(麥克風),$D_{0}$是兩個聲音接收器的距離,$D$是發聲者和聲音接收器的距離,$\alpha$則是聲音來源與聲音接收器的夾角。 ![](https://i.imgur.com/elNBdwN.jpg) 因為兩個聲音接收器$M1$和$M2$連接線的法向量與駕駛平行,如果$\alpha$趨近於$\pi$/2,我們就視聲音來源為駕駛者。計算$\alpha$的方式可以由很基礎的物理公式所推得 $$ \alpha = \arccos(\dfrac{\Delta{N}*v}{D_{0}*f_{s}})$$ 其中$\Delta{N}$是聲音的sampling unit,$v$是聲速,$f_{s}$是麥克風的sampling rate。 2. Spectrum-assisted Detection 雖然說用聲源角度來判定聲音是不是由駕駛發出是個很直觀的方法,但是在實際情況總會有一些意想不到的情況發生。例如:駕駛用很懶散的姿勢開車,把身體靠向椅子的其中一側,讓角度發生偏差。或者是後座的人把頭伸到前座講話,導致聲源角度雖然對了,但是判斷到的卻不是駕駛真正想說的話。 因此,作者加入了駕駛聲音中的特徵來輔助判斷,也就是說要同時符合「聲音角度是否來自駕駛者方向」和「聲音是否為駕駛所講」兩點,才能被系統判斷成聲音是來自駕駛的指令。作者使用了駕駛喚起系統說的指令(wake up command)做為資料集,例如:Hi, SIEVE,再利用Speaker recognition的方法,例如上課提到的MAP (Maximum A Posteriori) Adaptation、Maximum Likelihood Linear Regression (MLLR),就可以成功辨識出駕駛的聲音。 #### 實驗成果 成果部分也是分成三種檢測攻擊辦法來說明。 1. 偵測聲音是否是單一來源而不是多重來源 作者將駕駛的聲音加上其他人(speakers)的聲音,從多聲源中分辨出駕駛的聲音的成功率如下表: | 1 speaker | 2 speakers | 3 speakers | 4 speakers | |:--------- | ---------- | ---------- | ---------- | | 1 | 0.66 | 0.75 | 1 2和3 speakers比4 speakers的成功率比較低的原因作者沒有說明,但我個人認為是因為他們準備的資料數量太少,2和3 speakers只有6筆資料而4 speakers只有一筆資料,資料太少容易錯估演算法的正確性。 2. 分辨聲音是駕駛人發出還是由音響發出 * frequency-domain power spectrum verification 根據統計,97.3%由人類所發出的聲音,低頻率(85至2kHz)佔整體聲音0.995的比率。而由機器所發出的聲音,低頻率的比率會比較低。作者選擇了0.96的低頻率比率當作threshold,detection accuracy高達0.991。 * time-domain local extrema cross-check 在經過攻擊者調整過的聲音,已經很難用低頻率比率來去偵測,因此用 local extrema cross-check來偵測,作者選擇了local extrema ratio 0.35作為threshold,可以看到這正是人類發出的聲音和調整過後的聲音在local extrema的交界處detection accuracy可以到0.996。 ![](https://i.imgur.com/5B3Khoe.jpg) 3. 分辨聲音是由駕駛還是其他乘客發出 * Time Difference of Arrival 使用聲音來源角度來判斷是否聲音由駕駛所發出可以有0.965的accuracy。 * Spectrum-assisted Detection 作者取了60筆來自6位受測者的wake up command,總共產生3600筆配對資料,藉由分析訊號內的特徵,辨別原受測者的聲音成功率可以高達0.928。最後,我們可以藉由老師上課提過的PCA來將不同受測者的聲音在三維空間中具現化,可以很明顯的發現不同的受測者各自都形成一個cluster。 ![](https://i.imgur.com/OZFSIPk.jpg) ### 總結 通過第一篇論文讓我對語音攻擊有概括性的了解,並且知道現有的攻擊模型存在著甚麼缺點,以一個攻擊者的角度來設計模型。而第二篇論文除了讓我加深對語音辨識的理解,也可以讓我知道在車輛中的資訊安全(intrusion detection)在不同種類的input中有怎麼樣不同的解法與思維,還有在現實中會需要考慮相當多的case才能設計出一套完善的防禦系統。閱讀完這兩篇論文,讓我對於語音辨識在資訊安全上的攻防兩端都有了一定程度的了解。
{"metaMigratedAt":"2023-06-17T17:33:24.626Z","metaMigratedFrom":"Content","title":"Untitled","breaks":true,"contributors":"[{\"id\":\"3816a5fc-12c6-40e1-b681-61927195e1cc\",\"add\":6926,\"del\":969}]"}
    189 views