久久精品无码视频|精产国品色情一二三区在线观看|国产性爱自拍视频|亚洲av韩国av|日韩美女一级AAA大片|少妇无码激情诱惑|日韩AV在线播放有码|一级黄片一级黄片|av上一页亲亲久草av|aaa在线观看国产做爱

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給楊鯉萍
發(fā)送

0

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

本文作者: 楊鯉萍 2019-11-13 14:36
導語:基于 ML 的黑客密碼研究

雷鋒網(wǎng) AI 開發(fā)者按:過去,讓計算機區(qū)分貓和狗被認為是最先進的研究;而現(xiàn)在,圖像分類就像是機器學習(ML)的「Hello World」,可以使用 TensorFlow 在幾行代碼中實現(xiàn)上。在短短的幾年內(nèi),機器學習領(lǐng)域已經(jīng)取得了很大的進展,以至于現(xiàn)在,開發(fā)者們可以輕松地構(gòu)建潛在「造?!够颉钢旅沟膽贸绦?。

因此,一位好奇的學者 Tikeswar Naik,通過簡單的實驗和我們討論了這項技術(shù)的某一潛在濫用情況——使用 ML 來破解密碼,希望通過這一介紹能夠讓更多人保持警惕,并找到減輕或防止濫用的方法。雷鋒網(wǎng) AI 開發(fā)者將其具體研究內(nèi)容編譯如下。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

敲鍵盤的,你已經(jīng)暴露了!

在文章開頭,作者提出了一個大膽的想法:我們能不能僅僅通過聽鍵盤敲擊就知道某人在輸入什么?而如果這一操作真的可以實現(xiàn),那它背后的潛在應用,例如:黑客密碼破譯,是否將是非常嚴重的安全隱患呢?(如圖 1 所示)

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 1:聆聽擊鍵(圖片來源:rawpixel.com;eacs.com)

因此,作者參與了一個名為 kido(擊鍵解碼)的項目,來探索這是否可能實現(xiàn)(https://github.com/tikeswar/kido)。

我們將這樣做

作者提出可以將這個問題,作為一個監(jiān)督的機器學習問題來處理,然后再逐一完成以下所有步驟:

  • 數(shù)據(jù)收集和準備

  • 訓練與評估

  • 測試和誤差分析(提高模型精度)

  • 結(jié)論;GitHub 鏈接

注:在這個項目中用到了 Python、Keras 和 TensorFlow。

1. 數(shù)據(jù)收集

有很多方法可以收集得到敲擊鍵盤的音頻數(shù)據(jù),在這個實驗中,作者為了更好的證明機器學習破譯密碼在日常生活中的可行性,使用了日常使用的鍵盤進行打字,并通過內(nèi)置麥克風 QuickTime Player 錄制了打字的音頻(圖 2)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 2:使用筆記本鍵盤制作訓練數(shù)據(jù)

這種方法有兩個優(yōu)點:一是數(shù)據(jù)的可變性較??;而正因數(shù)據(jù)可變性小,它將有助于我們集中注意力去證明(或反證)這個想法,而無須考慮更多變量。

2. 數(shù)據(jù)準備

明確了數(shù)據(jù)來源后,下一步是準備數(shù)據(jù),這樣我們就可以把它輸入神經(jīng)網(wǎng)絡(luò)(NN)進行訓練。

QuickTime 將錄制的音頻保存為 MP4。首先我們需要將 mp4 轉(zhuǎn)換為 wav,因為有很好的 Python 庫可以處理 wav 文件。圖 3 右上角子圖中的每個峰值對應于一個擊鍵)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 3:將 mp4 轉(zhuǎn)換為 wav,然后拆分

然后我們使用靜音檢測將音頻分割成單獨的塊,這樣每個塊只包含一個字母。這之后,我們就可以將這些單獨的塊輸入到神經(jīng)網(wǎng)絡(luò)中。

