国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

口令猜測研究進(jìn)展*

2024-04-28 06:55:20鄒云開
密碼學(xué)報 2024年1期
關(guān)鍵詞:口令字符攻擊者

鄒云開, 汪 定

1.南開大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院, 天津 300350

2.天津市網(wǎng)絡(luò)與數(shù)據(jù)安全技術(shù)重點實驗室, 天津 300350

3.數(shù)據(jù)與智能系統(tǒng)安全教育部重點實驗室, 天津 300350

1 引言

口令, 英文為“Password”, 坊間稱為“密碼”.口令是人類可記憶的短密鑰, 是全球53 億網(wǎng)民可感知、直接接觸的密碼學(xué)組件.口令最早由麻省理工學(xué)院的費爾南多·科爾巴托教授引入計算機(jī)領(lǐng)域, 用于大型計算機(jī)的本地文件訪問控制[1].上世紀(jì)90 年代, 隨著個人計算機(jī)和互聯(lián)網(wǎng)的迅速發(fā)展, 各類服務(wù)不斷上網(wǎng),口令除了提供數(shù)據(jù)加密、數(shù)字簽名等安全功能, 也成為使用最廣泛的身份認(rèn)證方式, 保護(hù)著用戶絕大多數(shù)的數(shù)字資產(chǎn).然而, 隨著用戶需要管理的網(wǎng)絡(luò)賬戶數(shù)量的增加, 用戶在創(chuàng)建口令時也面臨著巨大的安全挑戰(zhàn).一方面, 人類的記憶力有限且長期保持穩(wěn)定, 通常只能記憶5~7 個不同口令[2]; 另一方面, 許多網(wǎng)站對口令的復(fù)雜度和長度提出了明確的要求(如網(wǎng)頁托管服務(wù)公司000Webhost 要求用戶創(chuàng)建的口令長度至少為6, 且至少包含一個數(shù)字和字母), 使得用戶記憶眾多賬戶的口令變得愈發(fā)困難.這導(dǎo)致許多用戶為了方便記憶而采用簡單易記的流行口令, 在不同賬戶中使用相同口令, 使用個人信息創(chuàng)建口令[3].這些脆弱行為一旦被攻擊者利用, 將導(dǎo)致嚴(yán)重的安全隱患.

自2000 年以來, 數(shù)以千計的各種各樣新型身份認(rèn)證方案被提出, 如多因素認(rèn)證[4]、生物識別技術(shù)[5]以及硬件安全密鑰[6]等, 但這些方案在可用性、安全性和隱私保護(hù)等方面往往沒有取得平衡[7,8].同時,它們在可部署性上也常常劣于傳統(tǒng)的口令認(rèn)證[9].因此, 自2012 年以來, 學(xué)術(shù)界逐漸達(dá)成共識[8,10–12]:在可預(yù)見的未來, 口令仍將是最主要的身份認(rèn)證方法, 基于口令的認(rèn)證技術(shù)仍無可替代.

隨著信息化進(jìn)程的不斷推進(jìn), 口令所面臨的“可記憶與抗猜測” 要求之間的矛盾愈發(fā)凸顯.“可記憶”要求口令盡量短、有規(guī)律、不復(fù)雜, “抗猜測” 要求口令盡量長、無規(guī)律、越復(fù)雜越好.令人更為擔(dān)憂的是,近年來頻繁發(fā)生的大規(guī)??诹钚孤妒录?如32 億條包含郵箱和口令的COMB 數(shù)據(jù)合集[13]), 為攻擊者猜測用戶口令提供源源不斷的素材.同時攻擊者的能力也在不斷增強(qiáng), 如深度學(xué)習(xí)技術(shù)的進(jìn)展為提高口令猜測效率提供了潛在的新途徑[14–16].鑒于口令往往作為保護(hù)信息系統(tǒng)的第一道防線, 從攻擊者的視角出發(fā), 深入研究口令在猜測攻擊下的安全強(qiáng)度變得尤為重要.

口令猜測方法根據(jù)技術(shù)路線的不同, 主要可分為三類.第一類為基于規(guī)則的猜測攻擊, 如將口令password 通過首字母大寫、字母a 跳變?yōu)樽址鸃 的規(guī)則, 轉(zhuǎn)化為P@ssword.此類方法最早可追溯到1979 年, Morris 和Thompson[17]首次設(shè)計了一系列啟發(fā)式變換規(guī)則, 以生成字典中單詞的變體, 用于口令猜測攻擊.隨后, 一些口令破解工具(如John the Ripper[18]和Hashcat[19]) 通過利用GPU 來進(jìn)行大規(guī)模自動化的猜測攻擊, 進(jìn)一步推動了基于規(guī)則的口令猜測技術(shù)的發(fā)展.時至今日, 這些工具仍是現(xiàn)實攻擊者進(jìn)行離線口令猜測攻擊的主要手段之一.

第二類為基于統(tǒng)計學(xué)方法的猜測攻擊.這類方法主要通過統(tǒng)計訓(xùn)練口令字典中基本元素的頻次來設(shè)計概率模型, 典型的代表有馬爾科夫鏈(Markov[20]) 和概率上下文無關(guān)文法(PCFG[21]).早在2005 年,Narayanan 和Shmatikov[20]提出了一種基于馬爾科夫鏈的口令猜測模型.該模型通過估算相鄰兩個字符之間的概率, 揭示了利用自然語言處理(NLP) 技術(shù)來生成口令猜測的潛力.在此基礎(chǔ)上, Ma 等人[22]于2014 年在馬爾科夫鏈上引入了多種歸一化和平滑技術(shù), 以克服原始模型存在的數(shù)據(jù)稀疏和過擬合問題.此外, 在2009 年, Weir 等人[21]提出了基于概率上下文無關(guān)文法的口令猜測模型PCFG.該模型將口令視為多個獨立的、不同類型的字符串組成(如字母段L、數(shù)字段D 和特殊字符段S), 利用基于統(tǒng)計數(shù)據(jù)獲得的文法規(guī)則生成口令結(jié)構(gòu)模板, 隨后用訓(xùn)練字典中的字符串填充這些模板.此后, 大量基于PCFG 的猜測方法被陸續(xù)提出.例如, 在2014 年, Veras 等人[23]進(jìn)一步對字母L 段進(jìn)行語義挖掘, 提出了融合語義信息的Semantic-PCFG 算法.

第三類為基于機(jī)器學(xué)習(xí)/深度學(xué)習(xí)技術(shù)的猜測攻擊.這類方法通常將口令猜測視為文本生成任務(wù), 利用現(xiàn)有的機(jī)器學(xué)習(xí)模型學(xué)習(xí)口令的結(jié)構(gòu)與語義特征.訓(xùn)練完成后, 模型可自動生成大規(guī)模猜測.2016 年,Melicher 等人[14]首次將深度學(xué)習(xí)技術(shù)引入到口令猜測領(lǐng)域, 并提出了基于循環(huán)神經(jīng)網(wǎng)絡(luò)的口令猜測模型FLA (fast, lean, and accurate).與Markov 模型類似, FLA 也通過n階字符串預(yù)測下一個字符, 不同之處在于, FLA 在訓(xùn)練完成后, 自動為字符表中的每個字符都分配一個較小的(非零的) 概率, 作為輸入n階字符串的預(yù)測結(jié)果.該方法通常在較大猜測規(guī)模(如>1010猜測數(shù)) 開始展現(xiàn)優(yōu)勢.近年來, 隨著生成式對抗網(wǎng)絡(luò)(GAN) 技術(shù)在自然語言處理(NLP) 領(lǐng)域的發(fā)展, 涌現(xiàn)出一批基于GAN 的口令猜測模型, 如PassGAN[15]和條件性口令猜測(conditional password guessing, CPG)[16].此外, 還有研究將深度學(xué)習(xí)技術(shù)與傳統(tǒng)的基于規(guī)則或基于統(tǒng)計學(xué)的口令猜測方法相結(jié)合, 進(jìn)一步提升了現(xiàn)有猜測方法的攻擊效率.例如, 2021 年, Pasquini 等人[24]提出了自適應(yīng)動態(tài)規(guī)則調(diào)整攻擊方法AdaMs (adaptive, dynamic mangling rules).該方法利用深度學(xué)習(xí)技術(shù)優(yōu)化了口令與對應(yīng)規(guī)則列表的匹配優(yōu)先級, 顯著提升了(基于規(guī)則的) 字典攻擊的攻擊效率.

在研究口令猜測算法時, 如何準(zhǔn)確且公平地評估其優(yōu)劣是一個關(guān)鍵問題.當(dāng)前, 學(xué)術(shù)界主要采用“猜測成功率vs.猜測數(shù)” 這一指標(biāo)來評價不同算法的優(yōu)劣, 即給定猜測數(shù)下, 算法能成功命中口令的比例越高, 算法越好.由于該指標(biāo)與攻擊者所擁有的計算資源和運行算法所需要的系統(tǒng)環(huán)境配置無關(guān)[25], 只取決于用戶口令強(qiáng)度和算法自身的猜測能力, 因此, 這一評價標(biāo)準(zhǔn)逐漸成為公平對比各個口令猜測算法的重要手段.然而, 在現(xiàn)實世界中, 計算資源與環(huán)境配置往往是確定的, 在此情況下, 不同類型算法的計算效率差異巨大.例如, 在普通服務(wù)器上(CPU: Xeon Silver 4210R 2.4 GHz; GPU: GeForce RTX 3090), 基于統(tǒng)計學(xué)方法的PCFG[21]每秒可生成8 萬猜測, 而基于機(jī)器學(xué)習(xí)技術(shù)的RFGuess[26]生成同樣數(shù)量的猜測需要約10 分鐘.雖然更換更好的硬件設(shè)備能提升對應(yīng)算法的計算效率, 但這涉及到巨大的攻擊成本差異.因此, 計算效率和攻擊成本理應(yīng)成為猜測算法的評價指標(biāo)之一.

此外, 科學(xué)合理的實驗設(shè)置也是評估猜測算法的重要因素.盡管當(dāng)前關(guān)于口令猜測的研究眾多, 但在實驗設(shè)置的細(xì)節(jié)方面存在較大差異, 其中一些關(guān)鍵設(shè)置至今仍未形成普遍共識.在此有以下幾個關(guān)鍵方面需要特別關(guān)注: 首先是數(shù)據(jù)集比例的劃分方式.不同研究采用了不同的訓(xùn)練集和測試集比例, 如80% 對20%[15,16]、50% 對50%[21,27,28]甚至75% 對25%[26].與之緊密相關(guān)的是訓(xùn)練集和測試集的大小問題.以Veras 等人[29]的研究為例, 他們發(fā)現(xiàn)PCFG 算法在超過百萬量級的訓(xùn)練集上, 進(jìn)一步增加訓(xùn)練數(shù)據(jù)的規(guī)模并未顯著提高猜測成功率.另一方面, Dell’Amico 等人[30]在對不同算法采用蒙特卡洛方法進(jìn)行評估時, 僅僅選用了1 萬大小的測試集, 而Pal 等人[31]的實驗結(jié)果表明, 當(dāng)測試集達(dá)到10 萬時, 基于口令重用的定向猜測算法的破解成功率趨于穩(wěn)定(誤差小于0.1%).其次, 訓(xùn)練集和測試集的選取問題也具有重要意義.在現(xiàn)實場景中, 攻擊者往往是聰明的, 因此, 所使用的訓(xùn)練集和測試集的口令分布應(yīng)越接近越好,即訓(xùn)練集與測試集在語言、服務(wù)類型和口令策略上應(yīng)盡可能保持一致.然而, 當(dāng)前的研究, 包括一些最新的工作(如文獻(xiàn)[16,32,33]), 在實驗設(shè)置時并未明確考慮這些關(guān)鍵細(xì)節(jié).

進(jìn)一步, 還需要考慮訓(xùn)練集和測試集之間的交叉問題.一些研究(如文獻(xiàn)[15,21,33]) 在測試集中去除了訓(xùn)練集中已出現(xiàn)過的口令, 以評估算法生成新口令的能力, 即泛化能力.然而, 與之相對應(yīng)的是, Wang等人[26]的研究指出, 攻擊者在現(xiàn)實場景中往往無法了解被攻擊目標(biāo)的口令分布, 因此更建議保留交叉部分, 避免去除測試集中與訓(xùn)練集重合的部分.此外, 生成訓(xùn)練集中已存在口令的能力, 即重新排列訓(xùn)練集中的部分口令, 也能夠反映猜測算法的擬合能力.

面對以上關(guān)鍵問題, 需要深入探討: 不同比例的訓(xùn)練集與測試集劃分是否對猜測算法評估結(jié)果產(chǎn)生顯著影響?使用何種規(guī)模的訓(xùn)練集與測試集是科學(xué)合理的?是否有必要保持訓(xùn)練集與測試集的分布盡可能一致?是否應(yīng)該去除訓(xùn)練集與測試集的重合/交叉部分?回答這些問題將有助于確立更科學(xué)的實驗設(shè)置原則, 以便更準(zhǔn)確地評估口令猜測算法的性能(包括攻破率和計算效率).

目前, 針對口令猜測的研究主要聚焦于算法本身, 缺乏對算法在不同場景下實際應(yīng)用效果的系統(tǒng)討論.一些基于機(jī)器學(xué)習(xí)的猜測算法(如FLA[14]), 受限于口令生成速度, 更適合作為PSM (password strength meter) 來實際應(yīng)用.雖然基于統(tǒng)計學(xué)的猜測算法(如PCFG[21]) 生成速度較快, 但其往往受限于訓(xùn)練集,在大猜測數(shù)下的表現(xiàn)出現(xiàn)瓶頸.此外, 在現(xiàn)實情況下, 攻擊者可能采取多種手段來進(jìn)行口令猜測, 如何在給定計算資源的條件下, 選取更高效的猜測算法是一個值得深入探討的問題.

另一個值得關(guān)注的方向是口令文件泄露檢測, 即利用猜測算法生成誘餌口令(decoy passwords, 即honeywords[27,34]), 并與用戶真實口令混合存儲, 通過監(jiān)測誘餌口令的登錄嘗試來判斷口令文件是否泄露.然而, 學(xué)術(shù)界提出的各類口令強(qiáng)度評價算法(特指基于猜測算法的PSM) 和誘餌口令機(jī)制, 均未在實際系統(tǒng)中得到廣泛部署, 阻礙它們實際應(yīng)用的障礙與挑戰(zhàn)也是一個值得重點關(guān)注的議題.

無論是面向國家安全還是個人用戶的數(shù)字資產(chǎn)保護(hù), 對口令猜測技術(shù)進(jìn)行全面深入研究都具有迫切現(xiàn)實需求.近年來, 口令猜測研究逐漸成為一個熱點, 涌現(xiàn)出了一大批關(guān)于口令猜測的研究成果(如文獻(xiàn)[16,24,26,32,33,35]).2023 年, Yu 等人[36]回顧了2016–2023 年學(xué)術(shù)界提出的37 種口令猜測算法,并展示了口令猜測領(lǐng)域相關(guān)研究的交叉引用趨勢.然而, 該研究主要關(guān)注基于神經(jīng)網(wǎng)絡(luò)的口令猜測算法,并未對不同口令猜測算法之間的性能差異進(jìn)行深入探討, 缺乏對已有算法優(yōu)劣的系統(tǒng)總結(jié).為此, 本文對口令猜測領(lǐng)域的已有主流算法進(jìn)行了全面的梳理和分類, 并指出該領(lǐng)域存在的研究局限性和未來值得研究的方向.這將有助于后續(xù)的研究者審視最新方法, 并避免重復(fù)研究.

