本發(fā)明屬于數(shù)據(jù)挖掘技術(shù)領(lǐng)域,特別涉及一種基于深度學(xué)習(xí)的用戶密碼猜測系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)時代的到來,互聯(lián)網(wǎng)服務(wù)越來越多,而這些互聯(lián)網(wǎng)服務(wù)廣泛采用的用戶認證方式就是文本密碼,在可預(yù)見的未來,文本密碼依然會占據(jù)不可替代的主導(dǎo)地位。盡管人們已經(jīng)提出了多種不同的用戶認證機制,然而沒有任何一種能在不給用戶引入額外負擔的前提下保留文本密碼的所有優(yōu)勢。因此,從攻擊者的角度猜測用戶密碼有利于加深人們對于密碼強度的理解,另一方面,猜測方法也可用于評估用戶密碼的強度,所提方法可幫助用戶挑選強度更高的密碼串,增強用戶賬號的安全性。
為了便于記憶,用戶密碼往往并不是隨機字符串,用戶密碼中或多或少會包含用戶的個人信息,包括用戶名、姓名、出生日期、身份證號、手機號、郵箱等等。因此,為了提高密碼猜測的速度和密碼強度評估的準確度,我們應(yīng)當考慮用戶個人信息在用戶密碼構(gòu)成中的重要作用以及個人信息對于密碼強度的影響。綜上,如何根據(jù)用戶個人信息猜測用戶密碼和評估密碼強度就有著極為重要的理論和現(xiàn)實意義。
目前已經(jīng)有一些方法嘗試根據(jù)個人信息猜測用戶密碼,如馬爾科夫模型等,但是這些方法都或多或少都存在一些缺點。馬爾科夫模型并不能捕捉密碼串字符間的長距離依賴關(guān)系,另外,用戶個人信息也并不能很自然地嵌入模型中。
技術(shù)實現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的在于提供一種基于深度學(xué)習(xí)的用戶密碼猜測系統(tǒng),本發(fā)明的一項優(yōu)勢在于,采用深度遞歸神經(jīng)網(wǎng)絡(luò)對用戶密碼模式進行建模,能夠捕捉用戶密碼串中的長距離依賴關(guān)系,因此模型的表達能力更強;本發(fā)明的另一項優(yōu)勢在于,在用戶密碼生成過程中,充分考慮用戶個人信息這一影響因素,用戶個人信息可自然地嵌入到模型中;本發(fā)明的又一項優(yōu)勢在于,所提方法不僅可以生成用戶可能使用的密碼,也可用于評估用戶密碼的強度。
為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
基于深度學(xué)習(xí)的用戶密碼猜測系統(tǒng),包括:
數(shù)據(jù)處理子系統(tǒng),實現(xiàn)輸入數(shù)據(jù)的預(yù)處理,根據(jù)用戶個人信息和用戶密碼生成用戶密碼模式;
具體地,給定用戶個人信息和對應(yīng)的用戶密碼字符串,借鑒自然語言處理分詞思路,采用最長正向匹配算法對用戶個人信息和用戶密碼字符串進行匹配,找到包含用戶個人信息,如用戶名、姓名、出生日期、身份證號、手機號、郵箱的子串,匹配完成后,從左到右掃描匹配結(jié)果并根據(jù)結(jié)果生成該特定密碼串的構(gòu)成模式。
模式訓(xùn)練子系統(tǒng),通過分析用戶密碼模式數(shù)據(jù),基于遞歸神經(jīng)網(wǎng)絡(luò)構(gòu)建用戶密碼模式概率模型;
具體地,所述模式訓(xùn)練子系統(tǒng)基于數(shù)據(jù)處理子系統(tǒng)得到的用戶密碼構(gòu)成模式,構(gòu)建深度遞歸神經(jīng)網(wǎng)絡(luò)(rnn,recurrentneuralnetwork)模型對用戶密碼構(gòu)成模式進行分析,從而識別出密碼構(gòu)成模式中的長時依賴關(guān)系和共現(xiàn)關(guān)系,得到的密碼構(gòu)成模式概率模型可用于模式提取子系統(tǒng)生成最常用密碼模式。
模式提取子系統(tǒng),基于模式訓(xùn)練子系統(tǒng)得到的用戶密碼模式概率模型,利用beamsearch方法生成用戶最常用密碼模式;
具體地,基于模式訓(xùn)練子系統(tǒng)得到的用戶密碼模式概率模型,本發(fā)明利用beamsearch方法生成用戶最常用密碼模式。采用beamsearch方法可有效降低搜索空間,極大地提升算法效率,將時間復(fù)雜度從指數(shù)級別降到線性級別。
密碼生成子系統(tǒng),根據(jù)模式提取子系統(tǒng)生成的用戶最常用密碼模式,基于用戶個人信息,生成用戶可能使用的密碼。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
1、使用遞歸神經(jīng)網(wǎng)絡(luò)模型對用戶密碼構(gòu)成模式進行建模,提升了模型的表達能力。
本發(fā)明使用遞歸神經(jīng)網(wǎng)絡(luò)對用戶密碼構(gòu)成模式進行建模,可捕捉密碼構(gòu)成模式中的長時依賴關(guān)系和共現(xiàn)關(guān)系,提升了模型的表達能力。
2、通過引入個人信息,可降低猜對用戶密碼所需的猜測次數(shù),另外也可提升密碼強度評估的準確度。
本發(fā)明將個人信息很自然地嵌入模型中,由于用戶密碼中普遍包含用戶個人信息,因此本發(fā)明所提方法可降低猜對特定用戶密碼所需的猜測次數(shù);通過引入個人信息,密碼強度評估準確度也能得到較大提升。
3、通過引入beamsearch方法,可極大地減少算法搜索空間,提升算法效率。
引入beamsearch方法后,可將搜索空間控制在合理的范圍內(nèi),提升算法運行效率,將算法時間復(fù)雜度從指數(shù)級別降至線性級別。
4、本發(fā)明有別于其他密碼猜測系統(tǒng),在密碼猜測過程中充分利用用戶個人信息,通過利用用戶個人信息,可減少用戶密碼平均猜測次數(shù),也可提高用戶密碼強度評估準確度。
附圖說明
圖1為本發(fā)明系統(tǒng)整體結(jié)構(gòu)圖。
圖2為本發(fā)明數(shù)據(jù)處理子系統(tǒng)流程圖。
圖3為本發(fā)明數(shù)據(jù)處理子系統(tǒng)最大正向匹配算法示例圖。
圖4為本發(fā)明模式訓(xùn)練子系統(tǒng)流程圖。
圖5為模式訓(xùn)練子系統(tǒng)遞歸神經(jīng)網(wǎng)絡(luò)示意圖。
圖6為遞歸神經(jīng)網(wǎng)絡(luò)gru單元結(jié)構(gòu)圖。
圖7為本發(fā)明模式提取子系統(tǒng)流程圖。
圖8為本發(fā)明密碼生成子系統(tǒng)流程圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和實施例詳細說明本發(fā)明的實施方式。
如圖1所示,本系統(tǒng)由四個子系統(tǒng)組成,分別是數(shù)據(jù)處理子系統(tǒng),模式訓(xùn)練子系統(tǒng),模式提取子系統(tǒng)和密碼生成子系統(tǒng)。系統(tǒng)的輸入數(shù)據(jù)為用戶的個人信息和對應(yīng)的密碼,用戶個人信息包括用戶名、姓名、出生日期、身份證號、手機號、郵箱等;
首先,將上述用戶個人信息以及密碼數(shù)據(jù)輸入數(shù)據(jù)處理子系統(tǒng),利用自然語言處理正向最大匹配算法對每組個人信息和密碼進行匹配,根據(jù)匹配結(jié)果從左到右掃描生成密碼串對應(yīng)的密碼模式;
其次,使用模式訓(xùn)練子系統(tǒng)對數(shù)據(jù)處理子系統(tǒng)得到的密碼模式進行分析。為了捕捉用戶密碼模式中的長時依賴關(guān)系和共現(xiàn)關(guān)系,本發(fā)明采用遞歸神經(jīng)網(wǎng)絡(luò)對用戶密碼模式進行建模,構(gòu)建用戶密碼模式概率模型,得到的模型可用于模式提取子系統(tǒng)生成最常用的用戶密碼模式;
再次,模式提取子系統(tǒng)利用模式訓(xùn)練子系統(tǒng)得到的用戶密碼模式概率模型,根據(jù)集束搜索(beamsearch)算法生成用戶最常用的密碼模式;
最后,根據(jù)模式提取子系統(tǒng)得到的最常用密碼模式,按概率從高到低的順序?qū)⒚艽a模式中的每個部分使用相應(yīng)的部分進行替換,生成用戶可能使用的密碼。
本發(fā)明中各個子系統(tǒng)的詳細介紹如下:
1、數(shù)據(jù)處理子系統(tǒng)
主要實現(xiàn)輸入數(shù)據(jù)的預(yù)處理,生成密碼串對應(yīng)的密碼模式。
為了描述方便,下表1給出可能匹配上的所有密碼模式:
表1待匹配密碼模式信息
注:匹配過程優(yōu)先與用戶個人信息進行匹配,以上所有個人信息均匹配不上時密碼片段才會被標記為字母、數(shù)字或特殊符號類別。
具體地,如圖2所示,數(shù)據(jù)處理子系統(tǒng)對用戶密碼數(shù)據(jù)的處理過程如下:
用戶個人信息包括用戶名、姓名、出生日期、身份證號、手機號、郵箱等,其中姓名為中文漢字形式,需要將其轉(zhuǎn)化為拼音的形式。
借鑒自然語言處理領(lǐng)域中文分詞思路,本發(fā)明采用正向最大匹配算法對用戶個人信息和密碼進行匹配,匹配流程如下(示例如附圖3所示):
1)從密碼字符串左端開始匹配,考察窗口大小為最大匹配長度的子串,按2)流程進行匹配,若匹配成功,則標記匹配結(jié)果,否則左移結(jié)束位置,繼續(xù)進行匹配,直到匹配成功或找不到匹配項。若找不到匹配項,則右移開始匹配位置;
2)將子串與用戶個人信息一一進行匹配,若成功,則返回匹配結(jié)果,否則,轉(zhuǎn)1)。個人信息匹配流程如下所示:
a)對于用戶姓名,生成用戶密碼中常用的組合,如姓+名、名首字母+姓等16中不同組合形式,若子串能夠與所有姓名可能組合之一完全匹配上,則匹配成功;
b)對于出生日期,生成用戶密碼中出生日期常用組合,如年+月+日、月+日等共10種不同的組合模式,若子串能夠與所有出生日期可能組合之一完全匹配上,則匹配成功;
c)對于用戶名、郵箱、身份證號、手機號等信息,若以上信息包含子串,則匹配成功;為避免誤匹配,要求匹配子串長度不小于4。
d)整個密碼字符串匹配完成后,對屬于相同語義類別的連續(xù)子串進行合并,如附圖中“!”,“@”,“#”均為特殊符號類別,則將其合并為s3。
匹配完成后,從左到右掃描匹配結(jié)果,生成最終密碼模式,每個模式項既包括匹配上的信息類型,也包括成功匹配子串的長度,附圖3中密碼生成的模式則可能為n5b4n3s3。
2、模式訓(xùn)練子系統(tǒng)
模式訓(xùn)練子系統(tǒng)利用遞歸神經(jīng)網(wǎng)絡(luò)分析密碼模式數(shù)據(jù),捕捉輸入密碼模式中的時序依賴關(guān)系和共現(xiàn)關(guān)系,構(gòu)建密碼模式概率模型。
具體地,如圖4所示,模式訓(xùn)練子系統(tǒng)對密碼模式數(shù)據(jù)的分析過程如下:
如附圖5所示,遞歸神經(jīng)網(wǎng)絡(luò)每個時刻的輸入為當前時刻的密碼模式,輸出為下一個時刻的密碼模式,整個遞歸神經(jīng)網(wǎng)絡(luò)主要功能就是根據(jù)之前的密碼模式預(yù)測下一個時刻每個可能的密碼模式出現(xiàn)的概率。
上述遞歸神經(jīng)網(wǎng)絡(luò)(rnn)模型詳細形式化描述如下:
rnn遞歸神經(jīng)網(wǎng)絡(luò)接受變長序列的輸入x=(x1,…,xt),網(wǎng)絡(luò)包含一個隱含狀態(tài)h和可選輸出y,每個時刻t,rnn隱含狀態(tài)會按照下式進行更新:
h<t>=f(h<t-1>,xt)(1)
其中,xt為當前時刻的輸入,在本發(fā)明即為當前時刻的密碼模式;ht為當前時刻隱含狀態(tài);f是一個非線性激活函數(shù),f可以是簡單的sigmoid函數(shù),也可以是復(fù)雜的神經(jīng)網(wǎng)絡(luò)單元如lstm(longshort-termmemory)或gru(gatedrecurrentunit)。
本發(fā)明中非線性激活函數(shù)f選為gru單元,gru單元結(jié)構(gòu)如附圖6所示:
以下詳細介紹gru單元激活值的計算過程。首先,重置門(resetgate)rj可按照下式(2)計算得到:
rj=σ([wrx]j+[urh<t-1>]j)(2)
其中,σ為sigmoid函數(shù),[.]j代表向量的第j個元素,x為輸入向量,ht-1為上個時刻的隱含狀態(tài)。wr和ur是要學(xué)習(xí)得到的權(quán)重矩陣。
類似地,更新門zj可通過下式(3)進行計算:
zj=σ([wzx]j+[uzh<t-1>]j)(3)
隱含元的真實激活值hj可通過式(4)進行計算:
其中,
在上式中,當重置門接近0時,隱含狀態(tài)會被強制忽略上個時刻的隱含層狀態(tài)并重置為當前輸入。該機制可幫助隱含單元有效地丟棄對未來狀態(tài)沒有影響的無關(guān)信息,可得到一個更為簡潔的表示。
另一方面,更新門控制著上一時刻隱含層狀態(tài)會在多大程度上影響當前隱含層狀態(tài),這一機制可幫助rnn記住長期信息。
由于每個隱含單元都有單獨的重置門和更新門,每個隱含單元能夠捕捉到不同時間尺度的依賴關(guān)系。捕捉短時依賴關(guān)系的隱含單元的重置門會更加活躍,而捕捉長期依賴關(guān)系的隱含單元更新門則會更加活躍。
通過訓(xùn)練,rnn可預(yù)測序列中下一個符號(密碼模式)的概率,匯總每個時刻的信息,rnn就可以學(xué)習(xí)得到一個序列的概率分布。每個時刻t的輸出是一個條件概率分布,如通過softmax激活函數(shù)我們可得到一個多項式分布:
其中wj是權(quán)重矩陣w中的第j行。
基于此,可以使用下式計算序列x的概率:
綜上,可得到如下優(yōu)化目標:
其中n為所有訓(xùn)練樣本的個數(shù),pθ(xn)為序列xn的概率,θ為模型參數(shù)。
整個rnn模型可通過rmsprop或者adagrad優(yōu)化算法進行優(yōu)化,優(yōu)化得到的模型可用于特征提取子系統(tǒng)提取用戶最常用的密碼模式。
3、模式提取子系統(tǒng)
主要功能是基于模式訓(xùn)練子系統(tǒng)得到的用戶密碼模式概率模型,利用beamsearch方法生成用戶最常用密碼模式;
具體地,附圖7為模式提取子系統(tǒng)基本流程。
本發(fā)明使用的集束搜索算法(beamsearch)是一種啟發(fā)式圖搜索算法,通常用在解空間比較大的情況下,為了減少搜索所占用的空間和時間,在每一步深度擴展的時候,剪掉一些質(zhì)量比較差的結(jié)點,保留下一些質(zhì)量較高的結(jié)點。這樣減少了空間消耗,并提高了時間效率,集束搜索算法可將原來指數(shù)時間復(fù)雜度降為線性時間復(fù)雜度。
集束搜索(beamsearch)使用廣度優(yōu)先策略建立搜索樹,在樹的每一層,按照啟發(fā)代價對節(jié)點進行排序,然后僅留下預(yù)先確定的個數(shù)(beamwidth-集束寬度)的節(jié)點,僅這些節(jié)點在下一層次繼續(xù)擴展,其他節(jié)點就被剪掉了。如果集束寬度無窮大,那該搜索就是寬度優(yōu)先搜索。集束寬度可以是預(yù)先定好的,也可以是變動的,可以先按照一個最小的集束寬度進行搜索,如果沒有找到合適的解,再擴大集束寬度再找一遍。算法流程如下所示:
1)初始化候選列表為空,擴展集合為[[<sop>]](<sop表示模式開始標識>),設(shè)定集束寬度為k;
2)基于擴展集合,根據(jù)遞歸神經(jīng)網(wǎng)絡(luò)生成下一時刻密碼模式的概率分布,計算到下個時刻為止所有已生成密碼模式序列的概率,按概率從高到低排序并將前k個加入擴展集合,將概率前k的密碼模式序列加入候選列表;
3)判斷生成候選列表集合大小是否達到k,若達到,轉(zhuǎn)4),否則轉(zhuǎn)2);
4)對候選集合列表序列按概率從高到低排序輸出。
通過以上集束搜索算法就可以找到概率較高的若干密碼模式,即用戶最常用的密碼模式。
4、密碼生成子系統(tǒng)
主要功能是根據(jù)模式提取子系統(tǒng)生成的用戶最常用密碼模式,基于用戶個人信息,生成用戶可能使用的密碼。
具體地,如附圖8所示,密碼生成子系統(tǒng)的主要流程主要包括猜測結(jié)構(gòu)生成和自適應(yīng)替換兩個階段,以下詳細介紹:
1)猜測結(jié)構(gòu)生成:在本階段,根據(jù)訓(xùn)練結(jié)果,按概率從高到低的順序替換密碼模式中的“d”和“s”符號,使用詞典中的詞替換密碼模式串中的“l(fā)”符號。由于每個人的個人信息并不相同,所以只能在最后生成階段考慮用戶個人信息,本階段并不對個人信息進行處理,所以本階段生成的密碼并不是真正的密碼。因此,本階段僅生成pre-terminal結(jié)構(gòu),生成的pre-terminal結(jié)構(gòu)包含部分真正的猜測結(jié)果以及涉及個人信息的語義符號。比如,密碼模式l5n5b3s1可能會被替換為hellon5b3!(如果“hello”在用戶自定義字典中且“!”是訓(xùn)練集中出現(xiàn)次數(shù)最多的單個特殊字符)。值得一提的是,對于“l(fā)”符號而言,用戶字典中具有相同長度的字符串具有相同的概率,“hello”的概率是
2)自適應(yīng)替換:在本階段,所有個人信息語義符號會被替換為特定用戶對應(yīng)的個人信息,如果有多個相同長度的候選項,則所有的都會被替換,生成候選密碼。以hellon5b3!為例,若用戶姓名為“張三”,n5則會替換為“zhang”。然而,鑒于b3有多個候選項,所有長度為3的“19910816”的子串都可能是一個候選項,生成的候選密碼會包含所有可能的子串,如“hellozhang991!”,“hellozhang108!”,…,“hellozhang816!”等等。我們會一直嘗試替換直到找到一個和“張三”密碼完全匹配的密碼串。此外,由于并不是每個特定長度的個人信息都能找到,并不是所有的個人信息語義符號都能被替換。在此種情形下,并不會為該用戶生成相應(yīng)的密碼猜測結(jié)果。
綜上,本發(fā)明提供的一種基于深度學(xué)習(xí)的用戶密碼系統(tǒng),通過對用戶密碼模式進行分析,根據(jù)用戶的個人信息,預(yù)測用戶可能使用的密碼。本發(fā)明可用于猜測用戶密碼;也可用于評估用戶密碼強度。