劉玉潔,李娜,姚曉,張玉健,2,許昱瑋,2,3
〔1.東南大學網絡空間安全學院,江蘇南京 211189;2.網絡空間國際治理研究基地(東南大學),江蘇南京211189;3.網絡通信與安全紫金山實驗室,江蘇南京,211111〕
隨著移動設備的普及,無線技術由于提供低成本和隨時隨地的網絡連接,已成為現代計算平臺的重要通信方式。然而,無線網絡由于其普及性、開放性和商業價值,也正吸引著各種形式的網絡攻擊,其中無線節點的仿冒最為常見,帶來了嚴重的安全和隱私威脅。因此,如何對無線設備的真實身份進行有效識別,是應對上述威脅而亟待研究的重要問題。
對于早期的無線設備,MAC(Media Access Control)地址因其確定性和唯一性,常被用作設備的身份標識,但也帶來隱私泄露問題。作為一種防止追蹤的對策,MAC地址隨機化被用于隱私保護,但也使得MAC地址不再適合作為無線設備的身份標識[1]。此外,研究者還嘗試從其他特征中提取無線設備的身份指紋,按照指紋生成的前提可分為有連接方式和無連接方式:前者需要指紋提取者與無線設備建立連接,可獲得豐富的特征值,但降低了指紋提取者的安全性;后者無需與目標無線設備建立連接,增強了安全性和靈活性,但特征獲取受到限制[2]。
為應對無連接方式的技術挑戰,本文提出了一種基于802.11幀的無線設備指紋生成方法。通過提取802.11協議管理幀的特征值,利用信息熵(Entropy)和相似哈希(Similarity Hash,SimHash)生成無線設備指紋,實現了無連接方式下的細粒度識別和相似度發現。
802.11 協議的站(Station,STA)與接入點(Access Point,AP)建立連接分為被動掃描和主動掃描兩種方式:被動掃描是由STA偵聽AP定期發送的信標幀(Beacon),通過信標幀獲取AP信息;主動掃描則是由STA廣播探測幀(Probe Request),而從探索響應幀(Probe Response)中獲取AP信息,如圖1所示。由此可見,信標幀和探測幀是在無連接方式下獲取無線設備特征值的主要來源,其中STA和AP均為本文所述的無線設備。

圖1 802.11協議的被動掃描和主動掃描過程
指紋技術常用于無線設備的身份識別和數字取證等,現有的無線設備指紋生成方案可分為有連接方式和無連接方式。在有連接方式下,指紋提取者需與設備建立實際連接。Shetty等人在有連接模式下通過分析流量特征將授權主機與惡意接入主機進行區分[3]。Gao等人利用TCP/UDP數據包到達時間IAT(Inter-Arrival Time)作為簽名生成AP類型指紋[4]。Monica等人設計了一種名為WiFiHop的客戶端工具,通過中繼帶水印的數據檢測偽AP[5]。這些基于有連接的方法可以獲得更多特征信息,但增加了指紋提取的前提條件且暴露了提取者的身份。在無連接方式下,指紋提取者無需與設備建立連接,而是通過偵聽設備主動發送的信標幀或探測幀提取設備的指紋信息。楊從安提出為每臺使用數字聯盟服務的移動設備下發唯一識別ID作為設備指紋[6]。Robyns等人提出對單個幀進行逐位熵分析從而構建發射機的指紋的方法[7]。Li等人利用802.11信標幀中的時間戳和信號字段作為高斯分布算法和樸素貝葉斯分類中的數據來生成接入點指紋[8]。無連接方式下的指紋提取者是隱身的,但獲取有效信息受限。
本文提出的指紋生成方法是在無連接條件下通過偵聽802.11管理幀提取無線設備的指紋信息。本節以探測幀為例,詳細介紹指紋生成的設計思路、特征選擇以及指紋生成算法。該方法可同理推廣到利用信標幀生成指紋的場景。
無連接情況下的指紋生成以設備發出的802.11管理幀為分析對象,進行特征選擇和指紋生成。在特征選擇階段,需考慮特征的穩定性及區分度。可采用信息熵對其進行衡量,信息熵越小,特征越穩定。在指紋生成階段,需對特征進行量化評估,兼顧特征內容、特征貢獻度、指紋結果相似度分析三個方面:對特征內容使用一種壓縮映射的轉換,即哈希(Hash)算法;特征貢獻度通過特征信息熵值體現,信息熵越高,貢獻度也越大;利用局部敏感的SimHash算法[9]對特征內容和特征貢獻度進行整合,生成的SimHash值可用作相似度評估。
可以看到,無論是在特征選擇還是指紋生成,都需要計算各特征的信息熵。對于任意特征X,在探測幀中所有取值為{x1, x2,..., xn, xn+1},其中,x1, x2..., xn表示n個不同的取值,xn+1=U表示取值為空,即該特征在當前幀中不存在。特征X所有取值的概率密度函數p(xi)的計算公式為:

由此,該特征的信息熵可表示為:

特征選擇的目標是提取在同一設備中保持不變、而在不同設備中差別較大的特征。
將來自同一設備的探測幀作為數據集,利用公式(2)計算各特征的信息熵,選出對于同一設備保持穩定,即信息熵為0的特征。隨后,在不同設備的探測幀中執行同樣的操作,選出對于不同設備具有區分度,即信息熵不為0的特征。將兩次字段選擇結果取交集,最終得到的穩定且具有區分度的特征包括Request、HT Capabilities、Extended Capabilities、VHT Capabilities、Vendor Specific。其中,前四個特征為802.11協議定義的標準字段,而Vendor Specific則是廠商自定義字段,可定義多個子字段。除了上述特征外,信息元素序列也對無線設備具有良好的標識性。信息元素序列是指探測幀的Element ID序列組合,以及Vendor Specific的子字段序列。由于不同設備發出的探測幀攜帶的報文信息不盡相同,所包含的信息元素字段及順序也不同,因此,信息元素序列可以作為標識無線設備的特征參數。將信息元素序列和特征字段內容兩部分的信息進行整合,最終得到13個可用于指紋生成的特征,如表1所示。
指紋生成階段的目標是形成對所提取特征的抽象描述以及挖掘不同指紋值的內在聯系。已選取的特征可用于內容表達和貢獻度量化兩個方面:內容表達是直接利用Hash算法進行壓縮映射,而貢獻度量化則通過特征信息熵體現。特征信息熵通過公式(2)在特征值去重過的指紋集中計算得到。局部敏感的SimHash算法可以整合特征內容Hash值與特征參數貢獻度,且在一定程度上還可以表征原內容的相似度。因此,將特征信息熵作為權重,計算SimHash得到設備指紋,通過比較不同SimHash值的漢明距離,從而判斷兩個指紋的相似度。
SimHash算法分為五個步驟:分詞、Hash、加權、合并和降維,具體過程如圖2所示。

圖2 SimHash指紋生成算法示例
記目標幀P,初始數據集Spackets,特征值去重后的指紋集Sfeature,特征參數集SX={X1,X2,...,Xn},其中X1即信息元素序列TagSeq,
X2,...,Xn為P中的特征字段。無線設備指紋生成的過程如算法1描述所示。
算法1 基于802.11幀的設備指紋生成算法
輸入:初始數據集Spackets,目標幀P
輸出:目標幀指紋F
produce GenerateFingerprint(Spackets,P)begin
1 以Spackets為基礎構建指紋集Sfeature
2 for X in P do
3 將X的Element ID添加進TagSeq
4 if X in SXthen
5 特征參數賦值Xi=X
6 if X is Vendor Specific then
7 將X的OUI添加進TagSeq
8 end if
9 end if
10 end for
11 特征參數賦值X1=TagSeq
12 if SXnot in Sfeaturethen
13 更新Sfeature
14 end if
15 在Sfeature中計算各特征參數信息熵
16 將各特征信息熵作為權值
17 計算各特征哈希值
18 利用SimHash算法生成指紋F
19 return F
end
在算法1中,首先對初始數據集進行特征值去重得到指紋集(Line 1);接著提取目標幀的特征參數(Lines 2~11);然后判斷目標幀的特征是否與指紋集中的特征相匹配,若不匹配則需要更新指紋集(Lines 12~14);最后利用指紋集計算各特征參數的信息熵作為權重,然后利用SimHash算法生成指紋(Lines 15~19)。
實驗采用Sapienza2013數據集[10],包含8個子數據集,共108,359個無線設備,4,825,476個探測幀。指紋算法用Python編程實現,Hash函數采用SHA256。此外,通過計算以下三個指標對算法進行評估:各特征的熵值、指紋識別粒度以及同一品牌不同設備的指紋相似度。
(1)各特征的熵值
經過去重后,共生成4,650個不同的特征值組合,從而構成指紋庫。利用公式(2)計算所有特征的熵值,結果如表1所示。可以看出,VSWPS字段的熵值最高,為9.85,且有3,559個不同的值,表明該字段復雜度最高,作為指紋字段的區分性也最好。VSNC字段,不同值有54個,但是熵值只有0.16,說明該字段內容較為接近,區分度不高。