綜上, 本文將首先基于大規(guī)模真實口令數(shù)據(jù), 分析用戶口令構(gòu)造規(guī)律, 挖掘用戶的脆弱口令行為, 再圍繞不同類型的口令猜測算法, 從技術(shù)原理、實驗設(shè)置(包括算法評估指標(biāo))、實際應(yīng)用與未來研究方向4 個方面, 對國內(nèi)外最新口令猜測研究進(jìn)展進(jìn)行綜述.

2 用戶口令規(guī)律分析

自2009 年以來, 大規(guī)??诹顢?shù)據(jù)泄露事件頻繁發(fā)生.例如, 2009 年, 社交媒體應(yīng)用開發(fā)商Rockyou遭遇黑客攻擊, 導(dǎo)致其3200 萬用戶的口令以明文形式被泄露[37]; 2011 年, 國內(nèi)多家知名互聯(lián)網(wǎng)公司(如CSDN、天涯、人人網(wǎng)) 發(fā)生大規(guī)模用戶口令數(shù)據(jù)泄露[38]; 2012 年, 知名云存儲服務(wù)商Dropbox 遭遇數(shù)據(jù)泄露, 6800 萬個賬戶信息被黑客竊取[39]; 2014 年, 國內(nèi)知名購票軟件12306 發(fā)生數(shù)據(jù)泄露, 泄露信息包含用戶賬號、明文口令、身份證和郵箱等多種個人信息[40]; 2015 年, 知名的游戲直播平臺Twitch 遭遇數(shù)據(jù)泄露事件, 導(dǎo)致約5500 萬用戶口令文件被泄露[41]; 2016 年, Yahoo 公司宣稱其數(shù)十億用戶信息在2013 年被泄露, 包括姓名、郵箱和口令等[42]; 2017 年, DNA 檢測公司MyHeritage 遭遇黑客入侵, 約9300 萬用戶的電子郵箱和口令被泄露[43]; 2018 年, 華住集團(tuán)發(fā)生數(shù)據(jù)泄露, 包括1.3 億條身份信息、2.4億條開房記錄等, 共計約5 億條信息[44]; 2019 年, 1.62 億Dubsmash (多媒體應(yīng)用) 用戶數(shù)據(jù)被泄露, 包括姓名、用戶名和口令等[45]; 2020 年, 知名視頻會議軟件zoom 的53 萬用戶口令被泄露[46]; 2021 年,Nitro PDF 數(shù)據(jù)庫超7700 萬條數(shù)據(jù)被泄露, 包括郵箱、用戶名和口令等[47]; 2022 年, 黑客入侵了著名的寵物游戲網(wǎng)站Neopets 的數(shù)據(jù)庫, 并竊取了6900 萬用戶的個人數(shù)據(jù), 包括用戶名、郵箱和口令等[48].這些源源不斷泄露的口令數(shù)據(jù)為口令猜測研究提供了有力的數(shù)據(jù)支撐.

本文首先將從流行特性、語言依賴性、長度分布、口令重用、結(jié)構(gòu)和語義特征(如包含個人信息) 等6 個方面挖掘用戶的脆弱口令行為, 分析用戶口令構(gòu)造規(guī)律.

2.1 數(shù)據(jù)集簡介

表1 展示了本文所采用的口令數(shù)據(jù)集, 總共包括6 個中文和7 個英文數(shù)據(jù)集, 涵蓋了多種類型, 如郵箱、社交網(wǎng)站、游戲論壇等.其中, 12306、Rootkit 和ClixSense 包含姓名、郵箱、用戶名、生日等在內(nèi)的4~6 種個人信息.鑒于包含個人可識別信息(PII) 的數(shù)據(jù)集通常規(guī)模較小, 主要用于與PII 相關(guān)的分析和實驗.在進(jìn)行口令結(jié)構(gòu)和語義特征分析時, 本文將主要使用不包含PII 的10 個數(shù)據(jù)集.這些數(shù)據(jù)集在學(xué)術(shù)界被廣泛應(yīng)用(見表1 最右一列).

表1 本文所使用口令數(shù)據(jù)集的基本信息Table 1 Basic information of password datasets used in this paper

2.2 流行口令

流行口令(popular password) 是指用戶廣泛使用的、相對簡單且常見的口令.這些口令通常由短數(shù)字、常見單詞、常見短語或字符組合構(gòu)成, 因其普遍性而容易被攻擊者利用.表2 為不同數(shù)據(jù)集按頻數(shù)排序后排名前十的流行口令及其對應(yīng)的比例.由于空間限制, 在此僅展示具有代表性的9 個數(shù)據(jù)集, 其余數(shù)據(jù)集具有類似的規(guī)律.可以看出, 除了CSDN 與000Webhost 以外, 123456 在任何數(shù)據(jù)集中的流行度都占據(jù)第一的位置, 不受語言、文化和網(wǎng)站服務(wù)類型的影響.因為口令策略的原因, CSDN 與000Webhost的流行口令呈現(xiàn)出與其他數(shù)據(jù)集略微不同的特點.例如, CSDN 要求用戶生成的口令長度必須大于等于8;000Webhost 的口令生成策略為長度至少為6, 且至少包含一個數(shù)字和字母.為了應(yīng)對這些策略, 用戶會采取一些“聰明” 的修改, 如123456→123456789, 123456→a123456.這樣的修改顯然是徒勞的, 攻擊者只需對猜測字典進(jìn)行簡單的調(diào)整, 即可快速破解出這些“新的” 流行口令.此外, 還可以觀察到一些流行口令與特定網(wǎng)站或平臺密切相關(guān)的特點.例如, 在Tianya 數(shù)據(jù)集中, 111222tianya 排名第10; 在Wishbone中, wishbone 排名第4; 在CSDN 數(shù)據(jù)集中, dearbook 排名第4 (dearbook 為CSDN 旗下書店的域名).而這些特征都是攻擊者所努力挖掘的對象.

表2 各個數(shù)據(jù)集中最流行的10 個口令Table 2 Top-10 most popular passwords of each dataset

2.3 口令長度分布

表3 為不同口令數(shù)據(jù)集的長度分布.總體看來, 口令長度分布在不同數(shù)據(jù)集之間存在差異, 但絕大多數(shù)用戶(>75%) 的口令長度都集中在6~11 之間.除000Webhost 以外, 所有數(shù)據(jù)集長度大于15 的口令數(shù)量都很少(<1.1%).此外, 從長度分布中也能反映不同網(wǎng)站的口令策略.例如, Wishbone 數(shù)據(jù)集中,沒有長度小于6 的口令, 這表明, 該網(wǎng)站的口令策略要求用戶創(chuàng)建的口令長度必須大于等于6.類似地,CSDN 數(shù)據(jù)集中僅有2.2% 的口令長度小于8, 這表明CSDN 可能在開放注冊不久后, 便要求其用戶創(chuàng)建口令的長度至少為8.除了口令策略, 用戶的安全意識也對口令數(shù)據(jù)集的長度分布有一定的影響.例如,000Webhost 的用戶多為網(wǎng)站管理員, 其長口令的比例顯著高于其他數(shù)據(jù)集, 即使與具有相似口令策略要求的網(wǎng)站(CSDN 和Wishbone) 相比, 000Webhost 長口令的比例也明顯更高.

表3 口令長度分布Table 3 Password length distribution

2.4 口令字符組成和結(jié)構(gòu)

表4 展示了不同數(shù)據(jù)集的口令字符組成分布.觀察發(fā)現(xiàn),中文用戶創(chuàng)建口令時,大約29%~64%的口令是純數(shù)字,而10%~23%的口令由純小寫字母構(gòu)成;英文用戶的口令呈現(xiàn)與其相反的趨勢,大約25%~42%的口令是純小寫字母, 僅有9%~20% 的口令由純數(shù)字構(gòu)成.這意味著數(shù)字在中文用戶口令中的地位與小寫字母在英文用戶口令中的地位相當(dāng).這種特性也導(dǎo)致了中英文用戶的口令呈現(xiàn)出雙相安全性[52]: 面對在線猜測時(即允許的猜測次數(shù)較小, 如1~10 000), 英文用戶口令抵御猜測攻擊的能力優(yōu)于中文用戶; 面對離線猜測時(即允許的猜測次數(shù)較大, 如>105), 中文用戶口令抵御猜測攻擊的能力優(yōu)于英文用戶.

表4 每個數(shù)據(jù)集的口令字符組成結(jié)構(gòu)Table 4 Character composition information about each password dataset

此外, 還有一些有趣的現(xiàn)象值得注意: 無論是中文用戶還是英文用戶, 都很少(占比約0.17%~1.70%)采用純大寫字母作為口令; 有不可忽略的用戶(占比約0.12%~4.66%) 傾向于在口令末尾添加一個數(shù)字1; 絕大多數(shù)用戶(占比>93%) 的口令都僅由字母和數(shù)字組成.這些特征的分析和挖掘, 將大大縮小攻擊者的搜索空間, 進(jìn)而提高他們的猜測效率.

2.5 基于個人信息構(gòu)造口令

為了便于記憶, 用戶通常在創(chuàng)建口令時會使用自己的個人信息.然而, 這種行為也帶來了潛在的安全風(fēng)險, 因為攻擊者可以利用用戶的這一脆弱行為, 大幅提高口令猜測的成功率.例如, Wang 等人[28]的研究結(jié)果表明, 當(dāng)攻擊者已知用戶的姓名、生日、用戶名、郵箱和手機(jī)號時, 僅需進(jìn)行100 次猜測, 系統(tǒng)即面臨實質(zhì)性安全風(fēng)險(猜測成功率約為20%).

表5 為四個不同網(wǎng)站的用戶在創(chuàng)建口令時使用個人信息的情況(其中, PII-Dodonew 數(shù)據(jù)集是通過郵箱與12306 數(shù)據(jù)集匹配獲得, 因為Dodonew 數(shù)據(jù)集本身不包含個人信息).觀察發(fā)現(xiàn), 兩個中文網(wǎng)站的用戶更頻繁地使用個人信息來構(gòu)建口令, 而兩個英文網(wǎng)站的用戶則相對更謹(jǐn)慎.這一現(xiàn)象極可能與網(wǎng)站的服務(wù)類型相關(guān)[52].例如, ClixSense 是一家付費問卷調(diào)研網(wǎng)站, 與金融相關(guān), 而Rootkit 是一個黑客論壇, 其用戶普遍具有較高的安全意識(這在文獻(xiàn)[28] 中也得到了確認(rèn)), 因此這兩個網(wǎng)站的用戶傾向于更謹(jǐn)慎地使用個人信息構(gòu)建口令.

表5 用戶口令個人信息使用比例Table 5 Percentages of users building passwords with their own personally identifiable information (PII)

總體看來, 雖然不同網(wǎng)站用戶之間的口令創(chuàng)建行為存在差異, 但用戶在口令創(chuàng)建過程中使用個人信息是一個較為普遍的現(xiàn)象(12.8%~51.4%).這也提醒了網(wǎng)站和服務(wù)提供商需要采取有效措施來引導(dǎo)用戶避免在創(chuàng)建口令時使用個人信息, 以減少潛在的安全風(fēng)險.

2.6 口令語義分析

為了探究口令所包含的語義信息, 本文以Wang 等人[52]的研究為基礎(chǔ), 考慮9 種語義模型并構(gòu)造4個語義字典.它們分別是單字符重復(fù)(如111111)、多字符重復(fù)(如123123)、規(guī)律性序列(如654321)、回文數(shù)(如123321)、鍵盤模式(如zxcvbn)、四種日期格式(完整年月日YYYYMMDD、部分年月日YYMMDD、月日MMDD 和年YYYY)、英文單詞字典、英文姓名字典、拼音單詞字典和拼音姓名字典.表6 為不同數(shù)據(jù)集口令所包含的語義信息.

表6 口令中所包含的語義信息Table 6 Popularity of dictionaries with different semantics in password set

口令與語義字典的匹配方式采用與文獻(xiàn) [23] 相同的最大語義覆蓋原則.例如, 對于口令baobaolxy963, 可以將其拆分為以下幾個部分: baoba([PinyinWordLower])、963([Keyboard]), 和baobao([PinyinWordLower, SegmentRepeat, PinyinNameAny]).研究目標(biāo)是遍歷這些可能的語義段(將語義片段數(shù)目記為n), 確保在語義段數(shù)目相同的情況下, 覆蓋率最大.具體而言, 當(dāng)n=1 時, 單個語義段baoba 的覆蓋率為5/12、963 的覆蓋率為3/12、baobao 的覆蓋率為6/12, 最大覆蓋率為6/12; 當(dāng)n=2時, 兩個語義段baoba+963 的覆蓋率為8/12、baobao+963 的覆蓋率為9/12、baoba+baobao 的覆蓋率為6/12, 最大覆蓋率為9/12; 以此類推, 循環(huán)退出條件為n>3 或者已經(jīng)達(dá)到100% 覆蓋率.

觀察發(fā)現(xiàn), 不論是中文用戶還是英文用戶, 其口令中都包含了豐富的語義信息.這些信息可以分為多種模式, 包括字符重復(fù)、規(guī)律序列、日期、鍵盤模式和語義字典(中文用戶的口令對應(yīng)拼音字典, 英文用戶的口令對應(yīng)英文單詞字典).其中, 中文用戶更傾向于在口令中使用日期信息, 尤其是年月日模式(如990525), 這可能與個人生日或重要紀(jì)念日有關(guān), 也使得這部分用戶的口令更容易遭受定向攻擊.值得注意的是, 中英文用戶在創(chuàng)建口令時都傾向于使用規(guī)律的序列(如654321, abcdefg), 這種現(xiàn)象在有口令策略要求的網(wǎng)站中尤為突出.例如, 在中文數(shù)據(jù)集中, CSDN 口令的規(guī)律序列占比最高(16.89%); 在英文數(shù)據(jù)集中, 000Webhost、Wishbone 和LinkedIn 中規(guī)律序列的占比排名前三.

2.7 口令重用

隨著各種數(shù)字化網(wǎng)絡(luò)服務(wù)的迅速發(fā)展, 用戶需要管理的賬戶數(shù)量不斷增加.研究表明, 通常情況下, 互聯(lián)網(wǎng)用戶需要管理約100 個口令[58].然而, 由于人類的記憶能力有限且難以穩(wěn)定地記住如此多的口令, 用戶不可避免地傾向于重復(fù)使用口令或?qū)ΜF(xiàn)有口令進(jìn)行簡單的修改(即間接口令重用).頻繁發(fā)生的大規(guī)??诹顢?shù)據(jù)泄露事件, 為攻擊者提供了豐富的數(shù)據(jù)資源.一旦攻擊者成功獲取了用戶在一個網(wǎng)站的口令, 就很容易攻破其重用相同或相似口令的其它賬戶.

Wang 等人[3]在2016 年對口令重用相關(guān)的研究進(jìn)行了總結(jié): 約21%~51%的用戶會直接重用已有口令, 有26%~33% 的用戶會間接重用口令.在此, 間接重用的衡量標(biāo)準(zhǔn)為新舊口令的相似度在[0.8,1] 之間,其使用的相似度指標(biāo)為基于文氏距離、曼哈頓距離的文本相似度算法.以大規(guī)??诹钚孤逗霞疌OMB[13]為例(包含超過32 億獨立的郵箱和明文口令對), 本文對用戶多個口令的泄露現(xiàn)狀進(jìn)行了統(tǒng)計.具體而言,使用郵箱前綴進(jìn)行匹配(例如, zhangsan123@google.com 與zhangsan123@yahoo.com 的前綴一致, 則認(rèn)為這兩個郵箱對應(yīng)同一用戶), 共計得到約14 億數(shù)據(jù)條目, 其中16% 的郵箱前綴對應(yīng)2 個口令, 6% 的郵箱前綴對應(yīng)3 個口令, 10% 的郵箱前綴對應(yīng)至少4 個口令.

