郭文玲
主要講解一些關(guān)于keytap工具的技術(shù)細(xì)節(jié),也分享一些自己的幾點(diǎn)想法。
描述
該工具的主要目標(biāo)是利用敲擊鍵盤時(shí)產(chǎn)生的聲音作為一種邊信道攻擊來猜測輸入文本的內(nèi)容。為了達(dá)到這個目標(biāo),該算法以訓(xùn)練集作為輸入,這個訓(xùn)練集包括音頻記錄和記錄期間敲了哪些鍵盤按鍵。通過這些數(shù)據(jù),該算法可以學(xué)習(xí)到不同按鍵敲擊的聲音,之后就可以通過捕獲的音頻來嘗試識別敲鍵盤的聲音。訓(xùn)練數(shù)據(jù)集的收集非常具體,采集收據(jù)的根據(jù)也就是鍵盤、麥克風(fēng)還有兩者之間的相對位置。任何因素發(fā)生了變化,這個方法就變得毫無意義了,不過好在,前的方法可以進(jìn)行實(shí)時(shí)預(yù)測。
收集訓(xùn)練數(shù)據(jù)
這個收集訓(xùn)練數(shù)據(jù)的方法已經(jīng)忽略了2次鍵盤敲擊之間的聲音。只保留實(shí)際按鍵前和按鍵后75~100 ms的音頻。這樣做可能會有點(diǎn)不太精確,因?yàn)殒I盤敲擊的延遲時(shí)間是隨機(jī)的,程序捕獲這種事件,也會受到硬件和軟件因素的影響。
舉個例子,下圖是敲擊鍵盤上的字母“g”的完整聲波。
從圖中可以看到,在按鍵峰值之后,還有一個釋放按鍵的峰值。而keytap直接忽略了這個釋放峰值。這可能會提取到額外的信息,不過為了簡單起見,釋放峰值的這個數(shù)據(jù)就直接放棄不用。所以最終字母“g”這個按鍵的訓(xùn)練數(shù)據(jù)聲波圖如下:
當(dāng)然,這個75 ms的間隙對打字速度有一定的限制,如果在這個時(shí)間段內(nèi),按鍵有重疊的話,不同按鍵的訓(xùn)練數(shù)據(jù)就會混雜在一起。
從圖中還可以觀察到的是某個按鍵的訓(xùn)練聲波圖越多越好,結(jié)合多個聲波圖,可以幫助減少環(huán)境噪音。而且,每個人按鍵的聲音可能稍有不同,這就取決于用戶按鍵的方式,所以也可能會捕獲到某個按鍵的不同的聲音。
創(chuàng)建預(yù)測模型
這就體現(xiàn)出人們的非凡創(chuàng)造性,可以通過機(jī)器學(xué)習(xí)、人工智能和神經(jīng)網(wǎng)絡(luò)等技術(shù)來創(chuàng)建預(yù)測模型。不過keytap使用了最簡單的一種辦法,對于每一個訓(xùn)練按鍵執(zhí)行以下的3個步驟:
1.對齊收集到的波形峰值。這有助于避免檢測按鍵之前的隨機(jī)延遲時(shí)間。
2.基于相似性度量來優(yōu)化聲波的對齊方式,因?yàn)橛袝r(shí),聲波的峰值并不是最佳指標(biāo),所以要選擇一個更加精確的方法。
3.對其波形進(jìn)行簡單加權(quán)平均,權(quán)重由相似性度量定義。我們并沒有直接跳到步驟2,而是要先執(zhí)行第一步,因?yàn)橄嗨菩远攘康挠?jì)算是很吃CPU。而步驟1已經(jīng)有效地縮小了對齊的范圍并減少了計(jì)算量。
步驟3之后,最終會得到每個按鍵的平均波形。之后會將其與捕獲到的數(shù)據(jù)進(jìn)行對比并預(yù)測最有可能的輸入按鍵。
keytap中使用的相似性度量是交叉相關(guān)(CC),公式如下:
式中A和B是被比較的2種波形的波形樣本,CC值越高,波形越相似,當(dāng)然也可以使用其他的相似性度量的測試方法。
不同按鍵之間間隔的計(jì)時(shí)信息其實(shí)也可以加入到預(yù)測模型中,不過這里沒有使用這種方法,因?yàn)樗与y以實(shí)現(xiàn)。
檢測鍵盤輸入
keytap使用相對簡單的閾值技術(shù)來檢測原始音頻中的按鍵事件。顯然當(dāng)用戶敲擊按鍵時(shí),預(yù)計(jì)會有一個很高的峰值,這也正是我們想要的效果。閾值相對于過去幾百毫秒的樣本平均強(qiáng)度而言是自適應(yīng)的,這個方法并不是十分完美,但現(xiàn)在還沒有更有效的方法來檢測按鍵事件。
預(yù)測敲了哪些按鍵
一旦確定了可能的按鍵事件,就可以定位到波形的峰值位置,計(jì)算該部分波形與訓(xùn)練數(shù)據(jù)中所有平均波形的相似性度量。允許在峰值附近有小范圍的調(diào)整(前面提到過),相似性度量最高的將對應(yīng)的是敲擊的按鍵。
幾點(diǎn)觀察
即使這個算法沒有檢測到敲擊的正確按鍵,它仍然能夠預(yù)測到附近的按鍵,也就是定位到了正確鍵的下一個鍵。對于這個現(xiàn)象,本人認(rèn)為有下面2種解釋:
1.鍵盤上相鄰的按鍵發(fā)出的聲音類似;
2.在這個方法中,鍵相對于麥克風(fēng)的位置對預(yù)測起著決定性的作用。
根據(jù)經(jīng)驗(yàn)本人認(rèn)為第1種解釋不太可能,所以很可能是第2種解釋。
另外,還觀察到機(jī)械鍵盤比非機(jī)械鍵盤更容易遭受這種鍵盤竊聽的攻擊。
keytap2
肯定有一種實(shí)現(xiàn)預(yù)測的方法是根本不需要收集訓(xùn)練數(shù)據(jù)的,假如用戶使用某種已知語言來輸入文本,比如英語,那么關(guān)于該語言的N元模型統(tǒng)計(jì)信息和按鍵檢測的相似性度量值結(jié)合起來就足夠檢測出輸入的文本了。實(shí)際上,歸根到底這其實(shí)就是破解置換密碼的一種攻擊。
keytap2嘗試著去證明這種攻擊。本人也在做這方面的研究,但是卡在了基于他們的CC公式對按鍵進(jìn)行聚類分析的部分。但本人認(rèn)為至少已經(jīng)準(zhǔn)備好了置換密碼破解工作,如果在實(shí)際中破解成功的話,將會提供更多的細(xì)節(jié)。
科學(xué)文獻(xiàn)上,關(guān)于這個主題的論文有很多,其中有一篇論文中的一個特別的方法給了我很大的啟發(fā),那就是Dont Skype&Type!大家有興趣的可以去看看,不管怎樣,希望這篇文章對大家有所幫助。