孟浩 蘇怡斐 閆茹
摘? 要: 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,人們越來越重視個人隱私。I2P(Invisible Internet Project)是一種低時延的匿名通信系統(tǒng),旨在保護(hù)用戶通信免受法網(wǎng)監(jiān)視和第三方(如ISP)的監(jiān)視。它內(nèi)部集成了諸多應(yīng)用可供用戶使用,比如email通信,IRC匿名聊天,網(wǎng)頁瀏覽以及文件共享P2P下載等等。本文設(shè)計和完成了一個I2P節(jié)點數(shù)據(jù)分析系統(tǒng)IRAS(I2P RouterInfo Analyze System),通過在中國,美國,英國,德國,澳大利亞部署I2P服務(wù)器來獲取節(jié)點信息,來對不同特征的節(jié)點數(shù)據(jù)樣本進(jìn)行實驗分析,統(tǒng)計樣本特性。
關(guān)鍵詞: 匿名通信;節(jié)點信息;數(shù)據(jù)分析
【Abstract】: With the development of network, people are paying more attention to personal privacy. I2P is a low-latency anonymous communication system designed to protect user communications from French-language surveillance and third-party. It integrates many applications such as email communication, web browsing and file sharing P2P download. We design and implement an I2P node data analysis system IRAS (I2P RouterInfo Analyze System). We obtain I2P node information by deploying I2P servers in China, the United States, the United Kingdom, Germany, and Australia. The node data of different characteristics are statistically analyzed.
【Key words】: I2P; Anonymous communication; Node information; Data analysis
0? 引言
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,個人隱私成為人們越來越關(guān)注的問題[1]。匿名技術(shù)是網(wǎng)絡(luò)安全領(lǐng)域中非常重要的一個研究課題[2],使用一些變換方法將通信流中用戶的身份信息、通信消息主體、通信雙方的對應(yīng)關(guān)系以及信息傳播途徑等信息加以隱匿[3],從而達(dá)到保護(hù)個人隱私的目的[4]。1981年,David Chaum首次提出了匿名通信系統(tǒng)的概念[5],核心思想為MIX,即消息通過多個路由轉(zhuǎn)發(fā)、分層加密,中間的路由無法獲知消息的發(fā)送方和接收方的身份信息?;谶@一概念,The Onion Router (Tor) 匿名通信系統(tǒng)得以產(chǎn)生[6],Tor是一個分布式的匿名網(wǎng)絡(luò),由Tor節(jié)點和維護(hù)者運行的中央目錄服務(wù)器組成,目錄服務(wù)器存儲Tor網(wǎng)絡(luò)的所有信息,Tor節(jié)點可以從目錄服務(wù)器下載這些網(wǎng)絡(luò)數(shù)據(jù)并加入到Tor網(wǎng)絡(luò)中。然而Tor這種相對集中的設(shè)計使它收到了一些限制,此時又一個匿名系統(tǒng)產(chǎn)生了,Invisible Internet Project(I2P)。
I2P有許多供用戶選擇的應(yīng)用程序,比如匿名瀏覽網(wǎng)頁、聊天、文件共享、網(wǎng)絡(luò)托管、電子郵件和博客等等。除了匿名web瀏覽需要一個到正常Internet的出口代理之外,其他的應(yīng)用程序都是在I2P自身的網(wǎng)絡(luò)中交互,這也是造成它的用戶量級要遠(yuǎn)小于Tor的原因[7],而且在Tor中,網(wǎng)絡(luò)信息是集中化的,關(guān)于中繼節(jié)點和隱藏服務(wù)的信息由位于美國和歐洲的(目前是九個)權(quán)威目錄服務(wù)器提供,這些權(quán)威目錄服務(wù)器跟蹤網(wǎng)絡(luò)的變化和分發(fā)信息,但是在I2P中并不存在這種集中化,它使用分布式結(jié)構(gòu),每個參與中繼的節(jié)點在本地維護(hù)所有已知節(jié)點的列表,如果想要獲取某一個節(jié)點的信息,很可能需要查詢許多節(jié)點才能在其他節(jié)點的路由表上找到該節(jié)點信息[8]。所以針對I2P網(wǎng)絡(luò)的測量以及分析工作遠(yuǎn)遠(yuǎn)少于Tor。
本文提出的I2P節(jié)點數(shù)據(jù)分析系統(tǒng)IRAS以自己部署的普通I2P節(jié)點以及floodfill節(jié)點獲取到的匿名通信系統(tǒng)I2P的真實數(shù)據(jù)作為輸入,在不同的屬性指標(biāo)下,分別統(tǒng)計分析這些節(jié)點的網(wǎng)絡(luò)特征,幫助匿名網(wǎng)絡(luò)領(lǐng)域的研究人員可以更為有效的獲取到I2P網(wǎng)絡(luò)的系統(tǒng)特性,進(jìn)一步了解I2P系統(tǒng)。
1? 需求分析
1.1? 設(shè)計目標(biāo)
可行性:通過調(diào)研分析I2P系統(tǒng)的往年研究成果、系統(tǒng)開發(fā)者的技術(shù)文檔以及系統(tǒng)IRAS的實際功能性需求,該系統(tǒng)在實踐上具有良好的可行性,相關(guān)的學(xué)習(xí)代碼較為容易,對于系統(tǒng)的開發(fā)以及使用都很容易上手。
無侵害性:即使有的研究人員通過爬蟲或者向其他floodfill節(jié)點偽造請求的方式獲得了大量的網(wǎng)絡(luò)元數(shù)據(jù),但是I2P的設(shè)計者在官網(wǎng)上有規(guī)定[9],不得作出影響I2P網(wǎng)絡(luò)的行為,并且只能收集自己的數(shù)據(jù),所以I2P數(shù)據(jù)分析系統(tǒng)必須對I2P網(wǎng)絡(luò)的侵害降至最低,最好具有無侵害性。
準(zhǔn)確性:雖然系統(tǒng)收集到的數(shù)據(jù)不可能涵蓋整個I2P網(wǎng)絡(luò),但是在對這些數(shù)據(jù)進(jìn)行抽取實驗時,必須做到分析的全面與準(zhǔn)確,盡最大的可能保證系統(tǒng)實驗結(jié)果的客觀準(zhǔn)確性。
可伸縮性:對于實際的I2P網(wǎng)絡(luò),時刻存在著路由節(jié)點加入或者離開網(wǎng)絡(luò)的現(xiàn)象,并且I2P網(wǎng)絡(luò)是分布式的,本系統(tǒng)提供應(yīng)該是能夠?qū)崟r獲取網(wǎng)絡(luò)節(jié)點數(shù)據(jù),并且系統(tǒng)的架構(gòu)是可以伸縮的,以應(yīng)對更大數(shù)據(jù)量的需求。
1.2? 系統(tǒng)用例圖
IRAS在不同角色下使用是不完全相同的,系統(tǒng)的管理員擁有對最初數(shù)據(jù)的處理的權(quán)限,而一般的用戶沒有這部分工作的權(quán)限,只能在數(shù)據(jù)處理成功之后才能參與到數(shù)據(jù)的統(tǒng)計工作中來,對于涉及到最后結(jié)果展示的制定統(tǒng)計規(guī)則規(guī)劃圖表的工作,管理員和用戶的權(quán)限是相同的,兩者都可以參與。圖1是IRAS使用角色用例圖。
2? 系統(tǒng)總體設(shè)計
I2P節(jié)點數(shù)據(jù)分析系統(tǒng)IRAS的功能主要可以從數(shù)據(jù)獲取,數(shù)據(jù)處理,數(shù)據(jù)存儲以及數(shù)據(jù)統(tǒng)計等方面闡述,數(shù)據(jù)獲取模塊主要實現(xiàn)本地數(shù)據(jù)的讀取,遠(yuǎn)程服務(wù)器數(shù)據(jù)讀取以及數(shù)據(jù)庫讀取,數(shù)據(jù)處理模塊主要實現(xiàn)獲取數(shù)據(jù)之后的轉(zhuǎn)換工作,包括輸入流的字節(jié)流轉(zhuǎn)換,RouterInfo實例封裝以及有效信息的抽取,數(shù)據(jù)存儲模塊負(fù)責(zé)將處理好的數(shù)據(jù)寫入硬盤,包括有效信息入庫以及存量數(shù)據(jù)更新,數(shù)據(jù)統(tǒng)計功能模塊則是將轉(zhuǎn)換成功的數(shù)據(jù)統(tǒng)計出來顯示在前端頁面上,包括統(tǒng)計規(guī)則的制定,圖表繪制以及多數(shù)據(jù)對比。圖2展示了IRAS功能設(shè)計圖。
3? 模塊設(shè)計
3.1? 數(shù)據(jù)獲取
從RouterInfo文件可以得到節(jié)點的很多特征信息,比如節(jié)點的IP地址(國家地區(qū)),版本號,在線時間等信息。有些信息可以在I2P啟動之后的控制面板上看到,但這些數(shù)據(jù)只有本機(jī)實時獲取的RouterInfo,并沒有其他時間的歷史信息。我們可以通過對多方獲取到的RouterInfo進(jìn)行分析,得到I2P網(wǎng)絡(luò)的一般化特征。根據(jù)I2P官網(wǎng)上對研究者的規(guī)定,為了在測試真實環(huán)境時不為I2P系統(tǒng)增加網(wǎng)絡(luò)負(fù)擔(dān),我們并不采取向別的路由節(jié)點發(fā)消息后獲取節(jié)點信息的方法,而是通過在不同國家設(shè)置I2P服務(wù)器,來對不同特征的節(jié)點數(shù)據(jù)樣本進(jìn)行實驗分析,統(tǒng)計樣本特性。
根據(jù)Hoang等人的研究,設(shè)置10個floodfill節(jié)點floodfill節(jié)點,10個非floodfill節(jié)點就足夠獲得I2P的網(wǎng)絡(luò)特性,為了得到網(wǎng)絡(luò)特性是否和地域有關(guān)聯(lián)關(guān)系,我們通過每天定時19:00在中國,美國,英國,德國,澳大利亞部署I2P服務(wù)器來下載RouterInfo信息,每個國家各有四臺服務(wù)器,其中兩臺為floodfill節(jié)點,另外兩臺為普通節(jié)點,共計20個服務(wù)器,實驗周期為10天服務(wù)器開啟之后,我們在這些機(jī)器上都配置好Java運行環(huán)境以及I2P的軟件包,這樣每一臺機(jī)器上的/root/.i2p/netDb(如果不對I2P啟動文件i2prouter.sh做出修改的話,/root/.i2p/netDb是默認(rèn)的netDb存儲文件)路徑下就會存在該機(jī)器獲取到的routerinfo文件。數(shù)據(jù)采集的流程圖如4所示。
3.2? 數(shù)據(jù)處理
我們可以通過net.i2p.data.router.RouterInfo類中的相關(guān)方法解析這些RouterInfo文件,獲取到節(jié)點信息。其中可以為我們所用的是addresses以及options屬性,我們可以通過對ip,caps,router.version等變量進(jìn)行統(tǒng)計分析,得到I2P網(wǎng)絡(luò)的樣本特征。
處理數(shù)據(jù)的第一步是將這些RouterInfo文件轉(zhuǎn)換成輸入流讀入Java程序,之后通過I2P解析函數(shù)將每個RouterInfo文件導(dǎo)出成RouterInfo類實例,便于在下一步提取一些有用的信息。
第二步則是提取有用的信息,比如ip,caps等,將這些屬性集合成新的TransData類實例,也就是之后直接用于統(tǒng)計分析的類。
此模塊的流程圖如圖5所示。
3.3? 數(shù)據(jù)存儲
I2P的控制面板上也能夠看到一些本地I2P路由抓取節(jié)點的實時網(wǎng)絡(luò)數(shù)據(jù)信息,如這些節(jié)點的版本信息,使用協(xié)議傳輸情況以及節(jié)點所處國家信息。但是這些統(tǒng)計數(shù)據(jù)
是軟件運行時需要的實時數(shù)據(jù),如果用戶想要了解過去一小時或者一天的數(shù)據(jù)的話,該網(wǎng)頁是無法提供這些數(shù)據(jù)的。為了處理這一矛盾,IRAS引入了數(shù)據(jù)存儲模塊,在加載完實時數(shù)據(jù)并完成數(shù)據(jù)處理流程之后,直接存儲進(jìn)關(guān)系型數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)從內(nèi)存到磁盤的轉(zhuǎn)換,以備查詢歷史數(shù)據(jù)的需求。下圖6為此模塊流程圖。
3.4? 數(shù)據(jù)統(tǒng)計
我們將從各個服務(wù)器每天定點下載的Router Info文件中解析到的數(shù)據(jù)存放到MySQL數(shù)據(jù)庫中,用戶如果想獲得某項數(shù)據(jù)的統(tǒng)計信息,可以利用IRAS的統(tǒng)計規(guī)則從數(shù)據(jù)庫提取數(shù)據(jù)。IRAS的管理員以及用戶都可以建立數(shù)據(jù)的統(tǒng)計規(guī)則,比如,所有節(jié)點的國家分布中位于前十的國家,I2P版本信息分布等等。建立規(guī)則時采用的方式是利用數(shù)據(jù)庫的sql語句查詢數(shù)據(jù)庫,返回符合條件的數(shù)據(jù)集合,之后根據(jù)各項數(shù)據(jù)的值繪制統(tǒng)計二維圖表,如柱狀圖、餅狀圖和折線圖等等。下圖7展示了數(shù)據(jù)統(tǒng)計模塊的流程圖。
4? 實驗結(jié)果
我們將展示收集到的RouterInfo的統(tǒng)計信息,這些信息是通過分散在世界各地的I2P路由器收集到,路由器分別位于美國、英國、澳大利亞、德國、中國,實驗周期共計10天。
I2P開發(fā)者根據(jù)節(jié)點的操作模式,可達(dá)性以及共享帶寬將每一個節(jié)點都分了類,并將分類之后的標(biāo)識符寫入了RouterInfo文件中,具體位于Rou terInfo.options.caps屬性。我們可以通過對這些標(biāo)志符的分布情況進(jìn)行分析進(jìn)而得到I2P網(wǎng)絡(luò)的概要情況。對于caps中的每一個字符都代表著不同的含義:
caps中會有該節(jié)點共享帶寬的估算值,比如K代表共享帶寬低于12 KBps,L代表共享帶寬位于12到48KBps之間,M代表共享帶寬位于48到64KBps之間,N代表共享帶寬位于64到128 KBps之間,O代表共享帶寬位于128到256 KBps之間,P代表共享帶寬位于256到2000 KBps之間,X代表共享帶寬大于2000 KBps;
圖8展示了不同數(shù)量級的RouterInfo信息中共享帶寬的分布情況。可以看出,不管是什么樣的數(shù)量級,占比最大的種類為N,其次為O。
5? 結(jié)論
I2P是一個低延遲、面向消息的匿名網(wǎng)絡(luò),本文提出的I2P節(jié)點數(shù)據(jù)分析系統(tǒng)IRAS,通過收集、處理、存儲、統(tǒng)計分析真實的I2P網(wǎng)絡(luò)數(shù)據(jù)得出I2P系統(tǒng)運行時的用戶數(shù)據(jù)的整體特性。IRAS為I2P研究人員提供一個節(jié)點數(shù)據(jù)分析和網(wǎng)絡(luò)性能研究的工具,促進(jìn)I2P匿名網(wǎng)絡(luò)研究與發(fā)展。
參考文獻(xiàn)
齊榮. 用戶隱私研究綜述[J]. 軟件, 2015, 36(1): 125-130.
李磊. 數(shù)據(jù)通信網(wǎng)絡(luò)安全維護(hù)策略探討[J]. 軟件, 2018, 39(7): 191-193.
張小波, 付達(dá)杰. 網(wǎng)絡(luò)信息資源個性化推薦中隱私保護(hù)的研究[J]. 軟件, 2015, 36(4): 62-66.
張信媛, 陸天波. 一種用于P2P 文件共享網(wǎng)絡(luò)的匿名通信方案[J]. 軟件, 2015, 36(12): 05-08.
Chaum, D. Untraceable electronic mail, return addresses, and digital pseudonyms [J]. Communications of ACM 24(2), 1981, 84–88.
韓越, 陸天波. Tor 隱匿服務(wù)可擴(kuò)展性研究[J]. 軟件, 2016, 37(02): 66-73.
Introduction to Anonymizing Networks–Tor vs I2P. [Online].
Gao Y., Tan Q., Shi J., Wang X., & Chen M. Large-scale discovery and empirical analysis for I2P eepSites [A]. In Computers and Communications (ISCC), 2017 IEEE Symposium, 444-449.
I2P Official Homepage [EB/OL]. I2P Academic Research Guidelines. https://geti2p.net/en/research, 2018-12.