更進(jìn)一步, 本文從(通過郵箱前綴匹配得到的) 口令數(shù)目大于等于3 的數(shù)據(jù)條目中(共計約2.2 億),隨機(jī)選取3 個口令(分別記為pwA, pwB和pwC), 探究用戶多口令重用的現(xiàn)狀.特別地, 以基于編輯距離的相似度算法為例(相似度計算方式為s=1?EditDistance(pwA,pwB)/max(|pwA|,|pwB|), 相似度閾值設(shè)為0.5), 本文統(tǒng)計了用戶3 個口令之間的相似關(guān)系, 詳細(xì)結(jié)果如表7 所示.

表7 用戶口令重用統(tǒng)計Table 7 Statistics about password reuse

觀察發(fā)現(xiàn), 約有33.80% 的用戶的第一個口令與第三個口令完全相同(pwA=pwC).此外, 約10.36%的用戶的第二個口令與第一個口令不同(pwA ?=pwB), 但與第三個口令完全相同(pwB=pwC).這表明,攻擊者利用用戶泄露的舊口令pwA直接攻擊目標(biāo)口令pwC的成功率為33.8%; 若攻擊者再直接利用同一用戶額外泄露的第二個舊口令pwB, 即可多增加10% 的猜測成功率.其次, 還發(fā)現(xiàn)大約4.1% 的用戶的三個口令之間相似但不相同.這表明這些用戶在創(chuàng)建多個口令時可能存在一定的規(guī)律模式.因此, 需要設(shè)計新的模型來更深入地理解用戶多個舊口令之間的內(nèi)在聯(lián)系.

3 口令猜測攻擊

口令猜測攻擊根據(jù)技術(shù)路線的不同, 大致可分為三種類型.第一類為基于規(guī)則的猜測攻擊, 此類方法通過設(shè)計各種口令變換規(guī)則, 然后應(yīng)用于已有口令或單詞, 更多依賴于攻擊者的經(jīng)驗.第二類為基于統(tǒng)計學(xué)方法的猜測攻擊,例如,基于概率上下文無關(guān)文法(PCFG[21])、基于馬爾科夫鏈的方法(Markov[20,22]).這些方法使用數(shù)學(xué)和統(tǒng)計模型來分析和生成口令, 可以考慮上下文語法規(guī)則, 提高了口令猜測的成功率.第三類為基于機(jī)器學(xué)習(xí)的猜測攻擊, 近年來這一領(lǐng)域得到了廣泛的關(guān)注.學(xué)者們嘗試采用各種復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(如RNN[14]、GAN[15]、WAE[16]) 來解決傳統(tǒng)統(tǒng)計學(xué)方法存在的數(shù)據(jù)稀疏和過擬合問題.此外, 還有研究(如文獻(xiàn)[24]) 將機(jī)器學(xué)習(xí)技術(shù)與開源工具(如Hashcat[19]) 相結(jié)合, 大大提升了原始工具的猜測效率.下面將對這三類方法中具有代表性的算法/工具/模型/框架進(jìn)行介紹.圖1 和表8 對2005 年以來的具有代表性的口令猜測算法進(jìn)行了分類和總結(jié).

圖1 口令猜測算法的發(fā)展脈絡(luò)和分類Figure 1 Evolutionary trends and classification of password guessing algorithms

表8 主要口令猜測算法總結(jié)Table 8 Summary of mainstream password guessing methods

3.1 基于規(guī)則的攻擊方法

3.1.1 啟發(fā)式算法

不同于傳統(tǒng)的暴力破解方法, 啟發(fā)式算法很大程度上依賴于攻擊者的經(jīng)驗.其核心思想是觀察用戶在創(chuàng)建口令時的脆弱行為, 然后運用各種啟發(fā)式技巧以提高口令猜測的效率和成功率.其中一種常見的技巧是基于規(guī)則的變換, 攻擊者會利用口令中常見的規(guī)律和模式, 對已有口令或單詞進(jìn)行多種變換, 例如首字母大寫、尾部字符(串) 的插入/刪除、字符替換(如將字符a 替換為字符@)、字符串反轉(zhuǎn)等.早期, 僅有一些歐美機(jī)構(gòu)進(jìn)行了零星的研究.例如, 1979 年, Morris 和Thompson[17]設(shè)計了各種啟發(fā)式變換規(guī)則,用于生成字典中單詞的變種, 以進(jìn)行口令猜測; 1990 年, Klein[64]“精心設(shè)計” 了口令猜測的順序, 用于攻擊15 000 個經(jīng)過DES 加密的真實口令; 1999 年, Thomas[65]基于用戶群體的領(lǐng)域特征構(gòu)建了口令猜測字典, 用于攻擊2500 個經(jīng)過DES 加密的真實口令.

盡管此類方法缺乏嚴(yán)格的理論基礎(chǔ)和系統(tǒng)性, 但在特定場景下, 如果設(shè)計合理, 其猜測成功率也不容小覷.例如, 2014 年, Das 等人[56]提出了一種基于用戶舊口令和規(guī)則變化的啟發(fā)式口令猜測算法.該算法按照預(yù)定義的規(guī)則順序?qū)τ脩粢延械脑伎诹顟?yīng)用八類變換操作(如插入、刪除、大寫等).在每個變換階段之后, 檢查生成的口令是否已經(jīng)猜測到了目標(biāo)口令.在小猜測數(shù)下(如100 次), 該算法的猜測成功率達(dá)到30%, 遠(yuǎn)優(yōu)于漫步猜測算法, 但它也存在一些固有的缺陷: 它假設(shè)所有用戶都以固定的優(yōu)先級選擇口令變換規(guī)則, 這不符合用戶重用口令的真實行為; 生成口令猜測時, 該算法僅考慮了一種規(guī)則變換情況, 沒有考慮兩種或更多規(guī)則變換的組合情況, 這無法捕捉用戶重用口令時的復(fù)雜修改行為.

3.1.2 口令破解工具

Hashcat[19]和John the Ripper(JtR)[18]是兩款最為流行的口令破解工具, 它們在學(xué)術(shù)研究和實際應(yīng)用中都發(fā)揮著重要作用.這兩個工具包的運行效率經(jīng)過高度優(yōu)化, 能充分發(fā)揮多核處理器和GPU 提供的并行計算性能.它們提供多種攻擊模式, 如掩碼攻擊、規(guī)則變換和字典組合等, 將傳統(tǒng)的純暴力破解攻擊轉(zhuǎn)化為更為智能和有針對性的搜索策略.雖然Hashcat 和JtR 各自有一些獨特的指令/模式, 但這兩個工具共享幾乎相同的規(guī)則變換方法.值得注意的是, 它們在應(yīng)用規(guī)則變換時的策略略有不同.具體而言,Hashcat 遵循以單詞為主的順序(word-major order), 即在考慮下一個字典中的單詞之前, 會將規(guī)則集中的所有規(guī)則應(yīng)用于當(dāng)前單詞.相反, JtR 遵循以規(guī)則為主的順序(rule-major order), 即在應(yīng)用下一個規(guī)則之前, 將當(dāng)前規(guī)則應(yīng)用于字典中的所有單詞.這種差異對于研究基于規(guī)則的口令破解方法具有重要意義.

盡管學(xué)術(shù)界提出了一系列口令猜測算法, 并聲稱其猜測成功率優(yōu)于口令破解工具Hashcat/JtR, 但這些比較實驗往往采用了破解工具的默認(rèn)配置, 無法反映經(jīng)驗豐富的攻擊者的真實能力.2015 年, Ur等人[67]調(diào)研了研究人員常用的口令猜測算法與專業(yè)攻擊者實際采用策略之間存在的差異, 強(qiáng)調(diào)了僅僅依賴單一破解算法作為口令安全性度量存在偏差, 并首次提出了結(jié)合各類猜測算法/工具的理想指標(biāo)Min_auto.該指標(biāo)可理解為采用同一口令在不同猜測方法下猜測數(shù)的最小值作為其安全性的度量.

事實上, 經(jīng)驗豐富的攻擊者通常會精選合適的字典和規(guī)則, 并根據(jù)中間結(jié)果和破解成功率靈活地調(diào)整攻擊策略.例如, 在文獻(xiàn)[68] 中, 詳細(xì)描述了三名攻擊者如何利用專業(yè)經(jīng)驗快速破解約90% 的口令.在此,以第一位攻擊者(記為攻擊者A) 的破解策略為例, 進(jìn)行簡要介紹.

攻擊者A的破解策略可以分為三個主要階段, 每個階段采用不同的攻擊方法.以下是對這三個階段的簡要概述: 在第一階段, 他采用了包括暴力破解和基于字典的攻擊在內(nèi)的多種攻擊策略.具體而言, 他首先嘗試了1 到6 位長度的所有字符組合, 包括大小寫字母、數(shù)字和特殊字符.然后, 他分別對7 或8 位長度的純小寫字母和純大寫字母進(jìn)行破解嘗試.接著, 他嘗試了1 到12 位長度的純數(shù)字組合.此外, 他還應(yīng)用了一個多年來精心篩選的字典, 并結(jié)合了best64 規(guī)則集進(jìn)行攻擊.在已破解的口令的基礎(chǔ)上, 他還使用了d3ad0ne 規(guī)則集進(jìn)行進(jìn)一步嘗試.在此階段, 攻擊者A成功破解了62% 的口令, 僅耗時16 分鐘.在第二階段, 攻擊者A采用了混合攻擊策略, 結(jié)合了字典和掩碼.他依次嘗試在字典中每個口令的末尾添加了2 個字符(數(shù)字或特殊符號)、3 個字符(數(shù)字或特殊符號)、4 個數(shù)字, 以及3 個小寫字母和數(shù)字的組合.在此階段, 攻擊者A再次成功破解了16% 的口令, 過程耗時5 小時12 分鐘.最后, 在第三階段, 攻擊者A采用了hashcat 掩碼模式內(nèi)置的馬爾科夫優(yōu)化, 將先前成功破解的口令用作訓(xùn)練集, 并結(jié)合自定義字典和規(guī)則, 進(jìn)一步成功破解了10% 的口令, 耗時14 小時59 分鐘.需要注意的是, 這一破解流程具有明顯的階段性, 每個階段的難度逐漸增加, 其根本原因在于口令的分布服從Zipf 分布[49,57]: 流行的口令和罕見的口令, 都占據(jù)用戶群體中相當(dāng)大的比例.

近年來, 陸續(xù)有研究者對如何更合理/高效地利用口令破解工具展開了研究.例如, 在2019 年, Liu 等人[69]介紹了一種分析和高效處理破解工具(如Hashcat 和JtR)的技術(shù).作者提出了兩種新的操作,即規(guī)則反轉(zhuǎn)(rule inversion) 和猜測計數(shù)(guess counting), 通過這些操作, 他們能夠快速分析口令在此類工具下的安全強(qiáng)度而無需列舉所有可能的猜測; 在2021 年, Zhang 等人[70]設(shè)計了一個實用的口令數(shù)字語義提取工具, 基于經(jīng)驗性分析, 他們提出了兩種新的操作(operations, 即構(gòu)建規(guī)則集的基本單位), 并生成了1974 個數(shù)字語義規(guī)則.通過對JtR 和Hashcat 規(guī)則引擎和運行邏輯的優(yōu)化, 作者實現(xiàn)了JtR 和Hashcat對所提出新操作的支持; 在2021 年, Pasquini 等人[24]利用深度學(xué)習(xí)技術(shù)對口令與規(guī)則的適配度進(jìn)行了優(yōu)化, 提出了基于規(guī)則的自適應(yīng)攻擊算法ADaMs (詳細(xì)描述見第3.3.5 節(jié)); 2022 年, Di Campi 等人[71]對規(guī)則依據(jù)頻數(shù)進(jìn)行排序, 發(fā)現(xiàn)使用大規(guī)模字典結(jié)合少量高效的規(guī)則更為有效; 同年, Li 等人[63]采用無監(jiān)督聚類方法生成更為有效的口令規(guī)則集, 使得字典攻擊的猜測成功率在大猜測數(shù)下高于現(xiàn)有的口令猜測算法.具體而言, 作者首先使用Damerau-Levenshtein 距離和Jaro-Winkler 距離作為度量指標(biāo), 運用改進(jìn)的無監(jiān)督聚類算法DBSCAN 對口令進(jìn)行聚類.在每個聚類中, 他們選擇了與所有其他元素的距離之和最小的字符串作為基準(zhǔn)字符串(base string).接著, 利用Damerau-Levenshtein 距離算法, 從基準(zhǔn)字符串到目標(biāo)字符串生成了一系列插入、刪除和替換操作, 形成單個類別的規(guī)則集.最后, 他們將從所有聚類中生成的規(guī)則集合并, 并按照規(guī)則出現(xiàn)的頻數(shù)進(jìn)行排序, 再通過Hashcat[19]工具, 將基礎(chǔ)字典與規(guī)則集結(jié)合生成最終的猜測集.

3.2 基于統(tǒng)計學(xué)的攻擊算法

3.2.1 PCFG

2009 年, Weir 等人[21]提出了一個基于概率上下文無關(guān)文法的漫步口令猜測算法PCFG.該算法將口令字符分為三種類型: 字母段L、數(shù)字段D 和特殊字符段S, 并假設(shè)不同類型的字段之間相互獨立.它將口令按照不同字符類型和對應(yīng)子串長度轉(zhuǎn)化為中間結(jié)構(gòu)(模板).例如, 口令password123! 可以表示為L4D3S1, 其中L4代表長度為4 的字母段wang, D3代表長度為3 的數(shù)字段123, S1代表長度為1 的特殊字符段!.其訓(xùn)練和生成過程簡要描述如下(如圖2 所示): 首先, 從訓(xùn)練集中統(tǒng)計出各類口令結(jié)構(gòu)(如L4D3S1) 及其實例化(如L4→wang) 所對應(yīng)的概率; 然后, 通過從訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)到的相同長度的實例化(instantiations) 替換這些“L、D、S” 標(biāo)簽, 生成候選口令及其對應(yīng)的概率; 最后, 對生成的口令依照概率大小排序形成猜測集.例如, 口令wang123! 在PCFG 模型下的概率可以計算為Pr(wang123!)=Pr(L4D3S1)×Pr(L4→wang)×Pr(D3→123)×Pr(S1→!).

圖2 PCFG 訓(xùn)練與生成過程示意圖Figure 2 Training and generation process of PCFG

PCFG 受到后續(xù)研究者的持續(xù)關(guān)注, 學(xué)者們不斷擴(kuò)展和優(yōu)化其在口令猜測領(lǐng)域的應(yīng)用, 衍生出一系列基于PCFG 的改進(jìn)/新型猜測算法.例如, 2014 年, Veras 等人[23]對口令中包含的語義信息進(jìn)了深入挖掘, 提出了融合語義的PCFG 算法.該方法主要分為三步:

首先, 借助語料庫對口令進(jìn)行分詞處理.例如, 口令loveblue0507 分詞后的結(jié)果是love、blue 和0507.在其中, 字母構(gòu)成的部分被稱為“word 段”, 而數(shù)字和特殊字符構(gòu)成的部分被合稱為“gap 段”.

