◆儲貝林 蘇燕青 張汝嫻 狄宏
(國際關系學院 北京 100091)
隨著互聯網的高速發展,人們對于如何在使用網絡時保護個人隱私,隱匿身份有了更多的需求。許多匿名網絡體系應運而生,例如TOR、JAP 等等。然而,高度的匿名化網絡也為違法犯罪的活動提供了溫床。因此,在防止犯罪與刑偵取證方面,如何在匿名網絡中識別惡意用戶所訪問的網站就顯得十分必要。“網站指紋”這個概念應運而生,成為當前匿名網絡中進行目標網站識別技術的研究熱點。
網站指紋這個名稱是由Hintz 首次提出[1]。但在這之前,類似的技術就有所應用。早在1996 年,Wagner 與Schneier 提出流量分析可以從被加密的SSL 數據包中得出某些結論[2]。1998 年,研究人員成功地在單個服務器訪問不同的URL 時,使用流量分析識別出目標URL。
Liberatore 與Levine 在這一領域做出了進一步的研究[3]。他們OpenSSH 隧道通訊中網站集合的規模擴大到了2000 個。并且,在特征分類上,他們采用更為復雜的數據挖掘算法——Jaccard 相似系數和樸素貝爾斯分類器,取代了Bissias et al.僅使用的矩陣相關系數。實驗結果中,兩種分類算法的識別率都達到了令人滿意的70%。
更近的突出研究則是由Herrmann 等人[4]所做的。他對使用不同匿名技術的775 個網站進行研究,諸如OpenSSL、OpenVPN、Stunnel、Cisco ⅠPsec-VPN 以及JAP、TOR。通過使用多項樸素貝葉斯分類器,實驗對單調系統的識別率可達到90%,然而對JAP 僅20%,對TOR更只有2.95%。
本文主要參考的是由AndriyPanchenko、Lukas Niessen 和Andreas Zinnen 于2011 年對基于洋蔥路由的網站指紋技術做出的研究[5]。他們提出了幾種新的網站數據流特征作為網站指紋,并采用了SVM(支持向量機)分類器。通過參數的調整后,在4000 個封閉世界網站數據集合中,TOR 目標網站識別正確率可達到54%。
基于TOR 網站指紋的目標網站識別技術分為兩大部分:一是對客戶端與網站服務器數據流的特征進行選取,作為用于識別目標網站的指紋特征。接著通過抓包工具獲取大量的數據流,從中提取出網站指紋。二是使用機器學習分類算法,將提取到的指紋數據作為輸入,經過訓練后得到分類模型,繼而對模型識別路等參數進行評估。若模型性能表現良好,那么未來抓取到的網站指紋就可以輸入至此模型,得到網站識別的結果。
在AndriyPanchenko 等人的研究中,提出了以下的幾種網站指紋特征,經試驗證明,它們是可行且有效的:
(1)過濾大小小于52 的數據包
由于TOR 中鏈路動態變化,客戶端與不同中繼節點的通訊會產生數據流,從而影響有限數據的收集。因此采取過濾掉大小小于52的數據包。
(2)數據包方向與大小
數據包的大小與方向屬于雙方通訊中基本的流量特征。其中,客戶端發送給服務器端的數據包標記為正(+),服務器端發送給客戶端的數據包被標記為負(-)。
(3)總傳輸字節數
上述的數據包大小標記已經將雙方通訊的數據流詳細地記錄下來。我們將其中的數據包總字節數進行求和,得到一個新的指紋特征。其中正向數據包總字節數記為TS+,負向數據包總字節數記為TS-。
(4)數據包總個數
總個數表征整個通訊過程中不同方向數據包的數量總和。同樣將其作為數據包總體特征之一。其中,正向數據包總數記為NP+,負向數據包記為NP-。
(5)數據包種類數
在請求站點的過程中,因目的與操作不同,數據包間必然存在不同種類。由于數據包都采用加密,無法按內容形式對數據包進行分類,故直接使用數據包的大小不同作為區別不同數據包的依據。其中,正向數據包種類數記為OP+,負向數據包種類數記為OP-。
(6)進出數據包比例數
即為正向數據包總數(NP+)數據包總數除以負向數據包總數(NP-)。
以上即為進行網站指紋信息提取的參考參數,本文也將基于上述特征進行網站指紋的提取。
在進行指紋提取之前,關閉系統中一切無關應用與系統服務。打開TOR 瀏覽器,待連接至TOR 后,即可進行數據流提取工作。
TOR 成功連接后,便可打開抓包軟件等待收集數據包信息。每當一個待采集網站完全加載后,應立即停止抓包,防止無關數據流的干擾。采集完成后,便可以將抓包信息導出至目標位置,等待指紋信息的提取。
對每個網站進行多次指紋采集后,就形成了各個網站的訓練集。將網絡指紋特征作為分類特征,具體的網站名作為分類項目,輸入進機器學習算法的輸入端中,就可以得到基于網站指紋信息的網站分類器。之后便可以使用交叉驗證或真實采集的網站指紋進行驗證,測試分類器性能。
實驗數據集采用Alexa’s TOP RANK 100 這一百個訪問量最大的網站作為攻擊者感興趣的網站。將實驗分為四組,從Alexa’s TOP RANK 100 中任意挑選40 個網站作為測試集。在三個不同的時間,對測試集網站進行數據抓取,并分別放入三個實驗組中。每個網站訪問100 次,從而獲得100 條數據流信息,每組總計4000 條。第四組將前面三組的數據合并處理。接著再分別對每組進行指紋特征提取,并利用機器學習算法建立分類器,最后綜合四組的識別率以評價算法的優劣。
由于數據量巨大且在國內訪問TOR 速度極低,十分影響測量效率與效果。因此,本文直接使用T.Wang 與Ⅰ.Goldberg 于2013 年采集的TOR 網站數據流。其中,共有三個文件夾,分別是對Alexa’s TOP RANK 100 中任意挑選出的40 個網站采集的指紋信息,且每個網站都提取100 次。數據流都以帶符號整數表征,采取以600 字節為增量進行聚類,存儲在TXT 文檔中。因此,每個文件夾中有4000 個TXT文件,且都已x_y 進行命名(x 代表網站編號,y 代表采集次序。1<=x<=40,1<=y<=100)。文件夾形式與單個文件內容如圖1:

圖1 指紋信息文件格式
在獲取了各網站數據流信息后,便可以著手進行網站指紋的提取。編寫Python 腳本data_process.py,以文件夾為單位,進行網站指紋提取。將指紋信息與對應的網站編號存入EXCEL 文檔,四個文件夾共得到四個含有網站指紋信息的EXCEL 文檔,分別命名為fingerprinting0.xls 、 fingerprinting1.xls 、 fingerprinting2.xls 、fingerprinting3.xls。data_process.py 與fingerprinting 文檔如圖2 所示:

圖2 指紋信息提取與處理
本文數據分析采用WEKA 軟件進行。WEKA(Waikato Environment for Knowledge Analysis)是由Java 語言開發的被廣泛應用于數據挖掘和機器學習的開源軟件。
WEKA 中數據文件的后綴為ARFF。ARFF 文件格式是WEKA專用的一種文件格式,此格式的文件是一種ASCⅠⅠ文本文件,描述共享一組屬性結構的實例列表,由獨立無序的實例組成,是WEKA表示數據集的標準方法,ARFF 不涉及實例之間的關系。如圖3 所示。
將采集到的四個EXCEL 格式的指紋信息拷貝進TXT 文件中,將TS、OP、PP、NP 設置為屬性,網站編號設為分類屬性,數據部分按ARFF 規范進行處理。完成后將TXT 文件的后綴名改為ARFF,即完成了ARFF 文件的轉換。
最后,以相同的算法對四組訓練集分別進行模型訓練,并采用十折交叉驗證的方式(即前三組訓練集3600,測試集400;最后一組訓練集10800,測試集1200)檢測模型識別率。接著,按以上方法,但使用不同的機器學習算法進行訓練,從而比較不同算法的識別率。
在經過一系列的模型選擇與參數調整后,實驗結果如表1 所示。

圖3 ARFF 文件格式

表1 各類算法識別率比較
正如表1 所示,SVM 在向量分類上具有很健壯的性能,其識別率在四個數據集中表現十分穩定,都達到了約54%左右的識別率。
相比而言,基于決策樹的分類算法的穩定性較差,采用相同算法的情況下,數據集之間的性能差異最高可達12%。而基于決策樹的分類算法,雖減少了因調參的復雜工作,且運行速度較快,但其不穩定識別率表現讓它不能成為基于網站指紋的網站識別的可靠分類器。
本文基于當前互聯網迅速發展,人們對通信隱私的需求日益增多的背景下對當前主流匿名通信系統Tor 展開研究。最后,得出以下結論:
使用SVM 進行網站指紋分類被證明切實有效的,TOR 網絡并不能有效地抵抗流量分析。然而,真實的網絡情況并不像實驗環境那樣理想。真實情況下,攻擊者處于用戶與入口節點之間,其中存在著許多不相關的冗余流量,影響數據包收集的效果。其次,真實環境下,用戶訪問目標網站的時間是隨機的,攻擊者很難保證避免數據切換的發生,這一過程中必然導致用戶與守衛節點間通訊產生的數據包干擾。因此,攻擊者要想保證自己指紋庫的更新,必須以較高的頻率對更新過的網站進行指紋提取與訓練。這對于攻擊者來說,是十分巨量的工作,這在現實生活中也是難以做到的。