但作者想到了一個更好的方法,他選擇將單個色塊轉(zhuǎn)換成頻譜圖(圖 4)?,F(xiàn)在,我們有了使用卷積神經(jīng)網(wǎng)絡(luò)(CNN),則可以提供更多信息且更易于使用的圖像。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 4:將單個塊轉(zhuǎn)換為頻譜圖

為了訓練網(wǎng)絡(luò),作者收集了上面描述的 16000 個樣本,確保每個字母至少有 600 個樣本(圖 5)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 5:數(shù)據(jù)樣本

然后將數(shù)據(jù)重新整理,并分成訓練集和驗證集。每個字母有大約 500 個訓練樣本以及 100 個驗證樣本(圖 6)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 6:訓練-驗證拆分

簡而言之,這就是我們遇到的最大似然比問題,見圖 7。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 7:機器學習問題表示

3. 訓練和驗證

作者使用了一個相當小的簡單網(wǎng)絡(luò)架構(gòu)(基于 Laurence Moroney 的剪刀石頭布示例,https://www.coursera.org/learn/convolutional-neural-networks-tensorflow/),參見圖 8。

其中,輸入圖像被縮放到 150 x 150 像素,并且它有 3 個顏色通道。然后它經(jīng)過一系列的卷積+合并層,變平(用于防止過度擬合的丟失),被饋送到完全連接的層,最后是輸出層。輸出層有 26 個類,對應于每個字母。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 8:網(wǎng)絡(luò)架構(gòu)

在 TensorFlow 中,模型如下所示:

model = tf.keras.models.Sequential([

# 1st convolution

tf.keras.layers.Conv2D(64, (3,3), activation='relu', input_shape=(150, 150, 3)),

tf.keras.layers.MaxPooling2D(2, 2),


# 2nd convolution

tf.keras.layers.Conv2D(64, (3,3), activation='relu'),

tf.keras.layers.MaxPooling2D(2,2),


# 3rd convolution

tf.keras.layers.Conv2D(128, (3,3), activation='relu'),

tf.keras.layers.MaxPooling2D(2,2),


# 4th convolution

tf.keras.layers.Conv2D(128, (3,3), activation='relu'),

tf.keras.layers.MaxPooling2D(2,2),


# Flatten the results to feed into a DNN

tf.keras.layers.Flatten(),

tf.keras.layers.Dropout(0.5),


# FC layer

tf.keras.layers.Dense(512, activation='relu'),


# Output layer

tf.keras.layers.Dense(26, activation='softmax')

])

以及模型摘要:

___________________________________________________________

Layer (type) Output Shape Param # 

====================================

conv2d_4 (Conv2D) (None, 148, 148, 64) 1792 

___________________________________________________________

max_pooling2d_4 (MaxPooling2 (None, 74, 74, 64) 0 

___________________________________________________________

conv2d_5 (Conv2D) (None, 72, 72, 64) 36928 

___________________________________________________________

max_pooling2d_5 (MaxPooling2 (None, 36, 36, 64) 0 

___________________________________________________________

conv2d_6 (Conv2D) (None, 34, 34, 128) 73856 

___________________________________________________________

max_pooling2d_6 (MaxPooling2 (None, 17, 17, 128) 0 

___________________________________________________________

conv2d_7 (Conv2D) (None, 15, 15, 128) 147584 

___________________________________________________________

max_pooling2d_7 (MaxPooling2 (None, 7, 7, 128) 0 

___________________________________________________________

flatten_1 (Flatten) (None, 6272) 0 

___________________________________________________________

dropout_1 (Dropout) (None, 6272) 0 

___________________________________________________________

dense_2 (Dense) (None, 512) 3211776 

___________________________________________________________

dense_3 (Dense) (None, 26) 13338 

====================================

Total params: 3,485,274

Trainable params: 3,485,274

Non-trainable params: 0

訓練結(jié)果如圖 9 所示。在大約 13 個 epochs 內(nèi),它收斂到 80% 的驗證精度和 90% 的訓練精度。考慮到問題的復雜性和所使用的簡單網(wǎng)絡(luò)架構(gòu),所得較高的準確性確實也令人感到驚訝。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 9:訓練和驗證準確性

目前的結(jié)果看起來很有希望,但這只是字符級的準確性,而不是單詞級的準確性。如要猜測密碼,我們必須正確預測每個字符,而不僅僅是大多數(shù)字符!參見圖 10。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 10:猜測密碼需預測每個字符

4. 測試

為了測試這個模型,作者從 rockyou.txt 列表中數(shù)字化了另外 200 個不同的密碼,然后嘗試使用我們剛剛訓練的模型預測單詞(圖 11)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 11:測試模型

圖 12 顯示了測試精度;其中,條形圖顯示了字符級精度(左邊的圖表顯示正確和錯誤的數(shù)目,右邊的圖表顯示相同的百分比)。

可以看到,字符級的測試準確率為 49%,而單詞級的測試準確率為 1.5%(即神經(jīng)網(wǎng)絡(luò)在 200 個測試詞中能完全預測正確 3 個單詞)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 12:測試精度

不過鑒于任務的復雜性,1.5% 字級精度也不算差,不過作者也思考了提高精度的一些方法。

怎樣提高預測精度呢?

首先,作者對測試結(jié)果中個別的誤差進行了分析。圖 13 顯示了一些示例測試結(jié)果,其中:

  • 第一列包含實際的測試單詞;

  • 第二列包含相應的預測單詞,其中各個字符用顏色編碼以顯示正確(綠色)和錯誤(紅色)預測;

  • 第三列只顯示正確預測的字符,錯誤預測的字符替換為下劃線(以便于可視化)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 13:數(shù)據(jù)測試結(jié)果

對于「aaron」這個單詞,所使用的模型只得到了一個正確字符;對于「canada」一詞,預測結(jié)果有大多數(shù)字符是正確的;而對于「lokita」,它的所有字符預測均是正確的。正如圖 12 所示,詞級準確率僅為 1.5%。

但反觀測試示例(圖 14),特別是「canada」,我們意識到它可以正確處理大多數(shù)字符,并且非常接近實際單詞。那么,如果我們把 CNN 的結(jié)果通過拼寫檢查呢?

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 14:測試結(jié)果展示

這正是作者所做的(圖 15),使用了拼寫檢查器之后,它確實將精確度從 1.5% 提高到了 8%。這也意味著,通過一個相當簡單的模型架構(gòu)+拼寫檢查器,我們可以正確預測 100 個密碼中的 8 個!

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 15:使用拼寫檢查器后,精確度提高

作者提出進一步假設(shè),如果采用序列模型(RNN?Transformer?),而不是一個簡單的拼寫檢查器,是否我們可以得到單詞檢測層面更高的準確性呢?

但通過仔細查看測試結(jié)果(圖 16),可以注意到「a」被預測為「s」,「n」被預測為「b」,等等。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 16:測試示例細節(jié)放大

這不禁讓人想到我們在鍵盤上的映射誤差,而且大部分映射誤差(參見圖 17)都與鄰近度相關(guān)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 17:在鍵盤上映射誤差

接下來,作者量化了這種相關(guān)性與鄰近性的誤差。圖 18 顯示了麥克風與鍵盤之間按一定比例繪制的按鍵位置。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 18:麥克風和按鍵位置按比例繪制的鍵盤

圖 19 顯示了一些示例字母在數(shù)字化鍵盤上的錯誤類比圖。圖中,左上角的圖顯示「a」被錯誤地預測為「z」、「x」、「y」、「k」、「s」、「w」或「q」。其他子圖的解釋類似。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 19:樣本字母的誤差圖

從圖 19 中,我們可以清晰看到,該預測誤差與臨近度相關(guān)。然而,我們能否得到一個更為量化的衡量標準呢?

為了得到這一量化標準,作者將 d_ref 設(shè)為參考字母與 mic 的距離,d_predicted 為預測字母與 mic 的距離,d 為 d_ref 與 d_predicted 之差的絕對值(見圖 20)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 20:一些參量定義

圖 21 為所得誤差直方圖。我們可以看到一個非常明顯的趨勢,即大多數(shù)誤差來自臨近處。這也意味著我們可以通過更多的數(shù)據(jù)、更大的網(wǎng)絡(luò)或能夠更好地捕獲這些數(shù)據(jù)的網(wǎng)絡(luò)架構(gòu)來提高模型的準確性。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 21:誤差相關(guān)的直方圖

但是麥克風的位置是否也是誤差的來源之一呢?誤差與按鍵離麥克風的距離有關(guān)嗎?

為了研究這一點,作者也繪制了關(guān)于圖 12 中的誤差圖,使得 X 軸上的字母與 MIC 的距離增加(參見圖 22)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 22:麥克風位置與誤差之間關(guān)系的直方圖

從圖中,我們可以發(fā)現(xiàn)誤差與按鍵離麥克風的位置之間并沒有很強的相關(guān)性,這也可以證明誤差與麥克風位置基本是無關(guān)的。

不過通過圖 22 展示的結(jié)果,作者也發(fā)現(xiàn)一個非常重要信息,即一個人可以把麥克風放在任何地方監(jiān)聽擊鍵,然后進行黑客攻擊。這一發(fā)現(xiàn)確實令人毛骨悚然!

模型存在的一些小 BUG

在這項研究中,作者因為只是想驗證是否能僅通過聽鍵盤敲擊聲音,從而進行黑客攻擊的想法,因此在具體實驗中做了很多簡化。

下面是作者提出的一些關(guān)于改進模型以處理更復雜和真實的場景的建議:

  • 正常的打字速度→具有挑戰(zhàn)性的信號處理(隔離單個擊鍵)。因為在這項研究中,作者使用了較慢的速度敲寫數(shù)據(jù)內(nèi)容。

  • 任何按鍵→具有挑戰(zhàn)性的信號處理(大小寫?Shift 功能鍵?…)。因為在這項研究中,作者只使用了小寫字母(不包括大寫字母、數(shù)字、特殊字符、特殊擊鍵等)。

  • 背景噪聲→添加噪聲。因為在本研究的記錄數(shù)據(jù)時,只有一些車輛經(jīng)過時會出現(xiàn)部分簡單和輕微的背景噪聲,但沒有復雜的背景噪聲(例如:餐廳背景噪聲等)。

  • 不同的鍵盤和麥克風設(shè)置+不同的人打字→更多的數(shù)據(jù)+數(shù)據(jù)增強+更大的網(wǎng)絡(luò)+不同的網(wǎng)絡(luò)架構(gòu)可能有助于改進模型。

最后,作者還提出「我們是否能采用其他振動信號代替音頻信號」一有趣的想法。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

圖 23:其它振動信號

最終我們得到這樣的結(jié)論

考慮到這項研究的簡化,作者得出了這樣兩個結(jié)論:

  • 通過擊鍵聲音破解敲寫內(nèi)容是有可能實現(xiàn)的;

  • 通過少量的數(shù)據(jù)和簡單的 CNN 架構(gòu)+拼寫檢查,我們可以獲得不錯的單詞級準確率(本研究中為 8%);

誤差來源:

  • 簡單的拼寫檢查可以提高單詞級別的準確性(在本例中從 1.5% 提高到 8%);

  • 誤差與其他鍵的接近相關(guān);

  • 誤差似乎與麥克風位置無關(guān)。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

原文鏈接:

https://towardsdatascience.com/clear-and-creepy-danger-of-machine-learning-hacking-passwords-a01a7d6076d5 

GitHub 鏈接:

https://github.com/tikeswar/kido 

雷鋒網(wǎng) AI 開發(fā)者

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

機器學習的「反噬」:當 ML 用于密碼破解,成功率竟然這么高!

分享:
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說