其次, 對這些“word 段” 進(jìn)行詞性標(biāo)注, 即為每個字段賦予一個相應(yīng)的詞性類別.舉例來說, blue 被標(biāo)注為名詞單數(shù)(NN).接下來, 進(jìn)行詞性分類與泛化操作.對于“word 段”, 如果該段所屬詞匯在源語料庫中, 那么它會被劃分至相應(yīng)的語料庫類別(如“月份”、“女性名字” 等).否則會利用Wordnet (一種同義詞集合工具) 將其類別歸納為一個通用的專業(yè)表達(dá)形式.例如, 將love 分類為love.n.01, 表示喜愛的第一個名詞含義; 詞性分類完成后, 需要構(gòu)建一個樹模型進(jìn)行抽象泛化, 例如, soldier 的語義標(biāo)簽為worker.n.01 ( “worker” 的第一個名詞義項), 其泛化后的結(jié)果為soldier.n.01.

最后進(jìn)行猜測生成, 該過程和原始PCFG[21]類似.例如, 生成口令youlovethem2 的概率計算公式為: Pr(youlovethem2) = Pr(N1→[PP][love.v.01.VV0][PP][number])× Pr([PP]→you)×Pr([love.v.01.VV0]→love)×Pr([PP]→them)×Pr([number]→2).

2014 年, Ma 等人[22]發(fā)現(xiàn), 利用原始訓(xùn)練集的實例化(instantiations)來填充PCFG 的字母段L,其效果通常要優(yōu)于從外部引入字典; 2015 年, Houshmand 等人[59]通過向上下文文法中引入鍵盤模式(如qwerty) 和多詞模式(如boatboat) 改進(jìn)了原始PCFG 的破解成功率; 2019 年, Wang 等人[52]對規(guī)律性的長結(jié)構(gòu)(如D1L1D1L1D1L1) 進(jìn)行了優(yōu)化, 并引入拼音和姓名字典至原始PCFG 的字母段L, 改善了PCFG 在中文數(shù)據(jù)集上的破解成功率; 同年, Zhang 等人[50]利用改進(jìn)的Markov 模型來生成PCFG 中L、D、S 段中的填充內(nèi)容, 提升了原始PCFG 的泛化能力; 2020 年, Hranicky 等人[61]提出了一種使用概率文法進(jìn)行分布式破解口令的技術(shù).其核心思想是將部分生成的句法形式分布到多個節(jié)點上, 從而減少了需要在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量, 提高了破解口令的效率; 2021 年, Han 等人[62]提出了一種面向長口令的TransPCFG 框架.其核心原理在于從基于短口令訓(xùn)練的PCFG 模型(簡稱PCFGshort) 中提取有效的語法信息, 并將這些信息傳遞到基于長口令訓(xùn)練的PCFG 模型(簡稱PCFGlong) 中.同時, 還根據(jù)PCFGshort 中的結(jié)構(gòu)信息來動態(tài)調(diào)整PCFGlong 中的結(jié)構(gòu)信息, 從而提高了PCFG 針對長口令的破解成功率; 此外, 還有研究人員將個人信息標(biāo)簽(如姓名、生日、用戶名、郵箱、手機(jī)號等) 引入PCFG, 提出了基于PCFG 的定向口令猜測算法, 如文獻(xiàn)[28,54].

3.2.2 Markov

在2005 年, Narayanan 和Shmatikov[20]首次將馬爾可夫模型(Markov) 引入到口令猜測.Markov模型(又稱n-gram 模型) 有階的概念,d階Markov(d=n+1) 的核心假設(shè)是, 當(dāng)前口令字符僅與和它對應(yīng)的前d個字符有關(guān), 與其它字符無關(guān).例如, 3 階Markov 模型對口令abc123 的概率計算如下:Pr(abc123)=Pr(a)×Pr(b|a)×Pr(c|ab)×Pr(1|abc)×Pr(2|bc1)×Pr(3|c12), 其中Pr(3|c12) 的計算方式為字符串c12 后是3 的頻數(shù)除以c12 后有字符的頻數(shù), 其余條件概率的計算方式與之相同.

當(dāng)Markov 模型的階數(shù)過大時, 會出現(xiàn)數(shù)據(jù)稀疏的問題.例如, 當(dāng)階數(shù)為5 時, 若訓(xùn)練集中沒有出現(xiàn)abcde1 這樣的字符串, 那么轉(zhuǎn)移概率Pr(1|abcde) 的計算結(jié)果為0.此外, 原始Markov 模型所生成的所有口令的概率加和不等于1.0.例如, 若訓(xùn)練集為{ab,abc}, 那么1 階Markov 模型計算口令ab 的概率為Pr(ab)=Pr(a)×Pr(b|a)=1, 如果該模型再生成其他口令, 概率總和顯然將大于1.0.

為了解決這些問題, 2014 年, Ma 等人[22]提出了一系列平滑(如Laplace 平滑) 和正規(guī)化方法(如End-symbol 方法), 實驗結(jié)果表明使用End-symbol 方法的Backoff 模型表現(xiàn)最優(yōu), 在此對其進(jìn)行簡要介紹.End-symbol 是指在每個口令的末尾增加一個終止符號(記為⊥), 在訓(xùn)練時, 將其視為普通字符納入統(tǒng)計; 在生成時,⊥可以出現(xiàn)在除了開頭以外的任何位置,標(biāo)志著單個口令生成完畢.仍以{ab,abc}為例,在對每個口令增加終止符后,1 階Markov 模型計算口令ab 的概率變?yōu)镻r(ab)=Pr(a)×Pr(b|a)×Pr(⊥圖3 為使用正規(guī)化方法的Markov 模型的訓(xùn)練和生成過程示意圖.Backoff 是一種變階Markov模型, 當(dāng)某個字符所對應(yīng)的d階前綴的頻數(shù)小于某個閾值時, 模型啟用回退(backoff) 機(jī)制, 使用該字符對應(yīng)的更短的前綴(如d ?1 階前綴), 直至該字符所對應(yīng)前綴的頻數(shù)滿足閾值.例如, 當(dāng)階為4, 計算轉(zhuǎn)移概率Pr(1|wang) 時, 如果字符串wang1 的頻數(shù)不滿足閾值, 而ang1 的頻數(shù)滿足閾值, 則計算轉(zhuǎn)移概率Pr(1|ang)×ω(wang) 來代替原始的Pr(1|wang), 其中ω(wang) 是一個與所有以wang 開頭的長度為5的字符串有關(guān)的值, 作用是將概率歸一化, 使得整個口令空間的概率總和仍為1.0.

圖3 Markov 訓(xùn)練與生成過程示意圖Figure 3 Training and password generation process of Markov model

2015 年, Dürmuth 等人[66]對原始的Markov 模型的口令生成過程進(jìn)行了優(yōu)化, 提出了OMEN 模型, 其核心原理在于將Markov 模型中字符的概率值映射為等級, 使得模型可以(在整體層面) 按照概率降序生成候選口令, 從而大大提升了生成口令猜測的速度.

3.2.3 基于PCFG 的定向口令猜測框架TarGuess

2016 年, 基于PCFG[21]、Markov[22]和貝葉斯理論等統(tǒng)計計算理論, Wang 等人[28]提出了一個定向口令猜測理論框架TarGuess, 涵蓋4 種基于不同個人信息組合的定向猜測攻擊算法和3 個理論攻擊模型.具體而言, 他們根據(jù)個人信息在構(gòu)造口令時的作用和隱私程度, 將個人信息分為三類.第一類為能夠直接用于構(gòu)造口令的顯式PII (稱為Type-1 PII), 如姓名和生日; 第二類為隱式PII (稱為Type-2 PII),如性別和受教育程度等, 它們雖然不能直接作為口令的一部分, 但它們會影響用戶的口令創(chuàng)建行為; 第三類為用戶的認(rèn)證憑證信息, 如口令.根據(jù)攻擊者所獲取的個人信息的不同, TarGuess 框架主要刻畫了四種最具代表性的定向猜測場景: (1) 已知用戶的Type-1 PII; (2) 已知用戶已泄露的舊口令; (3) 同時已知用戶的個人信息和已泄露的舊口令; (4) 在場景#3 的基礎(chǔ)上, 額外使用了目標(biāo)用戶的Type-2 PII (如性別).TarGuess 猜測框架圖如圖4 所示.

圖4 TarGuess 猜測框架圖[28]Figure 4 An architectural overview of TarGuess [28]

以TarGuess-I[28]為例, Wang 等人在PCFG[21]原有的字母L、數(shù)字D 和特殊符號S 標(biāo)簽的基礎(chǔ)上, 引入了基于類型的個人信息標(biāo)簽(如姓名、生日、郵箱、用戶名等).例如, 使用N 代表姓名信息, N1表示姓名全稱, N2 表示姓名全稱的縮寫, N3 表示姓氏,···; 使用E 表示郵箱信息, E1 表示郵箱前綴的全稱, E2 表示郵箱前綴的第一個字母段,···.不難發(fā)現(xiàn), 新標(biāo)簽與原有的L、D、S 標(biāo)簽的不同之處在于,其下標(biāo)數(shù)字不再代表長度, 而是代表不同的類型.通過這種表示方式, 可以有效避免使用長度劃分個人信息[54]所帶來的對字段的子類型不敏感的問題.

TarGuess-II 綜合考慮了結(jié)構(gòu)級(如L3D3→L3D3S2) 和字段級(L3:abc→L4:abcd) 兩種口令修改變換方式, 并借鑒圖同構(gòu)的概念, 將新舊口令的結(jié)構(gòu)級修改行為映射為傳統(tǒng)PCFG 的結(jié)構(gòu)變換.在此基礎(chǔ)上, 利用Markov 模型來模擬字段內(nèi)部的修改過程, 最終構(gòu)建出一個完整的口令變換上下文無關(guān)文法模型.TarGuess-III 在TarGuess-II 的基礎(chǔ)上, 引入了基于類型的PII 標(biāo)簽(與TarGuess-I 一致), 構(gòu)建了一個可識別PII 的口令重用文法.TarGuess-IV 則通過引入貝葉斯理論, 將性別這一無法直接用于構(gòu)造口令的隱式個人信息融入猜測模型, 其本質(zhì)是對生成的猜測進(jìn)行概率調(diào)整.

2020 年, Xie 等人[72]在TarGuess-I[28]原有個人信息標(biāo)簽類型的基礎(chǔ)上, 增加了鍵盤模式、流行口令標(biāo)簽和特殊字符串標(biāo)簽, 提出了TarGuess-I+, 進(jìn)一步提升了原始TarGuess-I 的猜測成功率.

3.3 基于機(jī)器學(xué)習(xí)技術(shù)的攻擊算法

3.3.1 基于循環(huán)神經(jīng)網(wǎng)絡(luò)的口令猜測模型

2016 年, Melicher 等人[14]首次將深度學(xué)習(xí)技術(shù)用于口令猜測, 提出了基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN) 的口令猜測模型FLA.該模型由3 層長短期記憶網(wǎng)絡(luò)(LSTM) 和兩層全連接層構(gòu)成.其核心思想是通過口令中先前的字符序列來預(yù)測下一個字符出現(xiàn)的概率, 本質(zhì)上是一個字符級的語言模型.與Markov 模型[22]的不同之處在于, FLA 模型在輸入字符前綴后, 能自動為字符表中的每個字符都分配一個非零的概率, 而不是通過啟發(fā)式的平滑技術(shù)(如Laplace 平滑).這使得FLA 相比Markov 模型具有更好的泛化性.

2019 年, Xia 等人[55]將LSTM 與PCFG 結(jié)合, 提出了口令猜測模型PL(PCFG+LSTM).該模型首先將訓(xùn)練集中的口令轉(zhuǎn)換成結(jié)構(gòu)段的形式(如password123!→L8D3S1), 再將結(jié)構(gòu)段序列用于LSTM網(wǎng)絡(luò)的訓(xùn)練; 模型訓(xùn)練完成后, 可生成一系列結(jié)構(gòu)段序列, 再使用與原始PCFG 一致的方式對這些結(jié)構(gòu)段進(jìn)行相應(yīng)填充.為了在不同測試集中能達(dá)到普遍較優(yōu)的猜測效果, 作者進(jìn)一步訓(xùn)練了多個PL 模型, 將這些模型的輸出(即結(jié)構(gòu)段及其對應(yīng)概率) 相結(jié)合, 并進(jìn)行權(quán)重選擇, 再通過原始口令數(shù)據(jù)集訓(xùn)練的CNN 分類器判斷新生成口令的來源, 最后通過設(shè)計的閾值判斷生成口令是否是通用的(general), 作為接受和拒絕生成口令的依據(jù).此過程構(gòu)成了多源口令猜測方法GENPass.2021 年, Wang 等人[73]在PL 模型的基礎(chǔ)上, 利用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN) 來生成PCFG 的結(jié)構(gòu)段以及L 段的填充內(nèi)容, 提出了PR+ 模型, 降低了模型對大訓(xùn)練樣本的依賴.

3.3.2 基于生成式模型的口令猜測算法

2019 年, Hitaj 等人[15]首次將生成對抗網(wǎng)絡(luò)(GAN[74]) 引入到口令猜測領(lǐng)域, 提出了PassGAN 模型, 它由生成器G 和判別器D 構(gòu)成.不同于FLA 模型[14]的自回歸生成方式, PassGAN 學(xué)習(xí)整個口令的字符分布.在訓(xùn)練過程中, 生成器G 接收隨機(jī)噪聲向量作為輸入, 旨在生成與真實口令樣本相似的假口令樣本.判別器D 對來自訓(xùn)練數(shù)據(jù)集的真實口令樣本和生成器生成的假口令樣本進(jìn)行區(qū)分, 從而提供反饋.生成器G 根據(jù)判別器D 的反饋逐步調(diào)整模型參數(shù), 生成更逼真的假口令樣本, 使其分布逐漸接近訓(xùn)練集中真實口令樣本的分布.在訓(xùn)練完成后, 只需不斷向生成器G 提供噪聲向量, 就能生成口令, 直到達(dá)到所需的猜測集大小.圖5 為GAN 用于口令猜測的示意圖.不同于傳統(tǒng)方法(如PCFG[21]和Markov[22])通過概率統(tǒng)計建立精確的口令概率分布模型, 基于GAN 的口令猜測模型無法為生成的口令樣本賦予概率并排序.實驗表明[15], 要達(dá)到與PCFG 和Markov 相同的猜測成功率, PassGAN 至少需要生成高一個數(shù)量級的猜測.盡管該方法的猜測成功率不如PCFG 和Markov 模型, 它顯示了GAN 在生成口令方面的巨大潛力, 也為后續(xù)研究提供了新的思路和方向.

圖5 基于GAN 的口令猜測模型Figure 5 GAN-based password guessing model

2021 年, Pasquini 等人[16]指出, 口令的離散表征使得生成器在訓(xùn)練過程中難以正確地反映數(shù)據(jù)分布, 從而導(dǎo)致訓(xùn)練過程的不穩(wěn)定性; 此外, 生成器不能很好地學(xué)習(xí)訓(xùn)練數(shù)據(jù)的離散特性, 使得判別器可以輕易區(qū)分真實數(shù)據(jù)和生成數(shù)據(jù), 限制了生成器的改進(jìn)空間.為此, Pasquini 等人[16]對PassGAN 進(jìn)行了改進(jìn).具體而言, 他們在每個口令字符的one-hot 編碼表示上添加了小幅的噪聲(通過一個超參數(shù)控制噪聲的大小), 并在添加噪聲后重新歸一化了每個字符的分布, 以此來緩解離散特征帶來的不穩(wěn)定性.在模型架構(gòu)層面, 作者在生成器中采用了批歸一化(batch normalization), 從而可以更有效地使用更深的殘差瓶頸塊(residual bottleneck blocks).實驗表明, 改進(jìn)后的GAN 模型在大猜測數(shù)下(>108) 的猜測成功率顯著高于原始的PassGAN[15].

