專利名稱:基于雙層Chord環(huán)型網(wǎng)絡(luò)的疫苗分發(fā)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)網(wǎng)絡(luò)反病毒技術(shù)領(lǐng)域,尤其是涉及一種疫苗分發(fā)方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的出現(xiàn)和迅猛發(fā)展,人類的生活方式得到了巨大的改變,但同時 大量的計算機(jī)病毒也隨之出現(xiàn),其種類呈指數(shù)級增長,破壞性也越來越劇烈,計算機(jī)病毒的 防治也成為了計算機(jī)網(wǎng)絡(luò)技術(shù)中的重要組成部分。在計算機(jī)病毒防治方式中,免疫是使用最為廣泛的一種方式,而其中至關(guān)重要的 就是如何將疫苗盡快的傳播到整個網(wǎng)絡(luò),切斷病毒的傳播途徑?,F(xiàn)有的疫苗傳播方式大都 是服務(wù)器_客戶機(jī)模式,即通過集中式的服務(wù)器向所有的客戶端進(jìn)行疫苗的分發(fā),疫苗傳 播速度較慢,且服務(wù)器的負(fù)載過重。在一篇中國發(fā)明專利申請(申請?zhí)枮?00710053778. 9,
公開日為2008年4月30
日)中公開了一種分布式環(huán)境下的計算機(jī)病毒疫苗傳播方法,該方法采用帶有動態(tài)信任機(jī) 制的疫苗傳播策略,在進(jìn)行疫苗傳播時,帶有信譽(yù)度的普通節(jié)點承擔(dān)了部分疫苗分發(fā)的責(zé) 任,節(jié)點根據(jù)信譽(yù)度判斷傳播疫苗的安全性,當(dāng)信譽(yù)度不足以作為判斷依據(jù)時由服務(wù)器最 終確認(rèn)疫苗的可靠性。該疫苗傳播方法能夠部分降低服務(wù)器的負(fù)載,提高疫苗的傳播速度。 但在該專利描述的體系架構(gòu)中,節(jié)點遵循先接收疫苗,后驗證是否需要該疫苗的規(guī)則,有可 能會使節(jié)點把帶寬浪費在一些多余或錯誤的數(shù)據(jù)接收上。一旦節(jié)點接受到疫苗又無法判斷 其可靠性時,即轉(zhuǎn)送到服務(wù)器進(jìn)行判斷,然而文獻(xiàn)中并未給出服務(wù)器判斷疫苗可靠性的方 法;節(jié)點在向鄰居節(jié)點發(fā)送疫苗時,是根據(jù)連接度排序,這可以保證高連接度的節(jié)點較快免 疫,然而同時也造成了高連接度節(jié)點將高頻率地接受到連接請求,且文獻(xiàn)中也并未給出節(jié) 點究竟選擇哪個請求的方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種疫苗分發(fā)方法,在保證各節(jié)點及時接受到有效疫苗的 前提下,進(jìn)一步減輕服務(wù)器的負(fù)擔(dān)。本發(fā)明的技術(shù)方案是通過構(gòu)建一種復(fù)合的雙層Chord環(huán)結(jié)構(gòu),充分利用網(wǎng)絡(luò)中非 服務(wù)器節(jié)點的資源來提高疫苗分發(fā)的效率,并通過建立信任機(jī)制解決疫苗傳輸?shù)陌踩珕?題。為方便理解本發(fā)明的技術(shù)方案,下面首先對Chord環(huán)型網(wǎng)絡(luò)的基本內(nèi)容作簡要說 明對等網(wǎng)絡(luò)為一類利用因特網(wǎng)邊緣資源(存儲、計算、內(nèi)容等等)、非中心化的、自組 織的、且所有的或大部分聯(lián)系是對稱的分布式系統(tǒng)。對等網(wǎng)環(huán)境中每個參與的節(jié)點既充當(dāng) 客戶(client),也充當(dāng)服務(wù)器(server),通過提供自己的全部或部分資源,來獲取分享對 等網(wǎng)絡(luò)中的資源;沒有集中的協(xié)調(diào)者和數(shù)據(jù)庫,沒有一個對等者擁有整個系統(tǒng)的視圖,全局 的行為特征來自于本地的交互,所有已存在的數(shù)據(jù)和服務(wù)對每個對等者都是開放的,且對等者是自治的,其連接是不可靠的。對等網(wǎng)技術(shù)弱化了服務(wù)器的功能,重視網(wǎng)絡(luò)中所有個體的作用,強(qiáng)調(diào)的是個體之 間、系統(tǒng)之間、計算機(jī)之間的直接通信和聯(lián)系,每一個參與者既是客戶又是服務(wù)方,這使人 們在因特網(wǎng)上的共享行為被提升到了一個更廣泛的層次,使人們以更主動的方式參與到網(wǎng) 絡(luò)中去。它與現(xiàn)行以中間件為主的分布式計算技術(shù)所采用的客戶機(jī)/服務(wù)器模式有本質(zhì)區(qū) 別。從目前的應(yīng)用來看,P2P的威力還主要體現(xiàn)在大范圍的共享、搜索的優(yōu)勢上。在這方面 主要解決網(wǎng)絡(luò)上四大類型的應(yīng)用對等計算、協(xié)同工作、搜索引擎、文件交換。Chord算法是麻省理工學(xué)院計算機(jī)科學(xué)實驗室提出來的一種分布式hash表算法, 該算法能在大型分布式網(wǎng)絡(luò)中對資源進(jìn)行高效定位。Chord算法滿足了對等網(wǎng)絡(luò)中的負(fù)載 平衡,分布式去中央化,網(wǎng)絡(luò)自適應(yīng),靈活命名,大規(guī)模適用性等要求。Chord系統(tǒng)是基于Chord算法的一致性hash的高效分布式查詢系統(tǒng),它將標(biāo)志空 間映射到Chord網(wǎng)絡(luò)中的節(jié)點。Chord網(wǎng)絡(luò)上的一個節(jié)點可以是主機(jī),也可以是由IP地址 和網(wǎng)絡(luò)端口地址定義的socket (進(jìn)程通信機(jī)制),每個節(jié)點都有一個Chord標(biāo)識符。而網(wǎng)絡(luò) 上的資源同樣使用標(biāo)識符標(biāo)示,然后把資源相關(guān)信息映射到節(jié)點上。在Chord網(wǎng)絡(luò)中,只要 給出一個關(guān)鍵字(key),就能夠迅速找到保存該關(guān)鍵字的資源索引。Chord協(xié)議僅支持一個操作給出任意的一個關(guān)鍵字,他把該關(guān)鍵字映射到一個 節(jié)點上。使用Chord的應(yīng)用程序負(fù)責(zé)保存與該鍵關(guān)聯(lián)的值。Chord使用一致性散列法把關(guān) 鍵字映射到節(jié)點上。一致性散列法使得Chord上的網(wǎng)絡(luò)節(jié)點負(fù)載均衡,因為每個節(jié)點都能 夠粗略地收到相同數(shù)量的關(guān)鍵字,并且.當(dāng)節(jié)點加入或者離開的時候,僅有少量的關(guān)鍵字 轉(zhuǎn)移了原來的位置。過去使用一致性散列的算法都是建立在節(jié)點都知道系統(tǒng)中大多數(shù)的 其他節(jié)點的位置這一假設(shè)的。這種假設(shè)在實際的環(huán)境不相符,所以導(dǎo)致過去的算法不夠使 用。與之相反,Chord算法僅僅需要小部分的路由信息。在穩(wěn)定的狀態(tài)下,含有N個節(jié)點 的Chord系統(tǒng)只需要維護(hù)大概O(IogN)個其他節(jié)點的信息。并且保證在O(IogN)次轉(zhuǎn)發(fā)查 詢,就能夠完成對節(jié)點的查詢工作。當(dāng)Chord網(wǎng)絡(luò)中有一個節(jié)點加入或退出時,網(wǎng)絡(luò)中僅有 1/N個關(guān)鍵字必須要改變原來的位置,Chord必須對這種改變更新路由信息,這時候需要有 0(log2N)的信息在網(wǎng)絡(luò)中傳送。Chord使用一致性散列算法,一致性散列算法把每個節(jié)點映射映射成相同位數(shù)的 標(biāo)志符。在Chord算法中使用的算法是SHA-I的加密算法。節(jié)點的標(biāo)志符可以從IP或者 ((IP,端口,其它標(biāo)志位)生成。Chord算法中使用(節(jié)點標(biāo)志,地址)來標(biāo)志一個節(jié)點。為 了保證網(wǎng)絡(luò)中不會存在相同節(jié)點標(biāo)志的兩個節(jié)點,m必須比較大。使用SHA-I算法可以把 長度不定的數(shù)據(jù)映射到160位的數(shù)據(jù)上。這樣的話,Chord算法的節(jié)點標(biāo)志空間就為216°, 可以保證出現(xiàn)相同的標(biāo)志符的概率非常小。對于標(biāo)志符空間為2m的Chord網(wǎng)絡(luò),標(biāo)志符按照模2m排序成一個圈,這個圈成為 Chord 環(huán)。為了將網(wǎng)絡(luò)上的符號空間映射到這些節(jié)點上,Chord算法提出一個Successor的 概念。successor (Key)為大于等于Key的最小的節(jié)點號。Chord算法使用Successor函數(shù)把命名空間映射到一些相關(guān)的節(jié)點上,由這些節(jié) 點來負(fù)責(zé)對存在于該命名空間中的資源關(guān)鍵字進(jìn)行索引服務(wù)。同時,為了能夠快速地找到 相關(guān)的節(jié)點,Chord網(wǎng)絡(luò)中的節(jié)點保存路由信息。如前面所說的,若Chord網(wǎng)絡(luò)的標(biāo)志符為m位,那么每個節(jié)點會維護(hù)一個最多有m個元素的路由表。該路由表稱為Finger表。假 設(shè)Chord中的某節(jié)點的節(jié)點號為n,F(xiàn)inger Table的第i項sj = successor (11+2^),其中 1彡i彡m,并且所得到的結(jié)果是對2m求模的。Finger表中的字段如下表1
項定義finger [k] · start (起始 key 標(biāo)志符)(n+2k_1)mod2M 彡 k 彡 m.interval (結(jié)束key標(biāo)識符)[finger[k]. start, finger[k+1]. start).node (某key的映射相關(guān)節(jié)點)frst node ^ n. finger[k]. start.successor (后繼節(jié)點)當(dāng)前環(huán)中與該節(jié)點相鄰的下一個節(jié)點Predecessor (前繼節(jié)點)當(dāng)前環(huán)中與該節(jié)點相鄰的前一個節(jié)點表 1以上僅對Chord網(wǎng)絡(luò)的基本內(nèi)容進(jìn)行了簡要描述,更詳盡的內(nèi)容可參考文獻(xiàn) (IonStoica,Robert Morris,David Karger. Chord :A Scalable Peer-to-peer Lookup Service forlnternet Applications. SIGCOMMr 01,San Diego,California,USA,2001)。綜上所述,可得到本發(fā)明的技術(shù)方案如下一種基于雙層Chord環(huán)型網(wǎng)絡(luò)的疫苗分發(fā)方法,其特征在于,包括以下步驟步驟1)構(gòu)建雙層Chord環(huán)形網(wǎng)絡(luò);所述雙層Chord環(huán)型網(wǎng)絡(luò)包括兩種不同的節(jié)點 環(huán)服務(wù)器環(huán)和下層節(jié)點環(huán),其中服務(wù)器環(huán)中的每一個節(jié)點作為服務(wù)器管理著對應(yīng)的一個 下層節(jié)點環(huán),且與該下層節(jié)點環(huán)中的所有下層節(jié)點全連接;服務(wù)器環(huán)內(nèi)的服務(wù)器節(jié)點之間 以及每一個下層節(jié)點環(huán)內(nèi)的下層節(jié)點之間均采用Chord協(xié)議進(jìn)行通信;步驟2)服務(wù)器節(jié)點將獲得的疫苗或疫苗包XX(j)、信任表以及自身的數(shù)字簽名生 成疫苗包XX(j+Ι),將所述疫苗與自身的數(shù)字簽名捆綁成疫苗包XX(j+2);其中,所述信任 表由服務(wù)器節(jié)點動態(tài)維護(hù),并包含該服務(wù)器所管轄的下層節(jié)點環(huán)中所有節(jié)點名稱及每個節(jié) 點所對應(yīng)的信任分?jǐn)?shù);其中j為疫苗包的序號;步驟3)服務(wù)器節(jié)點通過查詢自身的finger表獲得相關(guān)服務(wù)器節(jié)點的路由信息, 將找到的相關(guān)服務(wù)器節(jié)點路由信息和傳輸疫苗端口號以及疫苗文件的hash值進(jìn)行hash得 到一個key值,并在當(dāng)前finger表中查詢該key值是否存在,如不存在,則向該服務(wù)器節(jié)點 發(fā)送疫苗包XX(j+2),若存在,則轉(zhuǎn)向finger表中的下一個條目,同時從信任表中按照預(yù)先 設(shè)定的規(guī)則選擇下層節(jié)點進(jìn)行疫苗包XX(j+Ι)的發(fā)送;步驟4)接收到疫苗包的相關(guān)服務(wù)器節(jié)點通過疫苗包中的數(shù)字簽名驗證疫苗的可 靠性,若可靠性得以保證,則使用疫苗文件加固或挽救系統(tǒng),同時將自身的的路由信息和傳 輸疫苗的端口號以及疫苗文件的hash值進(jìn)行hash后得到一個值,并將該值的相關(guān)信息存 放到相關(guān)服務(wù)器節(jié)點的finger表中,同時在本地日志文件中進(jìn)行相應(yīng)更改,說明自己已經(jīng)打過某疫苗,然后循環(huán)執(zhí)行步驟2-步驟4,直到服務(wù)器環(huán)中每一個服務(wù)器節(jié)點都遍歷了自 己finger表中的條目;接收到疫苗的下層節(jié)點通過疫苗文件中攜帶的數(shù)字簽名驗證疫苗的可靠性,若可 靠性得以保證,則使用疫苗文件加固或挽救系統(tǒng),同時將自身的路由信息和傳輸疫苗的端 口號以及疫苗文件的hash值進(jìn)行hash后得到一個值,并將該值的相關(guān)信息存放到相關(guān)節(jié) 點的finger表中去,使用疫苗包中的信任表更新本地存儲的節(jié)點信任分?jǐn)?shù),同時在本地日 志文件中進(jìn)行相應(yīng)更改,說明自己已經(jīng)打過該疫苗;步驟5)打過疫苗的下層環(huán)節(jié)點查詢當(dāng)前finger表中存儲的相關(guān)節(jié)點路由信息, 將找到的相關(guān)下層節(jié)點路由信息和傳輸疫苗端口號以及疫苗文件的hash值進(jìn)行hash得到 一個key值,并在當(dāng)前finger表中查詢該key值是否存在,若存在,則說明該相關(guān)下層節(jié)點 已經(jīng)打過疫苗,并轉(zhuǎn)向自身finger表中的下一個條目;若不存在,則向該相關(guān)下層節(jié)點發(fā) 送疫苗傳輸請求;步驟6)接收到疫苗傳輸請求的相關(guān)下層節(jié)點在信任表中查詢發(fā)送疫苗傳輸請求 節(jié)點的信任分?jǐn)?shù),并將該信任分?jǐn)?shù)與預(yù)先設(shè)定的本節(jié)點的信任閾值進(jìn)行比較,如大于該信 任閾值,則接收疫苗并轉(zhuǎn)至步驟4 ;如小于該信任閾值,則拒絕接收疫苗。上述技術(shù)方案通過構(gòu)建一種復(fù)合的雙層Chord環(huán)型網(wǎng)絡(luò),充分利用了網(wǎng)絡(luò)中非服 務(wù)器節(jié)點的資源來提高疫苗分發(fā)的效率,并通過建立信任機(jī)制解決了疫苗傳輸?shù)陌踩珕?題。相比現(xiàn)有技術(shù),有效地降低了服務(wù)器的負(fù)載。在上述技術(shù)方案中,為了防止個別下層節(jié)點不能及時獲得疫苗,可以由服務(wù)器按 照一定的時間間隔查詢所管轄的下層環(huán)節(jié)點是否已打過疫苗,如發(fā)現(xiàn)該節(jié)點未打疫苗,則 向該節(jié)點發(fā)送疫苗包;本發(fā)明采用如下方案服務(wù)器節(jié)點每觸發(fā)X_(信任分?jǐn)?shù)/d)次心跳,將返回節(jié)點日志中的相關(guān)參數(shù)與默 認(rèn)參數(shù)進(jìn)行比較,如二者不符,說明節(jié)點并未完全免疫,則服務(wù)器就向該節(jié)點發(fā)送最新的疫 苗包;X,d都是預(yù)先設(shè)定的常數(shù),X與d都為大于1的整數(shù),且X > (100/d)。為了讓服務(wù)器知道節(jié)點在線,節(jié)點需要定時向服務(wù)器發(fā)送信息,若是服務(wù)器一定 時間接不到信息,則認(rèn)為該節(jié)點已經(jīng)離線,服務(wù)器每接收一次信息,視為節(jié)點的一次心跳。上述預(yù)先設(shè)定的X,d可以根據(jù)需要設(shè)置,X越大則查詢的時間間隔越長,服務(wù)器負(fù) 擔(dān)越輕,但可能會減小疫苗擴(kuò)散的速度。而η越大則信任值對查詢的時間間隔影響越小。在本發(fā)明中,信任表的建立和維護(hù)十分重要,因為Ρ2Ρ對等網(wǎng)中,各節(jié)點的地位都 是相等的,但是實際網(wǎng)絡(luò)環(huán)境中,總有一些節(jié)點比較重要,在本發(fā)明中,我們通過考慮節(jié)點 的告警能力來區(qū)分重要和非重要節(jié)點,因為一個節(jié)點如果告警次數(shù)多且準(zhǔn)確,說明它平常 進(jìn)行的網(wǎng)絡(luò)活動較多,且是一個相對“誠實”的節(jié)點,用戶往往愿意從誠實可靠的節(jié)點接受 疫苗包,所以提升它們在的信任表中的排行,讓它們一開始接收到服務(wù)器疫苗包的可能性 變大,維護(hù)它們本身的安全性,而用戶也只接受信任分?jǐn)?shù)高于本機(jī)設(shè)置安全閾值的節(jié)點發(fā) 來的疫苗包,這樣就保證了疫苗包的安全可靠性,另一方面發(fā)送疫苗的節(jié)點在與其它節(jié)點 建立疫苗包傳輸連接之前要先發(fā)送連接請求,接受方通過在信任機(jī)制表查詢發(fā)送方的信任 分?jǐn)?shù)來判斷要不要接受疫苗包,不會與低于要求的發(fā)送節(jié)點建立傳輸關(guān)系,這也一定程度 上節(jié)省了網(wǎng)絡(luò)中的流量。在本發(fā)明的技術(shù)方案中,信任表中的節(jié)點名稱是指用戶注冊名的hash值,該節(jié)點
7名稱固定不變;服務(wù)器節(jié)點按照下述規(guī)則對所管理的各下層環(huán)節(jié)點的信任分?jǐn)?shù)進(jìn)行動態(tài)維 護(hù) 信任分?jǐn)?shù)的最高分為100分,達(dá)到100不再繼續(xù)上升;最低分為0分,降至0分 不再繼續(xù)下調(diào); 服務(wù)器每接收到一次告警信息,則按照以下公式重新計算并修改發(fā)送該報警信 息的下層環(huán)節(jié)點的信任分?jǐn)?shù)A' =A+ (Nt。tal-Sere*Nere_Sevl*Nevl) * (Τ膽-Tlatest) - (Tnew-Tlatest) * α其中,Α”為該節(jié)點告警前的信任分?jǐn)?shù);A’為該節(jié)點告警后被重新計算并修改的 信任分?jǐn)?shù);Nttrtal為該節(jié)點告警成功總次數(shù)為該節(jié)點失誤告警總次數(shù);Nct1為惡意告警 總次數(shù)為預(yù)先設(shè)定的失誤告警的懲罰因子,取值范圍為(1,10] ;Sct1為預(yù)先設(shè)定的惡 意告警的懲罰因子,取值范圍為(1,10] ;Tnew為當(dāng)前節(jié)點正在被服務(wù)器響應(yīng)告警的時間點; Tlatest為當(dāng)前節(jié)點最近一次被服務(wù)器成功接受告警的時間點;《為預(yù)先設(shè)定的調(diào)節(jié)參數(shù),為 一常數(shù)。對于新加入的下層環(huán)節(jié)點,由服務(wù)器賦予一個默認(rèn)的初始值,該初始值應(yīng)該大于0 但低于平均分50,因為在網(wǎng)絡(luò)中,低于50為不被信任節(jié)點,高于50為較信任節(jié)點,但與50 分的差值不應(yīng)太大,以免浪費新節(jié)點資源,即很長一段時間都不信任新節(jié)點。在此之所以要將告警時間的間隔作為乘因子,是因為頻率說明節(jié)點在當(dāng)前受到的 侵害較大,而且如果它的告警基本上都是正確的,也說明了這是一個誠實的節(jié)點,它的存在 對幫助服務(wù)器及時發(fā)現(xiàn)網(wǎng)絡(luò)中的問題產(chǎn)生著積極作用,應(yīng)該得到獎勵,提升它的信任分?jǐn)?shù)。 但考慮到有的節(jié)點為了騙取信任分?jǐn)?shù),反復(fù)發(fā)送同一個報告,雖然告警確實是正確的,但卻 違背了節(jié)點信任分?jǐn)?shù)設(shè)置的初衷,這里通過減去(Tnew-Tlatest)* α,減緩過于頻繁發(fā)送報告 節(jié)點的分?jǐn)?shù)累加,以使系統(tǒng)更為合理。另外_(TnOT-Tlatest)* α也預(yù)示著如果節(jié)點很久不發(fā)送 報告,將會逐漸流失信任分?jǐn)?shù)。信任表中節(jié)點名稱是用戶注冊名的hash值,節(jié)點要查詢其它節(jié)點的信任值時,需 要將發(fā)送方節(jié)點名稱在本地進(jìn)行hash,然后從信任表中進(jìn)行匹配查詢;之所以要將節(jié)點的 地址進(jìn)行hash,是為了防止惡意節(jié)點直接從信任表中檢索到所有節(jié)點的相關(guān)信息。本發(fā)明技術(shù)方案的步驟3中所述從信任表中按照預(yù)先設(shè)定的規(guī)則選擇下層節(jié)點, 是指從按照信任分?jǐn)?shù)從大到小依次排好的下層節(jié)點的第一個節(jié)點開始,計算各下層節(jié)點 A*(100-a)%+F(0, a)的數(shù)值,并判斷該值是否大于預(yù)先設(shè)定的類安全閾值,如是,則選定 該節(jié)點,同時累加器數(shù)值加1,然后繼續(xù)計算下一個節(jié)點;如否,則繼續(xù)計算下一個節(jié)點;如 此循環(huán),直到累加器數(shù)值為時停止;其中,N為下層環(huán)中的節(jié)點總數(shù);A為目前信任表中該節(jié)點的信任分?jǐn)?shù)$為預(yù)先設(shè) 定的大于0且小于100的常數(shù);F(0,a)表示在0到a之間取隨機(jī)數(shù)。在這里,實際上是預(yù)先設(shè)定的服務(wù)器對所轄區(qū)下層節(jié)點初始發(fā)送疫苗的比例, 該值設(shè)得太大將增加服務(wù)器負(fù)擔(dān),太小則使得疫苗在整個下層環(huán)中的擴(kuò)散不夠迅速,降低 系統(tǒng)時效性,因此需要根據(jù)實際情況選?。籉(0,a)是在0到a之間取隨機(jī)數(shù),保證一些中等 節(jié)點以及新加入節(jié)點的利益,即并不是每次都只給信任值高的節(jié)點發(fā)送疫苗,新加入的節(jié) 點也是有可能第一批獲得疫苗的。
圖1是Chord環(huán)的基本結(jié)構(gòu)示意圖;圖2是本發(fā)明的雙層Chord環(huán)型網(wǎng)絡(luò)的結(jié)構(gòu)示意圖;圖3是本發(fā)明具體實施方式
的流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明如附圖3所示,本發(fā)明按照以下各步驟進(jìn)行疫苗發(fā)放步驟1)構(gòu)建雙層Chord環(huán)形網(wǎng)絡(luò);所述雙層Chord環(huán)型網(wǎng)絡(luò)包括兩種不同的節(jié)點 環(huán)服務(wù)器環(huán)和下層節(jié)點環(huán),其中服務(wù)器環(huán)中的每一個節(jié)點作為服務(wù)器管理著對應(yīng)的一個 下層節(jié)點環(huán),且與該下層節(jié)點環(huán)中的所有下層節(jié)點全連接;服務(wù)器環(huán)內(nèi)的服務(wù)器節(jié)點之間 以及每一個下層節(jié)點環(huán)內(nèi)的下層節(jié)點之間均采用Chord協(xié)議進(jìn)行通信;Chord環(huán)的基本結(jié)構(gòu)如附圖1所示,本發(fā)明所構(gòu)建的雙層Chord環(huán)形網(wǎng)絡(luò)的結(jié)構(gòu)如 附圖2所示;為便于理解,假設(shè)上面構(gòu)建的雙層Chord環(huán)型網(wǎng)絡(luò)中的某一服務(wù)器節(jié)點SaSa生成 了或獲取了一個新的疫苗ΧΧ0,需要把它分發(fā)給出去,Alice, Bob, WoW和Cat是SaSa管轄 節(jié)點環(huán)中的幾個節(jié)點;其中Alice的finger表中擁有的Bob和Cat的路由信息,WoW擁有 Cat和Bob的路由信息,Bob擁有WoW和Cat的路由信息,Cat擁有Alice和WoW的路由信 肩、ο步驟2) SaSa將獲得的疫苗或疫苗包XX0、信任表以及自身的數(shù)字簽名生成疫苗包 XXI,將所述疫苗與自身的數(shù)字簽名捆綁成疫苗包XX2;其中,所述信任表由服務(wù)器節(jié)點動 態(tài)維護(hù),并包含該服務(wù)器所管轄的下層節(jié)點環(huán)中所有節(jié)點名稱及每個節(jié)點所對應(yīng)的信任分 數(shù);在本具體實施方式
中所設(shè)定的信任表如附圖4所示,信任表中的節(jié)點名稱是指用 戶注冊名的hash值,該節(jié)點名稱固定不變;服務(wù)器節(jié)點按照下述規(guī)則對所管理的各下層環(huán) 節(jié)點的信任分?jǐn)?shù)進(jìn)行動態(tài)維護(hù) 信任分?jǐn)?shù)的最高分為100分,達(dá)到一百不再繼續(xù)上升;最低分為O分,降至O分 不再繼續(xù)下調(diào); 服務(wù)器每接收到一次告警信息,則按照以下公式重新計算并修改發(fā)送該報警信 息的下層環(huán)節(jié)點的信任分?jǐn)?shù)A' =A" + (Nt。tal-Sere*Nere_Sevl*Nevl) * (Tnew-Tlatest) - (Τ膽-Tlatest) * α其中,Α”為該節(jié)點告警前的信任分?jǐn)?shù);A’為該節(jié)點告警后被重新計算并修改的 信任分?jǐn)?shù);Nttrtal為該節(jié)點告警成功總次數(shù)為該節(jié)點失誤告警總次數(shù);Nct1為惡意告警 總次數(shù)為預(yù)先設(shè)定的失誤告警的懲罰因子,取值范圍為(1,10] ;Sct1為預(yù)先設(shè)定的惡 意告警的懲罰因子,取值范圍為(1,10] ;Tnew為當(dāng)前節(jié)點正在被服務(wù)器響應(yīng)告警的時間點; Tlatest為當(dāng)前節(jié)點最近一次被服務(wù)器成功接受告警的時間點;《為預(yù)先設(shè)定的調(diào)節(jié)參數(shù),為 一常數(shù)。本具體實施方式
中,新加入的下層節(jié)點被賦予的初始值為40,取值為1.5, Sevl取值為4,α取值為0. 3。
9
步驟3) SaSa通過查詢自身的finger表獲得相關(guān)服務(wù)器節(jié)點的路由信息,將找到 的相關(guān)服務(wù)器節(jié)點路由信息和傳輸疫苗端口號以及疫苗文件的hash值進(jìn)行hash得到一個 key值,并在當(dāng)前finger表中查詢該key值是否存在,如不存在,則向該服務(wù)器節(jié)點發(fā)送疫 苗包XX2,若存在,則轉(zhuǎn)向finger表中的下一個條目,同時從信任表中按照預(yù)先設(shè)定的下述 規(guī)則選擇下層節(jié)點進(jìn)行疫苗包XXl的發(fā)送從按照信任分?jǐn)?shù)從大到小依次排好的下層節(jié)點的第一個節(jié)點開始,計算各下層節(jié) 點A*(100-a)%+F(0,a)的數(shù)值,并判斷該值是否大于預(yù)先設(shè)定的類安全閾值,如是,則選 定該節(jié)點,同時累加器數(shù)值加1,然后繼續(xù)計算下一個節(jié)點;如否,則繼續(xù)計算下一個節(jié)點; 如此循環(huán),直到累加器數(shù)值為時停止;其中,N為下層環(huán)中的節(jié)點總數(shù);A為目前信任表中該節(jié)點的信任分?jǐn)?shù)$為預(yù)先設(shè) 定的大于0且小于100的常數(shù);F(0,a)表示在0到a之間取隨機(jī)數(shù)。在此SaSa通過上述規(guī)則選擇了 Alice和Cat,并對其發(fā)送疫苗包。步驟4)接收到疫苗包的相關(guān)服務(wù)器節(jié)點通過疫苗包中的數(shù)字簽名驗證疫苗的可 靠性,若可靠性得以保證,則使用疫苗文件加固或挽救系統(tǒng),同時將自身的的路由信息和傳 輸疫苗的端口號以及疫苗文件的hash值進(jìn)行hash后得到一個值,并將該值的相關(guān)信息存 放到相關(guān)服務(wù)器節(jié)點的finger表中,同時在本地日志文件中進(jìn)行相應(yīng)更改,說明自己已經(jīng) 打過某疫苗,然后循環(huán)執(zhí)行步驟2-步驟4,直到服務(wù)器環(huán)中每一個服務(wù)器節(jié)點都遍歷了自 己finger表中的條目;接收到疫苗的下層節(jié)點通過疫苗文件中攜帶的數(shù)字簽名驗證疫苗的可靠性,若可 靠性得以保證,則使用疫苗文件加固或挽救系統(tǒng),同時將自身的路由信息和傳輸疫苗的端 口號以及疫苗文件的hash值進(jìn)行hash后得到一個值,并將該值的相關(guān)信息存放到相關(guān)節(jié) 點的finger表中去,使用疫苗包中的信任表更新本地存儲的節(jié)點信任分?jǐn)?shù),同時在本地日 志文件中進(jìn)行相應(yīng)更改,說明自己已經(jīng)打過該疫苗;在此,Alice和Cat驗證疫苗可靠后,使用了疫苗,同時將自身的路由信息和傳輸 疫苗的端口號以及疫苗文件的hash值進(jìn)行hash后得到一個值,并將該值的相關(guān)信息存放 到相關(guān)節(jié)點的finger表中去,使用疫苗包中的信任表更新本地存儲的節(jié)點信任分?jǐn)?shù),同時 在本地日志文件中進(jìn)行相應(yīng)更改,說明自己已經(jīng)打過該疫苗。步驟5)打過疫苗的下層環(huán)節(jié)點查詢當(dāng)前finger表中存儲的相關(guān)節(jié)點路由信息, 將找到的相關(guān)下層節(jié)點路由信息和傳輸疫苗端口號以及疫苗文件的hash值進(jìn)行hash得到 一個key值,并在當(dāng)前finger表中查詢該key值是否存在,若存在,則說明該相關(guān)下層節(jié)點 已經(jīng)打過疫苗,并轉(zhuǎn)向自身finger表中的下一個條目;若不存在,則向該相關(guān)下層節(jié)點發(fā) 送疫苗傳輸請求;在此,Alice查詢自身finger表,找到了 Bob和Cat的相關(guān)路由信息,查詢到Bob 未打過疫苗,而Cat已經(jīng)進(jìn)行了相關(guān)免疫,故只對Bob發(fā)送疫苗傳輸請求;Cat查詢自身 finger表,找到了 Alice和WoW的相關(guān)路由信息,查詢到WoW未打過疫苗,而Alice已經(jīng)進(jìn) 行了相關(guān)免疫,故只對WoW發(fā)送疫苗傳輸請求。步驟6)接收到疫苗傳輸請求的相關(guān)下層節(jié)點在信任表中查詢發(fā)送疫苗傳輸請求 節(jié)點的信任分?jǐn)?shù),并將該信任分?jǐn)?shù)與預(yù)先設(shè)定的本節(jié)點的信任閾值進(jìn)行比較,如大于該信 任閾值,則接收疫苗并轉(zhuǎn)至步驟4 ;如小于該信任閾值,則拒絕接收疫苗;
在此,Bob接受到Alice的疫苗傳輸請求時,將Alice的用戶名進(jìn)行hash,在信任 表中查詢Alice的信任分?jǐn)?shù),SaSa當(dāng)前的信任表見下表2,而Alice的信任分?jǐn)?shù)高于Bob設(shè) 置的信任閾值,故Bob同意接受疫苗包,接收疫苗包后從步驟4開始執(zhí)行,即先通過疫苗包 內(nèi)的數(shù)字簽名確認(rèn)疫苗是否可靠,確認(rèn)可靠后,使用疫苗文件加固或挽救系統(tǒng),同時將自身 的路由信息和傳輸疫苗的端口號以及疫苗文件的hash值進(jìn)行hash后得到一個值,并將該 值的相關(guān)信息存放到相關(guān)節(jié)點的finger表中去,同時在本地日志文件中進(jìn)行相應(yīng)更改,說 明自己已經(jīng)打過該疫苗;然后按照步驟5所述查詢相關(guān)節(jié)點是否已打過該疫苗并向未打過 疫苗的相關(guān)節(jié)點發(fā)出疫苗傳輸請求。
表版本號V2010030711 表更新時間2010-03-07 11:23 月艮務(wù)器的數(shù)字簽名6B E8 46 06 39 F5 65 18 48B2 F8 3AB1 46 3F 56 02 BE 06 C3 表2Woff接收到Cat的疫苗發(fā)送請求,將Cat的用戶名進(jìn)行hash,在信任表中查詢Cat 的信任分?jǐn)?shù),發(fā)現(xiàn)Cat的信任分?jǐn)?shù)低于WoW設(shè)置的信任閾值,拒絕接受疫苗包。在本實施方式中,服務(wù)器節(jié)點每觸發(fā)X-(信任分?jǐn)?shù)/d)次心跳,將返回節(jié)點日志中 的相關(guān)參數(shù)與默認(rèn)參數(shù)進(jìn)行比較,如二者不符,說明節(jié)點并未完全免疫,則服務(wù)器就向該節(jié) 點發(fā)送最新的疫苗包;x,d都是預(yù)先設(shè)定的常數(shù)X與d都為大于1的整數(shù),且X > (100/d);在此,服務(wù)器SaSa先問詢Alice,發(fā)現(xiàn)Alice已經(jīng)打過疫苗;一段時間后問詢Bob, 發(fā)現(xiàn)Bob又打過疫苗;一段時間后問詢Cat,發(fā)現(xiàn)Cat也打過疫苗;再問詢WoW,若此時WoW 沒有打上疫苗(實際上WoW可能已經(jīng)接受了來自Bob的疫苗包),則向WoW發(fā)送疫苗包XX2。本發(fā)明實施方式中,服務(wù)器環(huán)中其他服務(wù)器節(jié)點在完成步驟4轉(zhuǎn)至步驟2時,第一 個服務(wù)器節(jié)點生成疫苗包XX3、XX4,第二個服務(wù)器節(jié)點生成疫苗包XX5、XX6···,依次類推; 每個服務(wù)器節(jié)點所管轄的下層環(huán)中的疫苗發(fā)放過程與上述相同,此處不再贅述。
權(quán)利要求
一種基于雙層Chord環(huán)型網(wǎng)絡(luò)的疫苗分發(fā)方法,其特征在于,包括以下步驟步驟1)構(gòu)建雙層Chord環(huán)形網(wǎng)絡(luò);所述雙層Chord環(huán)型網(wǎng)絡(luò)包括兩種不同的節(jié)點環(huán)服務(wù)器環(huán)和下層節(jié)點環(huán),其中服務(wù)器環(huán)中的每一個節(jié)點作為服務(wù)器管理著對應(yīng)的一個下層節(jié)點環(huán),且與該下層節(jié)點環(huán)中的所有下層節(jié)點全連接;服務(wù)器環(huán)內(nèi)的服務(wù)器節(jié)點之間以及每一個下層節(jié)點環(huán)內(nèi)的下層節(jié)點之間均采用Chord協(xié)議進(jìn)行通信;步驟2)服務(wù)器節(jié)點將獲得的疫苗或疫苗包XX(j)、信任表以及自身的數(shù)字簽名生成疫苗包XX(j+1),將所述疫苗與自身的數(shù)字簽名捆綁成疫苗包XX(j+2);其中,所述信任表由服務(wù)器節(jié)點動態(tài)維護(hù),并包含該服務(wù)器所管轄的下層節(jié)點環(huán)中所有節(jié)點名稱及每個節(jié)點所對應(yīng)的信任分?jǐn)?shù);其中j為疫苗包的序號;步驟3)服務(wù)器節(jié)點通過查詢自身的finger表獲得相關(guān)服務(wù)器節(jié)點的路由信息,將找到的相關(guān)服務(wù)器節(jié)點路由信息和傳輸疫苗端口號以及疫苗文件的hash值進(jìn)行hash得到一個key值,并在當(dāng)前finger表中查詢該key值是否存在,如不存在,則向該服務(wù)器節(jié)點發(fā)送疫苗包XX(j+2),若存在,則轉(zhuǎn)向finger表中的下一個條目,同時從信任表中按照預(yù)先設(shè)定的規(guī)則選擇下層節(jié)點進(jìn)行疫苗包XX(j+1)的發(fā)送;步驟4)接收到疫苗包的相關(guān)服務(wù)器節(jié)點通過疫苗包中的數(shù)字簽名驗證疫苗的可靠性,若可靠性得以保證,則使用疫苗文件加固或挽救系統(tǒng),同時將自身的的路由信息和傳輸疫苗的端口號以及疫苗文件的hash值進(jìn)行hash后得到一個值,并將該值的相關(guān)信息存放到相關(guān)服務(wù)器節(jié)點的finger表中,同時在本地日志文件中進(jìn)行相應(yīng)更改,說明自己已經(jīng)打過某疫苗,然后循環(huán)執(zhí)行步驟2-步驟4,直到服務(wù)器環(huán)中每一個服務(wù)器節(jié)點都遍歷了自己finger表中的條目;接收到疫苗的下層節(jié)點通過疫苗文件中攜帶的數(shù)字簽名驗證疫苗的可靠性,若可靠性得以保證,則使用疫苗文件加固或挽救系統(tǒng),同時將自身的路由信息和傳輸疫苗的端口號以及疫苗文件的hash值進(jìn)行hash后得到一個值,并將該值的相關(guān)信息存放到相關(guān)節(jié)點的finger表中去,使用疫苗包中的信任表更新本地存儲的節(jié)點信任分?jǐn)?shù),同時在本地日志文件中進(jìn)行相應(yīng)更改,說明自己已經(jīng)打過該疫苗;步驟5)打過疫苗的下層環(huán)節(jié)點查詢當(dāng)前finger表中存儲的相關(guān)節(jié)點路由信息,將找到的相關(guān)下層節(jié)點路由信息和傳輸疫苗端口號以及疫苗文件的hash值進(jìn)行hash得到一個key值,并在當(dāng)前finger表中查詢該key值是否存在,若存在,則說明該相關(guān)下層節(jié)點已經(jīng)打過疫苗,并轉(zhuǎn)向自身finger表中的下一個條目;若不存在,則向該相關(guān)下層節(jié)點發(fā)送疫苗傳輸請求;步驟6)接收到疫苗傳輸請求的相關(guān)下層節(jié)點在信任表中查詢發(fā)送疫苗傳輸請求節(jié)點的信任分?jǐn)?shù),并將該信任分?jǐn)?shù)與預(yù)先設(shè)定的本節(jié)點的信任閾值進(jìn)行比較,如大于該信任閾值,則接收疫苗并轉(zhuǎn)至步驟4;如小于該信任閾值,則拒絕接收疫苗。
2.如權(quán)利要求1所述基于雙層Chord環(huán)型網(wǎng)絡(luò)的疫苗分發(fā)方法,其特征在于,所述信任 表中的節(jié)點名稱是指用戶注冊名的hash值,該節(jié)點名稱固定不變;服務(wù)器節(jié)點按照下述規(guī) 則對所管理的各下層環(huán)節(jié)點的信任分?jǐn)?shù)進(jìn)行動態(tài)維護(hù) 信任分?jǐn)?shù)的最高分為100分,達(dá)到一百不再繼續(xù)上升;最低分為0分,降至0分不再 繼續(xù)下調(diào); 服務(wù)器每接收到一次告警信息,則按照以下公式重新計算并修改發(fā)送該報警信息的下層環(huán)節(jié)點的信任分?jǐn)?shù)A' =A" + (Nt。tal-Sere*Nere-Sevl*Nevl) * (Tnew-Tlatest) - (Tnew-Tlatest) * α其中,Α”為該節(jié)點告警前的信任分?jǐn)?shù);A’為該節(jié)點告警后被重新計算并修改的信任 分?jǐn)?shù);Ntotal為該節(jié)點告警成功總次數(shù);Nere為該節(jié)點失誤告警總次數(shù);Nevl為惡意告警總次 數(shù);Sere為預(yù)先設(shè)定的失誤告警的懲罰因子,取值范圍為(1,10] ;SCTl為預(yù)先設(shè)定的惡意告 警的懲罰因子,取值范圍為(1,10] ;Tnew為當(dāng)前節(jié)點正在被服務(wù)器響應(yīng)告警的時間點;Tlatest 為當(dāng)前節(jié)點最近一次被服務(wù)器成功接受告警的時間點;α為預(yù)先設(shè)定的調(diào)節(jié)參數(shù),為一常 數(shù)。
3.如權(quán)利要求1所述基于雙層Chord環(huán)型網(wǎng)絡(luò)的疫苗分發(fā)方法,其特征在于,步驟3中 所述從信任表中按照預(yù)先設(shè)定的規(guī)則選擇下層節(jié)點,是指從按照信任分?jǐn)?shù)從大到小依次排好的下層節(jié)點的第一個節(jié)點開始,計算各下層節(jié)點 A*(100-a)%+F(0, a)的數(shù)值,并判斷該值是否大于預(yù)先設(shè)定的類安全閾值,如是,則選定 該節(jié)點,同時累加器數(shù)值加1,然后繼續(xù)計算下一個節(jié)點;如否,則繼續(xù)計算下一個節(jié)點;如 此循環(huán),直到累加器數(shù)值為時停止;其中,N為下層環(huán)中的節(jié)點總數(shù);A為目前信任表中該節(jié)點的信任分?jǐn)?shù);a為預(yù)先設(shè)定的 大于0且小于100的常數(shù);F(0,a)表示在0到a之間取隨機(jī)數(shù)。
4.如權(quán)利要求1所述基于雙層Chord環(huán)型網(wǎng)絡(luò)的疫苗分發(fā)方法,其特征在于服務(wù)器 節(jié)點按照一定的時間間隔查詢所管轄的下層環(huán)節(jié)點是否已打過疫苗,如發(fā)現(xiàn)該節(jié)點未打疫 苗,則向該節(jié)點發(fā)送疫苗包。
5.如權(quán)利要求4所述基于雙層Chord環(huán)型網(wǎng)絡(luò)的疫苗分發(fā)方法,其特征在于,所述服務(wù) 器節(jié)點按照一定的時間間隔查詢所管轄的下層環(huán)節(jié)點是否已打過疫苗是指服務(wù)器節(jié)點每觸發(fā)X_(信任分?jǐn)?shù)/d)次心跳,將返回節(jié)點日志中的相關(guān)參數(shù)與默認(rèn) 參數(shù)進(jìn)行比較,如二者不符,說明節(jié)點并未完全免疫,則服務(wù)器就向該節(jié)點發(fā)送最新的疫苗 包;X,d都是預(yù)先設(shè)定的常數(shù),X與d都為大于1的整數(shù),且X > (100/d)。
全文摘要
本發(fā)明公開了一種基于雙層Chord環(huán)形網(wǎng)絡(luò)的疫苗分發(fā)方法,屬于計算機(jī)病毒防治技術(shù)領(lǐng)域。本發(fā)明通過構(gòu)建一種復(fù)合的雙層Chord環(huán)型網(wǎng)絡(luò),充分利用了網(wǎng)絡(luò)中非服務(wù)器節(jié)點的資源來提高疫苗分發(fā)的效率,并通過建立信任機(jī)制解決了疫苗傳輸?shù)陌踩珕栴}。相比現(xiàn)有技術(shù),有效地降低了服務(wù)器的負(fù)載。
文檔編號H04L29/06GK101883101SQ20101020745
公開日2010年11月10日 申請日期2010年6月23日 優(yōu)先權(quán)日2010年6月23日
發(fā)明者徐小龍, 楊寶春, 柴倩, 熊婧夷, 程春玲, 趙昌耀, 錢建屹 申請人:南京郵電大學(xué)