當前位置:
首頁 > 知識 > 手指上的安全

手指上的安全

描述

該工具的主要目標是利用敲擊鍵盤時產生的聲音作為一種邊信道攻擊來猜測輸入文本的內容。為了達到這個目標,該演算法以訓練集作為輸入,這個訓練集包括音頻記錄和記錄期間你敲了哪些鍵盤按鍵。通過這些數據,該演算法可以學習到不同按鍵敲擊的聲音,之後就可以通過捕獲的音頻來嘗試識別敲鍵盤的聲音。訓練數據集的收集非常具體,採集收據的根據也就是鍵盤、麥克風還有兩者之間的相對位置。任何因素髮生了變化,這個方法就變得毫無意義了。不過好在,當前的方法可以進行實時預測。

這個方法涉及到的主要步驟如下:

收集訓練數據 創建預測模型,不斷學習 檢測到鍵盤輸入 預測具體的每一個輸入鍵

收集訓練數據

這個收集訓練數據的方法已經忽略了兩次鍵盤敲擊之間的聲音。我們只保留實際按鍵前和按鍵後75-100ms的音頻。這樣做可能會有點不太精確,因為鍵盤敲擊的延遲時間是隨機的,程序捕獲這種事件,也會受到硬體和軟體因素的影響。

舉個例子,下圖是敲擊我鍵盤上的字母「g」的完整聲波:

從圖中可以看到,在按鍵峰值之後,還有一個釋放按鍵的峰值。而keytap直接忽略了這個釋放峰值。這個可能會提取到額外的信息,不過為了簡單起見,釋放峰值的這個數據就直接放棄不用了。所以,最終字母「g」這個按鍵的訓練數據聲波圖如下:

當然,這個75ms的間隙對打字速度有一定的限制,如果在這個時間段內,按鍵有重疊的話,不同按鍵的訓練數據就會混雜在一起。

從上圖中還可以觀察到一點就是某個按鍵的訓練聲波圖越多越好,結合多個聲波圖,可以幫助減少環境噪音。而且,每個人按鍵的聲音可能稍有不同,這就取決於用戶按鍵的方式了。所以,你可能會捕獲到某個按鍵的不同的聲音。

創建預測模型

這時候就體現出人們的非凡創造性了,可以通過機器學習,人工智慧和神經網路等技術來創建預測模型。不過keytap使用了最簡單的一種辦法。對於每一個訓練按鍵,我們執行以下3個步驟:

1.對齊收集到的波形峰值。這有助於避免檢測按鍵之前的隨機延遲時間,前面解釋過了。

2.基於相似性度量來優化聲波的對齊方式,因為有時候,聲波的峰值並不是最佳指標,所以我們要選擇一個更加精確的方法。

3.對其波形進行簡單加權平均。權重由相似性度量定義。

我們並沒有直接跳到步驟2,而是要先執行第一步,因為相似性度量的計算是很吃CPU的。而步驟1已經有效的縮小了對齊的範圍並減少了計算量。

步驟3之後,我們最終會得到每個按鍵的平均波形。之後會將其與捕獲到的數據進行對比並預測最有可能的輸入按鍵。

keytap中使用的相似性度量是交叉相關(CC),公式如下:

這裡的Ai和Bi是被比較的兩種波形的波形樣本。CC值越高,波形越相似。當然也可以使用其他的相似性度量的測試方法。

不同按鍵之間間隔的計時信息其實也可以加入到預測模型中,不過我避免了使用這種方法,因為它更加難以實現。

檢測鍵盤輸入

keytap使用相對簡單的閾值技術來檢測原始音頻中的按鍵事件。顯然,當用戶敲擊按鍵時,我們預計會有一個很高的峰值,這也正是我們想要的效果。閾值相對於過去幾百毫秒的樣本平均強度而言是自適應的。

這個方法並不是十分完美,但我現在還不知道更有效的方法來檢測按鍵事件。

預測敲了哪些按鍵

一旦確定了可能的按鍵事件,我們就可以定位到波形的峰值位置,計算該部分波形與訓練數據中所有平均波形的相似性度量。我們允許在峰值附近有小範圍的調整(前面提到過)。我們認為相似性度量最高的將對應的是敲擊的按鍵。

幾點觀察

我注意到即時這個演算法沒有檢測到敲擊的正確按鍵,它仍然能夠預測到附近的按鍵,意思也就是定位到了正確鍵的下一個鍵。對於這個現象,我認為有下面兩種解釋:

1.鍵盤上相鄰的按鍵發出的聲音類似

2.在這個方法中,鍵相對於麥克風的位置對預測起著決定性的作用

我認為第一種解釋不太可能,所以很可能是第二種解釋。

另外,我還觀察到機械鍵盤比非機械鍵盤更容易遭受這種鍵盤竊聽攻擊。

keytap2

我很篤定肯定有一種實現預測的方法是根本不需要收集訓練數據的。假如用戶使用某種已知語言來輸入文本,比如英語,那麼關於該語言的N元模型統計信息和按鍵檢測的相似性度量值結合起來就足夠檢測出輸入的文本了。實際上,歸根到底這其實就是破解置換密碼的一種攻擊。

keytap2嘗試著去證明這種攻擊。我也在做這方面的研究,但是我卡在了基於他們的CC公式對按鍵進行聚類分析的部分。但我認為至少我已經準備好了置換密碼破解工作。如果在實際中破解成功的話,我將會提供更多的細節。

結束語

科學文獻上,關於這個主題的論文有很多。其中有一篇論文中的一個特別的方法給了我很大的啟發,就是Don』t Skype&Type!大家有興趣的可以看看。但大多數情況下,我都是自己獨立解決了問題,沒有閱讀別人論文中的細節和他們的研究成果,我覺得自己解決問題更有意思,更有挑戰性。

老實說,真沒想到這篇文章會受到巨大的關注,完全在意料之外。這一切始於我在一篇Hacker News中發布的一條評論,然後被一個著名的開發工程師注意到了。然後,我的Twitter消息就炸了。

不管怎樣,希望這篇文章對大家有所幫助,謝謝!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 尤沐西子 的精彩文章:

文件系統、服務、防火牆、SELINUX——安全四大金剛
使用 SSH和SFTP 協議

TAG:尤沐西子 |