此外, Pasquini 等人[16]還提出了上下文Wasserstein 自編碼器模型(context wasserstein autoencoder, CWAE)[75]用于條件性口令猜測(CPG),即掩碼攻擊場景(攻擊者已知了用戶口令的部分信息, 如長度、部分字符).在該場景下, 攻擊者可利用口令模板(如**mm*91) 來生成一系列具有相似結(jié)構(gòu)的口令簇(如summy91, tommy91 等).這些口令的表征向量在潛在空間(latent space) 彼此接近, 該特性也被作者稱為強(qiáng)局部性(strong locality).與之對應(yīng)的是, 不同數(shù)據(jù)集的分布之間呈現(xiàn)出一些更為通用的特征差異, 如不同口令策略導(dǎo)致的不同平均口令長度和字符組成, 這使得來自同一個(數(shù)據(jù)集) 分布的口令往往在潛在空間中更為集中, 這種特性被作者稱為弱局部性(weak locality).

在此基礎(chǔ)上, 作者進(jìn)一步提出了動態(tài)口令猜測(dynamic password guessing, DPG) 技術(shù).其核心思想是將成功猜測的口令持續(xù)地用于更新潛在分布, 并模擬未知的目標(biāo)口令分布.具體而言, 給定目標(biāo)口令集, 在使用生成器(在此使用GAN 的效果略好于CWAE) 生成猜測的過程中, 不斷統(tǒng)計成功猜測的口令比例, 當(dāng)超過某個閾值α后, 使用成功猜測的口令集動態(tài)調(diào)整/更新潛在分布.這種動態(tài)攻擊策略尤其適用于跨站猜測場景, 即訓(xùn)練集與攻擊目標(biāo)來源于不同分布或分布差異較大.

隨后的研究中, 研究者提出了一系列基于生成式模型的口令猜測方法.例如, 在2022 年, Yang 等人[76]提出了一種輕量級口令猜測模型VAEPass, 該模型基于變分自編碼器.相較于PassGAN[15],VAEPass 具有較小的參數(shù)規(guī)模和更快的模型訓(xùn)練速度,同時在猜測成功率方面優(yōu)于PassGAN.此外,Pagnotta 等人[77]提出了名為PassFlow 的基于流的生成式模型用于口令猜測.基于流的模型可以進(jìn)行精確的對數(shù)似然計算和優(yōu)化, 從而實現(xiàn)了準(zhǔn)確的潛在變量推斷.作者通過實驗證明, PassFlow 的猜測成功率優(yōu)于Pasquini 等人提出的基于GAN 的方法.

3.3.3 基于Seq2Seq 的口令重用模型Pass2Path

2019 年, Pal 等人[31]對用戶的口令重用行為進(jìn)行建模, 提出了一個基于序列到序列模型(Seq2Seq)的口令重用模型Pass2Path.他們的方法首先將用戶的舊口令和新口令序列分別作為模型的輸入和輸出,旨在捕捉用戶的口令重用模式.然而, 這種訓(xùn)練方法存在一個問題: 用戶的新舊口令通常非常相似, 可能包含許多相同的字符或字符串.因此, 模型可能會學(xué)習(xí)到許多低效的“復(fù)制” 操作, 導(dǎo)致其在實際應(yīng)用中的泛化能力較差.為了解決這一問題, 作者采取了新的策略, 將用戶修改口令的行為視為一系列原子編輯操作.這些原子操作包括增加、刪除和替換單個位置的字符.在此基礎(chǔ)上, 作者將模型的輸出調(diào)整為從舊口令到新口令的編輯操作序列.舉例來說, 如果從口令wang123 變換為wang1!, 對應(yīng)的原子操作序列為[(在索引為5 的位置刪除字符2), (在索引為6 的位置刪除字符3), (在索引為7 的位置插入字符!), 結(jié)束], 模型的輸入為原始口令wang123 的字符序列, 輸出為對應(yīng)的原子操作序列.這一新的建模方式極大地提升了模型的猜測成功率.圖6 為Pass2Path 模型的示意圖.

圖6 基于編輯操作序列的口令重用模型Pass2PathFigure 6 Password reuse model Pass2Path based on editing operation sequence

3.3.4 基于多步?jīng)Q策機(jī)制的口令重用模型Pass2Edit

2023 年, Wang 等人[35]指出如果將用戶的口令修改過程建模為一系列原子修改操作(例如, 刪除或插入特定的口令字符), 并使用神經(jīng)網(wǎng)絡(luò)來預(yù)測修改操作序列, 那么每個修改操作可能對后續(xù)的修改操作產(chǎn)生一定的影響.然而, 現(xiàn)有方法(如3.3.3 節(jié)所介紹的Pass2Path[31]) 無法準(zhǔn)確學(xué)習(xí)到單個修改操作對當(dāng)前口令的作用效果.為了更準(zhǔn)確地表示用戶的口令修改/重用行為, Wang 等人首次將口令重用攻擊建模為一個多分類問題, 并提出了一個名為Pass2Edit 的生成模型.該模型采用多步?jīng)Q策機(jī)制, 能夠在口令經(jīng)歷復(fù)雜變換時學(xué)習(xí)到修改操作對當(dāng)前口令的作用效果.

具體而言, Pass2Edit 模型的輸入由原始口令和之前單個修改步驟所產(chǎn)生的當(dāng)前口令共同組成.模型的輸出是下一步的原子修改操作.在輸出單步修改操作后, 模型將該修改操作應(yīng)用到輸入端的當(dāng)前口令中,作為下一步的模型輸入.如此循環(huán)迭代, 直至輸出終止操作.通過這種多步?jīng)Q策學(xué)習(xí)機(jī)制, 模型能夠?qū)W習(xí)到口令修改過程中每個修改操作對原始口令的影響.例如, 假設(shè)原始口令為wang123, 目標(biāo)口令為wang1!,那么這兩個口令之間的編輯操作序列為[(在索引為5 的位置刪除字符2), (在索引為6 的位置刪除字符3), (在索引為7 的位置插入字符!), 結(jié)束].神經(jīng)網(wǎng)絡(luò)的輸入涵蓋了原始口令以及當(dāng)前已修改的口令, 而輸出則是下一步的單步編輯操作.首先, 將兩個原始口令作為模型的輸入, 第一步輸出為(在索引為5 的位置刪除字符2); 然后, 將該操作應(yīng)用于原始口令wang123, 得到當(dāng)前修改后的口令wang13, 并將其與原始口令一同作為下一步的模型輸入, 輸出為(在索引為6 的位置刪除字符3); 再依照同樣的方式, 循環(huán)調(diào)用該網(wǎng)絡(luò), 直至遇到結(jié)束操作.圖7 為該方法的一個示例說明.

圖7 基于多步?jīng)Q策機(jī)制的口令重用模型Pass2Edit [35]Figure 7 Password reuse model Pass2Edit based on multi-step decision-making mechanism [35]

3.3.5 基于規(guī)則的自適應(yīng)攻擊算法ADaMs

基于規(guī)則的字典攻擊通常由兩個關(guān)鍵組成部分構(gòu)成: 一個包含n個口令的基礎(chǔ)字典集及一個包含m個變換規(guī)則的規(guī)則集.在生成猜測時, 會將規(guī)則集中的每個規(guī)則變換應(yīng)用于基礎(chǔ)字典中的每個口令, 從而生成n×m個口令作為猜測字典.然而, 這種方法會導(dǎo)致大量無效或重復(fù)的猜測, 因為在現(xiàn)實世界中, 不同基礎(chǔ)口令與不同規(guī)則的適配程度存在巨大的差異.舉例來說, 長度較短的口令相對于長度較長的口令更適于被應(yīng)用在尾部添加字符(串) 的規(guī)則.類似地, 對于由純小寫字母構(gòu)成的口令, 更適于應(yīng)用全體字符大寫的規(guī)則, 而對于由字母和數(shù)字混合構(gòu)成的口令, 這種規(guī)則的適用性可能較低.

針對此問題, Pasquini 等人[24]在2021 年提出了一種新型字典攻擊技術(shù), 該技術(shù)無需監(jiān)督或?qū)I(yè)領(lǐng)域知識, 能夠自動模擬真實攻擊者采用的高級猜測策略, 在應(yīng)對不完善的字典攻擊配置方面表現(xiàn)出更強(qiáng)的適應(yīng)性.具體而言, 對于給定基礎(chǔ)字典W和規(guī)則集R, 通過引入一個足夠大的字典X, 為基礎(chǔ)字典中的每個口令wi和規(guī)則集中的每個規(guī)則rj分配一個類別標(biāo)簽: 標(biāo)簽為1 表示rj(wi)∈X, 0 表示rj(wi) /∈X.通過這種方式, 每個口令將被分配|R| 個標(biāo)簽(即規(guī)則的數(shù)量), 此時, 基礎(chǔ)口令與規(guī)則的適配程度可視為一個多標(biāo)簽分類問題(multi-label classification).隨后, 作者使用深度神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)規(guī)則集所對應(yīng)的適配函數(shù).模型訓(xùn)練完成后, 模型將對每個口令wi和每個規(guī)則rj輸出一個位于0 到1 之間的適配分?jǐn)?shù), 其中接近1 的數(shù)值表示rj對wi是適配的.相反, 輸出值接近0 表示真實情況下將rj應(yīng)用于wi的概率極低.最后, 通過設(shè)置適配分?jǐn)?shù)閾值來排除那些對給定口令無效的規(guī)則(例如, 設(shè)置閾值為0.5 即可排除85%/90% 的無效規(guī)則[24]), 從而大大提升了原始字典攻擊的攻擊效率.在此基礎(chǔ)上, 他們引入了動態(tài)猜測策略, 即將每一個新猜出的口令都插入到原始基礎(chǔ)字典中, 這在現(xiàn)實情況下對應(yīng)了專家根據(jù)目標(biāo)情況即時調(diào)整猜測策略的能力, 從而進(jìn)一步提升了攻擊效率.

3.3.6 Chunk-Level 口令猜測框架

2021 年, Xu 等人[33]指出現(xiàn)有口令猜測模型大多將口令視為連續(xù)的字符序列, 或假設(shè)不同類型字段之間相互獨立, 這些方式均無法捕獲口令中存在的獨有模式, 如4ever、ing 等.針對此問題, Xu 等人通過引入字節(jié)對編碼(byte-pair-encoding, BPE) 算法, 將口令劃分為更細(xì)粒度的塊級(chunk-level) 表征.例如, 口令p@ssw0rd4ever 可以通過BPE 劃分為p@ssw0rd 和4ever 兩塊.使用BPE 算法將口令切分成chunk 的大體流程如圖8 所示.

圖8 使用BPE 算法將口令切分成chunk 表征[33]Figure 8 Use BPE algorithm to split password into chunk representation [33]

在此基礎(chǔ)上,Xu 等人[33]構(gòu)建了三個基于chunk 劃分的口令猜測模型: Chunk-level Backoff、Chunklevel PCFG 和Chunk-level FLA.對于Chunk-level Backoff,它與普通Backoff[22]的區(qū)別在于使用chunk代替原始的單個字符作為計算轉(zhuǎn)移概率的最小單元; 此外, Chunk-level Backoff 還限制了預(yù)測下個chunk所需考慮的最大chunk 前綴數(shù)目.其訓(xùn)練與生成過程與普通Backoff 類似.對于Chunk-level PCFG, 它在原有PCFG[21]大/小寫字母U/L、數(shù)字D 和特殊符號S 的基礎(chǔ)上, 額外引入了DM、TM 和FM 三種類型的標(biāo)簽, 分別代表兩種類型字符混合的字符串(double mixed type, 如4ever 可表示為DM5)、三種類型字符混合的字符串(three mixed type, 如p@ssw0rd 可表示為TM8) 和四種類型字符混合的字符串(four mixed type, 如P@$$w0RD 可表示為FM8).其訓(xùn)練與生成過程也與普通PCFG 類似.對于chunklevel FLA, 它與普通FLA[14]的區(qū)別在于使用chunk 代替原始的單個字符, 模型通過先前的chunks 作為上下文環(huán)境來預(yù)測下個chunk 出現(xiàn)的概率.由于chunk 的種類遠(yuǎn)多于單個字符的種類, 作者使用了一個嵌入層來代替原始字符級FLA 所使用的獨熱編碼層(one-hot encoding layer).其余過程和普通FLA類似.作者通過實驗證實, 三個chunk-level 模型的猜測成功率均優(yōu)于對應(yīng)的原始模型.

3.3.7 基于隨機(jī)森林的口令猜測框架RFGuess

2023 年, Wang 等人[26]以隨機(jī)森林算法為例, 通過對口令字符的重新編碼, 設(shè)計了基于經(jīng)典機(jī)器學(xué)習(xí)技術(shù)的新型口令猜測框架RFGuess, 涵蓋漫步猜測場景和兩個定向猜測場景(即, 基于個人信息的定向猜測和基于口令重用的定向猜測).

首先介紹漫步口令猜測算法RFGuess.給定一個口令(如password), 將該口令每個字符前面的n階字符串作為分類目標(biāo)(如passwo), 而將該字符(如passwo 所對應(yīng)的字符r) 作為對應(yīng)待分類字符串的正確分類標(biāo)簽.其中,n階字符串中的每個字符使用[字符類型(即, 數(shù)字, 小寫/大寫字母, 特殊符號), 字符所在類型序號(如, 字母a 位于a–z 序列的第一個), 字符所在鍵盤行號, 字符所在鍵盤列號] 四個維度來表示,n階字符串整體再使用[已遍歷的字符長度, 當(dāng)前字符所在的相同字符類型的段已經(jīng)遍歷長度] 兩個維度來表示, 共計4n+2 個維度.下面給出一個具體示例.

以口令qwer654321 為例, 取其6 位前綴wer654.首先, 可以將wer654 中的每個字符用一個4 維特征向量進(jìn)行唯一表示.例如, 字符r 被表示為[3, 18, 2, 4], 其中3 表示小寫字母, 18 是r 在小寫字母序列a–z 中的排名, 2 和4 分別是r 在鍵盤上的行和列位置.如此, wer654 可以由一個24 維特征向量表示(24 = 4×6).然后, 添加一個2 維向量[7, 3] 來表示前綴wer654 的長度特征, 其中7 表示數(shù)字4 是qwer654321 的第7 個字符, 3 表示數(shù)字4 是數(shù)字段654321 的第3 個字符).在訓(xùn)練階段, 將訓(xùn)練集中的所有口令轉(zhuǎn)化為n階字符串的形式.模型的輸入是每個n階字符串的向量表示, 而輸出則是與該字符串對應(yīng)的字符標(biāo)簽.生成猜測的過程類似于Markov 模型.從一個n階起始字符串開始, 模型逐個字符地生成, 直到遇到終止符.該過程可視為模型通過觀察之前的字符來預(yù)測下一個字符, 以此生成可能的口令猜測.圖9 為使用決策樹對口令前綴進(jìn)行分類的簡單示例.

圖9 使用決策樹對n 階口令字符串進(jìn)行分類[26]Figure 9 Classify n-order password strings using decision trees [26]

