Fast, Lean, and Accurate: Modeling Pass...閱讀總結
文章標題:Fast, Lean, and Accurate: Modeling Password Guessability Using Neural Networks
文章主題:在用戶使用瀏覽器上網(wǎng)需要進行注冊等行為時,此時用戶需要進行設定密碼的操作,而如何快速準確的判斷用戶所設置的密碼強度是一個很重要的問題,當今判斷密碼強度的方法主要有概率上下文無關文法(PCFG)、馬爾科夫模型、Mongling?wordlist等等方法,不過這些方法十分耗時,并且需要占用很大的存儲空間,比如PCFG在本文中提到需要4Gb,Markov?Model需要1Gb,而本文所提出的新的方法:使用神經(jīng)網(wǎng)絡模型則可以實現(xiàn)快速(100ms的數(shù)量級)并準確(高于其他方法)的判斷密碼強度。占用空間極?。◣装貹b)。
主要原理:判斷密碼強度的原理在于使用密碼猜測攻擊方法對密碼進行猜測,例如假設用戶密碼是“password”,而此時攻擊模型已經(jīng)猜測到了“passwor”(從“”開始一個字符一個字符進行猜測),那么它會分析出下一個字符是“d”的概率最高,從而在猜測序列中添加“d”,完成猜測攻擊(只是大致意思,具體細節(jié)請看原文章),而神經(jīng)網(wǎng)絡善于產(chǎn)生新序列,這一特點使得其在猜測密碼方面有很大優(yōu)勢(密碼猜測攻擊就是需要產(chǎn)生新序列驗證新序列是否為密碼)。
神經(jīng)網(wǎng)絡實現(xiàn)方法:使用兩個訓練集對神經(jīng)網(wǎng)絡進行訓練,訓練完成后使用測試集進行檢驗。神經(jīng)網(wǎng)絡的幾個參數(shù)選擇
模型大小選擇:使用大模型(60M,1500w參數(shù))與小模型(2.7M,68w)進行測試,發(fā)現(xiàn)兩者無較大差異,使用小模型也可。
Transference?Learning:使用該方法可以提升準確度
(NL)Natural?Language?Library:使用神經(jīng)網(wǎng)絡發(fā)現(xiàn)使用NL比不適用的結果還要差。
Password?Tokenization:在guess數(shù)(即猜到密碼所需的次數(shù))較小時有用,當guess數(shù)較大時(大于10^3),用不用差距不大。
Tutored?Networks(使用大模型對小模型進行干預“tutor”):發(fā)現(xiàn)用處不大。
Backwards vs Forwards Training(Backwards,F(xiàn)orwards指的是對訓練數(shù)據(jù)的處理是放在放入神經(jīng)網(wǎng)絡前還是后):兩者混合優(yōu)于Backwards優(yōu)于Forwards(優(yōu),但只是優(yōu)一點點),但混合處理耗時,所以實際上使用Backwards要好一些。
得到訓練模型后(還沒完),這個訓練模型是要放在服務器端的(直接扔給客戶端怎么實現(xiàn)100ms時延呢?),實際上是將已經(jīng)訓練好的模型放在服務器端,服務器端會向用戶端發(fā)送一張guess數(shù)與概率值的映射表(該表是使用蒙特-卡洛模擬得到的),客戶端的小模型會計算出根據(jù)用戶設定密碼值得出猜出該密碼的概率值,前面原理已經(jīng)提到,我們認為這一步是快速的,但是猜測數(shù)是需要神經(jīng)網(wǎng)絡實際去運行來得到真實結果的(讓用戶端去算這個黃花菜都涼了~),所以需要服務器端給的映射表,得到概率值直接查表就能得到對應的guess數(shù)從而判斷密碼強度。此處還要注意一點,在實際應用中,我們總是希望用戶設定安全的密碼,所以我們給出的結果寧可低估用戶設定密碼的強度也最好不要高估。所以文章中采用了忽略密碼大小寫的方法來實現(xiàn)低估強度,減少高估的目的。
結果與現(xiàn)有傳統(tǒng)方法對比:文章將神經(jīng)網(wǎng)絡與傳統(tǒng)的密碼猜測攻擊手段進行了對比,結果顯而易見,占用存儲少,實時性好,可以直接掛載在瀏覽器上,因此該文章也將此與現(xiàn)有的瀏覽器上的密碼強度判斷工具進行對比,發(fā)現(xiàn)判斷的準確度明顯較高。結果就不貼了,原文有,解釋也非常清楚。