丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

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

0

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

本文作者: 楊鯉萍 2019-11-13 14:36
導(dǎo)語(yǔ):基于 ML 的黑客密碼研究

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

我們將這樣做

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

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

  • 訓(xùn)練與評(píng)估

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

  • 結(jié)論;GitHub 鏈接

注:在這個(gè)項(xiàng)目中用到了 Python、Keras 和 TensorFlow。

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

2. 數(shù)據(jù)準(zhǔn)備

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

QuickTime 將錄制的音頻保存為 MP4。首先我們需要將 mp4 轉(zhuǎn)換為 wav,因?yàn)橛泻芎玫?Python 庫(kù)可以處理 wav 文件。圖 3 右上角子圖中的每個(gè)峰值對(duì)應(yīng)于一個(gè)擊鍵)。

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 6:訓(xùn)練-驗(yàn)證拆分

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 7:機(jī)器學(xué)習(xí)問題表示

3. 訓(xùn)練和驗(yàn)證

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) 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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 9:訓(xùn)練和驗(yàn)證準(zhǔn)確性

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 10:猜測(cè)密碼需預(yù)測(cè)每個(gè)字符

4. 測(cè)試

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 11:測(cè)試模型

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 12:測(cè)試精度

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

怎樣提高預(yù)測(cè)精度呢?

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

  • 第一列包含實(shí)際的測(cè)試單詞;

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 16:測(cè)試示例細(xì)節(jié)放大

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 17:在鍵盤上映射誤差

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 18:麥克風(fēng)和按鍵位置按比例繪制的鍵盤

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 19:樣本字母的誤差圖

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

為了得到這一量化標(biāo)準(zhǔn),作者將 d_ref 設(shè)為參考字母與 mic 的距離,d_predicted 為預(yù)測(cè)字母與 mic 的距離,d 為 d_ref 與 d_predicted 之差的絕對(duì)值(見圖 20)。

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 20:一些參量定義

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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

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

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

模型存在的一些小 BUG

在這項(xiàng)研究中,作者因?yàn)橹皇窍腧?yàn)證是否能僅通過聽鍵盤敲擊聲音,從而進(jìn)行黑客攻擊的想法,因此在具體實(shí)驗(yàn)中做了很多簡(jiǎn)化。

下面是作者提出的一些關(guān)于改進(jìn)模型以處理更復(fù)雜和真實(shí)的場(chǎng)景的建議:

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

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

  • 背景噪聲→添加噪聲。因?yàn)樵诒狙芯康挠涗洈?shù)據(jù)時(shí),只有一些車輛經(jīng)過時(shí)會(huì)出現(xiàn)部分簡(jiǎn)單和輕微的背景噪聲,但沒有復(fù)雜的背景噪聲(例如:餐廳背景噪聲等)。

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

圖 23:其它振動(dòng)信號(hào)

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

考慮到這項(xiàng)研究的簡(jiǎn)化,作者得出了這樣兩個(gè)結(jié)論:

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

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

誤差來源:

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

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

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

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) 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)載須知。

機(jī)器學(xué)習(xí)的「反噬」:當(dāng) ML 用于密碼破解,成功率竟然這么高!

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