基于個人信息的定向口令猜測算法RFGuess-PII 與漫步算法RFGuess 原理相同, 不同之處在于對包含個人信息口令片段的編碼方式不同.具體來說, 對于定向算法, 個人信息的使用行為除了沒有鍵盤特征外, 其他與普通字符相似.首先, 個人信息也有不同類型之分(如郵箱、用戶名、姓名等, 這類比于普通字符的字符類型), 而且不同類型個人信息之間的使用行為也互不相關(guān).其次, 給定個人信息類型, 其使用行為也有著一定的規(guī)律/關(guān)聯(lián)性(如姓名包含姓名全稱、姓名縮寫、姓氏等一系列變型, 這可類比于普通字符的字符序號).因此, 使用[個人信息類型, 個人信息行為序號, 0, 0] 這四個維度表示定向猜測算法中包含個人信息的片段特征, 其中, 最后兩個0 是為了與普通字符的特征對齊.以口令wang123 為例, 個人信息片段wang 可表示為(10, 1001, 0, 0), 其中10 代表姓名這一個人信息種類, 1001 代表使用姓名信息的第一種變型, 即姓氏.該算法的訓(xùn)練和猜測生成過程也與RFGuess 相似.

基于口令重用的定向口令猜測算法RFGuess-Reuse 可分為兩個主要階段: 結(jié)構(gòu)級變換和字段級變換.在結(jié)構(gòu)級變換階段, 統(tǒng)計訓(xùn)練集中所有口令對在結(jié)構(gòu)層面的轉(zhuǎn)換操作及對應(yīng)頻率.例如, 統(tǒng)計從結(jié)構(gòu)L8S2(表示長度為8 的字母片段和長度為2 的特殊字符片段) 變化為結(jié)構(gòu)L7D3(表示長度為7 的字母片段和長度為3 的數(shù)字片段) 的口令對的頻率, 并依據(jù)概率進(jìn)行排序.接下來, 在字段級變換階段, 使用隨機(jī)森林算法對字段級轉(zhuǎn)換操作進(jìn)行預(yù)測.例如, 在字母片段中, 若將password 轉(zhuǎn)換為passwor, 那么隨機(jī)森林的作用是輸入password, 然后預(yù)測應(yīng)該采取的編輯操作, 即刪除最后一個字符d.以下給出一個完整的示例.給定一個口令password!!, 生成目標(biāo)口令p@sswor123 的概率計算過程為Pr(password!!→p@sswor123) = Pr(password!!→password)× Pr(password→passwor)×Pr(passwor→passwor123)×Pr(passwor123→p@sswor123)×p4,其中,Pr(password!!→password) (即 L8S2→L8) 和 Pr(passwor→passwor123) (即 L7→L7D3) 表示結(jié)構(gòu)級轉(zhuǎn)換的概率, 可以通過訓(xùn)練集中口令對的統(tǒng)計數(shù)據(jù)獲得; Pr(password →passwor)(即刪除單個字符d) 和Pr(passwor123 →p@sswor123)(即a →@) 是字段級轉(zhuǎn)換的概率, 可以通過已訓(xùn)練的隨機(jī)森林模型獲得;p4是經(jīng)過四次轉(zhuǎn)換后結(jié)束的概率, 同樣可以通過訓(xùn)練集的統(tǒng)計數(shù)據(jù)獲得.

3.3.8 基于雙向Transformer 的口令猜測框架PassBERT

2023 年, Xu 等人[32]將自然語言處理領(lǐng)域的預(yù)訓(xùn)練/微調(diào)技術(shù)用于口令猜測, 提出了一個基于雙向Transformer 的口令猜測框架PassBERT.該框架涵蓋三種不同類型的攻擊場景: (1) 基于部分口令信息的掩碼攻擊場景(即攻擊者已知了用戶口令的部分信息, 如長度和/部分字符); (2) 基于口令重用的定向攻擊場景; (3) 基于規(guī)則的自適應(yīng)攻擊場景.具體來說, 作者首先使用大規(guī)??诹顢?shù)據(jù)集(Rockyou-2021), 基于掩碼語言建模(masked language modeling), 建立了口令預(yù)訓(xùn)練模型.其中, 掩碼語言建模是指, 訓(xùn)練模型使其能利用包含掩碼字符的口令模板(如il*v*u4*ve*) 來恢復(fù)出該模板所對應(yīng)的原始完整口令(即iloveu4ever).在此之后, 作者根據(jù)三種攻擊場景的不同特點, 對預(yù)訓(xùn)練模型進(jìn)行了針對性微調(diào), 即為三種攻擊場景設(shè)置了不同的監(jiān)督信號(supervision signals).

具體來說, 掩碼攻擊模型的輸入為口令模板(與預(yù)訓(xùn)練的不同之處在于, 將原始BERT 模型的15%字符掩蓋比例提升為50%), 輸出為完整的原始口令; 定向攻擊模型的輸入為舊口令的字符序列, 輸出為從舊口令到新口令的最短編輯操作序列(作者定義了三種不同的操作, 分別為保持不變、刪除和單個/雙個字符替換); 自適應(yīng)攻擊模型的輸入為口令字符序列, 輸出為針對所選規(guī)則集中的每個規(guī)則與該口令匹配程度的一個數(shù)值(位于0 到1 之間).PassBERT 的整體框架如圖10 所示.作者通過實驗證實, 所提出的三個模型的猜測成功率均優(yōu)于對應(yīng)場景下最先進(jìn)的口令模型.

圖10 PassBERT 的整體框架[32]Figure 10 Overview of PassBERT framework [32]

4 口令猜測算法評估

4.1 口令猜測算法評價指標(biāo)

在現(xiàn)實世界中, 網(wǎng)站或服務(wù)器為了防御口令猜測攻擊, 會采用加鹽(對抗預(yù)計算技術(shù), 如彩虹表)、增加Hash 次數(shù)、使用內(nèi)存困難函數(shù)(MHF) 等安全防御措施, 這會大大提高攻擊者單次猜測的成本, 而該成本與系統(tǒng)環(huán)境和攻擊者的硬件計算能力息息相關(guān).因此, 在評估猜測算法的實用性時, 算法的計算效率理應(yīng)成為猜測算法的評價指標(biāo)之一.具體來說, 算法的計算效率主要體現(xiàn)在訓(xùn)練時間、運行所需要的硬件支持(是否需要GPU、占用內(nèi)存大小等)、模型大小以及口令生成速度.此外, 盡管不斷泄露的口令文件為攻擊者提供了豐富的資源, 但仍存在大量訓(xùn)練數(shù)據(jù)資源匱乏的攻擊場景(如銀行和除了中、美、俄以外的其它國家/地區(qū)).因此, 算法充分發(fā)揮性能所需要的訓(xùn)練集大小也應(yīng)納入考慮范圍.

4.2 口令猜測場景

口令猜測場景可以根據(jù)不同的標(biāo)準(zhǔn)進(jìn)行分類, 包括是否使用目標(biāo)的個人信息(如姓名、生日、郵箱、用戶名等)、是否與服務(wù)器交互、允許的猜測次數(shù)的大小等.

根據(jù)是否使用目標(biāo)的個人信息, 口令猜測攻擊可分為漫步猜測與定向猜測.所謂漫步猜測, 是指攻擊者不關(guān)心攻擊的具體目標(biāo), 其目的是破解出盡可能多的口令; 所謂定向猜測, 是指攻擊者利用與目標(biāo)相關(guān)的各種信息(如姓名、郵箱、已泄露的舊口令等), 其目的是盡快破解出指定目標(biāo)的口令.根據(jù)攻擊者所擁有目標(biāo)信息的不同, 本文將定向猜測場景進(jìn)一步分為基于個人信息(如姓名、郵箱、生日、用戶名等個人信息) 的定向猜測和基于口令重用的定向猜測.在定向猜測場景下, 指標(biāo)猜測成功率的計算方法如下: 為測試集中的每個用戶生成一定數(shù)量的猜測集, 然后統(tǒng)計測試集中所有用戶在其對應(yīng)猜測集下的破解情況.例如, 定向猜測算法A在100 猜測數(shù)下猜測成功率為20% 表示: 對于測試集中的所有用戶, 有20% 用戶的口令在其對應(yīng)猜測集的前100 次猜測內(nèi)被成功破解.

根據(jù)是否與服務(wù)器交互, 口令猜測攻擊可分為在線猜測與離線猜測.在線猜測往往難以避免: 任何擁有瀏覽器的人都可以對公開界面的服務(wù)器發(fā)起基本的在線猜測攻擊.為了抵御在線攻擊, 服務(wù)器往往被建議部署登錄速率限制機(jī)制(rate-limiting), 如賬戶鎖定(account lockout) 和登錄節(jié)流(login throttling).然而, 現(xiàn)實情況卻不盡人意.Lu 等人[78]在2018 年的研究表明, 約72% 的網(wǎng)站(131/182) 允許頻繁的、不成功的登錄嘗試, 而沒有賬戶鎖定或登錄節(jié)流措施.對于這些網(wǎng)站, 攻擊者每天可以進(jìn)行超過85 次的登錄嘗試, 這遠(yuǎn)超過NIST-800-63-3 所建議的30 天內(nèi)每個賬戶允許的錯誤口令登錄次數(shù)不應(yīng)超過100[79].事實上, 即使是采取了嚴(yán)格速率限制機(jī)制的網(wǎng)站, 其每月允許的錯誤口令登錄次數(shù)也遠(yuǎn)超過100.例如, 亞馬遜網(wǎng)站的速率限制機(jī)制為每小時允許連續(xù)五次錯誤登錄嘗試, 據(jù)此推算, 攻擊者每天可至多進(jìn)行120 次登錄嘗試, 每個月可進(jìn)行3600 次登錄嘗試.與之對應(yīng)的是, 在現(xiàn)有研究中(如文獻(xiàn)[26,28,56,80,81]), 在線猜測算法的最大猜測數(shù)通常設(shè)置為103~104.

離線猜測需要攻擊者能夠獲取服務(wù)器泄露的口令文件, 可嘗試的猜測次數(shù)僅僅受限于攻擊者本身的計算資源和愿意投入的成本.Florêncio 等人[80]指出, 離線猜測攻擊只在非常受限的情形下才構(gòu)成現(xiàn)實威脅: 服務(wù)器端采用了正確的口令加鹽hash 方法, 口令文件被泄露且未被察覺.對于猜測算法的評估來說, 在線猜測與離線猜測的本質(zhì)區(qū)別在于猜測次數(shù)的大小不同.Florêncio 等人[80]通過分析指出,1014可以作為離線猜測的一個下界.然而, 現(xiàn)有研究中(如文獻(xiàn)[16,21,22,52]), 受計算資源的限制, 幾乎所有的猜測算法在被評估時, 實際生成猜測數(shù)的最大數(shù)量級為1012(見文獻(xiàn)[24] 的圖8), 一般數(shù)量級在107~1010[16,21–23,52], 尚未見實際生成超過1013的猜測算法研究.

4.3 蒙特卡洛采樣方法

對于算法在大猜測數(shù)的表現(xiàn), 通常采用蒙特卡洛采樣方法進(jìn)行評估[30].蒙特卡洛采樣的基本原理是,基于猜測模型所定義的口令分布隨機(jī)抽樣, 通過樣本口令的概率和測試集中每個口令在猜測模型下的概率, 估計測試集中每個口令的強(qiáng)度(即, 被攻破所需的猜測數(shù)), 最終得到該模型在對應(yīng)測試集下的猜測成功率曲線.該方法只適用于概率模型(即猜測模型所對應(yīng)的口令空間的概率加和為1.0).

以Markov 模型[22]為例(記為p), 假設(shè)我們的字符表包括95 個可打印字符和一個終止符.在訓(xùn)練完成后, 模型逐個字符生成樣本口令, 具體流程為: 每個字符都被模型p分配一個概率值, 表示該字符作為生成口令首個字符的概率; 將0 到1 這個區(qū)間劃分成96 個小區(qū)間, 每個區(qū)間代表一個字符以及該字符所對應(yīng)的概率范圍; 在生成口令時, 使用一個隨機(jī)種子生成一個0 到1 之間的隨機(jī)概率, 然后確定它位于這96 個小區(qū)間中的哪一個, 從而選擇相應(yīng)的字符作為模型生成口令的首個字符, 記為c1; 接下來以同樣的方式生成該口令的第二個字符, 此時, 字符表中的每個字符會被模型分配一個新的概率, 表示該字符出現(xiàn)在c1之后的概率; 重復(fù)該抽樣過程, 將抽取的字符依次添加至當(dāng)前字符串并記錄其對應(yīng)的隨機(jī)數(shù), 直到抽取到終止字符為止.這樣就完成了一個口令樣本的采樣, 而其采樣概率可以通過將所有采樣字符對應(yīng)的隨機(jī)數(shù)相乘來得到.重復(fù)此過程, 生成大小為n的樣本集, 記作Θ, 每個生成的口令樣本記為β, 其對應(yīng)的生成概率用p(β) 表示.隨后, 計算測試集中的每個口令(記為α) 在模型p下的概率, 記為p(α).再依據(jù)以下公式對口令α的猜測數(shù)進(jìn)行估算:

2023 年, Liu 等人[82]注意到Dell’Amico 等人的蒙特卡洛估計方法沒有提供關(guān)于猜測數(shù)范圍的統(tǒng)計置信區(qū)間, 也明確指出存在高度不確定性的情況.基于這一發(fā)現(xiàn), 他們提出了自信蒙特卡洛評估, 該方法在給定置信度時, 能夠提供猜測曲線(即猜測成功率vs.猜測數(shù)) 的上下界, 進(jìn)一步增強(qiáng)了原始蒙特卡洛估計方法的科學(xué)性和完整性.在第4.4 節(jié)中, 將從實驗的角度證實蒙特卡洛估計方法的有效性.

4.4 實驗設(shè)置與算法評估

科學(xué)的實驗設(shè)置對于公平評估口令猜測算法的表現(xiàn)至關(guān)重要.如本節(jié)所示, 不同算法通常在不同的猜測場景中表現(xiàn)出優(yōu)勢.以往的研究表明, FLA 算法在大規(guī)模猜測數(shù)(如>1010) 的情況下相對于PCFG 和Markov 算法表現(xiàn)出了明顯的優(yōu)勢[14], 而RFGuess 算法則在小規(guī)模訓(xùn)練集(如1 萬訓(xùn)練集) 和同站測試場景下優(yōu)于其他方法[26].為了確保對不同算法的評估具有準(zhǔn)確性、公平性和合理性, 本文首先設(shè)計了一系列通用猜測場景, 以觀察各算法在不同條件下的猜測成功率.在此基礎(chǔ)上, 考慮到不同算法的潛在優(yōu)勢,根據(jù)各算法的原始文獻(xiàn), 設(shè)置了特定的實驗場景, 以展示它們在自身擅長領(lǐng)域的性能.這種兼顧通用性和定制化的實驗場景設(shè)計確保了對各算法能力的全面評估, 有助于更好地理解它們的應(yīng)用范圍和局限性.

4.4.1 漫步攻擊場景

漫步猜測場景的實驗設(shè)置如表9 所示.在場景 #1~#6 中, 分別選取 50%、30% 和 10% 的Dodonew/000Webhost 數(shù)據(jù)作為訓(xùn)練集, 以研究模型對訓(xùn)練集規(guī)模的敏感性.對于測試集, 首先, 使用20% 的Dodonew/000Webhost 數(shù)據(jù)創(chuàng)建基礎(chǔ)測試集, 模擬同站猜測場景(場景#10 和場景#15).接著, 從這20% 的Dodonew/000Webhost 數(shù)據(jù)中隨機(jī)抽取不同規(guī)模的子測試集(1 萬、10 萬和100 萬個口令, 對應(yīng)場景#7~#9 和場景#13~#15), 以觀察測試集規(guī)模對實驗結(jié)果的影響.同時, 排除20%Dodonew/000Webhost 中在訓(xùn)練集中已經(jīng)出現(xiàn)過的口令, 以評估模型生成新口令的能力, 即泛化能力(對應(yīng)場景#11 和場景#17).最后, 使用隨機(jī)選取的100 萬條Taobao 和Wishbone 數(shù)據(jù)集作為測試集, 以模擬跨站猜測場景(場景#12 和場景#18).值得注意的是, 000Webhost 要求口令長度大于6, 且至少包含一個數(shù)字和字母, 因此還進(jìn)一步對數(shù)據(jù)集Wishbone 按照000Webhost 的口令策略進(jìn)行過濾, 以觀察口令策略對實驗結(jié)果的影響(場景#19).

