李 玎 林 偉 蘆 斌 祝躍飛
(戰(zhàn)略支援部隊信息工程大學 鄭州 450001)
(數(shù)學工程與先進計算國家重點實驗室 鄭州 450001)
網(wǎng)絡(luò)加密流量側(cè)信道分析借鑒了傳統(tǒng)側(cè)信道分析的思想,繞過破解數(shù)據(jù)加密算法本身,利用網(wǎng)絡(luò)應(yīng)用客戶端與服務(wù)器之間交互產(chǎn)生的數(shù)據(jù)包長度、時間、方向所組成的序列和統(tǒng)計特征,試圖推斷出用戶敏感信息,如使用的設(shè)備類型[1]、瀏覽的網(wǎng)站[2]或視頻[3]、語音通話內(nèi)容[4]、視頻直播動作[5]、鍵盤輸入口令[6]等。網(wǎng)絡(luò)側(cè)信道分析在用戶無感的情況下被動監(jiān)聽網(wǎng)絡(luò)流量,相比域名劫持、證書劫持等主動攻擊方法,其代價較低,成為近年來網(wǎng)絡(luò)監(jiān)管和打擊犯罪的重要手段。
以搜索引擎為代表的網(wǎng)絡(luò)應(yīng)用通常提供增量式搜索的服務(wù),即在用戶輸入的過程中根據(jù)部分查詢內(nèi)容提供實時更新的建議列表。為提高響應(yīng)速度,瀏覽器會在用戶每次擊鍵時立即向服務(wù)器發(fā)送查詢請求。盡管搜索和應(yīng)答內(nèi)容會被加密,但加密數(shù)據(jù)包序列仍然會泄露用戶擊鍵時間、查詢和建議長度等信息。2010年,Chen等人[7]提出模糊集縮減的搜索查詢分析方法。攻擊者通過匹配建議列表長度對應(yīng)的數(shù)據(jù)包長度序列,可以一次推斷用戶的一個按鍵。然而在2012年,以谷歌為代表的搜索引擎率先改進了查詢推薦策略,服務(wù)器會根據(jù)時事熱點、地理位置等因素生成不同長度的建議列表。為此,Schaub等人[8]在2014年提出隨機化匹配的分析方法。對于同一搜索查詢,假設(shè)建議列表長度符合高斯分布,并將數(shù)據(jù)包長度屬于某個已知前綴字符串的概率乘積作為查詢的預(yù)測值。該方法雖然可以應(yīng)對變化的建議列表,但因狀態(tài)爆炸存在實踐上的困難。2017年,Oh等人[9]借鑒網(wǎng)站指紋攻擊的思想,通過構(gòu)造以下行流量為主的247個統(tǒng)計和序列特征作為關(guān)鍵字指紋,實現(xiàn)對用戶輸入關(guān)鍵字的識別。該方法同樣依賴于穩(wěn)定的服務(wù)器應(yīng)答,因此容易受到概念漂移的影響,當搜索建議或結(jié)果發(fā)生改變時分類器的預(yù)測精度將降低。2019年,Monaco[10]首次提出只利用搜索請求數(shù)據(jù)包特征的分析方法。該方法基于數(shù)據(jù)包長度增量實現(xiàn)了擊鍵探測,但寬松的狀態(tài)轉(zhuǎn)移條件會導(dǎo)致錯誤地接收無關(guān)背景流量。此外,采用語言生成模型從固定的詞典中推斷查詢,搜索空間會隨詞典規(guī)模呈指數(shù)級增長,使攻擊者的相對信息增益過低。
現(xiàn)有工作已經(jīng)證明了網(wǎng)絡(luò)搜索側(cè)信道分析的可行性,但在如何利用更加穩(wěn)定且區(qū)分度高的流量特征以提高識別準確率等方面依然有待進一步研究。此外,這些研究工作只涉及英文輸入的搜索查詢,缺少針對中文搜索的分析方法,存在一定的局限性。針對上述問題,本文提出了一種面向中文搜索的網(wǎng)絡(luò)側(cè)信道分析方法。該方法通過監(jiān)聽增量式搜索產(chǎn)生的網(wǎng)絡(luò)加密流量獲得擊鍵數(shù)據(jù)包的長度和時間,然后綜合利用側(cè)信道泄露的拼音音節(jié)和擊鍵時間信息推斷用戶可能輸入的中文查詢。本文的主要貢獻為:(1)分析了中文搜索信息泄露的根本原因,即請求數(shù)據(jù)包長度增量和時間間隔的可區(qū)分性,基于信息論對信息泄露進行理論量化;(2)構(gòu)建了3階段的側(cè)信道分析模型,利用數(shù)據(jù)包長度增量可區(qū)分性實現(xiàn)擊鍵探測,降低了背景流量對探測準確率的影響,通過基于狀態(tài)的多層匹配和基于時間的查詢推斷,大幅提高了查詢識別準確率;(3)針對中文搜索常用的百度、搜狗、360和必應(yīng)搜索引擎,在實際環(huán)境中收集了模擬用戶搜索的流量數(shù)據(jù)集,對理論量化值進行了實驗驗證,并針對性地提出了可能的緩解機制。
本節(jié)介紹了中文搜索側(cè)信道信息泄露的原因。其中,單行模式拼音輸入法的內(nèi)在屬性造成了增量式搜索網(wǎng)絡(luò)流量的信息泄露,而HTTP/2頭部壓縮算法進一步增加了其泄露的信息量。
拼音是漢語的拉丁化方案,通過26個字母組成的約400個音節(jié)拼寫出所有漢字。由于拼音使用的廣泛性,拼音輸入法成為鍵盤輸入漢字的首選。使用拼音輸入法時,用戶不需要指明音節(jié)的邊界,輸入法會自動在音節(jié)之間插入撇號或空格分隔符。當用戶輸入新音節(jié)的第1個字母時,拼音字符串的長度會增加超過1個字符。通過拼音字符串的長度變化,可以推測用戶輸入拼音的長度和數(shù)量。
傳統(tǒng)輸入法將音節(jié)緩存在浮動面板中,只有當用戶完成候選字選擇時目標應(yīng)用才能獲取輸入。為了使目標應(yīng)用能夠?qū)斎胍艄?jié)做出響應(yīng),新型輸入法采用所謂單行模式,即在浮動面板中僅保留1行候選漢字,將輸入音節(jié)直接緩存在目標應(yīng)用中。常用的單行模式輸入法如表1所示。采用單行模式的拼音輸入法雖然提升了用戶體驗,但是會將輸入的音節(jié)暴露給目標應(yīng)用,間接導(dǎo)致了本文利用的中文搜索信息泄露。
表1 常見單行模式拼音輸入法
AJAX(Asynchronous JavaScript And XML)是一種動態(tài)網(wǎng)頁開發(fā)技術(shù),支持網(wǎng)頁在后臺與服務(wù)器進行交互,能夠在不刷新頁面的情況下更新網(wǎng)頁內(nèi)容。AJAX技術(shù)使增量式搜索成為可能。當探測到用戶輸入時,網(wǎng)頁會將當前搜索框中的內(nèi)容作為URL查詢部分的參數(shù),通過HTTP請求發(fā)往服務(wù)器,服務(wù)器根據(jù)算法生成建議列表并應(yīng)答。用戶在必應(yīng)搜索中輸入“毒品”的過程如圖1所示。相比服務(wù)器應(yīng)答,搜索請求的內(nèi)容與時事熱點等因素無關(guān),且發(fā)送時間不受網(wǎng)絡(luò)延遲的影響,因此具有更穩(wěn)定的特征。
圖1 AJAX增量式搜索實例
為保護用戶輸入的查詢,搜索引擎普遍采用TLS協(xié)議加密應(yīng)用層數(shù)據(jù)。然而,現(xiàn)有TLS版本中的數(shù)據(jù)加密算法均保留了原始明文長度。例如,在TLS 1.3版本的加密套件中,數(shù)據(jù)加密雖然基于塊加密算法AES,但是在GCM或CCM鏈接模式下會自然轉(zhuǎn)化為流加密算法。根據(jù)RFC 3986,撇號和空格在URI規(guī)范中屬于特殊字符,因而URL中的拼音分隔符會被百分號編碼,在查詢字符串中占據(jù)3個字符。在一次搜索中,由于HTTP頭部和URL中的其余部分通常保持不變,查詢字符串的長度變化會完整保留在加密數(shù)據(jù)包序列中。除了長度特征,搜索產(chǎn)生的請求數(shù)據(jù)包序列還會暴露擊鍵時間特征。由于AJAX增量式搜索會在用戶每次擊鍵時立即向服務(wù)器發(fā)送查詢請求,擊鍵時間被完整保留在請求數(shù)據(jù)包中。根據(jù)人體運動Fitts定律[11],擊鍵所需的手部運動距離越遠,擊鍵所用的時間越長,因此數(shù)據(jù)包時間會泄露一定的原始輸入信息。
HTTP/2協(xié)議旨在通過管線化請求和頭部壓縮算法來提高HTTP/1.1協(xié)議的請求效率。根據(jù)RFC 7541,HTTP/2頭部壓縮算法一方面使用索引值代表固定的頭部字段,如Host等,另一方面通過靜態(tài)哈夫曼編碼來壓縮變化的字符串,如請求URL。在編碼字符串中,每個ASCII字符使用固定比特長度的哈夫曼編碼代替,編碼后的總長度用最后一個比特的反碼填充到整字節(jié)。由于小寫字母的哈夫曼編碼長度為5~7 bit,短字母更可能導(dǎo)致字節(jié)的零增長,因此,編碼URL的長度增量序列會泄露有關(guān)拼音的少量信息。
圖2 HTTP/2頭部哈夫曼編碼字符串
本節(jié)對中文搜索網(wǎng)絡(luò)流量泄露的信息進行量化,針對用戶輸入過程中查詢長度和擊鍵時間的變化分別定義了數(shù)據(jù)包長度增量和時間間隔可區(qū)分性,并考慮搜索應(yīng)用的參數(shù)和模型對信息泄露帶來的影響。
定義數(shù)據(jù)包長度增量可區(qū)分性為不同擊鍵導(dǎo)致的數(shù)據(jù)包長度增量差異。假設(shè){s1,s2,...,sn}表示擊鍵序列X={x1,x2,...,xn}產(chǎn) 生的數(shù)據(jù)包長度序列,n為擊鍵次數(shù),xi取 值為26個字母,D={d1,d2,...,dn?1}表示數(shù)據(jù)包長度增量序列,即di=si+1?si。根據(jù)不同擊鍵導(dǎo)致的查詢字符串長度變化,將xi分為兩種類型:集合A表示增長1字符的非音節(jié)首字母,集合B表示增長4字符的音節(jié)首字母。對于HTTP/2網(wǎng)站,當x∈A時導(dǎo)致0或1字節(jié)增量,x∈B時導(dǎo)致2或3字節(jié)增量,即哈夫曼編碼不影響數(shù)據(jù)包長度增量可區(qū)分性。
上述對于長度增量可區(qū)分性的分析是基于HTTP請求中非查詢部分保持不變的假設(shè),該假設(shè)并非對所有搜索引擎都成立。百度和必應(yīng)搜索的請求URL中包含指示指針位置即當前字符數(shù)的“cp”參數(shù),當該參數(shù)值產(chǎn)生進位或哈夫曼編碼比特數(shù)發(fā)生變化時,可能會影響總長度的變化。此外,百度搜索還在URL中包含上一次查詢字符串的“pwd”參數(shù),以及在第3次擊鍵請求中添加若干固定長度的Cookie。從表2可知,可變URL參數(shù)的存在仍然可以保證數(shù)據(jù)包長度增量可區(qū)分性。
表2 URL參數(shù)對數(shù)據(jù)包長度增量可區(qū)分性的影響
基于數(shù)據(jù)包長度增量可區(qū)分性,進一步量化信息增益。對于攻擊者來說,用戶擊鍵的初始不確定性為X的信息熵H(X) , 觀察到序列D后的剩余不確定性為條件熵H(X|D), 獲得關(guān)于X的信息增益為
對于給定的序列D,通過貝葉斯公式可以得到用戶擊鍵序列的條件概率
其中,P(D|X)的取值與是否采用哈夫曼編碼有關(guān):對于HTTP/1.1網(wǎng)站,有P(D|X)∈{0,1},攻擊者只能推斷拼音音節(jié)數(shù)量及長度;對于HTTP/2網(wǎng)站,有P(D|X)∈{r/8,0≤r ≤8},攻擊者能夠獲取關(guān)于拼音字母的額外信息。
采用包含140469個詞條的清華大學開放中文詞庫(THUOCL)作為搜索查詢集對信息增益進行量化。假設(shè)攻擊者通過數(shù)據(jù)包序列能夠確定擊鍵次數(shù)n,圖3(a)顯示了I(X;D)隨查詢拼音字母長度的變化。隨著查詢長度增加,序列D的獨特性使信息增益不斷增加,HTTP/2哈夫曼編碼泄露的額外信息使增益更快地接近最大熵。此時,X的不確定性變得很小,攻擊者有極大概率一次性猜對目標。通過推導(dǎo)可得,當每個查詢具有相等的先驗概率時,攻擊識別準確率為
其中, M NI(X;D)=I(X;D)/H(X)為相對信息增益,| X|為X取值集合的基數(shù)。圖3(b)顯示了識別準確率與拼音字母長度的關(guān)系,理論上攻擊者利用數(shù)據(jù)包長度信息泄露可以準確識別長度大于25個字符的查詢。
圖3 數(shù)據(jù)包長度增量泄露信息量化
定義數(shù)據(jù)包時間間隔可區(qū)分性為不同擊鍵雙字母對(bigram)導(dǎo)致的數(shù)據(jù)包時間間隔差異。假設(shè){t1,t2,...,tn}表 示擊鍵序列X產(chǎn)生的數(shù)據(jù)包時間序列,τ={τ1,τ2,...,τn?1}表示數(shù)據(jù)包時間間隔序列,其中τi=ti+1?ti。文獻[6]驗證了用戶輸入SSH口令時的數(shù)據(jù)包時間間隔可區(qū)分性。雖然HTTP搜索請求與SSH請求高度相似,但是部分搜索引擎采用節(jié)流計時器來限制請求數(shù)量,計時器到期之前的多次擊鍵會被合并到一個請求中,因此可能影響搜索請求數(shù)據(jù)包的數(shù)量和時間。
除了節(jié)流計時器的影響之外,攻擊者觀察到的數(shù)據(jù)包時間間隔還會受到網(wǎng)絡(luò)延遲抖動的影響。統(tǒng)計數(shù)據(jù)顯示[13],亞太地區(qū)的IP數(shù)據(jù)包平均延遲約為75 ms,平均延遲抖動不超過0.01 ms。由于用戶平均擊鍵時間間隔遠大于普通的網(wǎng)絡(luò)延遲抖動,正常情況下網(wǎng)絡(luò)狀態(tài)的變化所帶來的影響基本可以忽略。第6節(jié)將進一步評估人工增加的大量延遲抖動對數(shù)據(jù)包時間間隔可區(qū)分性的影響。
對數(shù)據(jù)包時間間隔可區(qū)分性帶來的信息增益做進一步量化。與包含大量單詞的字母文字相比,中文輸入的字母組合相對固定,例如,英文單詞中不同bigram的數(shù)量接近最大值262,而拼音中只包含112個,即中文輸入的最大熵比英文低2.6 bit。假設(shè)隨機變量β表示bigram,則攻擊者觀察到τ時的信息增益為
根據(jù)文獻[6],特定bigram的擊鍵時間間隔近似符合高斯分布,即P(τ|β)~N(μβ,σβ) ,其中μβ和σβ分別表示均值和方差。采用包含20個用戶擊鍵數(shù)據(jù)的CMU數(shù)據(jù)集[14]對每個拼音bigram的分布參數(shù)進行最大似然估計(β樣本數(shù)大于10),得到τ的概率分布如圖4(a)所示,可以看到,不同手部運動行為的β之間存在一定的可區(qū)分性。圖4(b)顯示了3個不同用戶對于給定τ的信息增益I(β;τ),雖然輸入每個bigram只有0.4~0.5 bit的信息增益,但由于較長查詢的積累效應(yīng),攻擊者可以進一步確定用戶輸入的搜索查詢。
圖4 數(shù)據(jù)包時間間隔泄露信息量化
本節(jié)描述了中文搜索側(cè)信道分析方法,實現(xiàn)對網(wǎng)絡(luò)流量泄露信息的利用。該分析方法分為3個階段,其中,擊鍵探測和歧義縮減階段利用了數(shù)據(jù)包長度信息,查詢推斷階段利用了數(shù)據(jù)包時間信息。
擊鍵探測利用數(shù)據(jù)包長度增量可區(qū)分性建立確定有窮狀態(tài)機(Deterministic Finite Automaton,DFA),通過接收最長數(shù)據(jù)包序列的動態(tài)規(guī)劃算法從背景流量中檢測出擊鍵數(shù)據(jù)包序列。
擊鍵探測前,首先對網(wǎng)絡(luò)流量進行預(yù)處理。在數(shù)據(jù)傳輸過程中,網(wǎng)絡(luò)狀況的變化會增加網(wǎng)絡(luò)延遲抖動,可能造成數(shù)據(jù)包亂序。當網(wǎng)絡(luò)出現(xiàn)嚴重擁塞時,TCP協(xié)議會根據(jù)滑動窗口來重傳未收到應(yīng)答的數(shù)據(jù)包。因此,利用遞增的TCP序號調(diào)整亂序的數(shù)據(jù)包,并根據(jù)重復(fù)的序號去除重傳數(shù)據(jù)包。此外,為了消除其他網(wǎng)絡(luò)應(yīng)用以及無關(guān)TLS連接產(chǎn)生的背景流量的影響,利用TLS協(xié)議握手數(shù)據(jù)包中的SNI(Server Name Indication)字段過濾出包含擊鍵數(shù)據(jù)包的TLS連接。數(shù)據(jù)預(yù)處理不僅降低了網(wǎng)絡(luò)狀態(tài)變化和無關(guān)網(wǎng)絡(luò)流量對數(shù)據(jù)包長度增量帶來的影響,并且能夠最大限度地提高擊鍵探測的效率。
根據(jù)查詢字符串長度增量建立DFA模型M=(Q,Σ,δ,q0,F) ,其中,狀態(tài)集Q包含不同的擊鍵類型,輸入集Σ表示可接收的長度增量,轉(zhuǎn)換函數(shù)δ表示Q×Σ →Q上的映射,即δ(q,d)表示從狀態(tài)q沿著邊d到達的狀態(tài),q0表示起始狀態(tài),F(xiàn)表示結(jié)束狀態(tài)集。為了簡化模型,假設(shè)用戶僅使用26個字母輸入正確的拼音音節(jié),不使用退格鍵(Backspace)、刪除鍵(Delete)或方向鍵修正已輸入的內(nèi)容,并且查詢字符串中不包含英文、數(shù)字或特殊字符。圖5顯示了不同HTTP版本下的DFA模型,對于HTTP/2網(wǎng)站,利用狀態(tài)A0和B0記錄編碼URL長度的零字節(jié)增長(不計分隔符)。
總之,作為我們現(xiàn)一代交通工程技術(shù)人員有責任也有義務(wù)通過艱苦努力積極探索改善鉆孔灌注樁質(zhì)量缺陷處理的新技術(shù),新方法,在以后的交通工程建設(shè)中得到有效的發(fā)揮,為以后的橋梁工程建設(shè)作一份貢獻。
圖5 查詢字符串長度增量DFA模型
為了從大量的網(wǎng)站背景流量中檢測出擊鍵數(shù)據(jù)包序列,構(gòu)建基于DFA模型的動態(tài)規(guī)劃算法,如表3所示。在DFA模型接收的過程中,由于部分搜索引擎的請求URL中包含可變參數(shù),數(shù)據(jù)包長度增量會呈現(xiàn)表2中變化的特征。為此,在檢測數(shù)據(jù)包序列的過程中,根據(jù)已接收數(shù)據(jù)包的狀態(tài)序列和URL可變參數(shù)特征,將查詢字符串長度增量動態(tài)轉(zhuǎn)化為數(shù)據(jù)包長度增量。
表3 擊鍵探測算法
歧義縮減通過匹配符合擊鍵數(shù)據(jù)包狀態(tài)序列Q的候選查詢,有效縮減搜索查詢集的規(guī)模,降低用戶輸入的不確定性。通過歧義縮減,理論上可以獲得圖3(a)的信息增益,并達到圖3(b)的識別準確率。
為提高候選查詢的匹配效率,設(shè)計了如表4所示的多層匹配算法。其中,第1層為長度匹配,根據(jù)狀態(tài)序列Q的長度即擊鍵次數(shù)匹配查詢的拼音字母長度;第2層為音節(jié)匹配,將狀態(tài)序列Q約簡為指示音節(jié)分隔符的狀態(tài)序列Qˉ={qˉ1,qˉ2,...,qˉn},qˉi ∈{A,B},匹配查詢的拼音音節(jié)排列;第3層為增量匹配,針對HTTP/2網(wǎng)站,將狀態(tài)序列Q與查詢在不同初始比特余數(shù)r0下的哈夫曼編碼長度增量序列進行匹配,進一步減小相同長度查詢之間的歧義。算法層數(shù)越高,匹配過程的計算復(fù)雜度越大,隨之帶來的信息增益也越大。對于規(guī)模龐大的搜索查詢集,該結(jié)構(gòu)可以有效減少復(fù)雜的高層匹配次數(shù),通過預(yù)先計算每個查詢的狀態(tài)序列Qˉ′和Q′r,可以提高算法整體的性能。
表4 多層匹配算法
查詢推斷利用數(shù)據(jù)包時間間隔可區(qū)分性建立循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN),學習用戶擊鍵的時間序列特征,從候選查詢中預(yù)測概率最大的輸入序列。相比Song等人[6]采用的隱馬爾可夫模型,RNN具有更強的非線性表示能力,能夠刻畫擊鍵序列的長時依賴關(guān)系。考慮到擊鍵時間間隔不僅與當前bigram有關(guān),還與前后bigram改變的手部位置相關(guān),因此采用如圖6所示的雙向RNN(BRNN)網(wǎng)絡(luò)[15],利用雙向隱層節(jié)點的連接關(guān)系,學習擊鍵時間間隔前后的依賴關(guān)系。
圖6 擊鍵時間間隔預(yù)測雙字母對的BRNN模型
中文輸入以拼音音節(jié)為單位進行記憶,且通過狀態(tài)序列Q可以良好地劃分音節(jié),因此只針對音節(jié)內(nèi)部的bigram序列建立預(yù)測模型。對于長度為n的拼音音節(jié)p,BRNN模型以n?1個擊鍵時間間隔τ={τ1,τ2,...,τn?1}作為輸入,通過雙向tanh激活函數(shù)和softmax層輸出n?1個bigram的概率,即
其中,U, W, V分別表示輸入層、隱藏層和輸出層參數(shù),b,c分別表示各層的偏置值。
訓(xùn)練模型時,采用包含16.8萬用戶鍵盤記錄的136 M擊鍵數(shù)據(jù)集[12],從中篩選臺式機或筆記本電腦QWERTY鍵盤記錄作為訓(xùn)練數(shù)據(jù)?;谀P皖A(yù)測結(jié)果,通過bigram序列的聯(lián)合概率確定音節(jié)p的概率,進而根據(jù)音節(jié)序列確定擊鍵序列X的概率,即
本節(jié)對所提出的側(cè)信道分析方法進行實驗評估。首先介紹流量數(shù)據(jù)的收集方法以及實驗數(shù)據(jù)集的構(gòu)造,然后通過一系列針對性的實驗對側(cè)信道分析方法性能進行全面評估。
為收集真實的網(wǎng)絡(luò)加密流量,構(gòu)建了模擬用戶在搜索引擎中輸入中文查詢并捕獲網(wǎng)絡(luò)流量的數(shù)據(jù)收集工具。該工具利用Selenium實現(xiàn)瀏覽器網(wǎng)頁自動加載與搜索框定位,通過PyAutoGUI模擬用戶點擊搜索框并輸入搜索查詢,使用Scapy在后臺捕獲網(wǎng)絡(luò)流量并保存為pcap文件。為模擬用戶輸入中文搜索查詢的擊鍵時間間隔,從136 M擊鍵數(shù)據(jù)集中進一步篩選出1850個漢語母語用戶的擊鍵記錄,通過最大似然估計得到P(τ|β)分布參數(shù),并隨機采樣得到模擬的擊鍵時間間隔。
為驗證2.4節(jié)量化的理論識別性能,同樣以THUOCL作為搜索查詢集,從中隨機選取拼音長度從10到40字符的查詢各60個,組成包含1800個查詢的樣本空間。選取的查詢中不包含字母、數(shù)字或特殊字符。使用數(shù)據(jù)收集工具分別在百度、搜狗、360和必應(yīng)搜索中捕獲查詢樣本的加密流量,組成包含7200個樣本的流量數(shù)據(jù)集。數(shù)據(jù)收集環(huán)境基于Windows 10系統(tǒng)上運行的Chrome瀏覽器(v87版本),模擬用戶輸入時使用標準QWERTY鍵盤以及系統(tǒng)內(nèi)置的微軟拼音輸入法。
實驗評估基于構(gòu)造的中文查詢流量數(shù)據(jù)集,其中每個樣本代表攻擊者通過網(wǎng)絡(luò)監(jiān)聽捕獲的搜索流量,并且用戶輸入的搜索查詢屬于攻擊者已知的集合THUOCL。針對分析方法的各個階段,采用不同的評估指標進行評價。擊鍵探測屬于二分類問題,即未知網(wǎng)絡(luò)流量中的擊鍵數(shù)據(jù)包能否被DFA模型正確地接收,因此使用F1分數(shù)作為評估指標,其中假陽類表示被標記的非擊鍵數(shù)據(jù)包,假陰類表示未被標記的擊鍵數(shù)據(jù)包。整體性能使用查詢識別準確率作為評估指標,即攻擊者一次猜對用戶輸入查詢的數(shù)量與查詢樣本總數(shù)的比例。在整體評估的基礎(chǔ)上,設(shè)計了多個攻擊場景來評估不同信息來源對查詢識別準確率的貢獻度。此外,通過對推斷查詢階段的消融實驗,進一步驗證推斷模型的有效性。
5.3.1 擊鍵探測性能
表5顯示了擊鍵探測在不同搜索引擎中的F1分數(shù)及完整擊鍵探測(F1=100%)比例。利用DFA模型嚴格的接收條件,攻擊者可以準確地識別各個搜索引擎的擊鍵數(shù)據(jù)包。在擊鍵探測失敗的樣本中,百度搜索第3次擊鍵請求的“H_PS_PSSID”和“BDSVRTM”Cookie的長度同時發(fā)生變化,導(dǎo)致DFA模型接收失?。?60搜索的頁面被重定向到so.com/haosou.html,該域名的搜索功能不是AJAX增量式搜索,因此沒有擊鍵數(shù)據(jù)包產(chǎn)生;搜狗搜索由于采用周期為100 ms的等待計時器模型,部分擊鍵時間間隔較小的請求被合并;相比之下,必應(yīng)搜索由于采用遞歸模型,發(fā)生請求合并的概率大幅降低,符合2.4節(jié)的理論分析。
表5 擊鍵探測性能結(jié)果(%)及對比
對比文獻[10]中基于無狀態(tài)DFA模型的兩階段探測方法,本文方法能夠?qū)TTP請求中特殊的可變參數(shù)進行識別,同時利用DFA模型嚴格的接收條件避免錯誤地接收背景流量。從實驗結(jié)果來看,本文方法對百度搜索的完整擊鍵探測性能提升11.52%。
5.3.2 查詢識別準確率
表6顯示了不同搜索引擎中的查詢識別準確率。對于非HTTP/2網(wǎng)站查詢,分析方法的平均識別準確率為61.32%~65.94%;而對于必應(yīng)搜索,由于哈夫曼編碼URL泄露了音節(jié)內(nèi)部的信息,平均識別準確率達到76.06%。圖7(a)顯示了各個搜索引擎中的查詢識別準確率與拼音字母長度的關(guān)系,并與2.4節(jié)的量化值進行對比??梢钥闯觯治龇椒ǖ膶嶋H性能與理論量化值基本吻合,對于長度在25個字符以上的查詢能夠準確地識別。搜狗搜索由于節(jié)流計時器合并了較多請求,部分結(jié)果未達到量化值。此外,請求URL中的“cp”,“pwd”等可變參數(shù)未對數(shù)據(jù)包長度增量可區(qū)分性造成影響。
圖7 整體性能評估
表6 查詢識別準確率結(jié)果(%)及對比
將本文提出的分析方法與Schaub等人[8]的方法、Oh等人[9]的方法和Monaco[10]的方法結(jié)果進行對比,識別性能比現(xiàn)有方法均有大幅提高。其中,與Oh等人采用的指紋攻擊方法相比,本文方法在更大規(guī)模的監(jiān)控集上實現(xiàn)了更準確的識別,對于必應(yīng)搜索查詢的識別準確率提升31.77%。
5.3.3 信息泄露來源
為探究側(cè)信道分析方法實際利用的信息泄露來源,分別評估4個場景下的識別性能:只采用音節(jié)匹配,只采用增量匹配,采用音節(jié)匹配和擊鍵時間信息,以及采用增量匹配和擊鍵時間信息。圖7(b)顯示了不同場景下針對必應(yīng)搜索的查詢識別準確率。對于長度為20個字符的查詢,采用完整信息來源的識別準確率從只采用音節(jié)信息的36.67%提升到80%;不采用時間信息的識別準確率與理論量化值基本吻合,說明較好利用了數(shù)據(jù)包長度信息;時間信息帶來的性能提升相對較小,原因一方面是BRNN模型訓(xùn)練沒有采用特定用戶擊鍵數(shù)據(jù)集,導(dǎo)致樣本偏差較大,另一方面是必應(yīng)搜索的遞歸計時器模型損失了少量原始擊鍵時間信息。
5.3.4 查詢推斷消融實驗
為進一步分析本文方法對擊鍵時間信息的依賴程度,以及驗證查詢推斷階段BRNN模型的有效性,分別使用單向RNN模型、隱馬爾可夫模型(Hidden Markov Model, HMM)[6]、單隱層多層感知器(MultiLayer Perceptron, MLP)和基準的等概率模型(Equal)進行對比分析,結(jié)果如表7所示。其中,RNN接近BRNN的識別準確率,差別在于RNN只學習了之前的bigram對當前擊鍵時間間隔的影響,忽略了后續(xù)bigram造成的影響;HMM和MLP相比RNN的總體效果更差,因為HMM基于齊次馬爾可夫假設(shè),即當前時間間隔只與前一個bigram相關(guān),無法刻畫用戶擊鍵的長時依賴關(guān)系,而MLP無法捕獲時間順序信息,忽略了bigram改變的手部位置對擊鍵時間間隔的影響。
表7 查詢推斷消融實驗(%)
由于側(cè)信道分析方法利用了搜索請求泄露的長度和時間信息,理論上通過混淆數(shù)據(jù)包長度和時間特征可以降低識別準確率。以具有完整信息來源的必應(yīng)搜索作為對象,評估以下4種針對性的緩解機制。
(1)填充數(shù)據(jù)包:將數(shù)據(jù)包填充到固定長度或固定字節(jié)的整數(shù)倍可以消除長度帶來的信息增益,但是會產(chǎn)生較多額外的帶寬消耗。另一種隨機填充可在帶寬消耗較小的前提下,破壞數(shù)據(jù)包長度增量可區(qū)分性。隨機填充1 Byte時,攻擊者通過放寬DFA接收條件能夠以一定的概率區(qū)分音節(jié)信息。圖8(a)顯示了填充概率對查詢識別準確率的影響,以50%的概率填充數(shù)據(jù)包可以降低30.5%的識別準確率。
(2)偽造數(shù)據(jù)包:借鑒KeyDrown[16]偽造鍵盤事件和OB-PWS[17]偽造搜索請求的思想,由于哈夫曼編碼URL長度會產(chǎn)生零字節(jié)增量,偽造相同長度的數(shù)據(jù)包會被DFA錯誤地接收。圖8(a)顯示了偽造數(shù)據(jù)包概率對查詢識別準確率的影響,以較小帶寬消耗的30%概率偽造數(shù)據(jù)包可以使識別準確率降低到7.8%。
(3)延遲數(shù)據(jù)包:網(wǎng)絡(luò)延遲影響數(shù)據(jù)包的到達時間,過大的延遲抖動會使數(shù)據(jù)包亂序。攻擊者利用TCP序號可以調(diào)整數(shù)據(jù)包邏輯亂序,但延遲抖動會消除擊鍵時間泄露的信息。圖8(b)顯示了采用Laplace分布[18]增加的網(wǎng)絡(luò)延遲抖動對查詢識別準確率的影響,40 ms的延遲抖動可以使識別準確率降低15.7%。
圖8 緩解機制評估
(4)合并數(shù)據(jù)包:由于節(jié)流計時器會將周期內(nèi)的用戶輸入合并到同一個請求,增加節(jié)流周期可以增加合并數(shù)據(jù)包的概率,從而使擊鍵探測過程失敗。圖8(b)顯示了增加節(jié)流周期對查詢識別準確率的影響,雖然降低了增量式搜索的實時響應(yīng)速度,但是增加50 ms節(jié)流周期可以使識別準確率降低到17.6%。
本文提出了一種面向中文搜索的網(wǎng)絡(luò)加密流量側(cè)信道分析方法,通過被動監(jiān)聽網(wǎng)絡(luò)流量,攻擊者可以在用戶無感的情況下推斷其輸入的搜索查詢。本文以理論分析和實驗評估相結(jié)合的方式證明了信息泄露普遍存在于具有增量式搜索的網(wǎng)絡(luò)應(yīng)用中,并針對性地提出了可能的緩解機制。在下一步工作中,將考慮非中文字符以及輸入誤差帶來的影響,并針對特定用戶建立擊鍵時間模型以提高時間信息帶來的增益。