陳銳浩,邱衛(wèi)東
基于神經(jīng)網(wǎng)絡的口令屬性分析方法
陳銳浩,邱衛(wèi)東
提出了一種適用于大量口令的分析方法,通過神經(jīng)網(wǎng)絡建模分析,挖掘口令的各項屬性間可能存在的關系。通過對大量不同應用類型的口令進行屬性賦值,進而利用MATLAB的神經(jīng)網(wǎng)絡工具完成建模、訓練學習和仿真測試,從中找出潛在的有價值的屬性間關系或規(guī)則,并根據(jù)這些關系由已知的屬性值推斷出未知屬性值,或根據(jù)這些屬性規(guī)則生成反映用戶口令設置習慣的暴力破解字典,為口令破解和口令恢復提供一定的指向性和幫助。
神經(jīng)網(wǎng)絡;口令;屬性賦值;分析
人工神經(jīng)網(wǎng)絡,簡稱神經(jīng)網(wǎng)絡,是一種模仿生物神經(jīng)網(wǎng)絡的結(jié)構(gòu)和功能的數(shù)學模型或計算模型,由稱為神經(jīng)元的基本處理單元互連而成的非線性復雜網(wǎng)絡系統(tǒng)。
用人工神經(jīng)網(wǎng)絡解決計算機密碼學中的問題,即神經(jīng)密碼學。經(jīng)過對現(xiàn)有技術的檢索發(fā)現(xiàn),目前對于神經(jīng)密碼學的研究主要集中在加密機制、加密系統(tǒng)的改進上,如文獻[1]中,針對S/KEY一次性口令方案中存在的缺陷,作者提出的基于RBF神經(jīng)網(wǎng)絡的一次性口令認證方案;再如文獻[2]提出的Web動態(tài)口令登錄新方法,利用神經(jīng)網(wǎng)絡權值同步模型的良好密碼學特性,將其應用到密鑰協(xié)商中[3~4],獲得更高的安全性。然而,利用神經(jīng)網(wǎng)絡對口令本身的研究卻幾乎沒有,而事實上,通過分析口令特點挖掘用戶設置口令的習慣,具有重要現(xiàn)實意義。因為,在生活中,為了方便記憶,用戶在設置口令時,通常會采用手機號、生日、姓氏、英文單詞等作為口令或口令的一部分,對于不同類型的應用場景或用戶群體,也存在各種各樣的口令設置習慣,有些甚至用戶自己都沒有意識到,而這些習慣,都直接體現(xiàn)在口令上。有效地挖掘出這些潛在的規(guī)則,對于生成暴力破解字典、口令破解和口令恢復都有著重要意義和研究價值。
由于口令的不同屬性(長度,是否包含大小寫、特殊字符、手機號、生日、姓氏等)之間通常不存在明顯的關系,難以通過人工進行高效的分析判斷,而神經(jīng)網(wǎng)絡作為一種非線性統(tǒng)計性數(shù)據(jù)建模工具,常用來對輸入和輸出間復雜的關系進行建模,對于口令屬性這種未知關系的探索,無疑是非常適用的。采用神經(jīng)網(wǎng)絡探索口令屬性間關系,我們能夠通過對不同的口令屬性關系建立對應的神經(jīng)網(wǎng)絡模型,在有限時間內(nèi),利用大量口令數(shù)據(jù)的迭代測試不斷逼近產(chǎn)生最接近真實的關系模型,從中篩選出有意義、有價值的屬性關系。
本文提出的基于神經(jīng)網(wǎng)絡的口令屬性分析方法,主要包括獲取口令屬性數(shù)據(jù)源、確定神經(jīng)網(wǎng)絡模型、訓練學習、仿真測試等幾個主要環(huán)節(jié)。其中,神經(jīng)網(wǎng)絡分析采用MATLAB軟件,口令數(shù)據(jù)經(jīng)屬性賦值后作為神經(jīng)網(wǎng)絡的數(shù)據(jù)來源讀入MATLAB,確定好網(wǎng)絡模型和相關參數(shù)后,依次進行模型訓練學習、仿真測試并輸出結(jié)果。
1.1 口令屬性賦值
所謂口令屬性賦值,是指對于每一個真實口令,賦予其一些屬性特征,通過分析其組成成分和組成特征,來對這些屬性特征進行賦值。通過口令屬性賦值,每一個口令都有自己對應的一組屬性值,用來表現(xiàn)該口令的組成特點,其意義在于將口令特征數(shù)字化,將抽象問題具體化,從而能夠通過這些屬性值進行分析處理以獲得屬性間有價值的關系,即獲得口令組成的潛在規(guī)則或用戶設置口令的潛在習慣。
屬性賦值的結(jié)果就是神經(jīng)網(wǎng)絡分析的數(shù)據(jù)源,從而可以進一步利用MATLAB下的神經(jīng)網(wǎng)絡工具對這些數(shù)值進行有效的分析計算。
1.2 神經(jīng)網(wǎng)絡工作原理
神經(jīng)網(wǎng)絡的基本工作原理可簡述如下:每個神經(jīng)元是由一個計算單元構(gòu)成,該單元具有多個輸入和單個輸出。其功能是對各個輸入信號作非線性權值運算,并通過輸出端輸出至其他神經(jīng)元。整個網(wǎng)絡工作過程分為訓練和求解兩個階段。當已知訓練樣本的數(shù)據(jù)加到網(wǎng)絡輸入端時,網(wǎng)絡的學習機制一遍又一遍地調(diào)整各神經(jīng)元的權值,使其輸出端達到預定的目標。這就是訓練(學習、記憶)過程。當經(jīng)過訓練的網(wǎng)絡進行問題求解時,輸入的求解信號在網(wǎng)絡內(nèi)迅速地傳遞、處理。當網(wǎng)絡達到穩(wěn)定狀態(tài)時,從輸出端即可得到問題的解。
1.3 確定神經(jīng)網(wǎng)絡模型
確定神經(jīng)網(wǎng)絡模型,就是根據(jù)實際需求在MATLAB下確定一個神經(jīng)網(wǎng)絡的網(wǎng)絡類型(如BP網(wǎng)絡、RBF網(wǎng)絡、Hopfield網(wǎng)絡等)、輸入輸出、網(wǎng)絡層數(shù)與各層神經(jīng)元個數(shù)、訓練樣本和仿真樣本容量,傳遞函數(shù)和訓練函數(shù)等相關函數(shù)及參數(shù)設置。
1.4 訓練學習
訓練學習,是指在MATLAB下,通過采用一定容量的輸入輸出樣本,對初步設定的神經(jīng)網(wǎng)絡模型中各神經(jīng)元權重進行不斷調(diào)整,從而建立最逼近真實關系的網(wǎng)絡模型的過程,也稱為自動學習過程。
1.5 仿真測試
仿真測試,是指在MATLAB下,對已經(jīng)確定好的并且經(jīng)過訓練學習所得的神經(jīng)網(wǎng)絡模型,采用一定容量的輸入樣本對該網(wǎng)絡進行運算測試,目的在于通過對比網(wǎng)絡輸出結(jié)果與實際樣本結(jié)果的差異來驗證網(wǎng)絡的準確性和有效性。
如圖1所示:
圖1 基于神經(jīng)網(wǎng)絡的口令屬性分析流程
基于神經(jīng)網(wǎng)絡的口令屬性分析流程包括:獲取原始口令庫樣本、對口令樣本進行屬性賦值、MATLAB讀取并存儲口令屬性樣本、確定輸入輸出屬性、確定神經(jīng)網(wǎng)絡模型、訓練神經(jīng)網(wǎng)絡、仿真測試,最終導出有用規(guī)則。具體實施步驟如下。
2.1 獲取原始口令樣本
即選擇需要分析的真實口令庫文件,實驗中采用的是CSDN論壇泄露的640萬口令庫文件。
2.2 口令屬性賦值
即獲取口令屬性數(shù)據(jù)源,為了更完整地表現(xiàn)口令特點,該步驟的關鍵在于屬性的定義,屬性必須具備實際意義,能夠充分表現(xiàn)用戶設置口令的習慣,具有較好的靈活性,并有利于分析出有效的結(jié)果,具體可通過社會工程學等手段來進行制定。本方法確定采用的20個屬性如表1所示:
表1 口令屬性表
其中,所有屬性值均為布爾值,1為真,0為假。
實驗中,采用java程序按照以下流程,對原始口令樣本進行屬性賦值:
1)載入百家姓、常見英文名字、簡單英文單詞等各類字典文件;
2)載入口令文件,讀取待分析的每個口令;3)判斷口令長度(對應屬性1~4);
4)判斷口令字符成分(對應屬性5~13);
5)判斷口令組成(對應屬性14~20);
6)將口令屬性拆分結(jié)果寫入csv文件中。
原始口令庫經(jīng)過自動化分析處理后,得到每個口令對應的20個屬性值,結(jié)果如下(每一行對應一個口令):
0,1,0,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,
1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,
……
例如“0,1,0,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,”表示該口令的長度為7-8位,包含字母,包含大寫字母,包含小寫字母,包含百家姓,其他屬性皆為假。
2.3 MATLAB讀取口令屬性樣本
即運行MATLAB軟件,讀取csv文件并將口令屬性值保存在MATLAB下的矩陣變量中,作為口令屬性樣本,并為下面的訓練學習和仿真測試提供數(shù)據(jù)樣本。
2.4 確定輸入輸出屬性
本方法旨在分析口令屬性間關系,輸入輸出屬性即為所要分析的兩個或多個屬性,以其中的一個屬性為輸出,另一個或多個屬性為輸入,建立對應的網(wǎng)絡模型,探索它們之間可能存在的關系。例如,欲分析表1中第1到19個與第20個屬性之間的關系,則輸入為1~19個屬性值,輸出為第20個屬性值。值得注意的是,輸入可為一個或多個屬性,而輸出只能是某一個屬性。
2.5 確定神經(jīng)網(wǎng)絡模型
1)確定網(wǎng)絡類型
為獲得最佳實驗效果,在初步確定RBF網(wǎng)絡(即Radial Basis Function Network,徑向基函數(shù)網(wǎng)絡,一種使用徑向基函數(shù)作為激勵函數(shù)的人工神經(jīng)網(wǎng)絡)和BP網(wǎng)絡(即Back-Propagation Network,反向傳播網(wǎng)絡,一種按誤差逆?zhèn)鞑ニ惴ㄓ柧毜亩鄬忧梆伨W(wǎng)絡)這兩種適用的網(wǎng)絡類型后,經(jīng)多次實驗發(fā)現(xiàn),同等條件下(包括樣本數(shù)量、網(wǎng)絡層數(shù)、神經(jīng)元個數(shù)等)BP網(wǎng)絡的訓練時間開銷遠小于RBF網(wǎng)絡,所得網(wǎng)絡的仿真效果也優(yōu)于RBF網(wǎng)絡,故而本方法全部采用BP網(wǎng)絡。
2)確定網(wǎng)絡層數(shù)
BP網(wǎng)絡由輸入層、中間層和輸出層構(gòu)成。其中,中間層可為單層或多層,由于它們和外界沒有直接的聯(lián)系,故也稱隱層(或隱含層)。實驗過程對比測試了單隱層和多隱層的網(wǎng)絡結(jié)構(gòu),結(jié)果表明,多隱層網(wǎng)絡仿真準確率小于或等于單隱層,而網(wǎng)絡訓練時間開銷卻大于單隱層。在多次實驗后,確定采用單隱層結(jié)構(gòu)的BP網(wǎng),即2層結(jié)構(gòu)的BP網(wǎng)絡(注:網(wǎng)絡層數(shù)指隱層和輸出層,一般不計算輸入層)。
3)確定各層神經(jīng)元個數(shù)
對應網(wǎng)絡層數(shù)的概念,神經(jīng)元的個數(shù)是指隱層和輸出層的神經(jīng)元個數(shù),而與輸入層無關。
a. 單隱層神經(jīng)元個數(shù):一般依據(jù)如下經(jīng)驗公式取值
I. (輸入維數(shù)+輸出維數(shù)) / 2
II. (輸入維數(shù)*輸出維數(shù))1/2 + a,a為1~10之間的常數(shù)
b. 輸出層神經(jīng)元個數(shù):與輸出屬性維數(shù)一致,此處取1。
MATLAB神經(jīng)網(wǎng)絡中2層BP網(wǎng)絡的結(jié)構(gòu)示意圖,如圖2所示:
圖2 兩層BP網(wǎng)絡結(jié)構(gòu)
其中,輸入維數(shù)為19(即19個輸入屬性),輸出維數(shù)為1(即1個輸出屬性),對應分析輸入的19個屬性與輸出的1個屬性間的關系;隱層數(shù)為1,包含10個神經(jīng)元;輸出層數(shù)為1,包含1個神經(jīng)元。
4)確定訓練樣本容量
訓練樣本,是指神經(jīng)網(wǎng)絡學習過程用于校正逼近網(wǎng)絡各層權重的數(shù)據(jù)樣本。
經(jīng)多次實驗發(fā)現(xiàn),在網(wǎng)絡類型確定(BP網(wǎng)絡)的情況下,隨著網(wǎng)絡訓練樣本容量的增大,訓練時間不斷增大,而所得網(wǎng)絡的仿真準確率先增大后趨近于同一個數(shù)值。當訓練樣本容量為1萬時,所得網(wǎng)絡仿真測試準確率較高;樣本容量大于1萬(如10萬、100萬、640萬)時,訓練時間急劇增大,而對應的仿真準確率卻無明顯變化甚至有所降低。實驗統(tǒng)計數(shù)據(jù)如表2所示:
表2 訓練樣本容量與訓練時間統(tǒng)計表
1) 確定仿真樣本容量
仿真樣本(或稱測試樣本),是指在神經(jīng)網(wǎng)絡中經(jīng)過學習訓練所得的網(wǎng)絡為進行仿真測試以獲得輸出結(jié)果的輸入樣本。
仿真樣本容量越大,仿真計算時間開銷越大,對計算機系統(tǒng)內(nèi)存要求越高。為了更準確全面地反映訓練所得網(wǎng)絡的仿真準確率,實驗采用CSDN全體口令屬性樣本(640萬)作為仿真測試樣本。因仿真測試時間遠小于網(wǎng)絡學習訓練時間,此處不列舉相應時間開銷。
2) 確定相關函數(shù)和參數(shù)設置
神經(jīng)網(wǎng)絡(BP網(wǎng)絡)第1層單隱層采用正切Sigmoid傳遞函數(shù)“tansig”,第2層輸出層采用線性傳遞函數(shù)“purelin”,訓練函數(shù)則采用動量梯度下降反向傳播算法“traingdm”。
2.6 訓練神經(jīng)網(wǎng)絡
確定網(wǎng)絡類型、結(jié)構(gòu)、輸入輸出和相關參數(shù)設置后,便可運行MATLAB編程文件開始網(wǎng)絡訓練,以獲得最能表現(xiàn)真實輸入輸出樣本關系的網(wǎng)絡模型,此處不展開。
2.7 仿真測試
完成網(wǎng)絡訓練后,為了檢驗所得網(wǎng)絡模型的有效性和準確性,必須利用該網(wǎng)絡對仿真樣本進行測試。采用仿真樣本作為輸入,通過當前網(wǎng)絡仿真計算出輸出,對輸出結(jié)果進行適當處理后,與實際樣本結(jié)果進行對比,計算出仿真準確率,以此評估當前網(wǎng)絡的有效性和準確性,分析當前輸入輸出對應的口令屬性間是否存在有價值的關系。
2.8 輸出結(jié)果
即完成仿真測試后,導出其中有價值的屬性規(guī)則。本方法旨在利用神經(jīng)網(wǎng)絡分析挖掘口令屬性間的關系,一種有意義有價值的屬性關系,可以看作一條有用的規(guī)則,對應于MATLAB下一個有效的神經(jīng)網(wǎng)絡模型。如何判斷一種關系是否有意義有價值?實驗中以該關系對應的神經(jīng)網(wǎng)絡模型仿真準確率高低進行衡量。當仿真準確率大于某個數(shù)值(如80%),可以認為這個模型是有意義的,即對應的輸入輸出屬性之間的關系是有價值的。CSDN的640萬口令分析所得的部分有意義的屬性關系如表3所示:
表3 CSDN口令屬性關系表
因版面所限,網(wǎng)絡模型信息未完全列入表中,補充說明如下:訓練樣本容量均為1萬,仿真樣本容量均為640萬,網(wǎng)絡結(jié)構(gòu)均為2層BP網(wǎng)絡,輸出層神經(jīng)元個數(shù)均為1 。(注:表中屬性1~20所代表的含義詳見表1)
在上表中,每一條記錄代表一條規(guī)則,一個有意義的神經(jīng)網(wǎng)絡,也是一種有價值的屬性關系。例如前4條記錄,表示根據(jù)屬性1~9,能夠推斷出屬性10、11、12、13。
本文針對口令本身的研究提出了基于MATLAB的神經(jīng)網(wǎng)絡口令屬性分析方法,根據(jù)該方法,可以對不同類型的口令庫(如論壇口令、郵箱口令、人人網(wǎng)等社交網(wǎng)站口令)進行屬性分析,獲得相應的有意義的規(guī)則(屬性關系),進而生成反映用戶口令設置習慣的破解字典,為口令破解和恢復提供指向性幫助。以CSDN口令庫為例,分析可得如下規(guī)則:
①規(guī)則1——輸入屬性:5.包含字母,14.包含中文姓氏;輸出屬性:9.包含小寫字母
②規(guī)則2——輸入屬性:3.長度9~11位,5.包含字母;輸出屬性:6.包含數(shù)字
那么,我們可以根據(jù)這兩個規(guī)則生成包含小寫字母的百家姓字典,以及長度為9~11位包含數(shù)字和字母的字典。當然,若要挖掘出更能表現(xiàn)用戶口令設置習慣、更有價值的規(guī)則,那么,對于屬性的定義和有價值屬性規(guī)則的判定方法這兩個環(huán)節(jié),還需要做進一步研究。
此外,實驗發(fā)現(xiàn),同樣的規(guī)則(屬性關系),在CSDN口令庫下是有意義的,然而當口令類型發(fā)生改變,比如將CSDN論壇口令庫換成126郵箱口令庫,則這些規(guī)則不一定都適用,仿真準確率也會發(fā)生變化(或提高或降低)。這也反映出不同類型(論壇、郵箱、社交網(wǎng)站等)口令,屬性間關系不盡相同、用戶口令設置習慣有所差異。
[1]方俊,趙英良. 基于RBF神經(jīng)網(wǎng)絡的一次性口令認證方案[J]. 計算機工程, 2011, 37(9):157-159.
[2]陳鐵明,陳會兵,潘小明,蔡家楣. Web動態(tài)口令登錄新方法設計與實現(xiàn)[J]. 計算機應用于軟件, 2011, 28(7):31-34.
[3]蔡家楣,嚴杜鵑,陳鐵明. 一種基于神經(jīng)網(wǎng)絡權值同步的TinySec協(xié)議密鑰更新方案[J]. 計算機科學, 2009, 36(4):84-86.
[4]田勇,向濤. 神經(jīng)網(wǎng)絡同步的判定及在神經(jīng)密碼中的應用[J]. 計算機工程與應用, 2011, 47(36):109-111.
Analysis Method of Password Attributes Based on Neural Network
Chen Ruihao, Qiu Weidong
(College of Information Security Engineering, Shanghai Jiaotong University, Shanghai 200240, China)
This paper proposes an analyzing method which is fit for a large number of passwords. By building up a neural network model, it can analyze and dig for potential relationships between password attributes. After attribute assignment for passwords of different application types, it can utilize neural network tool in MATLAB to finish model building, training and simulation testing, in order to find out potential and valuable relationships or rules between attributes. With such relationships, it can help to deduce unknown attribute values from the already known ones, or provide some directivity help for password cracking and recovery work by generating brute force cracking dictionary, which reflects the users’ habits of password setting.
Neural Network, Password, Attribute Assignment, Analysis
TP183
A
2014.12.11)
1007-757X(2015)04-0045-03
陳銳浩(1989-),男,廣東潮州,上海交通大學信息安全工程學院,碩士研究生,研究方向:密碼學與計算機取證,上海,200240
邱衛(wèi)東(1973-),男,江西九江,上海交通大學信息安全工程學院,教授,研究方向:密碼學與計算機取證,上海,200240