表1 特征參數在指紋庫中的熵值和不同值的個數
(2)指紋識別粒度
在MAC地址隨機化的趨勢下,MAC地址雖已不適合作為設備標識,但可用其前三個字節識別出OUI(Organizationally Unique Identifier)信息,即設備的制造商。利用OUI與設備品牌的對照表[11]進行映射,得到設備品牌信息。為比較本文算法和品牌的識別效果,定義識別粒度的計算方式:

其中,ε為識別粒度,n為可識別出的不同類型設備數,N為數據集中的設備總數量。
8個子數據集的品牌和指紋識別粒度結果如圖3所示。可以看出,在所有子數據集中,SimHash指紋的識別粒度明顯比品牌高。品牌的識別粒度區間為[0.48%,1.25%],而指紋的識別粒度區間為[3.16%,5.68%]。通過比較,每個子數據集中指紋的識別粒度平均比品牌高5.68倍。由此可見,本文提出的指紋算法可實現比品牌更細粒度的設備識別。
(3)不同指紋之間的相似度

圖3 子數據集中品牌和指紋的識別結果
來自同一品牌的報文在一些字段上,尤其是Vendor Specific字段,可能會表現出一定的相似性,即它們之間的距離較為接近。理論上,SimHash指紋越相似,設備關聯性越高。基于這個假設,本節統計了數據集中180個品牌的平均漢明距離以及相似度。相似度的計算公式為:

其中,η表示相似度,d表示平均漢明距離,len表示指紋長度,由于本文采用的是SHA256算法,故len=256。
除去只有一種指紋的132個品牌(此時無法計算平均漢明距離),得到平均漢明距離最小的前5個品牌,如表2所示。Apple品牌下指紋的平均漢明距離只有14.99,相似度高達94.15%,說明其指紋間的關聯性較高,原因是其探測幀的標準化程度高。
同理,相似度最低的五個品牌如表3所示。雖然HTC品牌的指紋相似度最低,但仍達到51.75%,表明不同型號間仍具有一定的關聯性。

表2 相似度最高的前五個品牌

表3 相似度最低的前五個品牌
上述實驗結果也表明本文所生成的設備指紋除了能夠作為設備標識符,在量化評估設備間的關聯性方面具有一定優勢。
針對目前無線網絡中設備指紋生成及識別的問題,本文提出了一種基于802.11幀的無線設備指紋生成方法。在未建立連接條件下,偵聽無線設備的802.11管理幀,利用信息熵選取和量化幀中的特征參數,最終通過SimHash算法生成獨特的設備指紋。在Sapienza2013數據集的實驗表明:信息熵算法選取的特征參數具有明顯的設備區分度,熵值最高為9.85;指紋識別粒度相較于品牌平均提升了5.68倍,識別效果優于品牌;同一品牌的不同指紋具有明顯的關聯性,最高達94.15%。由此,該算法可用于判斷不同設備之間的親緣關系。
下一步,將基于現實環境對該指紋生成方法的準確率、誤報率、漏報率等做進一步分析。此外,還可以結合其他特征字段生成動態指紋,用于反MAC隨機化的設備追蹤。