劉 浩
(湖南人文科技學(xué)院信息科學(xué)與工程系,湖南婁底417000)
P2P 網(wǎng)絡(luò)[1](Peer-to-Peer network)中每個(gè)節(jié)點(diǎn)的地位都是對(duì)等的。P2P技術(shù)以其特有的分布式和自組織等優(yōu)勢(shì)迅速發(fā)展,已成為互聯(lián)網(wǎng)絡(luò)的重要組成部分。根據(jù)路由選擇的拓?fù)浣Y(jié)構(gòu)不同,可將P2P網(wǎng)絡(luò)分為三種類型:集中式拓?fù)?、結(jié)構(gòu)化拓?fù)浜蜔o結(jié)構(gòu)拓?fù)洹apster是集中式拓?fù)涞牡湫痛?,它具有可擴(kuò)展性差和單點(diǎn)失效等問題。結(jié)構(gòu)化拓?fù)?,如Chord[2],對(duì)網(wǎng)絡(luò)資源的存儲(chǔ)方法和路由算法都有很精確的定義,因此當(dāng)節(jié)點(diǎn)狀態(tài)變化頻繁時(shí),系統(tǒng)需要很大的開銷來維護(hù)其拓?fù)浣Y(jié)構(gòu)。無結(jié)構(gòu)拓?fù)?,如Gnutella,對(duì)網(wǎng)絡(luò)資源的存儲(chǔ)和路由機(jī)制的管理比較松散,路由機(jī)制往往采用泛洪方法。因此,當(dāng)系統(tǒng)規(guī)模較大時(shí),基于泛洪方法的路由機(jī)制將會(huì)給系統(tǒng)帶來較大的網(wǎng)絡(luò)負(fù)載[3]。針對(duì)P2P網(wǎng)絡(luò)中采用的隨機(jī)選擇鄰居節(jié)點(diǎn)的方法會(huì)降低路由效率以及增大網(wǎng)絡(luò)開銷方面的問題,文獻(xiàn)[4]在基于Chord協(xié)議的P2P網(wǎng)絡(luò)路由決策過程中,提出一種結(jié)構(gòu)化P2P網(wǎng)絡(luò)環(huán)境下樂觀路由思想的路由決策方法。王浩云等人在對(duì)中繼節(jié)點(diǎn)的安全度進(jìn)行評(píng)估的基礎(chǔ)上提出了一種基于節(jié)點(diǎn)安全度的P2P網(wǎng)絡(luò)分布式多路徑中繼路由協(xié)議[5]。文獻(xiàn)[6]在分析 Chord方法特點(diǎn)的基礎(chǔ)上,提出一種改進(jìn)的Chord構(gòu)建的路由算法。然而,當(dāng)前大多數(shù)的 P2P 路由算法[2,4-6]并不考慮安全性問題。因此,在P2P網(wǎng)絡(luò)的路由算法中引入安全機(jī)制對(duì)提高系統(tǒng)的安全性、可靠性具有重要的意義。
本文使用信任度和路徑可靠性來衡量節(jié)點(diǎn)的路由轉(zhuǎn)發(fā)能力,以指導(dǎo)路由表中“下一跳節(jié)點(diǎn)”的選擇,從而建立安全可靠的路由路徑,并且引入加密、多路徑傳輸?shù)确椒ㄒ砸种拼鄹?、竊聽等典型攻擊。在此,我們稱該路由算法為SRATR(A Secure Routing Algorithm of P2P based on Trust and Reliability)。
SRATR的節(jié)點(diǎn)路由表與傳統(tǒng)的網(wǎng)絡(luò)路由表是基本一致的(如表1)。路由表包括5項(xiàng):目標(biāo)節(jié)點(diǎn)、下一跳節(jié)點(diǎn)、下一跳節(jié)點(diǎn)的信任度(包括直接信任度和推薦信任度)、平均路徑長(zhǎng)度和路徑穩(wěn)定性參數(shù)。路由表將所有能夠到達(dá)目標(biāo)節(jié)點(diǎn)的路徑的下一跳節(jié)點(diǎn)全部列出,下一跳路徑的選擇則根據(jù)下一跳節(jié)點(diǎn)的信任度、平均路徑長(zhǎng)度和路徑的穩(wěn)定性參數(shù)以一定的概率方法進(jìn)行選擇。一般情況下,信任度高、平均路徑長(zhǎng)度短和路徑穩(wěn)定性高的下一跳節(jié)點(diǎn)被選擇的概率要高。這樣,一方面可盡可能地保證選擇由路由轉(zhuǎn)發(fā)能力強(qiáng)的下一跳節(jié)點(diǎn)進(jìn)行路由轉(zhuǎn)發(fā);另一方面在轉(zhuǎn)發(fā)過程中路由路徑不固定,能提高轉(zhuǎn)發(fā)信息的安全性。
表1 SRATR路由表
在社會(huì)網(wǎng)絡(luò)中,個(gè)體之間的信任往往來自于相互之間的直接交往歷史與其他個(gè)體的推薦。由此建立的信任關(guān)系構(gòu)成了一個(gè)社會(huì)信任網(wǎng)絡(luò),作為個(gè)體決定其交互行為的重要依據(jù)[7]。參考社會(huì)網(wǎng)絡(luò)的基本原理,我們將P2P網(wǎng)絡(luò)中用戶節(jié)點(diǎn)的信任關(guān)系也分為:直接信任和推薦信任。
在SRATR中,假定每個(gè)節(jié)點(diǎn)具有有效的監(jiān)控機(jī)制,通過該監(jiān)控機(jī)制可以獲得鄰居節(jié)點(diǎn)的信息,以判斷其鄰居節(jié)點(diǎn)是否正常處理所傳輸過去的包。監(jiān)控時(shí)間周期為π,評(píng)價(jià)每個(gè)鄰居節(jié)點(diǎn)在該時(shí)間周期內(nèi)的行為好壞。若在某監(jiān)控時(shí)間周期π內(nèi)節(jié)點(diǎn)i一共向它的鄰居節(jié)點(diǎn)j發(fā)送了F次包,其中節(jié)點(diǎn)j正常處理了f次。如果正常處理率f/F大于約定的參數(shù)α,則節(jié)點(diǎn)j的直接信任值則線性增加,反之則指數(shù)減少(這樣做的目的主要是為了給惡意節(jié)點(diǎn)較為嚴(yán)厲的懲罰,使其信任度失掉容易,建立難)。那么,
定義1 設(shè)節(jié)點(diǎn)i對(duì)節(jié)點(diǎn) j直接信任度為DTij,其計(jì)算公式如下:
其中,DTij的初始值為0,ΔT是每個(gè)監(jiān)控時(shí)間周期π內(nèi)的變化值基數(shù),α為約定的參數(shù),可根據(jù)系統(tǒng)的安全需求而定,一般設(shè)定為0.5。
定義2 設(shè)節(jié)點(diǎn)i對(duì)節(jié)點(diǎn) j推薦信任度為RTij,其計(jì)算公式如下:
其中,Kj為與節(jié)點(diǎn)j發(fā)生過交互的節(jié)點(diǎn)集合(以節(jié)點(diǎn)j為出度的節(jié)點(diǎn))。wp是節(jié)點(diǎn)p的推薦可信度,一般情況下,它正比于節(jié)點(diǎn)p本身的信任值。在此,假設(shè)信任值高的節(jié)點(diǎn)推薦可信度要高,信任值低的節(jié)點(diǎn)推薦可信度同樣要低。根據(jù)社會(huì)網(wǎng)絡(luò)的原理,這一假設(shè)往往是正確的。
定義3 設(shè)節(jié)點(diǎn) i對(duì)節(jié)點(diǎn) j的綜合信任度為Tj。
最后,節(jié)點(diǎn)i得到待測(cè)節(jié)點(diǎn)j的綜合信任值Tij,表達(dá)式如下:
公式(3)中的β是一個(gè)自定義常數(shù),用以衡量直接信任度和推薦信任度的權(quán)重。如果節(jié)點(diǎn)i為新加入節(jié)點(diǎn),β會(huì)選擇較小的值;若節(jié)點(diǎn)i更相信自己的交互歷史,β會(huì)選擇較大的值。
在P2P網(wǎng)絡(luò)中,路由路徑的優(yōu)劣最終反映在信息傳輸?shù)狞c(diǎn)到點(diǎn)平均時(shí)延和該路徑的穩(wěn)定性。因此,本文利用點(diǎn)到點(diǎn)的平均時(shí)延和該路徑穩(wěn)定性作為衡量路徑可靠性的依據(jù)。
在SRATR中,把源節(jié)點(diǎn)s通過某下一跳節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)d的平均傳輸延時(shí)定義為該路徑的平均長(zhǎng)度,其大小為源節(jié)點(diǎn)收到路由應(yīng)答信息的累計(jì)延時(shí)的一半。那么,平均傳輸延時(shí)越小,該路徑的可靠性越高。平均傳輸延時(shí)可以通過歷史數(shù)據(jù)統(tǒng)計(jì)得到。若在某監(jiān)控時(shí)間周期π內(nèi),為達(dá)到目標(biāo)節(jié)點(diǎn)d,節(jié)點(diǎn)s向其鄰居節(jié)點(diǎn)i共發(fā)出n次路由請(qǐng)求,則通過節(jié)點(diǎn)i的平均路徑長(zhǎng)度可表示為:
其中,Li
s是通過節(jié)點(diǎn)i的平均路徑長(zhǎng)度,tin是通過節(jié)點(diǎn)i到目標(biāo)節(jié)點(diǎn)d第n次路由請(qǐng)求的延時(shí)。
路徑穩(wěn)定性參數(shù)可以使用路徑延時(shí)的標(biāo)準(zhǔn)差來表示,公式描述如下:
顯然,路徑延時(shí)的標(biāo)準(zhǔn)差越小,路徑的可靠性越高。綜合起來,通過節(jié)點(diǎn)i的路徑可靠性可以表示為:
1.路由信息擴(kuò)散方式
系統(tǒng)內(nèi)各個(gè)節(jié)點(diǎn)向它所有的直接鄰居節(jié)點(diǎn)發(fā)送它對(duì)系統(tǒng)內(nèi)其他節(jié)點(diǎn)的可達(dá)信息,并通過逐級(jí)擴(kuò)散的方式使這種可達(dá)信息在系統(tǒng)內(nèi)傳播,從而使各個(gè)節(jié)點(diǎn)能推算出自己到系統(tǒng)內(nèi)其他非鄰接節(jié)點(diǎn)的路由。
2.初始化過程
當(dāng)系統(tǒng)剛剛啟動(dòng)時(shí),系統(tǒng)中的節(jié)點(diǎn)很少,每個(gè)節(jié)點(diǎn)的路由表均為空,需要經(jīng)過一段時(shí)間的廣播擴(kuò)散才能建立起各節(jié)點(diǎn)的路由表。隨著擴(kuò)散的不斷進(jìn)行,系統(tǒng)內(nèi)的節(jié)點(diǎn)路由表會(huì)不斷的完備。隨著節(jié)點(diǎn)數(shù)目的增加,系統(tǒng)覆蓋范圍更廣,可選路徑隨之不斷增加,各節(jié)點(diǎn)的路由表也會(huì)變得更加完備,并且路徑的可選擇范圍會(huì)更多。
3.路由表的更新與維護(hù)
為了使系統(tǒng)內(nèi)各節(jié)點(diǎn)的路由信息保存最新狀態(tài),每隔一段時(shí)間,節(jié)點(diǎn)將自己的路由信息發(fā)送給相鄰節(jié)點(diǎn),為了防止反彈效應(yīng),信息中不包含從對(duì)方節(jié)點(diǎn)獲得的路由信息。若某節(jié)點(diǎn)退出系統(tǒng)或被鄰居節(jié)點(diǎn)檢測(cè)到不可達(dá),則鄰居節(jié)點(diǎn)將該節(jié)點(diǎn)從自己路由表中刪除去掉,同時(shí)將該信息在系統(tǒng)內(nèi)廣播。為了防止節(jié)點(diǎn)定期同時(shí)進(jìn)行路由信息交換,在系統(tǒng)內(nèi)產(chǎn)生周期性的流量高峰,需要為各節(jié)點(diǎn)隨機(jī)地設(shè)置不同的廣播間隔。
4.信息發(fā)送與轉(zhuǎn)發(fā)
先給出以下相關(guān)定義。
定義4 假設(shè)以節(jié)點(diǎn)i為觀測(cè)點(diǎn),其某一鄰居節(jié)點(diǎn)j的路由轉(zhuǎn)發(fā)能力為:
當(dāng)節(jié)點(diǎn)i需要發(fā)送信息時(shí),則其某一鄰居節(jié)點(diǎn)j以概率
被選擇為下一跳節(jié)點(diǎn),并在發(fā)送報(bào)文中加入源節(jié)點(diǎn)到目的節(jié)點(diǎn)的路徑信息,其中λ為歸一化常數(shù),即為直接鄰居節(jié)點(diǎn)集。中間節(jié)點(diǎn)收到信息后以同樣的方法進(jìn)行信息轉(zhuǎn)發(fā),同時(shí)將自身節(jié)點(diǎn)id加入到傳輸路徑中。為了防止循環(huán)路由,若發(fā)現(xiàn)下一跳節(jié)點(diǎn)與收到的路徑信息中節(jié)點(diǎn)有重復(fù),則重新選擇下一跳節(jié)點(diǎn)。
系統(tǒng)內(nèi)的任何節(jié)點(diǎn)在轉(zhuǎn)發(fā)(或發(fā)送)信息后,都要通過監(jiān)控機(jī)制監(jiān)控“下一跳節(jié)點(diǎn)”的行為,并進(jìn)行信任度的計(jì)算,同時(shí)需要反饋給相應(yīng)的節(jié)點(diǎn),以更新該“下一跳節(jié)點(diǎn)”的推薦信任度。
為了防止路由信息在系統(tǒng)永久性的轉(zhuǎn)發(fā),每個(gè)路由信息包設(shè)置TTL(time of life,TTL初始值可根據(jù)系統(tǒng)的安全性需求而定),當(dāng)路由信息包轉(zhuǎn)發(fā)一次,TTL屬性值就減1,若某個(gè)路由信息包的TTL值為0,則停止繼續(xù)轉(zhuǎn)發(fā),丟棄該路由信息包。
1.防竊聽
在SRATR中,系統(tǒng)采用報(bào)文拆分與組裝技術(shù)對(duì)每一段報(bào)文發(fā)送之前進(jìn)行加密處理,發(fā)送節(jié)點(diǎn)將每個(gè)待發(fā)信息拆分成若干段,分開發(fā)送,再由接收節(jié)點(diǎn)完成信息的組裝。由于采用了拆分和組裝技術(shù)通過多路徑傳輸,竊聽者很難找出不同報(bào)文段之間的相關(guān)性,通過組裝恢復(fù)出報(bào)文,而且,數(shù)據(jù)加密技術(shù)使系統(tǒng)的防竊聽能力更強(qiáng)。
2.防篡改
發(fā)送節(jié)點(diǎn)使用MD5對(duì)報(bào)文進(jìn)行信息摘要,當(dāng)傳輸路徑中有惡意節(jié)點(diǎn),并對(duì)傳輸數(shù)據(jù)進(jìn)行了篡改,數(shù)據(jù)接收節(jié)點(diǎn)很容易辨別出來,并通知發(fā)送節(jié)點(diǎn)重新傳輸數(shù)據(jù)。
3.防路由失效
為了防止路由失效,接收節(jié)點(diǎn)在收到信息后需向發(fā)送節(jié)點(diǎn)返回一個(gè)確認(rèn)信息ACK,若在約定時(shí)間內(nèi)沒有收到ACK,源節(jié)點(diǎn)會(huì)重新選擇路徑進(jìn)行數(shù)據(jù)重傳。為了防止惡意節(jié)點(diǎn)偽造ACK造成數(shù)據(jù)傳輸?shù)氖?,接收方不按照原路徑返回ACK。
為了評(píng)價(jià)SRATR的性能,本文采用JAVA語(yǔ)言設(shè)計(jì)了一個(gè)類似P2Psim的系統(tǒng)模擬軟件,通過該模擬軟件設(shè)計(jì)SRATR的網(wǎng)絡(luò)模型,以實(shí)現(xiàn)信任的評(píng)價(jià)、路由的選擇。
實(shí)驗(yàn)假設(shè)的應(yīng)用場(chǎng)景為文件共享應(yīng)用,系統(tǒng)節(jié)點(diǎn)總數(shù)為1000,每個(gè)節(jié)點(diǎn)管理50個(gè)不同文件。系統(tǒng)中只有行為良好節(jié)點(diǎn)和純惡意節(jié)點(diǎn)兩類,所謂行為良好節(jié)點(diǎn),是對(duì)其他節(jié)點(diǎn)的評(píng)價(jià)上都是真實(shí)的,并且轉(zhuǎn)發(fā)信息行為良好。而純惡意節(jié)點(diǎn)只是轉(zhuǎn)發(fā)信息行為惡意,如不轉(zhuǎn)發(fā)路由信息。其中系統(tǒng)參數(shù)α和β均設(shè)定為0.5,TTL設(shè)置為5。
首先考察在惡意節(jié)點(diǎn)為20%的情況下,隨機(jī)從10個(gè)相同的節(jié)點(diǎn)分別發(fā)起10次文件查詢請(qǐng)求,當(dāng)節(jié)點(diǎn)總數(shù)變化時(shí),比較SRATR和Gnutella的平均查找時(shí)間。從圖1可以看出,當(dāng)節(jié)點(diǎn)數(shù)目較少時(shí),平均查找時(shí)間相差不大,但隨著節(jié)點(diǎn)數(shù)目的增多,SRATR明顯比Gnutella的平均查找時(shí)間要少得多。
圖1 模擬仿真實(shí)驗(yàn)得出的兩種平均查找時(shí)間分布圖
現(xiàn)在考察在節(jié)點(diǎn)總數(shù)不變?yōu)?000的情況下,隨機(jī)從10個(gè)相同的節(jié)點(diǎn)分別發(fā)起10次文件查詢請(qǐng)求,當(dāng)惡意節(jié)點(diǎn)的百分比變化時(shí),比較SRATR和Gnutella的平均查找時(shí)間。從圖2可以看出,當(dāng)惡意節(jié)點(diǎn)的百分比增大時(shí),SRATR和Gnutella的平均查找時(shí)間都會(huì)增大,但是SRATR增大幅度要比Gnutella小得多(如圖2)。
圖2 平均查找時(shí)間比較圖
總之,SRATR的路由性能要優(yōu)于Gnutella,并且SRATR能有效抑制惡意節(jié)點(diǎn),安全性好。
本文給出了一種P2P網(wǎng)絡(luò)的安全路由算法SRATR,系統(tǒng)節(jié)點(diǎn)以一定的概率方法選擇信任度高、路徑可靠性高的鄰居節(jié)點(diǎn)進(jìn)行信息轉(zhuǎn)發(fā),有效地提高了系統(tǒng)的安全性、可靠性和資源定位能力。下一步工作將研究SRATR路由算法的消息控制策略。
[1]陳貴海,李振華.對(duì)等網(wǎng)絡(luò):結(jié)構(gòu)應(yīng)用與設(shè)計(jì)[M].北京:清華大學(xué)出版社,2007:1-5.
[2]ION STOIEA,ROBERT MORRIS,DAVID KARGE.Chord:A scalable Peer-to-Peer lookup service for internet applications[M]//Proeeeding of ACM SIGCOMM 2001-Applications,Technologies,Architectures,and Protocols for Computers Communications.New York:Association for Computing Machinery,2001:149-160.
[3]劉浩,張連明,朱同林.基于Cayley圖的P2P覆蓋網(wǎng)絡(luò)模型研究[J].吉林大學(xué)學(xué)報(bào):工學(xué)版,2011,41(5):1414-1420.
[4]楊 磊,秦志光,藍(lán)天等.結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中基于信譽(yù)的樂觀路由決策[J].控制與決策,2012,27(6):839-844,849.
[5]王浩云,徐煥良,任守綱.基于節(jié)點(diǎn)安全度的PP網(wǎng)絡(luò)分布式多路徑中繼路由協(xié)議[J].計(jì)算機(jī)科學(xué),2012,39(10):54-59.
[6]王傳殊,王意潔.基于網(wǎng)絡(luò)延遲的 P2 P路由算法的研究[J].計(jì)算機(jī)科學(xué),2007,34(6):41-44.
[7]PAUL C,JAMESD,VICTOR G.Social network model of construction[J].Journal of construction Engineering and Manage-ment,2008 ,134(10):804 -812.