表9 漫步猜測場景實驗設(shè)置Table 9 Experimental setup of trawling guessing scenarios

本文對比了幾種具有代表性的口令猜測方法, 包括PCFG/PCFGv4.1[21]、Markov[22]、Backoff[22]、FLA[14]、DPG[16]、RFGuess[26]、ADaMs[24]和PassBERT(-ARPG)[32].模型參數(shù)遵循原始論文的最佳推薦.針對概率模型(PCFG、Markov、Backoff、FLA 和RFGuess), 根據(jù)各自的訓(xùn)練/生成速度和內(nèi)存消耗(見表10), 實際生成了不同數(shù)量級的猜測數(shù), 并與相應(yīng)的蒙特卡洛評估結(jié)果進(jìn)行了對比(場景#12和#18).對于DPG, 使用80% 000Webhost/Dodonew 作為訓(xùn)練集, 以剩下20% 數(shù)據(jù)集作為攻擊目標(biāo),生成了約109個猜測.而對于ADaMs 和PassBERT(-ARPG), 其訓(xùn)練過程通常需要一個基礎(chǔ)字典、一個規(guī)則集和一個大規(guī)模目標(biāo)集, 本文采用作者提供的預(yù)訓(xùn)練模型和規(guī)則, 將80% 000Webhost/Dodonew 用作基礎(chǔ)字典, 實際生成了約109個猜測.詳細(xì)情況如表9 所示.

表10 不同漫步猜測模型的計算效率?Table 10 Performance of different trawling guessing models

圖11(a)、圖11(b)、圖11(d)和圖11(e)為所有方法的對比結(jié)果.整體看來,在不去除訓(xùn)練集與測試集交叉部分的同站猜測場景中(即圖11(a)和圖11(d)),概率模型(如Backoff[22]、FLA[14]和RFGuess[26])的猜測成功率通常優(yōu)于基于規(guī)則的方法(如ADaMs[24]和ARPG[32].這里需要注意的是, 圖11(a)、圖11(b)、圖11(d)和圖11(e)中的“_pwdpro” 和“_generated” 分別代表使用兩種不同的規(guī)則集所訓(xùn)練的模型), 這些結(jié)果說明概率模型能更有效地擬合訓(xùn)練集口令分布.值得注意的是, 從104猜測數(shù)開始,DPG[16]在英文數(shù)據(jù)集(見圖11(d)) 的猜測成功率逐漸優(yōu)于其它方法.原因在于DPG 在該猜測數(shù)下, 啟動了動態(tài)調(diào)整機(jī)制, 將成功猜測的口令用于調(diào)整/更新潛在分布.正因如此, 在去除測試集中在訓(xùn)練集中出現(xiàn)過的口令后(即圖11(b)和圖11(e)), DPG[16]表現(xiàn)尤為出色.而其余各個方法的猜測成功率均顯著下降, 在10 萬猜測數(shù)內(nèi), 猜測成功率幾乎為0, 且彼此相差不大.對于字符級自回歸模型(即Markov[22]、Backoff[22]、FLA[14]和RFGuess[26]), Backoff、FLA 和RFGuess 由于在不同程度上緩解了Markov模型存在的數(shù)據(jù)稀疏和過擬合問題, 猜測成功率通常大于等于Markov.

圖11 漫步猜測實驗結(jié)果圖(?表示去除了測試集中在訓(xùn)練集中出現(xiàn)過的口令)Figure 11 Trawling guessing scenarios (?means removing passwords seen in training set from test set)

表10 列出了幾個主要模型的訓(xùn)練時間、模型大小和口令生成速度.各模型在不同場景的運行特性決定了各自的適用性.例如, 訓(xùn)練時間相對較短的模型(如RFGuess[26]) 更適用于在線猜測場景; 模型大小較小的模型(如FLA[14]) 更適合用于客戶端層面的口令強(qiáng)度評估(client-side PSM); 而生成速度較快的模型(如PCFG[21]) 更適用于大規(guī)模離線口令猜測任務(wù).值得注意的是, 在不斷涌現(xiàn)各種口令猜測算法的今日, 綜合考慮模型的訓(xùn)練/生成速度和猜測成功率, PCFG[21]仍表現(xiàn)卓越.

圖11(c)和圖11(f)為PCFG[21]、Markov[22]、Backoff[22]和FLA[14]利用實際生成的猜測集與使用蒙特卡洛估計[30]所得到的“猜測數(shù)vs.猜測成功率” 曲線.觀察發(fā)現(xiàn), 每種方法對應(yīng)的兩條曲線幾乎重合.這從實驗的角度證明了蒙特卡洛估計方法在給定猜測數(shù)下的準(zhǔn)確性.

不同方法在不同測試集大小下的實驗結(jié)果如圖12 所示.觀察發(fā)現(xiàn), 測試集大小從1 萬變化至>100萬時, 各個方法的結(jié)果幾乎一致(猜測成功率誤差<1%).這表明, 一旦測試集大小超過1 萬, 不同方法的猜測成功率就會趨于穩(wěn)定, 這與文獻(xiàn)[30] 中推薦的測試集大小一致.

圖12 漫步猜測實驗結(jié)果圖(測試集大小對實驗結(jié)果的影響)Figure 12 Experimental results of trawling guessing (Impact of testing set size on experimental results)

不同方法使用不同大小訓(xùn)練集的實驗結(jié)果如圖13 所示.觀察發(fā)現(xiàn), RFGuess[26]在訓(xùn)練集較小的情況下(如使用10%Dodonew/10%000Webhost 和30%000Webhost 作為訓(xùn)練集), 效果通常略優(yōu)于其他方法, 這與文獻(xiàn)[26] 的結(jié)論一致.隨著訓(xùn)練集大小的增大, 不同方法的猜測成功率有不同程度的提高1我們使用FLA 源碼, 分別使用原始論文中推薦的“大模型” (隱藏層單元為1000) 和“小模型” (隱藏層單元為200) 參數(shù)重復(fù)了多次實驗, 發(fā)現(xiàn)“小模型” 的結(jié)果略優(yōu)于“大模型”, 一個可能的原因是, 50%Dodonew 作為訓(xùn)練集的數(shù)據(jù)量不足..其中,PCFG 的猜測成功率變化最大, 原因在于, PCFG 在生成猜測時, 結(jié)構(gòu)段的填充內(nèi)容(如S3→!!!) 均來自訓(xùn)練集, 較小的訓(xùn)練集無法提供足夠的填充片段.

圖13 漫步猜測實驗結(jié)果圖(訓(xùn)練集大小對不同方法的影響)Figure 13 Experimental results of trawling guessing (Impact of training set size on different methods)

此外, RFGuess[26]在使用大規(guī)模數(shù)據(jù)集訓(xùn)練和生成口令時, 會占用大量的內(nèi)存(如使用500 萬訓(xùn)練集約占用40–80 GB, 原因在于RFGuess 在運行時會將所有字符前綴數(shù)據(jù)同時讀入內(nèi)存), 且生成速度較慢(每秒可生成130 個口令; 見表10), 這使得該方法更適用于訓(xùn)練數(shù)據(jù)資源相對匱乏(如和銀行相關(guān)的口令數(shù)據(jù)) 和對生成速度要求不高的在線猜測場景.

口令策略對不同方法的影響如圖14 所示.觀察發(fā)現(xiàn), 同一測試集, 口令策略不同, 攻破率也不同.例如, Backoff[22]在不經(jīng)口令策略篩選的測試集上, 效果優(yōu)于其他方法, 而在篩選之后, 猜測成功率與其他方法差異不大.這表明, 在對口令猜測方法進(jìn)行評估與對比時, 考慮訓(xùn)練集與測試集口令策略的一致性是很有必要的.盡我們所知, 當(dāng)前尚未有研究通過具體的實驗探究過該問題.

圖14 漫步猜測實驗結(jié)果圖(口令策略對不同方法結(jié)果的影響)Figure 14 Experimental results of trawling guessing (Impact of password policy on different methods)

4.4.2 基于個人信息的定向攻擊場景

對于基于個人信息的定向猜測場景, 考慮到包含個人信息的數(shù)據(jù)集通常規(guī)模不大, 我們沒有采用不同比例的劃分方法, 而是遵循了之前在定向猜測研究中最常見的劃分方式, 即將50% 用于訓(xùn)練, 剩下的50%用于測試.Wang 等人[27]指出, 這種劃分方式是合理的, 原因如下: 首先, 聰明的攻擊者會不斷改進(jìn)他們的訓(xùn)練集, 使其分布盡可能與測試集接近.例如, 攻擊者可能會選擇與攻擊目標(biāo)具有相同語言、服務(wù)類型和口令策略的數(shù)據(jù)集來進(jìn)行訓(xùn)練.而這種一半對一半的劃分方式正好模擬了這種理想的攻擊場景.其次,這種做法并不違反機(jī)器學(xué)習(xí)的原則, 即訓(xùn)練集和測試集應(yīng)該不同.根據(jù)口令服從Zipf 分布的特性[49,57],50% 用于訓(xùn)練的口令中會有相當(dāng)一部分不會出現(xiàn)在剩余50% 的測試口令中.比如, 隨機(jī)將Dodonew 等分為兩半(記為訓(xùn)練集Dodonew-tr 和測試集Dodonew-ts), Dodonew-tr 中81.22% 的口令沒有出現(xiàn)在Dodonew-ts 中.這一法則確保了訓(xùn)練集和測試集相似但不相同.事實上, 許多網(wǎng)站的口令泄露情況發(fā)生過多次, 如Yahoo[83]、Flipboard[84]、Twitter[85]和Anthem[86]等.

本文對三種最具代表性的基于個人信息的定向口令猜測算法進(jìn)行了比較, 這些算法包括TarGuess-I[28]、Targeted-Markov[60]和RFGuess-PII[26], 同時考慮了同站和跨站猜測場景(實驗設(shè)置詳見表11).實驗結(jié)果如圖15 所示.總體而言, 這三種定向猜測算法的攻破率差距不大, 其中, RFGuess-PII 略微優(yōu)于其他兩種方法, 這與之前研究[26]的實驗結(jié)果一致.

圖15 基于個人信息的定向口令猜測場景Figure 15 Targeted password guessing scenarios based on personal information

表11 定向猜測攻擊場景設(shè)置Table 11 Experimental setup of targeted guessing scenarios

4.4.3 基于口令重用的定向攻擊場景

對于口令重用攻擊, 本文重現(xiàn)了文獻(xiàn)[35] 中的三個場景(即對應(yīng)表11 中的場景#5–#7), 對比了當(dāng)前最先進(jìn)的幾種口令重用算法, 即TarGuess-II[28]、Pass2Path[31]、PassBERT[32]以及Pass2Edit[35].其中, TarGuess-II 和Pass2Edit 還使用了額外的流行口令字典(預(yù)先使用3 個數(shù)據(jù)集進(jìn)行混合, 取頻率相乘后排名靠前的Top-10000 口令; 詳見文獻(xiàn)[35] 的4.3 節(jié)), 即在生成的重用口令中混入流行口令, 來模擬用戶在創(chuàng)建新口令時選擇流行口令的脆弱行為.為了更公平地對比, 對Pass2Path 和PassBERT 也采用同樣的流行字典進(jìn)行混合, 混合方式為模型生成的重用口令: 流行口令= 2 : 1 (該比例為實驗測試的最佳比例).同時, 為了排除混合方法不同帶來的偏差, 還去除了TarGuess-II 和Pass2Edit 所使用的流行字典, 即Pass2Edit-nomix 和TarGuess-II-nomix.

根據(jù)圖16 和文獻(xiàn)[35] 的結(jié)果, 在1000 猜測數(shù)下, Pass2Edit(或Pass2Edit-nomix)[35]的猜測成功率高于其他方法.在英文數(shù)據(jù)集上, PassBERT[32]和PassBERT-mix[32]在小猜測數(shù)(<10) 下表現(xiàn)出了更好的猜測效果, 明顯優(yōu)于TarGuess-II[28]和Pass2Path[31].隨著猜測次數(shù)的增加, PassBERT 和PassBERT-mix 的攻破率逐漸與TarGuess-II 趨于持平.而在中文數(shù)據(jù)集上, Pass2Path 在引入流行口令混合后(即Pass2Path-mix), 其猜測效果明顯超過了TarGuess-II 和PassBERT.在混合數(shù)據(jù)集上, 除了Pass2Edit 之外, 其他方法的攻破率相對均衡, 沒有明顯的差異.

圖16 口令重用攻擊場景Figure 16 Targeted password guessing scenarios based on password reuse

此外, 本文還統(tǒng)計了不同方法的訓(xùn)練時間、模型大小和口令生成速度, 如表12 所示, 發(fā)現(xiàn)TarGuess-II[28]的訓(xùn)練速度最快, PassBERT[32]的生成速度最快(需要GPU 支持), Pass2Edit[35]的模型體積最小.因此, 在實際應(yīng)用時, 可優(yōu)先嘗試Pass2Edit 及其變種, 但對于特定的數(shù)據(jù)集和猜測需求, 可以考慮其他方法以獲取最佳性能.例如, 口令泄露檢測服務(wù)(支持口令變體泄露查詢, 如文獻(xiàn)[87]) 每天通常會處理數(shù)百萬用戶的查詢請求, 需要生成數(shù)以億計的口令變體, 因而可能對算法的生成速度要求更高.

表12 各個口令重用模型的計算效率?Table 12 Performance of different reuse models

5 口令猜測算法應(yīng)用

近年來, 涌現(xiàn)了大量口令猜測算法[16,24,26,32,35], 這些算法的應(yīng)用主要集中在防御者的視角, 特別是更準(zhǔn)確地建??诹畹目共聹y性(guessability).本節(jié)將深入探討口令猜測算法在口令強(qiáng)度評估、數(shù)字取證以及口令泄露檢測等領(lǐng)域的實際應(yīng)用, 同時也將探討它們所面臨的挑戰(zhàn)和問題.

5.1 口令強(qiáng)度評估

了解最先進(jìn)的攻擊技術(shù)對于設(shè)計最佳的防御策略至關(guān)重要.口令作為許多安全系統(tǒng)的第一道防線甚至是唯一一道防線, 其強(qiáng)度直接影響著系統(tǒng)的安全性.因此, 對口令強(qiáng)度進(jìn)行準(zhǔn)確評估尤為重要, 而口令猜測算法的一個核心應(yīng)用即是從攻擊者的視角準(zhǔn)確評估口令強(qiáng)度.當(dāng)前, 已有一系列基于猜測算法的口令強(qiáng)度評價器(PSM), 如FLA-PSM[14]、fuzzyPSM[88]、CNN-PSM[89]、chunk_level-PSM[33]等; 此外, 還有基于定向猜測算法的PSM, 如PPSM[31].然而, 出乎意料的是, 截至目前, 基于猜測算法的PSM 均未在實際系統(tǒng)中得到廣泛應(yīng)用.一個主要原因在于, 口令的強(qiáng)度不僅受口令本身復(fù)雜性的影響, 還受攻擊者所掌握的信息影響.因此, 要準(zhǔn)確評估口令的強(qiáng)度, 需要考慮多種不同情境, 使用單一的PSM 無法實現(xiàn).例如, 基于漫步猜測算法的PSM 可能無法準(zhǔn)確評估包含個人信息的口令的強(qiáng)度; 攻擊者如果已經(jīng)掌握了用戶的舊口令, 那么該用戶創(chuàng)建的新口令的強(qiáng)度也會受到影響.如何以科學(xué)合理的方式充分利用各種猜測算法來準(zhǔn)確評估用戶口令的強(qiáng)度, 仍然是一個需要深入研究的問題.

5.2 數(shù)字取證

當(dāng)前, 許多電子設(shè)備(如手機(jī)和個人電腦) 都使用口令作為安全保護(hù)手段, 由此帶來的設(shè)備解鎖問題已成為數(shù)字取證工作中最為嚴(yán)峻的挑戰(zhàn)之一[90].若無法及時獲取犯罪嫌疑人的口令, 可能會延緩調(diào)查進(jìn)程,甚至可能導(dǎo)致更多犯罪行為的發(fā)生.幸運的是, 現(xiàn)有的口令猜測算法為執(zhí)法機(jī)構(gòu)破解加密設(shè)備/材料提供了一種潛在的途徑, 幫助加速數(shù)字取證工作的進(jìn)展.例如, 執(zhí)法人員可以通過收集開源情報(OSINT) 來獲取與目標(biāo)相關(guān)的個人信息, 再將這些個人信息與猜測算法相結(jié)合, 可以顯著提高執(zhí)法機(jī)構(gòu)解鎖設(shè)備的效率,進(jìn)而為數(shù)字取證工作提供重要線索.

5.3 口令泄露檢測

口令泄露檢測主要分為用戶和服務(wù)器兩個層面.在用戶層面, 用戶可以使用口令檢測服務(wù)(例如“Pwned Passwords”[91]) 來查詢自己的口令是否已經(jīng)泄露.考慮到有26%~33% 的用戶在創(chuàng)建口令時會對已有口令做出簡單的修改[3], 泄露檢測服務(wù)還應(yīng)具備檢測用戶相似口令是否曾經(jīng)泄露的功能.確保這一功能的關(guān)鍵是準(zhǔn)確測量口令之間的相似性, 以便判斷哪些口令可能是用戶查詢口令的變體[87].雖然有一系列用于測量字符串相似度的指標(biāo)(例如基于編輯距離的指標(biāo)和基于余弦相似度的指標(biāo)[56]), 但它們都無法準(zhǔn)確地建模用戶的口令重用和修改行為.因此, 一種直觀的方法是從攻擊者的角度出發(fā), 利用口令重用模型/算法來根據(jù)用戶輸入的查詢口令生成相似的變體, 然后結(jié)合一定的字符串相似度指標(biāo), 為用戶提供更全面準(zhǔn)確的口令泄露查詢服務(wù).

在服務(wù)器層面, 口令猜測算法可用于生成誘餌口令, 來達(dá)到口令文件泄露檢測的目的[27,34,92].所謂誘餌口令, 是指服務(wù)器為每個用戶的真實口令生成一系列(k ?1 個) “假口令”, 與用戶的真實口令存儲在一起, 達(dá)到以假亂真的目的.如此一來, 一旦口令文件發(fā)生泄露, 即使攻擊者能恢復(fù)出全部口令, 仍需要從每個用戶的k個口令中分辨出哪個是真實口令.為此, 攻擊者需要進(jìn)行在線登錄嘗試, 一旦系統(tǒng)檢測到有一定數(shù)量的假口令在嘗試登錄, 即表明口令文件可能已經(jīng)發(fā)生泄露.整個流程的關(guān)鍵在于, 能否生成以假亂真的誘餌口令.Wang 等人[34]的研究表明, 理想誘餌口令的分布應(yīng)與用戶真實口令的分布一致, 而組合多種不同類型的口令猜測算法被作者證明是行之有效的方法之一.

盡管Honeywords 技術(shù)已被提出多年, 且有一系列相關(guān)研究[27,34,92,93].但截至目前, 尚未有網(wǎng)站實際部署了此類系統(tǒng).可能原因如下: (1) Honeywords 系統(tǒng)很容易受到拒絕服務(wù)攻擊(DOS).具體而言, 如果誘餌口令與用戶真實口令的分布幾乎一致, 會出現(xiàn)大量的流行誘餌口令, 攻擊者很容易利用這些特征對網(wǎng)站發(fā)起DOS 攻擊, 引發(fā)系統(tǒng)誤報.(2) Honeywords 系統(tǒng)需要把用戶正確口令索引相關(guān)的信息存儲在一個單獨的、固化的、極簡設(shè)計的計算機(jī)系統(tǒng)上, 并假設(shè)該系統(tǒng)是絕對安全的.這既不現(xiàn)實, 也需要網(wǎng)站增加額外的部署設(shè)備, 并對現(xiàn)有系統(tǒng)進(jìn)行相應(yīng)的調(diào)整.

6 總結(jié)與展望

當(dāng)前, 雖然無口令方案嶄露頭角(如Passwordless[94]), 用戶可能減少對口令的直接接觸, 但口令在可預(yù)見的未來仍將是最主要的身份認(rèn)證手段, 無可替代[8].因此, 口令將繼續(xù)作為保障數(shù)十億網(wǎng)民和信息系統(tǒng)安全的第一道防線, 口令猜測算法的研究對建立可持續(xù)的口令安全生態(tài)至關(guān)重要.本文系統(tǒng)性總結(jié)了當(dāng)前國內(nèi)外的主要口令猜測算法, 并指出了存在的不足和值得進(jìn)一步研究的方向.下面探討口令猜測未來的研究需求.

6.1 掩碼猜測研究

在IEEE S&P ’21 中, Pasquini 等人[16]提出了條件口令猜測(conditional password guessing) 的概念(即掩碼攻擊).它是指攻擊者通過各種攻擊手段(如肩窺、鍵盤敲擊回聲等側(cè)信道攻擊) 獲取了用戶口令的部分信息(如口令長度和/或部分口令字符), 然后利用口令模板(如**mm*91) 來幫助生成更有效的猜測集.在USENIX SEC ’23 中, Xu 等人[32]針對此場景提出了更有效的PassBERT 模型.然而, 他們都沒對掩碼場景的現(xiàn)實性和危害性進(jìn)行系統(tǒng)的討論.例如, 攻擊者能通過哪些方式獲取用戶口令的哪些部分信息?口令部分信息泄露會造成多大的危害?當(dāng)前, 尚未有關(guān)于掩碼猜測場景的系統(tǒng)研究.

6.2 多口令猜測研究

在IEEE S&P’19 中, Pal 等人[31]指出了一個有趣的現(xiàn)象: 通過將同一用戶的兩個舊口令輸入到口令重用模型Pass2Path 中, 然后合并生成的猜測集, 可以有效提高模型對同一用戶新口令的猜測成功率.然而, 這種方法并沒有充分考慮到舊口令之間的內(nèi)在聯(lián)系.此外, 研究作者并未提供一種有效的猜測混合順序, 即在給定猜測次數(shù)的情況下, 如何對多個口令模型生成的猜測進(jìn)行排序.另一方面, 當(dāng)嘗試使用同一用戶的多個舊口令來輔助猜測其目標(biāo)口令時, 可能存在一個潛在問題, 即引入與目標(biāo)口令完全不相關(guān)的口令.這種情況可能會對模型的訓(xùn)練造成干擾, 甚至可能導(dǎo)致通過多口令訓(xùn)練的模型效果不如僅使用單個舊口令訓(xùn)練的模型, 即綜合多個信息反而導(dǎo)致猜測成功率下降.截至目前, 尚未有關(guān)于如何利用用戶多個舊口令來提高猜測攻擊成功率的系統(tǒng)研究.然而, 大規(guī)模的數(shù)據(jù)泄露事件使得攻擊者很容易獲取同一用戶的多個舊口令(如含有郵箱的混合數(shù)據(jù)集中利用郵箱進(jìn)行匹配), 因此, 設(shè)計利用用戶多個舊口令的新型猜測方法/模型具有重要的現(xiàn)實意義.

6.3 基于隱式個人信息的口令猜測研究

當(dāng)前關(guān)于定向口令猜測的研究尚處于初步階段, 主要集中在如何利用顯式個人信息(即能直接作為口令的組成部分) 的層面.主流的定向猜測算法(如文獻(xiàn)[28]) 均是啟發(fā)式構(gòu)造用戶個人信息的各種變體, 將不同類型的個人信息匹配成標(biāo)簽的形式, 然后再進(jìn)行相應(yīng)的訓(xùn)練和猜測生成.然而這種方式存在固有缺陷,例如, 很難窮舉出用戶個人信息的所有變體.此外, 這種標(biāo)簽匹配的方法, 無法有效利用用戶的隱式個人信息.例如, 對于000Webhost 的用戶, 他們大多是網(wǎng)站管理員, 其安全意識顯著高于普通用戶群體.如何利用“網(wǎng)站管理員” 這一隱式身份信息(群體信息) 是一個值得研究的問題.事實上, 已有研究(如文獻(xiàn)[28])表明隱式個人信息(如教育背景、性別等) 確實會影響用戶創(chuàng)建口令的行為.但如何量化和有效地建模這種影響, 并將其引入口令猜測算法, 仍需進(jìn)一步探索.

6.4 基于大模型的口令猜測研究

隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展, 大型語言模型如GPT-4[95]等在自然語言處理任務(wù)中展現(xiàn)出了強(qiáng)大的能力.這些模型具備了對文本數(shù)據(jù)的高度理解和生成能力, 因此可以用于更智能化的口令猜測攻擊和防御.具體而言, 大型模型能夠生成更加真實且符合用戶行為習(xí)慣的猜測.它們可以分析用戶的語言模式、興趣愛好, 并利用個人信息構(gòu)建個體的社交網(wǎng)絡(luò)關(guān)系(例如, 可以識別親子關(guān)系的親密度高于普通朋友的關(guān)系), 同時還能生成群體畫像(例如, 了解兒童用戶的典型特征[96]).通過對這些通用性大模型在口令數(shù)據(jù)上進(jìn)行微調(diào), 有望更有效地利用用戶畫像(包括各種隱式個人信息) 和社交網(wǎng)絡(luò)關(guān)系, 從而提高口令猜測的成功率.因此, 將大模型與口令猜測研究相結(jié)合, 將為口令安全研究帶來新的可能性.

6.5 口令猜測算法組合研究

2021 年, Wang 等人[73]和Parish 等人[97]的研究都表明, 組合不同類型口令模型所生成的猜測集的破解率通常高于單一猜測集.然而, 這種簡單的(平均/隨機(jī)) 混合方式只能得到某個固定猜測數(shù)下的破解成功率, 無法充分發(fā)揮不同模型的優(yōu)勢; 此外, 不同口令模型對應(yīng)不同的概率空間, 對混合后字典的重新排序也是一個挑戰(zhàn).當(dāng)前, 隨著深度學(xué)習(xí)技術(shù)的發(fā)展, 不斷有新的猜測方法被陸續(xù)提出, 如何有效地利用各種算法來提高口令猜測的效率成為一個迫切需要深入研究的問題.2021 年, Murray 等人[98]為解決該問題提供了新的思路: 基于多臂老虎機(jī)模型來建模口令猜測問題.具體而言, 他們將每個猜測集視為一個老虎機(jī), 通過每次猜測來學(xué)習(xí)更多有關(guān)目標(biāo)口令分布的信息.借助這些信息, 他們能夠選擇使用與目標(biāo)口令分布最匹配的猜測集進(jìn)行猜測, 從而最大化猜測收益.2022 年, Han 等人[99]分析了現(xiàn)有猜測方法的不同特點, 提出了一個參數(shù)化混合猜測框架.該框架由模型剪枝和最優(yōu)猜測數(shù)分配策略構(gòu)成, 能夠利用不同方法的優(yōu)勢來生成更高效的猜測集.期待更多的關(guān)于組合口令猜測算法的研究.

6.6 口令策略研究

為了促使用戶創(chuàng)建更安全的口令, 網(wǎng)站往往會設(shè)置復(fù)雜的口令策略, 如長度必須不少于8 位, 且必須包含兩種以上字符類型.這些要求看似提高了用戶使用弱口令的門檻, 但用戶在生成口令時遵循省力原則, 通常會對已有口令或流行口令做出簡單修改, 來對規(guī)則進(jìn)行適配.復(fù)雜的口令策略既增加了用戶的負(fù)擔(dān), 又未必顯著提高口令的安全性.如Rao 等人的研究表明[100], 僅僅增加口令長度, 不能顯著提升口令的安全性; Wang 等人的研究表明[101], 增加口令字符組成的種類, 不能提升口令的安全性.事實上, 一些看似專門精心設(shè)計的口令策略往往存在不合理之處.例如, 知名密碼與信息安全期刊ACM TOPS 的投稿網(wǎng)站在用戶注冊時要求口令長度大于等于8 且至少包括兩個數(shù)字[102], 那么即使口令非常強(qiáng)健, 像iycFsgfsgado2.Ouhspr 這樣的口令, 仍然無法通過驗證.其本質(zhì)原因是, 網(wǎng)站無法準(zhǔn)確衡量用戶口令的安全性, 進(jìn)而無法給出科學(xué)合理的口令生成建議.因此, 基于口令猜測算法和口令強(qiáng)度評測算法的研究進(jìn)展, 對現(xiàn)有口令安全策略的系統(tǒng)性研究十分必要.

總之, 口令猜測研究是一個充滿潛力的領(lǐng)域, 涉及多個學(xué)科的交叉知識, 包括密碼學(xué)、統(tǒng)計學(xué)、自然語言處理和機(jī)器學(xué)習(xí)等, 十分具有挑戰(zhàn)性.這一研究領(lǐng)域不僅具有理論深度, 還具有廣泛的實際應(yīng)用價值.隨著計算技術(shù)的不斷發(fā)展和大規(guī)??诹顢?shù)據(jù)的不斷泄露, 口令猜測攻擊和防御之間的競爭將繼續(xù)演化, 為研究者提供了豐富的機(jī)遇和挑戰(zhàn).相信口令猜測研究將吸引更多學(xué)者的關(guān)注和深入研究, 為建設(shè)可持續(xù)的口令安全生態(tài)提供重要的理論指導(dǎo)和方法支撐.

猜你喜歡
口令字符攻擊者
尋找更強(qiáng)的字符映射管理器
基于微分博弈的追逃問題最優(yōu)策略設(shè)計
字符代表幾
一種USB接口字符液晶控制器設(shè)計
電子制作(2019年19期)2019-11-23 08:41:50
高矮胖瘦
口 令
消失的殖民村莊和神秘字符
正面迎接批判
愛你(2018年16期)2018-06-21 03:28:44
好玩的“反口令”游戲
SNMP服務(wù)弱口令安全漏洞防范
石景山区| 泰兴市| 沁源县| 阳原县| 宁武县| 海盐县| 湖南省| 毕节市| 台湾省| 屏东县| 霍城县| 华亭县| 大悟县| 玉屏| 卢湾区| 盐山县| 水城县| 固安县| 昌邑市| 句容市| 七台河市| 安福县| 石屏县| 瓦房店市| 临湘市| 宁陕县| 吐鲁番市| 孟村| 中西区| 隆林| 股票| 申扎县| 商水县| 塔河县| 车险| 桑植县| 隆尧县| 横山县| 喀喇沁旗| 雅江县| 吴旗县|