周 環(huán), 劉奇旭, 崔 翔, 張方嬌
1中國科學院信息工程研究所 北京 中國100093
2中國科學院大學網絡空間安全學院 北京 中國 100049
3廣州大學網絡空間先進技術研究院 廣州 中國 510006
在身份認證中, 口令一直被認為是安全性最薄弱的一環(huán), 所以很多人認為文本口令已經過時, 并提出了各種各樣替代性的身份認證方案(如圖形認證[1]、生物認證[2]、多因子認證[3]等), 但是目前仍沒有任何一種替代性方案能像文本口令一樣部署簡單且方便使用。文本口令依然是目前最主要的身份認證方式, 并且在可預見的未來, 其在身份認證領域將繼續(xù)扮演至關重要的角色[4]。
在構造口令的過程中對不同的服務使用不同的隨機字符序列被認為是相對安全的口令構造行為,但是為了方便記憶力, 用戶在構造口令時通常遠遠無法滿足隨機構造的要求[5-9]。通常情況下, 人們會選擇對自身來說容易記憶的口令, 造成大量的口令在整個口令區(qū)間中呈現(xiàn)集中分布的情況, 這一現(xiàn)象大大提升了攻擊者破解口令的成功率。
為了提升口令的安全等級, 在線的身份認證系統(tǒng)開始強制用戶使用越來越嚴格的口令構造策略。同時, 很多網站部署口令強度評測器來幫助用戶構造更安全的口令。然而這些口令強度評測器已經被證明是啟發(fā)式的而且可持續(xù)性不強[10-11]。為了更好地評估口令的強度, 我們需要更深入地理解用戶是如何構造口令的。
與最開始采用啟發(fā)式的方式研究口令安全不同,為了更加系統(tǒng)地研究口令安全, 近年來學術界逐漸提出一些新的口令概率模型, 比如 N階馬爾科夫模型(Markov N-grams)[12-13]、概率上下文無關文法模型(Probabilistic Context Free Grammar, PCFG)[14-15], 這些模型及相關理論的提出將口令研究帶入了一個新的研究階段。雖然這些口令概率模型在適用范圍和破解成功率上比傳統(tǒng)的啟發(fā)式的口令猜測方式更好,但是它們在評估口令強度時忽略了用戶在構造口令時的一些行為特征(如口令重用、使用個人信息), 同時由于采用統(tǒng)計計算的方式評估口令強度, 在實際破解過程中通常需要大量的計算資源和存儲空間且運行耗時嚴重。因此這些口令概率模型在實際的在線口令強度評估中可用性不高。
為了更好地理解用戶的口令構造行為, 同時針對傳統(tǒng)的口令概率模型存在的問題, 我們首先在大規(guī)??诹顢?shù)據(jù)集上對用戶的口令構造特征進行了分析, 接著提出了一種結合人工神經網絡(Artificial Neural Networks, ANN)和用戶個人信息(Personal Information, PI)的定向口令猜測模型。神經網絡是一種機器學習的方法, 它試圖通過模擬人類大腦處理和記憶信息的方式實現(xiàn)信息的處理。相關研究已經表明神經網絡在序列生成和處理上取得了非常成功的應用[16-17]。
本文在近年來國內外泄露的八個大規(guī)模用戶口令數(shù)據(jù)集上進行了口令安全相關實驗。我們首先對用戶口令行為進行了分析, 發(fā)現(xiàn)了用戶在構造口令過程中的一些行為特征。之后, 為了衡量用戶個人信息與其構造口令的關聯(lián)性, 我們對各個數(shù)據(jù)集中各種不同類型的個人信息進行了統(tǒng)計分析, 對用戶在口令構造中使用個人信息這一特征進行了深入的研究, 設計了一種新的評估用戶個人信息與口令之間關聯(lián)度的方法Relevance。最后為了更加準確有效地評估文本口令強度, 我們提出了一種結合神經網絡和用戶個人信息進行定向口令猜測的模型 TPGXNN(Targeted Password Guessing using X Neural Networks),并將該模與傳統(tǒng)的口令概率模型的猜測成功率進行了比較, 驗證了該模型的有效性。
本文第 1節(jié)介紹了研究的背景以及主要的研究內容; 第2節(jié)介紹相關工作, 包括口令猜測攻擊、口令強度評估以及神經網絡; 第 3節(jié)主要通過對從公開渠道收集的大規(guī)模用戶口令的實驗, 分析用戶的口令構造行為; 第 4節(jié)提出了結合用戶個人信息和神經網絡進行定向口令猜測的模型 TPGXNN; 第 5節(jié)在數(shù)據(jù)集上進行實驗, 并將TPGXNN與傳統(tǒng)的口令猜測模型進行比較; 最后, 第6節(jié)對本文進行總結和展望。
通常情況下, 口令的安全性能被劃分為兩大類[18-19]:第一類是整個口令集的安全性; 第二類是單獨某個口令的安全性。我們能使用攻擊算法模擬現(xiàn)實攻擊[20-22]或者使用依托于統(tǒng)計學的評定指標(比如香農熵[23-24]或者其他高級的統(tǒng)計學方法)來衡量第一類的安全性;而第二類的安全性則只可以采用攻擊算法模擬現(xiàn)實攻擊的方式, 再通過攻擊結果來進行評定。目前成功破解某一口令所實際需要的猜測次數(shù)是最常使用的評估指標。
我們基于神經網絡的定向口令猜測模型便采用模擬現(xiàn)實口令猜測攻擊的方式來驗證模型的有效性。接下來, 我們簡單介紹在學術界已經被廣泛研究和使用的兩種口令概率模型: 基于馬爾科夫模型的口令概率模型(以下簡稱為“Markov”模型)和基于上下文無關文法的口令概率模型(以下簡稱為“PCFG”模型)。本文第 5小節(jié)我們將對以上兩種傳統(tǒng)的口令猜測模型與TPGXNN模型的口令猜測結果進行對比。
Markov模型 Narayanan和Shmatikov于2005年首次提出使用Markov模型進行口令猜測[25]。近幾年, 出現(xiàn)了一些更加深入系統(tǒng)地利用Markov模型進行口令安全研究的成果[26-27]。此模型假設用戶在構造口令時是按一定順序(從前到后)構造的, 基于口令前后字符之間的關聯(lián)性通過統(tǒng)計計算的方法得到目標口令所對應的概率值。該模型在進行模擬口令猜測攻擊時可以分為兩個階段: 在訓練集上訓練階段和在測試集上測試階段。
首先, 在訓練集訓練階段需要統(tǒng)計訓練集口令中每個子串之后緊跟的那個字符頻數(shù)。階(gram)是Markov模型的一個重要概念, N階Markov模型需統(tǒng)計長度為N的子串之后緊跟的字符頻數(shù)。比如在四階Markov模型中, 口令Lin678需統(tǒng)計的值有: 首字符是L的頻數(shù)、L后是字符i的頻數(shù)、Li后是字符n的頻數(shù)、Lin后是數(shù)字6的頻數(shù)、Lin6后是數(shù)字7的頻數(shù)以及in67后是數(shù)字8的頻數(shù)。按照這種方式, 每個口令經過N階Markov模型訓練之后便會得到一個概率值, 也就是從前到后將長度為 N的子字符串在訓練結果中查詢, 最后把得到的所有的概率值相乘便可得到目標口令的概率值。在四階Markov模型下,口令 Lin678的概率計算為: P(Lin678)=P(L)×P(i|L)×P(n|Li)×P(6|Lin)×P(7|Lin6)×P(8|in67)。
在測試集測試階段, 先基于上述方法得到每個口令的概率, 按照從高到低的順序排列就可以得到一個概率遞減的猜測集。然后再用得到的猜測集對測試口令集進行破解測試即可。
PCFG模型 Weir等人于2009年提出了一個基于概率上下文無關文法進行口令概率猜測的模型[28]。PCFG模型的核心思想是將口令按數(shù)字(D)、字母(L)以及特殊字符(S)進行分段, 并對每個段的長度進行計數(shù)表示。比如對于口令“l(fā)in&6789”, PCFG模型將其表示成L3S1D4, 這被稱為此口令的模式。該模型在進行模擬口令猜測攻擊時也可以分為在訓練集訓上訓練和在測試集上測試兩個階段。
在訓練集訓練階段最關鍵的是通過統(tǒng)計計算得到各種口令模式對應的頻率以及各字符組件所對應的頻率。若要得到“l(fā)in&6789”的概率值, 首先需統(tǒng)計在所有口令中以L3S1D4作為模式的口令頻率, 以及“l(fā)in”在長度為3的字母串(L3)中的頻率, “&”在長度為1的特殊符號(S1)中的頻率, “6789”在長度為4的數(shù)字串(D4)中的頻率。假設P(S→L3S1D4)=0.2, P(L3→lin)=0.3, P(S1→&)=0.1, P(D4→6789)=0.2,則口令“l(fā)in&6789”的猜測概率為: P(lin!6789) = P(S→L3S1D4)×P(L3→lin)×P(S1→!)×P(D4→6789)=0.0012, 這表明“l(fā)in&6789”的可猜測度為0.0012。
同樣的, 通過這種方法就可以計算每個口令的概率值, 按照從高到低的順序排列就可以得到一個概率遞減的猜測集。然后在測試集測試階段使用得到的猜測集對測試口令集進行破解測試便可以評估模型在特定測試集上的口令破解的成功率。
人工神經網絡[29-32](Artificial Neural Network,ANN)或者被稱為連接系統(tǒng)是由動物大腦的生物神經網絡啟發(fā)而設計實現(xiàn)的計算系統(tǒng)。這類系統(tǒng)通過樣本學習(逐漸改善性能)來完成任務, 而并非通過基于特定任務的格式化編程來實現(xiàn)目標。例如, 在圖像識別中, 神經網絡可以通過對標注了“cat”和“no cat”標簽的樣本圖片的學習來識別未標注圖片中的貓。神經網絡已經在很難用傳統(tǒng)算法編程實現(xiàn)的領域中得到了廣泛應用。
神經網絡是由連接在一起的被稱為神經元的節(jié)點(類似于生物腦中的軸突)所構成, 每個節(jié)點代表了一種特定的被稱為激活函數(shù)(activation function)[33-35]的輸出函數(shù), 神經元之間的連接可以傳遞隨連接強度而變化的單向信號。如果組合的輸入信號(來自潛在的許多發(fā)射神經元)足夠強, 則接收神經元會激活并傳播一個信號到與其相連的下游神經元。
通常, 神經元被分層組織。信號從第一(輸入)到最后(輸出), 可能會在層與層之間遍歷多次。 除了接收和發(fā)送信號之外, 節(jié)點可以具有由實數(shù)表示的狀態(tài), 值通常在0到1之間。閾值或限制功能可以管理每個連接和神經元, 使得信號在傳播之前必須超過特定值。
神經網絡方法的最初目標是以與人類大腦相同的方式解決問題。時至今日, 其已被用于各種任務,包括計算機視覺, 語音識別, 機器翻譯, 社交網絡過濾, 醫(yī)療診斷等許多領域。
2.2.1 神經網絡特性
人工神經網絡是由很多神經元節(jié)點相互連接組成的自適應、非線性的處理系統(tǒng)。在當代神經科學研究的基礎之上, 人工神經網絡想要通過模擬動物大腦生物神經網絡處理以及記憶信息的方式來實現(xiàn)信息的處理[36-37]。其具備4個主要特性:
(1) 非線性 在自然界中非線性關系是一種普遍特性。人工神經元有兩種狀態(tài): 激活態(tài)和抑制態(tài)。在數(shù)學上, 這種行為便表現(xiàn)為一種非線性關系。
(2) 非局限性 單個神經網絡一般由很多神經元節(jié)點連接構成。系統(tǒng)的整體行為特征由兩個因素決定, 一個是單個神經元的特征, 另一個是節(jié)點彼此之間的作用以及連接。神經網絡通過節(jié)點間的大量連接來模擬大腦的非局限性。
(3) 非常定性 自適應、自學習、自組織是人工神經網絡具備的三種能力。神經網絡不僅處理的信息能夠存在很多變化, 同時在處理信息過程中, 非線性動力系統(tǒng)本身也在不斷的變化[38]。
(4) 非凸性 在一定條件下特定系統(tǒng)的演進方向將取決于某個特定的狀態(tài)函數(shù)。非凸性代表這種函數(shù)有多個極值, 所以系統(tǒng)存在多個較穩(wěn)定的平衡態(tài),這會使系統(tǒng)系統(tǒng)演化存在多樣性[39]。
2.2.2 循環(huán)神經網絡
RNN[40-42](Recurrent neural Network, 循環(huán)神經網絡)是人造神經網絡的一種, 其中單元之間的連接形成定向循環(huán)。這創(chuàng)建了網絡的內部狀態(tài), 允許其呈現(xiàn)動態(tài)時間行為。與前饋神經網絡不同, RNN可以使用其內部存儲器來處理任意輸入序列。這使得它們適用于諸如未分段連接的手寫識別、語音識別以及自然語言處理[43-45](Natural Language Processing,NLP)等任務。
在RNN中, LSTM[46-48](Long Short-Term Memory,長短時記憶模型)模型是現(xiàn)在使用范圍最廣也是應用最成功的模型, LSTM能夠很好地對長短時依賴進行表達, 它和一般的循環(huán)神經網絡在結構本質上并沒有什么本質不同, 在隱藏層的狀態(tài)的計算上只是使用了不同的函數(shù)。LSTM是一個深度學習系統(tǒng), 它不存在梯度消失問題。
在傳統(tǒng)的神經網絡模型中, 輸入層到隱藏層是全連接的, 隱藏層到輸出層也是全連接的, 每層內部的節(jié)點之間是沒有連接的。但在很多問題的處理上傳統(tǒng)的神經網絡無法很好地解決問題。比如, 判斷一個未完成的句子中下一個詞是什么, 需要使用句子中已有的詞, 因為句子中詞語之間是由聯(lián)系的,而并不是彼此孤立的。使用RNN便可以使一個序列當前的輸出與之前的輸入相關。具體的實現(xiàn)方式是循環(huán)神經網絡存儲已有的信息并將其用于當前輸出的計算中, 也就是說隱藏層內部的節(jié)點之間不再是沒有連接的, 相反其節(jié)點之間存在連接, 不僅如此,在輸入上, 隱藏層不僅包含輸入層的輸出還包含上一時刻隱藏層的輸出。理論上, RNN能夠對任何長度的序列數(shù)據(jù)進行處理[47]。但在實際使用過程中, 為了降低復雜性通常假設當前的輸出只與前面的幾個狀態(tài)存在關系, 如圖 1所示, 展示了一個典型的 RNN結構。綜合 RNN的特點以及文本口令猜測的場景,RNN在口令猜測上可能會得到較好的應用。本文基于RNN對大規(guī)模用戶口令進行分析和研究, 提出了一種新的口令概率模型。
圖1 典型的循環(huán)神經網絡Figure 1 Typical Recurrent Neural Network
口令達不到理想強度的最直接原因是用戶不安全的口令行為, 所以理解用戶可能存在哪些不安全的脆弱口令行為是研究口令安全性的前提條件。通常情況下用戶需要管理幾十個乃至上百個口令賬戶,各個站點的口令設置要求也往往存在很大區(qū)別。不僅如此, 用戶用于處理信息安全問題的精力有限且基本穩(wěn)定。這些問題導致了用戶的一系列口令行為。
本節(jié)從流行口令分析、口令重用和基于個人信息的口令構造三個方面, 對用戶的常見口令行為進行了研究。我們選擇了 8個國內外數(shù)據(jù)質量較好的數(shù)據(jù)集進行口令分析和研究, 其中包括 4個國內用戶泄露數(shù)據(jù)集和 4個國外用戶泄露數(shù)集, 這些泄露的數(shù)據(jù)集均通過公開網絡渠道獲取, 且數(shù)據(jù)集中包含用戶明文口令。表1中列舉了這8個數(shù)據(jù)集的基本信息, 包括: 數(shù)據(jù)集來源、泄露網站類型、泄露數(shù)據(jù)條數(shù)、用戶使用語言、數(shù)據(jù)集中是否包含用戶個人信息以及數(shù)據(jù)的泄露時間。
表1 數(shù)據(jù)集基本信息Table 1 Data Set Basic Information
Morris和Thompson在1979年分析了3289個真實的用戶口令, 發(fā)現(xiàn)其中有 86%的數(shù)據(jù)落入普通字典, 33%的數(shù)據(jù)能在5分鐘內搜索出來。后續(xù)的大量研究也表明, 除了選擇常用單詞作為口令, 用戶常常將單詞做一些簡單的變換, 以滿足站點口令設置策略的需求。如“password1314”可以滿足“字母+數(shù)字”的策略需求。一些最常用的單詞、數(shù)字、字符序列和其變換就成了大多數(shù)用戶可能選擇的弱口令。我們對上述 8個數(shù)據(jù)集中最常用的口令進行了分析, 如表2所示。
表2 數(shù)據(jù)集中最流行的前10個口令分析Table 2 Analysis of Top 10 Most Popular Password in the Data Set
表3 國內外用戶口令的字符組成結構分析/%Table 3 Analysis of the Character Composition of Passwords at Home and Abroad/%
表4 用戶口令長度分布分析Table 4 Analysis of Length Distribution of Password
通過對以上結果的分析, 可以發(fā)現(xiàn): 1)不管是國內用戶還是國外用戶都傾向使用一些常見的、方便記憶(比如, 數(shù)字、字母以及鍵盤模式)的口令; 2)國內用戶中流行使用的口令多為數(shù)字, 而國外用戶使用英文字母、單詞或者簡單的鍵盤模式來構造口令居多, 這體現(xiàn)了語言因素對口令行為的影響; 3)愛情在國內外用戶構造口令的過程中都扮演了重要角色,“iloveyou”和“princess”均出現(xiàn)在最流行的前10個口令中, 而“5201314”和“woaini1314”這種明顯有地域特點與愛情相關的口令則出現(xiàn)在了國內用戶最流行的前10個口令中; 4)不僅如此, 文化以及網站名(比如“l(fā)inkedin”)等因素也在用戶最流行的口令中得到體現(xiàn)。
相對于其他口令來說, 這些流行口令在整個口令集中占的比例很高, 同時考慮到口令集龐大的基數(shù), 可以說這些流行口令的使用規(guī)模還是非常龐大的。這意味著攻擊者如果發(fā)現(xiàn)這一現(xiàn)象, 只要嘗試最流行的一些口令, 就很有可能破解大量的用戶賬戶信息。同時通過對這8個網站的流行口令分析, 也可以發(fā)現(xiàn)口令的分布遠不是均勻的。
大多數(shù)網站會設置口令限制條件(比如, 口令長度、字符種類等), 這種情況下口令的字符組成通常會受到口令限制條件的影響。如果網站沒有設置口令構成限制條件, 用戶使用的口令結構就直接反映了用戶口令構造過程中使用字符類型的偏好。本文對目標數(shù)據(jù)集的口令字符組成進行了分析, 在分析中用正則表達式定義了 9種常見模式, 并對各個數(shù)據(jù)集中相應模式的口令比例進行了統(tǒng)計。表 3顯示了國內外用戶口令的字符組成結構。
通過對以上結果的分析, 可以發(fā)現(xiàn): 1)用戶會使用包含特定模式的口令, 且有一些普遍存在的用戶口令構成行為。比如, 用戶口令絕大多數(shù)都是由數(shù)字或字母組成, 使用純數(shù)字或者純字母的用戶比例都比較高; 2)在國內外用戶口令組成模式對比方面, 國內大多數(shù)用戶會在口令中包含數(shù)字, 而國外用戶則更偏愛使用字母。這一點也體現(xiàn)在使用純數(shù)字作為口令的國內用戶比例多于國外用戶, 而使用純字母作為口令的用戶比例則國外用戶更多。
用戶在口令字符組成中的這些偏好正是攻擊者所努力挖掘的對象, 因為使用這些用戶習慣, 通過構造包含用戶常用模式的口令就可以大大提升破解用戶口令的效率。
口令的長度同樣直接受到網站口令設置限制條件的影響。大多數(shù)用戶口令安全意識不強, 選擇的口令長度往往只滿足網站口令限制的最短長度要求。顯然, 口令的長度大小直接影響攻擊者實施口令猜測攻擊的攻擊范圍, 下面對目標數(shù)據(jù)集中的口令長度進行了統(tǒng)計。表4顯示了8個數(shù)據(jù)集中用戶口令長度的分析結果。
通過對以上結果的分析, 可以發(fā)現(xiàn): 1)用戶的口令長度選擇存在集中分布的特點; 2)對于普通網站來說, 長度為 6,7,8用戶口令分布最多的, 過長或者過短的口令在整個口令集合中分布都很少; 3)用戶使用最多的幾種口令長度與大多數(shù)網站限制的最短口令長度相近。
這一分析結果揭示了用戶在口令構造中在長度選擇上存在集中分布的特點, 而且跟特定站點在用戶設置口令過程中限制的最短口令長度相近。這一分析結果對于攻擊者在猜測攻擊中減少猜測空間的大小具有重要意義。
由于用戶通常擁有幾十個甚至上百個口令賬戶,為了方便記憶和管理口令, 用戶往往會選擇在不同站點之間重復使用相同的口令。為了進一步分析用戶在不同站點之間的口令重用行為, 本文基于最大共同距離 LCS算法, 對國內和國外用戶的口令重用情況進行了分析。分析過程中通過用戶的郵箱將兩個不同的數(shù)據(jù)集進行合并, 保存在兩個數(shù)據(jù)集中都包含某一相同郵箱的記錄, 從而得到一個交叉數(shù)據(jù)集, 然后在交叉數(shù)據(jù)集上測量用戶口令的重用情況。本文對NetEase&12306、GFAN&Tianya、Linkedin&Yahoo、Fling&Neopets這四個交叉數(shù)據(jù)集中用戶的直接口令重用行為和間接口令重用行為進行了分析,其中前兩個交叉數(shù)據(jù)集針對國內用戶, 后兩個交叉數(shù)據(jù)集則針對國外用戶。表 5顯示了這四個交叉數(shù)據(jù)集中口令直接重用的比例。
圖 2則顯示了這四個交叉數(shù)據(jù)集除去直接口令重用的記錄后, 不完全相同口令的 LCS分析結果,即用戶口令間接重用的結果。
表5 交叉數(shù)據(jù)集中口令直接重用比例分析Table 5 Analysis of proportion of Password Direct Reuse in Cross Data Sets
通過結果的分析, 可以發(fā)現(xiàn): 1)口令重用在國內外用戶中都是一種普遍存在的現(xiàn)象; 2)用戶在不同站點之間直接重用口令的概率很高, 與國內用戶相比,國外用戶直接重用口令的比例相對較低; 3)在間接重用口令方面, 國外用戶間接重用口令的相似度更小,約40%左右間接重用的中文口令相似度在[0.6,1], 國外用戶只有25%左右。
一直以來口令重用行為被認為是不安全的, 因此用戶應盡可能地避免不同站點之間口令的大量重用行為。
圖2 不同數(shù)據(jù)集口令間接重用分析Figure 2 Analysis of Indirect Reuse Password in Different Data Sets
口令攻擊可分為漫步口令攻擊和定向口令攻擊兩種, 這兩者之間最突出的不同點在于在攻擊過程中是否使用用戶的個人信息(PI, Personal Information)。個人信息大多數(shù)情況下可以和用戶可識別信息(PII, Personal Identifiable Information)交替使用。通常情況下, 一個用戶的個人信息是指與這個用戶相關的任何信息, 它的含義比用戶可識別信息更加廣泛。對于部分數(shù)據(jù)集中不包含用戶個人信息情況, 我們采用了與口令重用分析中相似的方式, 將包含個人信息的數(shù)據(jù)集與不包含個人信息的數(shù)據(jù)集通過郵箱匹配的方式進行關聯(lián), 從而達到給數(shù)據(jù)集中記錄添加個人信息的目的。為了盡可能多的增加表 1數(shù)據(jù)集中包含個人信息的記錄條數(shù), 我們選擇了四個用于補充用戶個人信息的數(shù)據(jù)集。如表6所示。
表6 補充數(shù)據(jù)集Table 6 Supplementary Data Set
在對數(shù)據(jù)集進行關聯(lián)之后, 從表 1中不包含用戶個人信息的數(shù)據(jù)集中提取了關聯(lián)后的數(shù)據(jù)子集,并進行了基于個人信息的口令構造分析。具體分析結果如表 7所示, 表中數(shù)據(jù)代表包含特定種類用戶個人信息的口令在總的口令中所占的比例。
表 7中的統(tǒng)計數(shù)據(jù)顯示了各種類型的用戶個人信息與用戶口令之間的關聯(lián)性, 但是卻無法準確地、數(shù)值化地衡量用戶個人信息在單獨某個口令構造中所起的作用。所以, 我們提出了一種可以準確系統(tǒng)地衡量用戶個人信息在口令構造中所造成影響的方法——Relevance。
Relevance方法的值域為[0,1], 值越大說明用戶個人信息在口令構造中所起的影響越大, 值為 0說明沒有影響, 值為1說明整個口令是由單一某種個人信息構成。Relevance的值反映了單一口令中用戶個人信息所造成的影響, 其在某個集合上的均值則能反映這個集合上用戶個人信息與口令之間的關聯(lián)性。
為了計算Relevance的值, 我們將口令和用戶個人信息作為字符串輸入并且使用一個滑動窗口來進行計算。通過維護一個動態(tài)窗口從口令的頭部滑到尾部。窗口的初始大小為2, 如果窗口覆蓋的子串匹配了某種個人信息, 就將窗口大小增加 1, 然后嘗試在更大的窗口中匹配個人信息。如果發(fā)現(xiàn)匹配, 則進一步擴大窗口大小直到發(fā)現(xiàn)不匹配。發(fā)現(xiàn)不匹配后將窗口大小重置為2, 然后從不匹配的位置重新開始滑動窗口。同時我們維護了一個與口令長度相同的標記字符串, 用來記錄每個匹配用戶個人信息的口令子段的長度。在完成對目標口令從頭到尾整個滑動過程之后, 標記字符串中記錄的值便用來計算Relevance的值。計算公式如下:
式(1)中n代表了匹配的口令子串數(shù), leni代表了匹配的口令子串的長度, lentotal則代表整個口令的長度。比如對于出生于1988年3月14日, 名叫Curry的用戶的口令是“curry314@@”, 在完成窗口滑動之后, 標記字符串為 [5,5,5,5,5,3,3,3,0,0], 字符串中前五個元素 {5,5,5,5,5} 代表了口令中的前五個元素匹配了特定種類的個人信息(本例中是姓名), 緊跟的三個元素 {3,3,3} 代表了口令中接下來的 3個字符也匹配用戶個人信息(本例中是生日), 最后的兩個元素 {0,0} 則說明口令的最后兩個字符不匹配用戶個人信息。則相關度的計算為:
為了更準確系統(tǒng)地評估用戶個人信息在每個數(shù)據(jù)集中所造成的影響, 我們在每個數(shù)據(jù)集上計算了Relvance的平均值——AvgRelevance。
通過分析結果可以發(fā)現(xiàn), 跟預想的情況一致,在構造口令過程中使用個人信息是一種普遍存在的現(xiàn)象, 就選擇的數(shù)據(jù)集來說, 個人信息在國內用戶的口令構造中的影響要大于國外用戶。用戶通常喜歡在口令中包含個人信息, 特別是姓名、生日。而且在對姓名和生日進行使用的過程中, 用戶還經常會對它們做相應的變化, 比如, 僅使用姓氏、僅使用名字、僅使用生日的年份、僅使用生日的日期、使用縮寫等。與國外用戶相比, 國內用戶使用姓名和生日構造口令的比例更大, 所以相對來說國外用戶的口令安全意識更強。還有一個有趣的現(xiàn)象是, 除了使用個人信息外, 用戶的賬號名和郵箱前綴也在口令構造中起到了一定作用。電話號碼和身份證號在口令中出現(xiàn)的概率不高。而像用戶住址、性別以及IP地址這些信息, 雖然也屬于用戶個人信息范疇, 但是卻極少出現(xiàn)在用戶的口令中。
這一分析結果在口令定向破解中能讓在進行猜測攻擊時, 更有針對性地使用用戶個人信息, 提高猜測攻擊的準確性。在接下來要介紹的定向口令猜測實驗中我們就基于上述分析結果, 利用了用戶的姓名、生日、用戶名以及郵箱前綴來對模型進行訓練。
表7 基于個人信息的口令構造分析Table 7 Analysis of Password Construction Based on Personal Information
本文中我們用神經網絡來對口令進行建模。神經網絡的設計模仿了人類的神經元, 它在模糊分類和序列生成上得到了很好的應用。文獻[49]研究了從字符串中前面的字符元素序列來預測下一個字符元素的出現(xiàn)概率, 本文用于生成候選猜測口令的方法便是參考了相關研究成果。比如, 在字符串“password”的生成中, 如果把“passwor”作為參數(shù)輸入神經網絡, 那么字符“d”很有可能作為結果被輸出。
雖然口令生成和文本生成在概念上很相似, 用自然語言生成的方法來研究口令生成的研究卻非常少。神經網絡在十年前曾經被提出用于對口令的強和弱進行劃分, 但是此工作卻并沒有嘗試對口令的可能猜測序列進行建模, 也沒有對口令猜測攻擊的相關方面進行研究。
與馬爾科夫模型類似, 本文在給定前序字符序列的情況下, 使用訓練好的神經網絡來生成口令的下一個字符。圖 3對使用神經網絡構造口令片段的下一個字符的過程進行了舉例介紹。與馬爾科夫模型一樣, 神經網絡需要依賴一個特殊的口令結束標記來計算一個口令序列的概率。比如, 為了計算口令“you”的概率, 首先以空口令作為開始, 然后從網絡中查詢第一個字符是“y”的可能性; 然后查詢在“y”之后是 “o”的可能性; 接著查詢“yo”之后是“u”的可能性; 最后查詢在“you”之后出現(xiàn)結束標記的概率。
為了從神經網絡模型中生成口令, 我們枚舉了高于某一個給定閾值的所有口令。然后按照口令的概率值對它們進行排序, 排序后的口令作為猜測集。從根本上說, 此方法生成猜測集的方式與馬爾科夫模型十分相似。但在文獻[12]中利用神經網絡進行漫步口令猜測卻取得了比傳統(tǒng)的馬爾科夫模型更好的實驗結果。
上文中對用戶使用個人信息構造口令這一現(xiàn)象進行了實驗分析, 分析結果發(fā)現(xiàn)用戶使用個人信息構造口令是一種較為普遍的現(xiàn)象。
結合用戶在生成口令過程中使用個人信息這一現(xiàn)象以及神經網絡在序列生成中的有效應用。本文提出了一種基于神經網絡的定向口令猜測方法——TPGXNN(Target Guess Using X Neural Networks), 并使用該方法在表 8的數(shù)據(jù)集上進行了實驗。下面分別對實驗的方法和結果進行介紹。
圖3 使用神經網絡構造口令片段的下一個字符過程舉例Figure 3 An Example of the Construction procedure of Next Character of a Password Fragment Using a Neural Network
神經網絡包含輸入層、隱含層和輸出層三層, 從輸入層到隱含層最后到輸出層。對于傳統(tǒng)的神經網絡模型, 兩層之間彼此采用全連接的方式傳遞信息,每層內部的節(jié)點之間則彼此不相連接?;谶@種構造設計的神經網絡在處理一些問題時無法達到預期的效果。比方說在一個預測單詞序列的場景中, 由于一個句子中的單詞彼此之間存在關聯(lián)而并不是相互獨立的, 所以如果想預測一個給定序列的下一個單詞是什么, 通常要結合序列已有的單詞來進行。
不同于傳統(tǒng)的 FNNs(Feed-forward Neural Networks, 前向反饋神經網絡), RNNs(Recurrent Neural Networks, 循環(huán)神經網絡)引入了定向循環(huán), 能夠處理那些輸入之間前后關聯(lián)的問題。
循環(huán)神經網路的核心設計理念是一個序列當前的輸出與前面的輸出存在關聯(lián)。更為具體的表現(xiàn)形式是循環(huán)神經網絡會將之前產生的信息進行記憶,然后在當前輸出的計算過程中使用之前產生的信息,在其內部結構的表現(xiàn)上就是隱藏層之間的節(jié)點不再是無連接的, 而是有連接的, 而且某一時刻隱藏層的輸入不但包含輸入層的輸出還包含上一個時刻隱藏層的輸出。
相關研究已經證明循環(huán)神經網絡在字符級別的自然語言生成中是非常成功的。因此本文基于目前廣泛使用的一種循環(huán)神經網絡模型——LSTM(Long Short-Term Memory, 長短時記憶)[50]來構造TPGXNN模型。
在模型的構造上, 模型整體由3層LSTM循環(huán)層和 2層密集連接層構成。在服務器端基于 Keras庫完成模型的構建, 實驗的訓練和測試階段均使用python來實現(xiàn)。圖4展示了模型結構。如圖4所示,整個模型的訓練包含了3個階段: 數(shù)據(jù)準備、訓練階段、猜測階段。數(shù)據(jù)準備和猜測階段的實現(xiàn)與傳統(tǒng)的口令概率模型相同, 模型實現(xiàn)的關鍵在于訓練階段。為了提高猜測的成功率, 在訓練過程中我們使用遷移學習的方法來完成模型的訓練, 采用這種方式, 網絡的不同部分在訓練過程中通過學習能識別不同的現(xiàn)象。在使用遷移學習時, 首先在整個口令集上訓練口令。然后模型的低層將被鎖定,最后在目標數(shù)據(jù)集上進行訓練, 這么做的目的是模型低層可以學習數(shù)據(jù)的低級特征(比如 e是一個元音字母), 而模型的高層則能夠學習數(shù)據(jù)的高級特征(比如元音字母通常跟在輔音字母后)。在模型大小的選擇上, 我們必須決定在模型中包含多少個參數(shù), 我們測試了一個包含682,851個參數(shù)的神經網絡。
圖4 TPGXNN模型結構Figure 4 TPGXNN Model Structure
表8 TPGXNN口令猜測實驗數(shù)據(jù)集Table 8 TPGXNN Password Guessing Experimental Data Set
為了實現(xiàn)定向的口令猜測, 需要準備包含用戶個人信息的數(shù)據(jù)集, 如表1所示, 部分數(shù)據(jù)集中不包含用戶個人信息。我們采用與基于個人信息的口令構造分析中相同的方法, 通過用戶郵箱將包含用戶個人信息的數(shù)據(jù)集和不包含用戶個人信息的數(shù)據(jù)集進行關聯(lián), 得到了八個包含用戶個人信息的數(shù)據(jù)集。結合上文中的分析結果, 可知并不是所有的用戶個人信息在口令構造中都占有很重要的比重, 所以本文提取了用戶姓名、生日、賬號、郵箱前綴這四類用戶個人信息并將他們加入訓練過程。表 8顯示了實驗過程中使用的數(shù)據(jù)集信息, 訓練集包含了用戶的口令信息以及提取出的四類用戶個人信息。
本文使用 Python實現(xiàn)模型的訓練和測試, 實驗環(huán)境如表9所示。
表9 實驗環(huán)境參數(shù)Table 9 Experimental Environment Parameters
為了評估TPGXNN模型的性能, 本文在表8所列數(shù)據(jù)集上, 對其與現(xiàn)在最主流的兩種傳統(tǒng)的口令猜測模型(PCFG模型, Markov模型)進行了對比實驗。在PCFG模型和Markov模型的訓練和測試中使用與TPGXNN模型相同的訓練集和測試集, 在訓練過程中將用戶個人信息看作口令加入到訓練集中進行訓練。由于Markov模型階數(shù)的不同得到的結果也不同, 因此我們選擇了階數(shù)分別為4階、3階和1階的Markov模型分別進行了實驗, 實驗結果如圖5a-d所示。
在實驗數(shù)據(jù)集的劃分上, 我們將 8個數(shù)據(jù)集劃分成 4組進行實驗。劃分過程中首先按照用戶的語言分為國內數(shù)據(jù)集和國外數(shù)據(jù)集, 這么做的目的是為了保證猜測模型的成功率; 然后分別將 4個國內數(shù)據(jù)集和 4個國外數(shù)據(jù)集隨機劃分成兩組, 每組兩個數(shù)據(jù)集。分組完成之后, 將組內的2個數(shù)據(jù)集其中的一個作為訓練集進行訓練, 將另外一個數(shù)據(jù)集當做測試集測試口令猜測的成功率, 即在給定的猜測數(shù)下數(shù)據(jù)集合中口令的破解百分比。
通過圖 5顯示的實驗結果可以發(fā)現(xiàn), 本文提出的TPGXNN模型與Markov和PCFG這兩種傳統(tǒng)的口令猜測模型相比在猜測次數(shù) 10到 10000范圍內,其破解口令的成功率明顯更高, 平均地, TPGXNN是四階Markov模型的猜測成功率的2.65倍, 是PCFG模型的猜測成功率的 2.27倍, 這不僅說明了用戶個人信息在口令猜測中確實起到了重要的作用也證明了TPGXNN模型的有效性。
綜合上述實驗結果的分析, 可以說明 TPGXNN是一種有效的口令猜測模型, 結合神經網絡和用戶個人信息進行用戶口令猜測是一種切實可行的研究思路。
本文首先選擇了從公開渠道可獲取的 8個較有代表性國內外泄露數(shù)據(jù)集作為研究對象, 其中國內和國外泄露數(shù)據(jù)集各 4個; 接著分別對用戶口令構造的偏好性選擇、用戶口令重用情況以及基于個人信息的口令構造這三個方面進行了分析, 發(fā)現(xiàn)了口令構造過程中存在的一些常見現(xiàn)象并設計了一種新的評估用戶個人信息與口令之間關聯(lián)性的方法Relevance; 最后結合分析得到的結果, 提出了一種結合神經網絡和用戶個人信息進行定向口令猜測的方法, 設計了猜測模型——TPGXNN, 并在數(shù)據(jù)集上進行了對比實驗, 對此方法和現(xiàn)在主流的幾種口令猜測方法的猜測成功率進行了比較, 驗證了模型的可行性和有效性, 對口令安全進行了有益探索。
圖5 四種情況下各類口令猜測模型比較Figure 5 Comparison of Various Types of Password Guessing Models in Four Cases
在接下來的工作中, 我們將對利用神經網絡進行口令定向猜測進行更加深入的研究, 包括模型結構和大小不同對猜測成功率的影響以及各種不同類型的神經網絡在口令猜測領域的應用等。