用于快速提升Sybil節點重要性的滲透方法
【專利摘要】本發明公開了一種用于快速提升Sybil節點重要性的滲透方法,目的是提供一種快速提升Sybil節點在Kademlia網絡中的入度和Sybil節點重要性的方法。技術方案是根據距離遠近將被滲透節點分為多個編組,根據活躍程度對編組內節點進行排序,實現活躍節點優先和遠距離節點優先;成為高活躍度節點的鄰居,Sybil節點借助該高活躍度節點讓更多其它節點訪問到它,從而獲得提高入度的更多機會;成為遠距離節點的鄰居,Sybil節點更頻繁地被該遠距離節點推薦給其它節點,從而獲得提高入度的更多機會。整個滲透方法每隔一個滲透周期重新實施一次。采用本發明可以大大提升Sybil節點的入度,快速提高Sybil節點的重要性,且有效克服Kademlia網絡動態性對Sybil節點重要性的影響。
【專利說明】用于快速提升Sybi I節點重要性的滲透方法
【技術領域】
[0001]本發明涉及Sybil節點的一種滲透方法,是一種快速提升Sybil節點在Kademlia網絡中重要性的方法。
【背景技術】
[0002]Sybil節點原指具有多重身份的單個實體節點,目前通常將網絡中的虛假節點都稱為Sybil節點。對于Kademlia網絡中的Sybil節點,其重要性主要體現為能夠成為多少節點的鄰居節點,即該Sybil節點的入度大小。快速提高Sybil節點的重要性,有助于利用Sybil節點更多、更高效地獲知網絡中大量節點的活動情況,從而為快速發現和遏制網絡中的惡意活動提供技術支撐。
[0003]Kademlia協議是一種典型的DHT (Distributed Hash Table,分布哈希表)協議,廣泛用于構建大規模、純分布式P2P (Peer to Peer)網絡,如電驢、BitTorrent等。Kademlia給每個結點分配一個唯一、隨機的標識,即nodeID,為每個對象分配一個類似的標識,即objectID(又稱為key)。這些ID通常使用SHA-1這種單項散列函數來生成,ID之間的距
離采用異或運算來度量。
[0004]在Kademlia網絡中,每個對象都存儲在nodeID最接近其objectID的K個節點上。K 一般取值為20。
[0005]每個Kademlia節點的路由表由L(L等于節點標識的比特位數)個鏈表組成,每個鏈表稱為一個“K-bucket”,用于記錄網絡中到自己的異或距離在區間[2i,2i+1) (i為K-bucket的序號,O≤i < L)內的鄰居節點的信息,每條信息以三元組< IP地址,UDP端口號,nodeID >形式表示和存儲。Kademlia協議規定,K-bucket長度以K為上限。每當Kademlia節點收到來自其他節點的消息,它就根據該消息發送節點到自己的異或距離以及消息中的< IP地址,UDP端口號,nodeID >信息來更新K-bucket中的記錄,這稱為捎帶確認(piggybacking)。L個K-bucket組成一個Kademlia節點的路由表,因此路由表也稱“K-buckets”。一個路由表中的L個K-bucket通過連續的序號i區分。
[0006]Kademlia協議由四個RPC(Remote Process Call,遠程過程調用,是一種命令)組成,其名稱分別是PING,STORE, FIND_N0DE, FIND_VALUE,它們的工作如下所示:
[0007]PING:用來探測一個結點是否在線;
[0008]STORE:指示一個結點存儲一個< key, value >對,以便于將來的數據獲取。key為對象散列值,即objectID, value為真正的數據對象(或其索引);
[0009]FIND_N0DE:以 ID 為參數,FIND_N0DE RPC 的接收者以 < IP 地址,UDP 端口號,nodeID >的形式返回他所知的離目標ID最近的K個節點;
[0010]FIND_VALUE:以 key 為參數,尋找 key 對應的 value。
[0011]P2P網絡爬蟲是指用于獲取P2P網絡中各個節點信息及其拓撲結構的軟件系統。這種軟件系統通過迭代地向P2P網絡中的已知節點發送特定消息,獲得新的節點;再重復向新的節點發送特定消息,就可以獲得整個網絡的拓撲結構和各個節點信息。P2P網絡爬蟲能夠用于獲取Kademlia網絡的節點信息和拓撲結構。
[0012]目前尚未發現有針對P2P網絡、旨在提高Sybil節點重要性的Sybil節點滲透方法的其他公開研究成果。
【發明內容】
[0013]本發明要解決的技術問題在于:針對目前Sybil節點難以快速、充分地滲透到Kademlia網絡中、盡可能多地進入其他節點路由表,進而產生較大重要性的問題,提出一種使Sybil節點高效滲透進入Kademlia網絡的方法。該方法能夠快速提升Sybil節點在Kademlia網絡中的入度,從而快速提升Sybil節點的重要性。
[0014]為解決上述技術問題,本發明的技術方案如下:
[0015]為了使Sybil節點能夠在提升重要性的過程中克服Kademlia動態性帶來的影響,整個滲透方法每隔若干小時(如6小時)重新實施一次。每次實施稱為一個滲透周期,并用T記錄當前為第幾個滲透周期。為了快速高效地提升重要性,本方法還根據距離遠近將被滲透節點分為多個編組(用G表示組號),并根據活躍程度對編組內節點進行排序,實現活躍節點優先和遠距離節點優先。成為高活躍度節點的鄰居,Sybil節點就可以借助該高活躍度節點讓更多其它節點訪問到它,從而獲得提高入度的更多機會。成為遠距離節點的鄰居,Sybil節點就能夠更頻繁地被該遠距離節點推薦給其它節點,從而獲得提高入度的更多機會。
[0016]具體技術方案為:
[0017]第一步,設置滲透周期計數值T=I,分組編號G = L, L為Kademlia網絡節點標識(即nodeID)的比特位數,初始時刻的活躍節點列表ActiveNodes (O)為空(NULL),ActiveNodes(T)是第T個滲透周期時的活躍節點列表,列表中的元素為活躍節點信息,項數為第T個滲透周期中的活躍節點數ητ,每個表項包括IP、UDPport、nodeID、active四個域,IP表示活躍節點的IP地址,UDPport指活躍節點的UDP端口號,nodeID是活躍節點的節點標識,active表示活躍節點的活躍程度值,會被動態更新。
[0018]第二步,利用P2P網絡爬蟲(如開源的Emule客戶端程序、Nutch、Crawler4j等)獲取Kademlia網絡第T個滲透周期活躍節點列表ActiveNodes (T)的IP、UDPport、nodeID信息。
[0019]第三步,依次計算ActiveNodes(T)中各個活躍節點的active值,假設ActiveNodes (T)中的任一表項 q(0 < q < ητ_1)對應的 IP、UDPport、nodeID 信息為 IPpUDPportq> nodeIDq,則具體計算方法如下:
[0020]3.I)令 q = O ;
[0021]3.2)對于 ActiveNodes(T)中的表項 q,若 ActiveNodes(T-1)中含有表項 < IPq, UDPportq, nodeIDq, active_old >,則 ActiveNodes(T)中的表項 q 為< IPq, UDPportq, nodeIDq, active_old+l > ;若 ActiveNodes (T_l)中不含有這種表項,即節點標識為nodeIDq的活躍節點是第一次出現在活躍節點列表中,則ActiveNodes(T)中的表項 q 為< IP,,UDPportq, nodeIDq, I > ;
[0022]3.3)q = q+1 ;
[0023]3.4)判斷q是否等于%,如果等于,則轉第四步,否則,轉3.2)。[0024]第四步,將ActiveNodes (T)中ητ個節點的nodeID值依次與Sybil節點的nodeID值進行異或,得到ητ個異或距離,并根據得到的異或距離值對ActiveNodes (T)中的ητ個表項進行編組,將異或距離在[2^2^1)范圍內的節點編為第j (OSjSL-1)組,則編組的數目為L (因為編組規則與Kademlia節點路由表的K-bucket區分方法類似,所以編組的數目等于K-bucket的數目L),通過對編組的遍歷得出每組的節點數記為σ τ(0≤σ τ≤ητ)。
[0025]第五步,對L個編組,按照active值降序重排每個組的σ τ個表項,得到L個降序重排后的編組。
[0026]第六步,G= G_1。
[0027]第七步,從第G組的首節點開始,Sybil節點依次向該組所有節點發送PING探測命令。根據Kademlia網絡的捎帶更新策略,被滲透節點收到PING命令后,將Sybil節點的nodeID值與自身的nodeID值進行異或,并根據該異或值確定Sybil節點的K-bucket,如果該K-bucket中有空位,就將Sybil節點作為鄰居節點保存在該K-bucket中,從而提高Sybil節點的入度。
[0028]第八步,如果G = O,執行第九步;否則,轉第六步。
[0029]第九步,設置計時器為m小時。這是為了間歇m小時,m—般取6 ;
[0030]第十步,間歇5秒。
[0031]第十一步,判斷是否收到退出指令:是,轉第十四步;否則轉第十二步。
[0032]第十二步,判斷是否計時器結束:是,轉第十三步;否,轉第十步。
[0033]第十三步,T = T+1,轉第二步。
[0034]第十四步,結束。
[0035]采用本發明可以達到以下技術效果:
[0036]通過第四、五和七步中的設置,優先對遠距離節點和高活躍度節點進行滲透,可以大大提高Sybil節點經由這些節點進入更多其它節點路由表的機會,從而可以快速提升其入度。通過第九、十、十三步中的設置,周期性地進行滲透,能夠有效克服Kademlia網絡動態性對Sybil節點重要性的影響,保證Sybil節點始終能夠有較高的入度。快速提高Sybil節點的重要性,有助于利用Sybil節點更多、更高效地獲知網絡中大量節點的活動情況,從而為快速發現和遏制網絡中的惡意活動提供技術支撐。
【專利附圖】
【附圖說明】
[0037]圖1為本發明的總流程圖。
【具體實施方式】
[0038]圖1是本發明的總流程圖:
[0039]第一步,設置滲透周期計數值T= 1,分組編號G = L,初始時刻的活躍節點列表ActiveNodes(0)為 Null。
[0040]第二步,利用P2P網絡爬蟲獲取Kademlia網絡第T個滲透周期活躍節點列表ActiveNodes (T)的 IP、UDPport、nodeID 信息。
[0041]第三步,依次計算ActiveNodes(T)中ητ個活躍節點的active值,假設ActiveNodes (T)中的任一表項 q(0 < q < ητ_1)對應的 IP、UDPport、nodeID 信息為 IPpUDPportq、nodeIDq0
[0042]第四步,將ActiveNodes(T)中%個節點的nodeID值依次與Sybil節點的nodeID值進行異或,并根據得到的異或距離值對ActiveNodes (T)中的ητ個表項進行編組,將異或距離在[2\ 2J+1)范圍內的節點編為第j (O≤j≤L-1)組,則編組的數目為L,通過對編組的遍歷得出每組的節點數記為στ(0≤ στ≤ητ)。
[0043]第五步,對L個編組,按照active值降序重排每個組的σ τ個表項。
[0044]第六步,G= G-1。
[0045]第七步,從第G組的首節點開始,Sybil節點依次向該組所有節點發送PING探測命令。根據Kademlia網絡的捎帶更新策略,在被滲透節點收到PING命令后,如果根據它的nodeID值Sybil節點的nodeID值進行異或得到的距離確定的被滲透節點的K-bucket中有空位,就將Sybil節點作為鄰居節點保存在該K-bucket中,從而提高Sybil節點的入度。
[0046]第八步,如果G = O,執行第九步;否則,轉第六步。
[0047]第九步,設置計時器為m小時。這是為了間歇m小時,m—般取6 ;
[0048]第十步,間歇5秒。
[0049]第十一步,判斷是否收到退出指令:是,轉第十四步;否則轉第十二步。
[0050]第十二步,判斷是否計時器結束:是,轉第十三步;否,轉第十步。
[0051]第十三步,T = T+1,轉第二步。
[0052]第十四步,結束。
【權利要求】
1.一種用于快速提升Sybil節點重要性的滲透方法,其特征在于包括以下步驟: 第一步,設置滲透周期計數值T=I,分組編號G = L, L為Kademlia網絡節點標識nodeID的比特位數,初始時刻的活躍節點列表ActiveNodes (O)為空,ActiveNodes (T)是第T個滲透周期時的活躍節點列表,列表中的元素為活躍節點信息,項數為第T個滲透周期中的活躍節點數ητ,每個表項包括IP、UDPport> nodeID、active四個域,IP表示活躍節點的IP地址,UDPport指活躍節點的UDP端口號,nodeID是活躍節點的節點標識,active表示活躍節點的活躍程度值; 第二步,利用P2P網絡爬蟲獲取Kademlia網絡第T個滲透周期活躍節點列表ActiveNodes (T)的 IP、UDPport、nodeID 信息; 第三步,依次計算ActiveNodes(T)中各個活躍節點的active值,具體計算方法如下:
3.1)令 q = O ; 3.2)對于ActiveNodes(T)中的表項q,若ActiveNodes(T-1)中含有表項<IPq, UDPportq, nodeIDq, active_old >, IPq、UDPportq> nodeIDq 分別為 ActiveNodes (T)中的表項q對應的IP、UDPport、nodeID信息,則ActiveNodes(T)中的表項為<IPq, UDPportq, nodeIDq, active_old+l > ;若 ActiveNodes (T_l)中不含有這種表項,即節點標識為nodeIDq的活躍節點是第一次出現在活躍節點列表中,則ActiveNodes(T)中的表項 q 為< IP,,UD Pportq, nodeIDq, I > ;
3.3)q = q+1 ; 3.4)判斷q是否等于~,如果等于,則轉第四步,否則,轉3.2); 第四步,將ActiveNodes (T)中ητ個節點的nodeID值依次與Sybil節點的nodeID值進行異或,得到ητ個異或距離,并根據得到的異或距離值對ActiveNodes (T)中的ητ個表項進行編組,將異或距離在[2'2W)范圍內的節點編為第j組,則編組的數目為L,通過對編組的遍歷得出每組的節點數記為σ τ,0≤j≤L-Ι,Ο ≤ σ τ≤ητ ; 第五步,對L個編組,按照active值降序重排每個組的σ τ個表項,得到L個降序重排后的編組; 第六步,G = G-15 第七步,從第G組的首節點開始,Sybil節點依次向該組所有節點發送PING探測命令;根據Kademlia網絡的捎帶更新策略,被滲透節點收到PING命令后,將Sybil節點的nodeID值與自身的nodeID值進行異或,并根據該異或值確定Sybil節點的K_bucket,如果該K-bucket中有空位,則將Sybil節點作為鄰居節點保存在該K_bucket中; 第八步,如果G = 0,執行第九步;否則,轉第六步; 第九步,設置計時器為m小時; 第十步,間歇5秒; 第十一步,判斷是否收到退出指令:是,轉第十四步;否則轉第十二步; 第十二步,判斷是否計時器結束:是,轉第十三步;否,轉第十步; 第十三步,T = T+1,轉第二步; 第十四步,結束。
2.如權利要求1所述的一種用于快速提升Sybil節點重要性的滲透方法,其特征在于所述m取6。
【文檔編號】H04L29/06GK104010003SQ201410271658
【公開日】2014年8月27日 申請日期:2014年6月18日 優先權日:2014年6月18日
【發明者】劉波, 王懷民, 王天佐, 魯強, 肖哲鋒, 馬曉龍, 張天, 于洋 申請人:中國人民解放軍國防科學技術大學