2010年6月7日 星期一

竊聽你的鍵盤打字音

中文:http://www.wretch.cc/blog/fsj/2092358
Acoustic Snooping on Typed Information

柏克萊大學的 Li Zhuang, Feng Zhou, 與 Doug Tygar 這三位學生完成了
一份研究報告,證明可以透過一般的錄音裝置或是竊聽器錄下 15 分鐘左右
的鍵盤敲擊聲,他們就有辦法辨識出你在鍵盤上打了哪些字。這個點子是來
自於每個鍵盤所發出的聲音其實是稍微不同的。雖然你聽不出有哪些差異,
不過你可以透過機器學習出打字的模式來。雖然這個研究是假定以英打為主,
不過其他語言也一樣適用。

Asonov and Agrawal 在先前也曾發表過類似的研究,不過他們(不切實際
的)假設透過打字者在目標鍵盤上輸入某些特定的 "訓練" 字句來辨識。而
這個新方法消除了這種需求,因而顯得較為實用。

這個演算法以下列三個基本策略為主。其一,他分離每個鍵盤的敲擊聲;其
二,他取得全部的敲擊錄音,然後將其分為 15 類,每類底下的聲音十分相
似;其三,他使用精緻的(fancy)機器學習方法,在假定輸入順序具有英
文輸入的統計特徵下,復原字元的輸入順序。

第三步驟最為困難,由於你是從已經分類好的類別開始的,所以鍵盤的順序
性已經改用分類識別符號來表示,例如:

35, 12, 8, 14, 17, 35, 6, 44, ...

(這表示第一個鍵的分類是 35,第二個在 12 諸如此類。切記,同一類的
鍵盤聲很相似。)在這個狀況下,你可以假設鍵盤上的每一個按鍵通常(但
並非總是)會產生一種特別的 "分類",不過你不知道哪一個鍵產生該分類
。有時候二個鍵會傾向產生相同的分類,所以你得依靠文章脈絡將他們分離
。而且有時候所敲入的東西會產生與原文不相符的特徵出來,因為那時候這
個鍵發出不同的聲音出來。當然特徵演算法不夠好也是原因之一,甚或打字
的人也有可能輸入錯誤打入了一些垃圾字元。

你唯一佔優勢的地方在於,英文句子其實具有一定的規律性。舉例來說,二
字元的順序 "th" 要比 "rq" 來的常見,而 the 要比 xprid 要來的常見,
這些以足夠讓現代的機器學習方法完成這項工作,儘管有如同前述般困難重
重。所恢復的文字有 95% 的正確性,而且 90% 的單字可讀性很高。

[給駭客等級讀者的練習: Assume that there is a one-to-one mapping
between characters and categories, and that each character in the
(unknown) input text is translated infallibly into the
corresponding category. Assume also that the input is typical
English text. Given the output category-sequence, how would you
recover the input text? About how long would the input have to be
to make this feasible?]

如果你輸入密碼,當然也能夠被恢復。雖然密碼並不與一般文字那樣具相同
的統計特性(除非你的密碼很爛),不過只要經過適當的英打訓練,這些密
碼也不成問題。雖然這個演算法不能 100% 的復原密碼,不過可以完成一份
近似密碼的清單給你,而且真正的密碼通常也會出現在其中。

在這裡我們仍要想到,有多少電腦安全是依賴 "物理性存取" 來控制電腦。
我們都知道任何人都可以打開電腦並透過可以控制他的工具來使用他。這項
研究結果顯示,可以透過感應器來危急這台電腦的安全。

這裡有些初步的結果顯示每台電腦會因為他們正在進行不同的工作而發出不
同的聲音。如果這時後你有錄音裝置,那麼你就能進行解碼工作恢復加密的
金鑰了。

我想,我還是把辦公室的門關上比較好。