一種發(fā)現(xiàn)并收集i2p網(wǎng)絡中節(jié)點的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法,包括以下步驟:步驟1:獲取多個FloodFill節(jié)點作為種子節(jié)點;步驟2:啟動至少一個I2P路由器;步驟3:構(gòu)造節(jié)點查詢消息并發(fā)送至種子節(jié)點,迭代查詢在I2P網(wǎng)絡的ID鍵空間中所有FloodFill節(jié)點,并收集到FloodFill節(jié)點集;步驟4:發(fā)送一個非FloodFill節(jié)點查詢消息到FloodFill節(jié)點集中的一個FloodFill節(jié)點上,收集所述FloodFill節(jié)點周圍的所有非FloodFill節(jié)點;步驟5:判斷FloodFill節(jié)點集中是否存在未收到非FloodFill節(jié)點查詢消息的節(jié)點,如果是,進行步驟4;否則,繼續(xù);步驟6:完成非FloodFill節(jié)點的收集。本發(fā)明可評估、改善匿名通信系統(tǒng)I2P的安全性。
【專利說明】—種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法及系統(tǒng)
【技術(shù)領域】
[0001]本發(fā)明涉及一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法及系統(tǒng),屬于匿名通信領域?!颈尘凹夹g(shù)】
[0002]近年來,Internet逐漸成為人們?nèi)粘I詈蛫蕵返闹匾ぞ摺Ec此同時,隨著Internet的發(fā)展,以及人們對于網(wǎng)上行為隱私保護的需求,匿名通信系統(tǒng)得到了越來越多的關(guān)注和發(fā)展。
[0003]Tor是現(xiàn)今最流行的匿名通信系統(tǒng)之一,它采用洋蔥路由的方式(一般是三跳)對用戶的通信過程進行加密,從而使得每一個中間節(jié)點只能知道它的前一節(jié)點和后繼節(jié)點,而無法同時知道整個通信過程的雙方。Tor采用集中式的統(tǒng)一目錄服務器來管理整個Tor網(wǎng)絡中的所有節(jié)點,每一個Tor用戶都需要從目錄服務器獲取節(jié)點信息,并根據(jù)節(jié)點信息中的標志選取合適的節(jié)點建立通信鏈路。
[0004]I2P (The Invisible Internet Project)匿名通信系統(tǒng)也是現(xiàn)今最流行的匿名通信系統(tǒng)之一,同樣基于洋蔥路由的加密方式,然而與Tor采用統(tǒng)一的目錄服務器不同,I2P采用基于DHT的結(jié)構(gòu)化P2P網(wǎng)絡架構(gòu),這使得I2P能夠更好的防范針對關(guān)鍵節(jié)點的DDOS攻擊,并使得I2P網(wǎng)絡擁有良好的穩(wěn)定性和擴展性。I2P網(wǎng)絡中的DHT稱為NetDB,構(gòu)成NetDB的節(jié)點稱為FloodFill節(jié)點,NetDB中存儲兩類元數(shù)據(jù):RouterInfo和LeaseSet,其中RouterInfo中存儲到一個節(jié)點的連接方式和秘鑰,而LeaseSet中存儲到一個I2P服務的連接方式。每一個I2P節(jié)點在發(fā)現(xiàn)本地節(jié)點數(shù)目不足或者節(jié)點過期時,都會發(fā)送一個查詢消息到距離自己最近(根據(jù)ID的XOR距離)的FloodFill節(jié)點進行查詢,F(xiàn)loodFill節(jié)點會根據(jù)查詢消息中的標識位來決定返回FloodFill節(jié)點或者非FloodFill節(jié)點。
[0005]最新研究1表明,I2P網(wǎng)絡的P2P架構(gòu)以及所采用的查詢/響應機制,使得攻擊者可以進行阻止服務訪問的Eclipse攻擊,進而破壞用戶的匿名性。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問題是,針對現(xiàn)有技術(shù)的不足,提供一種便于評價基于網(wǎng)絡構(gòu)架進行的攻擊對整個I2P網(wǎng)絡造成的影響,并能提出針對此類攻擊的改進建議的發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法。
[0007]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法,具體包括以下步驟:
[0008]步驟1:獲取多個FloodFill節(jié)點作為種子節(jié)點;
[0009]步驟2:在一個I2P網(wǎng)絡中啟動至少一個I2P路由器;
[0010]步驟3:構(gòu)造節(jié)點查詢消息,將所述節(jié)點查詢信息發(fā)送至種子節(jié)點,通過節(jié)點查詢信息查詢與種子節(jié)點相鄰的多個FloodFill節(jié)點,迭代查詢在I2P網(wǎng)絡的ID鍵空間中所有FloodFill節(jié)點,并將所有FloodFill節(jié)點收集到FloodFill節(jié)點集;
[0011]步驟4:發(fā)送一個非FloodFill節(jié)點查詢消息到FloodFill節(jié)點集中的一個FloodFill節(jié)點上,收集所述FloodFill節(jié)點周圍的所有非FloodFill節(jié)點;
[0012]步驟5:判斷FloodFill節(jié)點集中是否存在未收到非FloodFill節(jié)點查詢消息的節(jié)點,如果是,進行步驟4 ;否則,繼續(xù)下一步;
[0013]步驟6:完成非FloodFill節(jié)點的收集,將所有非FloodFill節(jié)點收集到非FloodFill節(jié)點集中;
[0014]步驟7 =FloodFill節(jié)點集和非FloodFill節(jié)點集實現(xiàn)網(wǎng)絡中節(jié)點的收集。
[0015]本發(fā)明的有益效果是:本發(fā)明所述的方法能夠有效發(fā)現(xiàn)并收集到I2P網(wǎng)絡中的FloodFill節(jié)點和非FloodFill節(jié)點,了解I2P網(wǎng)絡的整體狀況,便于評估基于網(wǎng)絡架構(gòu)進行的攻擊對整個I2P網(wǎng)絡造成的影響,并在此基礎之上為防范此類攻擊給出改進建議。
[0016]在上述技術(shù)方案的基礎上,本發(fā)明還可以做如下改進。
[0017]進一步,所述步驟3具體包括以下步驟:
[0018]步驟3.1:構(gòu)造節(jié)點查詢消息,將所述節(jié)點查詢信息發(fā)送至所有種子節(jié)點;
[0019]步驟3.2:查詢到種子節(jié)點相鄰的所有FloodFill節(jié)點并收集到FloodFill節(jié)點集中;
[0020]步驟3.3:判斷I2P網(wǎng)絡的ID鍵空間中是否存在未收集的FloodFill節(jié)點集,如果是,將查詢到的FloodFill節(jié)點作為種子節(jié)點,返回步驟3.2 ;否則,繼續(xù)下一步;
[0021]步驟3.4:將查詢到的所有FloodFill節(jié)點收集到FloodFill節(jié)點集。
[0022]進一步,所述查詢消息包括一個查詢鍵和一個標志位,F(xiàn)loodFill節(jié)點接收到查詢消息后會根據(jù)查詢鍵返回與FloodFill節(jié)點異或距離最小的三個節(jié)點,再根據(jù)標志位確定查詢到的節(jié)點是否是FloodFill節(jié)點。
[0023]進一步,所述異或距離的計算公式,在假設所有節(jié)點均勻分布的情況下,采用以下公式(I):
[0024]D=1g2 (2n/m) (I)
[0025]以上公式(I)中D表示兩個節(jié)點之間的異或距離,m表示整個I2P網(wǎng)絡中節(jié)點個數(shù),η表示每個Ι2Ρ節(jié)點ID的長度(單位是bits)。
[0026]本發(fā)明所要解決的另一個技術(shù)問題是,針對現(xiàn)有技術(shù)的不足,提供一種便于評價基于網(wǎng)絡構(gòu)架進行的攻擊對整個I2P網(wǎng)絡造成的影響,并能提出針對此類攻擊的改進建議的發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的系統(tǒng)。
[0027]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的系統(tǒng),包括:獲取模塊、啟動模塊、FloodFill節(jié)點查詢模塊、非FloodFill節(jié)點查詢模塊和判斷豐吳塊;
[0028]所述獲取模塊用于獲取多個FloodFill節(jié)點作為種子節(jié)點;
[0029]所述啟動模塊用于在一個I2P網(wǎng)站中啟動至少一個I2P路由器;
[0030]所述FloodFill節(jié)點查詢模塊用于構(gòu)造節(jié)點查詢消息,將所述節(jié)點查詢信息發(fā)送至種子節(jié)點,通過節(jié)點查詢信息查詢與種子節(jié)點相鄰的多個FloodFill節(jié)點,迭代查詢在I2P網(wǎng)絡的ID鍵空間中所有FloodFill節(jié)點,并將所有FloodFill節(jié)點收集到FloodFill節(jié)點集;
[0031]所述非FloodFill節(jié)點查詢模塊用于發(fā)送一個非FloodFill節(jié)點查詢消息到FloodFill節(jié)點集中的一個FloodFill節(jié)點上,收集所述FloodFill節(jié)點周圍的所有非FloodFill節(jié)點到非FloodFill節(jié)點集中;
[0032]所述判斷模塊用于判斷I2P網(wǎng)絡的ID鍵空間中所有FloodFill節(jié)點是否接收全部接收到非FloodFill節(jié)點查詢消息,如果是,完成非FloodFill節(jié)點的收集;否則,返回所述非FloodFill節(jié)點查詢模塊。
[0033]本發(fā)明的有益效果是:本發(fā)明所述的方法能夠有效發(fā)現(xiàn)并收集到I2P網(wǎng)絡中的FloodFill節(jié)點和非FloodFill節(jié)點,了解I2P網(wǎng)絡的整體狀況,便于評估基于網(wǎng)絡架構(gòu)進行的攻擊對整個I2P網(wǎng)絡造成的影響,并在此基礎之上為防范此類攻擊給出改進建議。
[0034]在上述技術(shù)方案的基礎上,本發(fā)明還可以做如下改進。
[0035]進一步,所述FloodFill節(jié)點查詢模塊包括:構(gòu)造模塊、子查詢模塊和節(jié)點判斷模塊;
[0036]所述構(gòu)造模塊用于構(gòu)造節(jié)點查詢消息,將所述節(jié)點查詢信息發(fā)送至所有種子節(jié)
占.[0037]所述子查詢模塊用于查詢到種子節(jié)點相鄰的所有FloodFill節(jié)點并收集到FloodFill節(jié)點集中;
[0038]所述節(jié)點判斷模塊用于判斷12P網(wǎng)絡的ID鍵空間中是否存在未收集的FloodFi 11節(jié)點集,如果是,將查詢到的FloodFill節(jié)點作為種子節(jié)點,并將所述種子節(jié)點發(fā)送到子查詢模塊;否則,將查詢到的所有FloodFill節(jié)點收集到FloodFill節(jié)點集。
[0039]進一步,所述查詢消息包括一個查詢鍵和一個標志位,F(xiàn)loodFill節(jié)點接收到查詢消息后會根據(jù)查詢鍵返回與FloodFill節(jié)點異或距離最小的三個節(jié)點,再根據(jù)標志位確定查詢到的節(jié)點是否是FloodFill節(jié)點。
[0040]進一步,所述異或距離的計算公式,在假設所有節(jié)點均勻分布的情況下,采用以下公式(I):
[0041]D=1g2 (2n/m) (I)
[0042]以上公式(I)中D表示兩個節(jié)點之間的異或距離,m表示整個I2P網(wǎng)絡中節(jié)點個數(shù),η表示每個Ι2Ρ節(jié)點ID的長度(單位是bits)。
[0043]根據(jù)I2P的結(jié)構(gòu)特征和查詢/響應機制,本發(fā)明提出使用自構(gòu)造查詢信息,并向指定FloodFill節(jié)點發(fā)送查詢信息的思路來收集I2P節(jié)點。節(jié)點的收集分為兩個層次,首先是在整個I2P網(wǎng)絡中的ID鍵空間(KeySpace)中采用迭代的方式收集FloodFill節(jié)點,其次,對收集到的每一個FloodFill節(jié)點進行遍歷查詢,收集其上存儲的非FloodFill節(jié)點。
[0044]本發(fā)明擁有以下的
【發(fā)明內(nèi)容】
:
[0045]I)構(gòu)造指定的查詢消息。針對一個要查詢的節(jié)點ID和一個查詢目標FloodFill節(jié)點,本發(fā)明可以構(gòu)造特定的查詢消息[見算法3],并發(fā)送給相應的FloodFill節(jié)點,進而可以收集返回結(jié)果。
[0046]2)收集FloodFill節(jié)點。根據(jù)I2P統(tǒng)計網(wǎng)站聲明,目前整個I2P網(wǎng)絡中大概有400個FloodFill節(jié)點,又因為每個I2P節(jié)點ID的長度是256bits,所以在假設FloodFill節(jié)點均勻分布的情況下,每兩個FloodFill節(jié)點的異或距離為:
【權(quán)利要求】
1.一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法,其特征在于,具體包括以下步驟: 步驟1:獲取多個FloodFill節(jié)點作為種子節(jié)點; 步驟2:在一個I2P網(wǎng)絡中啟動至少一個I2P路由器; 步驟3:構(gòu)造節(jié)點查詢消息,將所述節(jié)點查詢信息發(fā)送至種子節(jié)點,通過節(jié)點查詢信息查詢與種子節(jié)點相鄰的多個FloodFill節(jié)點,迭代查詢在I2P網(wǎng)絡的ID鍵空間中所有FloodFill節(jié)點,并將所有FloodFill節(jié)點收集到FloodFill節(jié)點集; 步驟4:發(fā)送一個非FloodFill節(jié)點查詢消息到FloodFill節(jié)點集中的一個FloodFill節(jié)點上,收集所述FloodFill節(jié)點周圍的所有非FloodFill節(jié)點; 步驟5:判斷FloodFill節(jié)點集中是否存在未收到非FloodFill節(jié)點查詢消息的節(jié)點,如果是,進行步驟4 ;否則,繼續(xù)下一步; 步驟6:完成非FloodFill節(jié)點的收集,將所有非FloodFill節(jié)點收集到非FloodFill節(jié)點集中; 步驟7 =FloodFill節(jié)點集和非FloodFill節(jié)點集實現(xiàn)網(wǎng)絡中節(jié)點的收集。
2.根據(jù)權(quán)利要求1 所述的一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法,其特征在于,所述步驟3具體包括以下步驟: 步驟3.1:構(gòu)造節(jié)點查詢消息,將所述節(jié)點查詢信息發(fā)送至所有種子節(jié)點; 步驟3.2:查詢到種子節(jié)點相鄰的所有FloodFill節(jié)點并收集到FloodFill節(jié)點集中;步驟3.3:判斷I2P網(wǎng)絡的ID鍵空間中是否存在未收集的FloodFill節(jié)點集,如果是,將查詢到的FloodFill節(jié)點作為種子節(jié)點,返回步驟3.2 ;否則,繼續(xù)下一步; 步驟3.4:將查詢到的所有FloodFill節(jié)點收集到FloodFill節(jié)點集。
3.根據(jù)權(quán)利要求1或2所述的一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法,其特征在于,所述查詢消息包括一個查詢鍵和一個標志位,F(xiàn)loodFill節(jié)點接收到查詢消息后會根據(jù)查詢鍵返回與FloodFill節(jié)點異或距離最小的三個節(jié)點,再根據(jù)標志位確定查詢到的節(jié)點是否是 FloodFill 節(jié)點。
4.根據(jù)權(quán)利要求3所述的一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的方法,其特征在于,所述異或距離的計算公式,在假設所有節(jié)點均勻分布的情況下,采用以下公式(I): D=1g2 (2n/m) (I) 以上公式(I)中D表示兩個節(jié)點之間的異或距離,m表示整個I2P網(wǎng)絡中節(jié)點個數(shù),η表示每個Ι2Ρ節(jié)點ID的長度(單位是bits)。
5.一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的系統(tǒng),其特征在于,包括:獲取模塊、啟動模塊、FloodFill節(jié)點查詢模塊、非FloodFill節(jié)點查詢模塊和判斷模塊; 所述獲取模塊用于獲取多個FloodFill節(jié)點作為種子節(jié)點; 所述啟動模塊用于在一個I2P網(wǎng)站中啟動至少一個I2P路由器; 所述FloodFill節(jié)點查詢模塊用于構(gòu)造節(jié)點查詢消息,將所述節(jié)點查詢信息發(fā)送至種子節(jié)點,通過節(jié)點查詢信息查詢與種子節(jié)點相鄰的多個FloodFill節(jié)點,迭代查詢在I2P網(wǎng)絡的ID鍵空間中所有FloodFill節(jié)點,并將所有FloodFill節(jié)點收集到FloodFill節(jié)點集; 所述非FloodFi 11節(jié)點查詢模塊用于發(fā)送一個非FloodFi 11節(jié)點查詢消息到FloodFill節(jié)點集中的一個FloodFill節(jié)點上,收集所述FloodFill節(jié)點周圍的所有非FloodFill節(jié)點到非FloodFill節(jié)點集中; 所述判斷模塊用于判斷I2P網(wǎng)絡的ID鍵空間中所有FloodFill節(jié)點是否接收全部接收到非FloodFill節(jié)點查詢消息,如果是,完成非FloodFill節(jié)點的收集;否則,返回所述非FloodFill節(jié)點查詢模塊。
6.根據(jù)權(quán)利要求5所述的一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的系統(tǒng),其特征在于,所述FloodFill節(jié)點查詢模塊包括:構(gòu)造模塊、子查詢模塊和節(jié)點判斷模塊; 所述構(gòu)造模塊用于構(gòu)造節(jié)點查詢消息,將所述節(jié)點查詢信息發(fā)送至所有種子節(jié)點; 所述子查詢模塊用于查詢到種子節(jié)點相鄰的所有FloodFill節(jié)點并收集到FloodFill節(jié)點集中; 所述節(jié)點判斷模塊用于判斷I2P網(wǎng)絡的ID鍵空間中是否存在未收集的FloodFill節(jié)點集,如果是,將查詢到的FloodFill節(jié)點作為種子節(jié)點,并將所述種子節(jié)點發(fā)送到子查詢模塊;否則,將查詢到的所有FloodFill節(jié)點收集到FloodFill節(jié)點集。
7.根據(jù)權(quán)利要求5或6所述的一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的系統(tǒng),其特征在于,所述查詢消息包括一個查詢鍵和一個標志位,F(xiàn)loodFill節(jié)點接收到查詢消息后會根據(jù)查詢鍵返回與FloodFill節(jié)點異或距離最小的三個節(jié)點,再根據(jù)標志位確定查詢到的節(jié)點是否是 FloodFill 節(jié)點。
8.根據(jù)權(quán)利要求7所述的一種發(fā)現(xiàn)并收集I2P網(wǎng)絡中節(jié)點的系統(tǒng),其特征在于,所述異或距離的計算公式,在假設所有節(jié)點均勻分布的情況下,采用以下公式(I): D=1g2 (2n/m) (I) 以上公式(I)中D表示兩個節(jié)點之間的異或距離,m表示整個I2P網(wǎng)絡中節(jié)點個數(shù),η表示每個Ι2Ρ節(jié)點ID的長度(單位是bits)。
【文檔編號】H04L29/06GK103532791SQ201310512125
【公開日】2014年1月22日 申請日期:2013年10月25日 優(yōu)先權(quán)日:2013年10月25日
【發(fā)明者】時金橋, 譚慶豐, 劉培朋, 王嘯, 張文濤 申請人:中國科學院信息工程研究所