滕南君,魯華祥,金敏,葉俊彬,李志遠(yuǎn)
(1. 中國(guó)科學(xué)院 半導(dǎo)體研究所,北京 100083; 2. 中國(guó)科學(xué)院大學(xué),北京 100089; 3. 中國(guó)科學(xué)院 腦科學(xué)與智能技術(shù)卓越創(chuàng)新中心,上海 200031; 4. 半導(dǎo)體神經(jīng)網(wǎng)絡(luò)智能感知與計(jì)算技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100083)
在網(wǎng)絡(luò)時(shí)代普及的今天,密碼是一種被廣泛使用的用戶驗(yàn)證方法。主要原因在于,一方面密碼方便理解、使用,另一方面較容易實(shí)現(xiàn)。然而,讓人擔(dān)憂的是,密碼的使用者總是傾向于設(shè)置一些強(qiáng)度低、易猜測(cè)的弱密碼,例如:abcdefg,1234567等。實(shí)際上,密碼的安全性和方便性之間,總是存在某種程度上的折中:即強(qiáng)密碼不容易被攻擊破解,但是對(duì)于用戶來說,很難記憶;而弱密碼雖然方便記憶和使用,但卻容易被猜到?,F(xiàn)階段大部分網(wǎng)站在用戶設(shè)定密碼時(shí),都會(huì)加入密碼強(qiáng)度測(cè)試機(jī)制(一般分為“弱、中等、強(qiáng)”3個(gè)級(jí)別)這樣的預(yù)防措施能夠在一定程度上提醒用戶避免設(shè)定過于簡(jiǎn)單的密碼。這些機(jī)制通常都是基于規(guī)則的,比如:要求密碼必須包含一個(gè)數(shù)字、一個(gè)小寫字母或者一個(gè)特殊字符[1],密碼長(zhǎng)度在6~18位之間等。
如何更快、更有效地找到有效的用戶密碼,一直以來都是一個(gè)活躍的研究領(lǐng)域。目前流行的基于規(guī)則的密碼猜測(cè)工具h(yuǎn)ash-cat,John the ripper(JTR)[2-3], 主要通過原有的密碼字典或泄露的密碼數(shù)據(jù)集,加上密碼規(guī)則的模糊化和變形來生成新的大量近似的密碼。文獻(xiàn)[4]開發(fā)了一種基于模板結(jié)構(gòu)的密碼模型PCFGs,采用了上下文無關(guān)法,這種方法背后的思想是將密碼切分成不同的模板結(jié)構(gòu)(e.g.,5個(gè)小寫字母加3個(gè)數(shù)字),讓終端產(chǎn)生的密碼符合這樣的密碼結(jié)構(gòu)。每個(gè)生成的密碼P概率等于該密碼結(jié)構(gòu)類型的概率PT與各子結(jié)構(gòu)的概率乘積,例如,如果一個(gè)密碼由兩部分組成:字母+數(shù)字,那么該密碼的生成概率則為P=PletterPdigitPT,值得一提的是,PCFGs模型在針對(duì)長(zhǎng)密碼時(shí)有著較好的效果。文獻(xiàn)[1]采用一種基于馬爾可夫的模型,該模型通過評(píng)估n元概率的原理,在衡量密碼強(qiáng)度上性能要優(yōu)于基于規(guī)則的方法。文獻(xiàn)[6]系統(tǒng)地比較和實(shí)現(xiàn)了目前流行的幾種密碼猜測(cè)的技術(shù)來評(píng)估密碼強(qiáng)度,發(fā)現(xiàn)字典攻擊在發(fā)現(xiàn)弱密碼時(shí)最有效,它們能夠快速地以哈希校驗(yàn)的方法快速檢驗(yàn)大量規(guī)則相似的密碼,而馬爾可夫鏈模型則在強(qiáng)密碼時(shí)表現(xiàn)更加突出。所有的這些攻擊方法隨著搜索空間的不斷擴(kuò)大,有效性會(huì)出現(xiàn)指數(shù)型的下降[7]。
盡管上述的這些方法,都能夠在一定程度上彌補(bǔ)人為設(shè)定密碼規(guī)則的一些不足,但是這些方法往往也包含大量非真實(shí)用戶設(shè)置密碼[5];此外,密碼規(guī)則的確立和啟發(fā)式探索依然需要大量密碼專家的參與。對(duì)于人為設(shè)定的密碼,在一定程度上,可以將其看成語(yǔ)言的延伸,因此,明文密碼的設(shè)置習(xí)慣依然符合人類的表達(dá)習(xí)慣;在本文中我們希望能夠直接、有效地挖掘出密碼的一些內(nèi)在的規(guī)律或特征。文獻(xiàn)[8-9]中,展示了遞歸神經(jīng)網(wǎng)絡(luò)能夠很好地學(xué)習(xí)到文本數(shù)據(jù)特征,并且生成一些之前從未出現(xiàn)過的新字符組合。這表明,遞歸神經(jīng)網(wǎng)絡(luò)并不僅僅只是簡(jiǎn)單的復(fù)刻、重現(xiàn)訓(xùn)練數(shù)據(jù),而是通過內(nèi)部的特征表示不同的訓(xùn)練樣本,在高維度中綜合重構(gòu)出新的數(shù)據(jù)。我們的PGRNN模型很大程度上是基于之前的這些方法,旨在通過小規(guī)模泄露密碼樣本數(shù)據(jù),生成更多符合真實(shí)用戶密碼樣本分布空間特征的密碼,提高密碼猜測(cè)算法效率;同時(shí),通過端到端的小模型生成方式,能夠有效地?cái)U(kuò)充密碼攻擊字典,縮小密碼猜測(cè)空間。
預(yù)測(cè)是一個(gè)概率問題,對(duì)于一個(gè)訓(xùn)練好的RNN網(wǎng)絡(luò),給定一串輸入字符序列,然后計(jì)算出下一個(gè)字符的概率分布并且根據(jù)概率生成下一個(gè)出現(xiàn)的字符,并將當(dāng)前時(shí)刻的字符作為下一步網(wǎng)絡(luò)的輸入。由于密碼本身就是一串字符串,因此,密碼的生成和文本生成之間有著非常相似的特點(diǎn)。最早嘗試使用遞歸神經(jīng)網(wǎng)絡(luò)來做密碼猜測(cè)攻擊的是一篇博客[10],它的想法是通過一大堆已經(jīng)被破解的密碼,產(chǎn)生新的、有效的密碼,來預(yù)測(cè)那些還沒有被破解的密碼。但是遺憾的是,作者只是簡(jiǎn)單地搭建了個(gè)RNN模型,并沒有對(duì)模型進(jìn)行調(diào)整和修改,每個(gè)模型只生成了很少的密碼數(shù)量,而且匹配上的密碼數(shù)量也非常有限,以至于作者對(duì)這種方法可行性表示懷疑。最近,文獻(xiàn)[11]第1次嘗試了使用生成對(duì)抗網(wǎng)絡(luò)[12](generative adversarial networks, GAN)來進(jìn)行密碼猜測(cè)攻擊。在生成對(duì)抗網(wǎng)絡(luò)PassGAN中,生成網(wǎng)絡(luò)G和對(duì)抗網(wǎng)絡(luò)D采用的都是卷積神經(jīng)網(wǎng)絡(luò),生成網(wǎng)絡(luò)G接受輸入作為噪聲向量,前向傳播經(jīng)過卷積層后輸出一個(gè)長(zhǎng)度為10的one-hot編碼的字符序列。這些字符序列經(jīng)過Softmax非線性函數(shù)之后,進(jìn)入對(duì)抗網(wǎng)絡(luò)D中進(jìn)行判別。在測(cè)試中,文獻(xiàn)[11]通過兩個(gè)網(wǎng)站公開泄露的密碼數(shù)據(jù)集來訓(xùn)練PassGAN模型,然后生成不同數(shù)量級(jí)別的密碼數(shù)量,結(jié)果顯示他們的模型能夠在測(cè)試密碼數(shù)據(jù)中匹配上一定數(shù)量的密碼。Melicher等[13]提出了一種快速的密碼猜測(cè)方法,他們采用了復(fù)雜的3層長(zhǎng)短時(shí)記憶(long-short term memory, LSTM)遞歸層和兩層全連接層的網(wǎng)絡(luò)來產(chǎn)生新的密碼字符序列。在測(cè)評(píng)中,文獻(xiàn)[13]基于蒙特卡羅仿真的方法:在一個(gè)非常大的數(shù)量范圍內(nèi)(1010~1025),對(duì)模型在5組密碼長(zhǎng)度、字符類型都不同的測(cè)試數(shù)據(jù)上進(jìn)行測(cè)試,結(jié)果表明他們的方法性能要優(yōu)于基于字典和規(guī)則的Hash-cat與JTR,以及基于概率的PCFGs、Markov模型。
遞歸神經(jīng)網(wǎng)絡(luò)(RNN)是一種基于時(shí)間序列的網(wǎng)絡(luò)結(jié)構(gòu),因而能夠?qū)哂袝r(shí)間順序特性的數(shù)據(jù)進(jìn)行建模。對(duì)于字符級(jí)別的RNN網(wǎng)絡(luò),在每個(gè)時(shí)間步上,輸入值為one-hot編碼的一維向量(其中,向量維度由數(shù)據(jù)集包含的字符種類數(shù)決定),輸入數(shù)據(jù)信息傳遞到隱層,并更新隱層狀態(tài),經(jīng)過非線性函數(shù)后最后達(dá)到輸出層,輸出一個(gè)預(yù)測(cè)概率分布,并通過概率分布的值,確定輸出字符的種類。RNN網(wǎng)絡(luò)可以具有多層隱含層,并且每一層包含若干個(gè)神經(jīng)元,加上非線性激活函數(shù);因而整個(gè)網(wǎng)絡(luò)具有非常強(qiáng)大的特征表達(dá)能力。在連續(xù)多個(gè)時(shí)間步上,RNN網(wǎng)絡(luò)能夠組合、記錄大量的信息,從而能夠用來進(jìn)行準(zhǔn)確地預(yù)測(cè)工作。對(duì)于某一個(gè)特定時(shí)間步T的輸出,它不僅僅依賴于當(dāng)前的輸入值,還與T之前的若干步輸入有關(guān)。舉個(gè)例子,一個(gè)RNN網(wǎng)絡(luò)要輸出“Beijing”這個(gè)字符串,我們可能會(huì)給該網(wǎng)絡(luò)輸入Beijin,而對(duì)于接下來網(wǎng)絡(luò)要輸出的這個(gè)字符,根據(jù)輸出概率分布,輸出字符“g”的概率要顯著高于其他候選字符。另外,在輸出一串字符之后,我們依賴一個(gè)特殊的換行符作為單個(gè)密碼結(jié)束的標(biāo)志。
遞歸神經(jīng)網(wǎng)絡(luò)的誤差通過反向梯度傳播算法按照時(shí)間步從后往前傳遞。但是,由于梯度在傳遞過程中需要經(jīng)過連續(xù)地相乘,因此這樣的參數(shù)關(guān)系使得RNN的梯度傳播會(huì)存在一定的難度。Bengio等[16-17]證明了梯度在反向傳播中,會(huì)隨著時(shí)間步的推移呈指數(shù)級(jí)的衰減或者爆炸問題,給遞歸神經(jīng)網(wǎng)絡(luò)的訓(xùn)練增加難度。梯度爆炸會(huì)帶來RNN網(wǎng)絡(luò)訓(xùn)練的不穩(wěn)定性,在實(shí)際訓(xùn)練中,梯度爆炸的情況可以通過對(duì)梯度進(jìn)行裁剪(將梯度限制在一定數(shù)值范圍內(nèi))來有效地控制。后來出現(xiàn)的 long short term memory (LSTM)[14],GRU[15]則是解決了RNN梯度衰減問題。通過改變神經(jīng)元內(nèi)部的結(jié)構(gòu)方式,并且加入中間信息的存儲(chǔ)單元,使得梯度可以在很長(zhǎng)的時(shí)間步上傳播,輸出與輸入之間依賴的時(shí)間跨度變大。對(duì)于密碼猜測(cè)任務(wù)來說,單個(gè)密碼的長(zhǎng)度是有限的(絕大部分)。因此,長(zhǎng)時(shí)間序列上的可依賴性或許并不是我們所需要的,因?yàn)閷?duì)于一個(gè)長(zhǎng)度有限的密碼來說,當(dāng)前字符可能僅僅取決于之前的幾個(gè)字符,而不是很多個(gè)。出于這樣的考慮,本文中的PG-RNN模型采用的是之前沒有人嘗試過的RNN網(wǎng)絡(luò)結(jié)構(gòu),從而能夠搭建一個(gè)輕量化但非常有效地密碼猜測(cè)模型(整個(gè)網(wǎng)絡(luò)模型參數(shù)約0.12 M)。
本文提出的PG-RNN模型,參數(shù)設(shè)置如下:出于對(duì)訓(xùn)練數(shù)據(jù)中絕大部分的密碼長(zhǎng)度的考慮,時(shí)間序列長(zhǎng)度為20;模型采用單層遞歸神經(jīng)網(wǎng)絡(luò),隱層神經(jīng)元數(shù)量為256,兩個(gè)全連接層;學(xué)習(xí)率初始化為0.01,采用了Adagrad梯度更新算法。
本文采用的是從公開互聯(lián)網(wǎng)上收集到的一些網(wǎng)站泄露的真實(shí)密碼數(shù)據(jù)集合, 這些公開的密碼集合都是以純文本txt或者sql格式存在。我們僅僅使用這些數(shù)據(jù)集中的密碼部分,而濾除掉其他非相關(guān)信息(包括用戶注冊(cè)郵箱或者用戶名等)。我們?cè)趯?shí)驗(yàn)中使用了如下的密碼數(shù)據(jù)集,它們分別是 Rockyou、Yahoo、CSDN、RenRen 和 Myspace[18-20]。Rockyou密碼集包含了2009年12月由于SQL漏洞遭到了黑客攻擊,導(dǎo)致約3 200萬用戶密碼, 我們收集到大約1 400萬無重復(fù)的密碼;2012年,Yahoo公司的Voices泄露了大約40萬個(gè)賬號(hào)信息,CSDN(Chinese software developer network)是目前國(guó)內(nèi)最大的IT開發(fā)者社區(qū),它在2011年發(fā)生的數(shù)據(jù)庫(kù)泄露事件,有大約600萬用戶賬號(hào)和明文密碼被公開。同樣是在2011年,國(guó)內(nèi)著名的社交平臺(tái)人人網(wǎng)也被曝遭到黑客攻擊,將近500萬用戶賬號(hào)和密碼泄露. 此外,還有Myspace網(wǎng)站泄露的部分?jǐn)?shù)據(jù),大約37 000個(gè)存在于txt的明文密碼。
我們對(duì)這些數(shù)據(jù)進(jìn)行了以下清洗工作。1)剔除掉了除密碼之外的其他信息;2)考慮到編碼問題,只保留了那些只包含95個(gè)可打印ASCII字符的密碼(出于用戶使用習(xí)慣考慮),這一步濾除掉了少量的密碼;3)我們對(duì)這些密碼進(jìn)行了長(zhǎng)度的統(tǒng)計(jì)分析,如圖1所示。對(duì)于以上提到的密碼數(shù)據(jù)集,我們發(fā)現(xiàn)任何一個(gè)密碼數(shù)據(jù)集來說,大部分的密碼長(zhǎng)度都集中在[5, 15]的范圍內(nèi)(對(duì)于本文中采用到的密碼數(shù)據(jù)集來說,密碼長(zhǎng)度分布在[5, 15]區(qū)段內(nèi)的數(shù)量都占據(jù)了總數(shù)的95%以上)。這是因?yàn)橐环矫娲蟛糠志W(wǎng)站在要求用戶輸入密碼時(shí),都有最短長(zhǎng)度限制,另一方面,對(duì)于大多數(shù)用戶在設(shè)定密碼時(shí),為了方便自己記憶和輸入,也不會(huì)選擇長(zhǎng)的密碼。因此我們進(jìn)一步只選取了長(zhǎng)度(不包括換行符)在[5, 15]的密碼作為我們的實(shí)驗(yàn)數(shù)據(jù)。最終的密碼集細(xì)節(jié)情況如表1所示。
圖1 5個(gè)公開泄露的密碼數(shù)據(jù)集的密碼長(zhǎng)度分布情況Fig. 1 The password length distribution of the five leaked passwords dataset
表 1 密碼數(shù)據(jù)集的統(tǒng)計(jì)以及數(shù)據(jù)清理情況Table 1 Statistic of password datasets and data clean
為評(píng)估PG-RNN模型效果,我們對(duì)密碼數(shù)據(jù)集進(jìn)行了隨機(jī)切分:70%密碼用于訓(xùn)練,30%用于測(cè)試。以Rockyou密碼數(shù)據(jù)集為例,70%的訓(xùn)練數(shù)據(jù)(一共有9 804 818個(gè)無重復(fù)密碼),30%的測(cè)試數(shù)據(jù)(一共4 201 550個(gè)無重復(fù)密碼),對(duì)于其他數(shù)據(jù)集,我們也做了同樣的處理。
神經(jīng)網(wǎng)絡(luò)通過在訓(xùn)練過程中不斷地迭代,逐步學(xué)習(xí)到數(shù)據(jù)特征??紤]到我們收集到的數(shù)據(jù)集之間大小差異巨大,而數(shù)據(jù)集的大小對(duì)于網(wǎng)絡(luò)的訓(xùn)練次數(shù)是有著至關(guān)重要的影響。在實(shí)際訓(xùn)練過程中,發(fā)現(xiàn)PG-RNN網(wǎng)絡(luò)迭代到約1.5個(gè)Epoch之后,誤差就不再下降了,網(wǎng)絡(luò)性能也達(dá)到了相對(duì)穩(wěn)定階段。因此根據(jù)每個(gè)數(shù)據(jù)集的大小,我們選擇設(shè)置不同的迭代次數(shù)。
密碼長(zhǎng)度和密碼字符結(jié)構(gòu)類型一直是衡量密碼特性的重要指標(biāo)。在該小節(jié)中,我們參考了文獻(xiàn)[5]的方法。對(duì) Rockyou、CSDN、RenRen、Yahoo、Myspace原始數(shù)據(jù)集以及各自新生成的密碼數(shù)據(jù)集從密碼長(zhǎng)度和密碼字符結(jié)構(gòu)類型進(jìn)行了統(tǒng)計(jì)分析。圖 2(a) ~ (e)分別表示 Rockyou、CSDN、Ren-Ren、Yahoo、Myspace的訓(xùn)練數(shù)據(jù)集和生成的不同量級(jí)的新密碼集合在不同密碼長(zhǎng)度(5~15)上的數(shù)量分布情況。
圖2 新生成的不同規(guī)模密碼集的長(zhǎng)度分布情況Fig. 2 Length distribution of new password dataset with multiple scales
可以明顯地看出,通過我們的PG-RNN模型生成的新密碼數(shù)據(jù),在長(zhǎng)度分布上非常接近原始的訓(xùn)練數(shù)據(jù),當(dāng)生成數(shù)量與原始訓(xùn)練集相當(dāng)時(shí),二者幾乎達(dá)到了重合的程度。對(duì)比PG-RNN與其他方法在CSDN密碼集上的表現(xiàn)(生成規(guī)模約為原始密碼1倍),原始數(shù)據(jù)集中數(shù)目最多的是長(zhǎng)度為8的密碼,比例為36.37%,PG_RNN長(zhǎng)度為8密碼比例為36.86%;文獻(xiàn)[5]中列出的方法在長(zhǎng)度最多的密碼數(shù)量上出現(xiàn)了不同程度的偏差,其中PCFG和4階Markov,分別達(dá)到了6.2%和18.9%。
長(zhǎng)度分布的衡量通常并不能很好地體現(xiàn)出密碼之間的差異性。文獻(xiàn)[2]中通過將密碼切分為不同的模板,反映出即使長(zhǎng)度相同的密碼,也可能是由完全不同的字符類型組成。考慮此,按照如下的幾種字符結(jié)構(gòu)類型對(duì)原始訓(xùn)練數(shù)據(jù)集和新生成的密碼集 (~x1, ~x10),進(jìn)行了分類,包括純數(shù)字、純字母(大小寫)、數(shù)字+字母(大小寫)、特殊字符共4類,具體統(tǒng)計(jì)結(jié)果見表1。對(duì)于CSDN、RenRen來說,密碼訓(xùn)練集都是以“純數(shù)字”和“數(shù)字+字母”的形式為主,比例分別占了各自對(duì)的45.4%和38.8%、52.4%和25%;而在Rockyou和Yahoo密碼數(shù)據(jù)集中,“數(shù)字+字母”和“純字母”占的比重最大,這也反映了國(guó)內(nèi)外用戶在密碼設(shè)置習(xí)慣上的一些差異。從表1中,可以很容易看出,無論是大約1倍的規(guī)模,還是約10倍的規(guī)模,我們的PG-RNN模型生成的新密碼數(shù)據(jù)與原始的訓(xùn)練密碼集的字符類型結(jié)構(gòu)分布比例都非常地接近,即便是對(duì)于占比重非常小的包含特殊字符的類型。
參照文獻(xiàn)[11]中的對(duì)比方法,在這一小節(jié)中,我們對(duì)PG-RNN模型生成的新密碼數(shù)據(jù)進(jìn)行了匹配度的評(píng)估,也就是新生成密碼與訓(xùn)練集和測(cè)試集的密碼重合個(gè)數(shù)。重點(diǎn)對(duì)比了我們的方法與文獻(xiàn)[11中的PassGAN模型在Rockyou數(shù)據(jù)集上的效果;同時(shí)針對(duì)其他幾個(gè)數(shù)據(jù)集,我們也給出了PGRNN在測(cè)試集上的匹配度結(jié)果以及分析如表2所示。
表 2 CSDN原始密碼集和不同方法生成的新密碼集(x1規(guī)模)在密碼數(shù)最多的長(zhǎng)度(L=8)上的比較Table 2 Comparison on CSDN primitive dataset and new datasets(x1 scale) generated by different methods on length (L=8) with the most passwords
密碼生成工具都是通過學(xué)習(xí)現(xiàn)有數(shù)據(jù)集中的數(shù)據(jù)特征來產(chǎn)生新的密碼數(shù)據(jù)集,而新密碼數(shù)據(jù)集與訓(xùn)練集的匹配度也能夠反映出模型的學(xué)習(xí)能力。因此,有必要將新生成的密碼數(shù)據(jù)集與訓(xùn)練數(shù)據(jù)進(jìn)行對(duì)比分析。文中重點(diǎn)對(duì)比了PG-RNN模型與文獻(xiàn)[11]在Rockyou密碼數(shù)據(jù)集上的表現(xiàn),具體結(jié)果如表3所示。從表格中可以直觀地看出,隨著生成密碼數(shù)量的增加,新生成密碼能夠與訓(xùn)練集匹配上的密碼個(gè)數(shù)也在增加,這在PGRNN和PassGAN兩個(gè)模型上都能夠很好地得到體現(xiàn),這也說明了PG-RNN模型和PassGAN都有著非常強(qiáng)的學(xué)習(xí)數(shù)據(jù)特征的能力。在匹配度上,隨著生成密碼數(shù)量的增加,本文提出的PGRNN方法與PassGAN相比,在匹配度的優(yōu)勢(shì)愈發(fā)明顯;當(dāng)生成密碼數(shù)量在108時(shí),PG-RNN模型達(dá)到了x2.24倍以上的匹配度(由于數(shù)據(jù)切分比例不同,我們的訓(xùn)練集包含的密碼個(gè)數(shù)為9 804 818(無重復(fù)),文獻(xiàn)[11]為 9 926 278(無重復(fù)))。由于與訓(xùn)練集匹配上的密碼是已知的,因此這部分密碼完全可以通過基于訓(xùn)練集的字典攻擊方式而得到。但是,與訓(xùn)練集的匹配度可以較好地表現(xiàn)出模型的學(xué)習(xí)能力的。值得一提的是,我們的RNN模型生成密碼的重復(fù)率要遠(yuǎn)遠(yuǎn)小于PassGAN,而在PassGAN模型生成的密碼中,密碼的重復(fù)率非常的高,達(dá)到80%以上(隨著生成密碼數(shù)增加,甚至大于90%),事實(shí)上大量輸出重復(fù)的密碼并沒有多大意義,反而會(huì)增加密碼生成的時(shí)間。
表 3 不同訓(xùn)練密碼集和規(guī)模約為訓(xùn)練集1倍、10倍的新生成密碼集在密碼字符結(jié)構(gòu)類型的統(tǒng)計(jì)情況Table 3 Character structure categories on training dataset and new generated passwords at the scale of x1, x10 respectively on different datasets
此外,對(duì)PG-RNN和PassGAN兩個(gè)模型生成的新密碼,在測(cè)試集上進(jìn)行了對(duì)比測(cè)試。詳細(xì)的對(duì)比結(jié)果如表4所示。
表 4 PG-RNN與PassGAN各自的生成密碼在Rockyou訓(xùn)練集上的評(píng)估結(jié)果Table 4 The evaluation results between PG-RNN and PassGAN on Rockyou training dataset
其中,第3列和第5列分別表示的是在測(cè)試集中匹配上但是沒有出現(xiàn)在訓(xùn)練集中的密碼個(gè)數(shù)(有重復(fù))、在測(cè)試集中但不在訓(xùn)練集中的密碼個(gè)數(shù)(無重復(fù))。對(duì)比兩個(gè)模型的前兩行數(shù)據(jù),可以看出,我們的模型在生成的密碼數(shù)多于PassGAN的情況下,能夠在測(cè)試集上匹配上的比例大于后者,這是理所當(dāng)然的(由于切分比例不同,我們的測(cè)試集包含無重復(fù)密碼個(gè)數(shù)是4 201 550,文獻(xiàn)[11]中是3 094 199,計(jì)算比例時(shí)是相對(duì)于各自的測(cè)試集密碼數(shù)而言,這樣比較起來相對(duì)公平)。對(duì)比兩個(gè)模型的第3、4行數(shù)據(jù)結(jié)果,PGRNN在生成密碼數(shù)量上與PassGAN相同的情況下,依然能夠獲得比PassGAN大的在測(cè)試集的覆蓋率,甚至超過了1.2%,這進(jìn)一步說明本文提出的PG-RNN模型是非常具有競(jìng)爭(zhēng)力的。 需要指出的是,PassGAN使用了復(fù)雜的多層殘差卷積神經(jīng)網(wǎng)絡(luò),在網(wǎng)絡(luò)模型復(fù)雜度和訓(xùn)練難度上都要遠(yuǎn)遠(yuǎn)高于PG-RNN模型。
除了Rockyou數(shù)據(jù)集,我們也在表5~6中,列出了我們的模型在其他數(shù)據(jù)集上的測(cè)試結(jié)果。從表格中看出,我們的PG-RNN模型針對(duì)不同的數(shù)據(jù)集都有較好的效果。此外,可以預(yù)見的是隨著生成數(shù)量的進(jìn)一步增大,能夠匹配上的數(shù)目會(huì)進(jìn)一步增加。而針對(duì)PG-RNN模型在Myspace數(shù)據(jù)集上的表現(xiàn)相對(duì)于在其他數(shù)據(jù)集表現(xiàn)較差的原因,我們分析主要在于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是高度依賴于數(shù)據(jù)的,因而對(duì)于數(shù)據(jù)量較多的情況能夠?qū)W習(xí)到更多的特征,而我們收集到的Myspace數(shù)據(jù)集太小,因此數(shù)據(jù)集體現(xiàn)的統(tǒng)計(jì)特征并不明顯,如表6。但是,總的來說,基于遞歸神經(jīng)網(wǎng)絡(luò)的模型相對(duì)于人為設(shè)定規(guī)則和Markov等方法,具備更強(qiáng)的發(fā)掘密碼特征能力。
表 5 對(duì)比PG-RNN和PassGAN的生成密碼在Rockyou測(cè)試集上的評(píng)估結(jié)果Table 5 The evaluation results between PG-RNN and PassGAN on Rockyou test dataset
表 6 PG-RNN在其他密碼數(shù)據(jù)集上的評(píng)估結(jié)果Table 6 The evaluation results of PG-RNN on other datasets
本文提出了一種基于遞歸神經(jīng)網(wǎng)絡(luò)的密碼猜測(cè)模型。在網(wǎng)上公開的泄露密碼數(shù)據(jù)集(包括Rockyou、CSDN、RenRen、Yahoo、Myspace)上對(duì)模型進(jìn)行了一系列的訓(xùn)練、測(cè)試;實(shí)驗(yàn)結(jié)果表明,當(dāng)在泄露密碼數(shù)據(jù)上訓(xùn)練后,針對(duì)字符級(jí)別建模的遞歸神經(jīng)網(wǎng)絡(luò)模型提供了一種端到端的密碼生成解決方法,能夠很好地用來生成大量密碼,從而方便破譯出更多潛在密碼。
我們的模型針對(duì)不同的數(shù)據(jù)集,以及生成不同密碼規(guī)模情況下,都能夠較好地在密碼結(jié)構(gòu)字符類型,密碼長(zhǎng)度分布等特征上接近原始訓(xùn)練數(shù)據(jù)的。此外,在Rockyou數(shù)據(jù)集上,我們的PG-RNN模型在生成數(shù)據(jù)規(guī)模相當(dāng)?shù)那闆r下,在測(cè)試集中匹配超過11%的密碼個(gè)數(shù),相對(duì)于PassGAN模型,超過了1.2%。我們的下一步工作主要分為以下兩個(gè)方面:1)嘗試其他的RNN網(wǎng)絡(luò)結(jié)構(gòu),并分析其在不同的結(jié)構(gòu)在密碼猜測(cè)上的效果;2)進(jìn)一步觀察RNN模型在生成密碼時(shí)的內(nèi)部數(shù)據(jù)表示狀態(tài)。