噓!不可外傳的辦公室黑科技,看多少人在背後說你壞話

內容來源:量子位,連接:https://mp.weixin.qq.com/s/EpP4C4kVhsSaLBhj_9wB7whtml

閱讀字數:3628 | 10分鐘閱讀git

摘要

有沒有想過,有一天,鍵盤會出賣你?github

沒想到吧,鍵盤真的會出賣你。算法

對,就是你每日敲擊的鍵盤。當指尖在鍵盤上跳躍,清脆的噼啪聲此起彼落時,你輸入的全部信息,包括那些情真意切的詞句,那些不欲人知的心事,還有你的網絡帳戶、銀行密碼……全都被它泄露了。安全

鍵盤,還能被黑???網絡

今天,一個叫作Keytap的「黑科技」在國外火了。Keytap經過監聽你敲擊鍵盤的聲音,就能還原出你輸入的內容。ide

並且,只須要經過你電腦裏的麥克風,就能完成聲波採集的任務。學習

在一段發佈於網上的Demo裏,Keytap做者展現了在iMac+Filco機械鍵盤環境中,這個算法的優秀程度,請看:3d

四步偷窺大法

搭建這樣一個「偷窺」打字的模型並不難,Keytap算法也已經開源了(源代碼見文末)。跟着作,只要以下四步:orm

一是,收集訓練數據;


二是,搭建預測模型,學習一下數據;


三是,檢測出有人在敲鍵盤;


四是,檢測出ta在打什麼字。

收集訓練數據

Keytap收集數據時,只保留每次敲擊先後75-100毫秒的音頻。

這就是說,並不是連續取樣,兩次敲擊之間有一部分是忽略的。

這種作法是會犧牲一些信息量的。

從敲下按鍵,到程序受到指令,這之間有隨機延時,與硬件和軟件都有關係。

好比,按下g鍵的完整波形長這樣:

看圖像能夠發現,敲擊時出現了一個峯值,而再過大約150毫秒,又有一個按鍵被擡起的小峯值。

這樣說來,100毫秒以外的信息也可能有用,不過這裏爲了簡便就忽略了。

最終,收集到的數據長這樣:

除此以外,侷限性還在於,若是兩次按鍵之間相隔不久,後者落在前者的後75毫秒以內,那數據可能就有些混雜了。

搭個預測模型

這個部分是最能發揮創造力的部分。Keytap用了一個很是簡單的方法,分爲三步:

1. 把收集到的波形的峯值對齊。這樣能夠避免延時帶來的影響。

2. 基於類似度指標 (Similarity Metric) ,更精細地對齊波形。

須要更精確的對齊方法,是由於有時候峯值未必是最好的判斷依據。

那麼,可不能夠跳過峯值對齊呢?

之因此第2步以前要先作第1步,是由於類似度指標的計算很佔CPU。而第1步能夠有效縮小對齊窗口 (Alignment Window) ,減小計算量。

3. 對齊後,作簡單加權平均。權重也是用類似度指標來定義的。

完成第3步以後,每個按鍵都會得出一個平均波形 (a Single Averaged Waveform) ,用來和實時捕捉的數據作比對

Keytap用的類似度指標互相關 (Cross Correlation, CC) ,長這樣:

固然,也能夠用其餘類似度指標來作。

順便一說,兩次按鍵之間的間隔時長,其實也能夠用來預測的,但開發者怕麻煩就省略了,勇敢的少年能夠去源代碼基礎上自行實驗。

檢測出在敲鍵盤

平均波形和比對標準都有了,但是麥克風實時收錄的聲音連綿不絕,該和哪一段來比對呢?

這就須要從連續的音頻裏,找到敲擊鍵盤的聲音。

Keytap用了一個很是簡單的閾值方法,在原始音頻裏監測敲擊動做:

按下去的時候,會有一個大大的峯值,這就是偵測目標。

不過,這個閾值不是固定的,是自適應 (Adaptive) 的:根據過去數百毫秒以內的平均樣本強度來調整的。

檢測打了什麼字

當系統發現有人在敲鍵盤,就用類似度指標來測到底按了哪一個鍵,CC值最高的就是答案。方法就像上文說的那樣。

如今,代碼實現已經開源了,傳送門見文底

不過,做者在博客中說,這個方法目前只有機械鍵盤適用。

「薯片間諜」

聽音識字的研究不止這一個,去年一篇Don’t Skype & Type!Acoustic Eavesdropping in Voice-Over-IP的論文,也提出了Skype & Type(S&T)鍵盤聲音識別算法。

和這個研究相似,根據網絡電話Skepe中傳出的打字按鍵聲音,在瞭解了被測者的打字風格和設備類型後,系統能復原敲下了什麼。

整個算法搭建過程只有三步:收集信息、數據處理與數據分類。

研究人員事先收集語音電話中鍵盤敲擊聲,將這些聲音分爲兩類,即按下聲與鬆開回彈聲,隨後提取它們的特徵。

當聽到鍵盤聲時,算法先識別設備類型,再去識別爲鍵盤中的哪一個鍵。和Keytap不一樣的是,S&T也能適用於非機械鍵盤了。

研究人員表示,在預測的最可能的前5個字母中,包含正確字母的準確率達到了91.7%。

這篇論文發表在ACM亞洲計算機和通信安全大會(ASIACCS 2017)上,地址:https://www.math.unipd.it/~dlain/papers/2017-skype.pdf

推測人類講了什麼,AI須要甚至只是一包薯片

什麼,以爲太離譜了?Naive。

MIT、微軟和Adobe開發的這種看似天方夜譚的算法,只需高速相機透過隔音玻璃,拍攝出薯片袋的振動,算法就會判斷說話人是男是女,甚至還原出說了什麼。

對,就是這種生活中隨處可見的薯片

研究人員表示,聲音傳播時觸碰到周圍的物體,會震動造成一股微妙的視覺信號,肉眼沒法識別,但高速相機(每秒幀數2000~6000 FPS)能夠敏銳捕捉。

除了薯片袋子,研究人員還用鋁箔、水杯甚至植物盆栽進行了試驗,效果「一如既往的好」。

這不是野生研究,相關論文The Visual Microphone:Passive Recovery of Sound from Video還登上了2014年的Siggraph計算機圖形學大會。

論文地址(注意科學前往):http://t.cn/EyZEZYI

傳送門

方法雖多,若是想本身動手搞一個,這些Keytap相關資源仍是要收好:

博客地址:https://ggerganov.github.io/jekyll/update/2018/11/30/keytap-description-and-thoughts.html

代碼地址:https://github.com/ggerganov/kbd-audio

Demo:https://ggerganov.github.io/jekyll/update/2018/11/24/keytap.html

噓,掩好口鼻,輕聲撤退。

編者:IT大咖說,轉載請標明版權和出處
相關文章
相關標籤/搜索