【文章內(nèi)容簡介】
ath.recordLastRecord the identity of the preceding forwarder.badObserveHave a corrupt member record its observations.fixedNodeNumNumber of fixed WonGoo nodes in a path.FwLengthForward path length between two fixed WonGoo nodes.我們假定攻擊者除了有能力運行自己的WonGoo節(jié)點之外,還能控制部分其他的節(jié)點。我們把攻擊者自己的節(jié)點及被其控制的其他節(jié)點統(tǒng)稱為泄密節(jié)點,也叫泄密者;把沒有被攻擊者控制的節(jié)點,即非泄密者,稱為誠實的節(jié)點。誠實的節(jié)點不會為攻擊者提供任何信息。假設(shè)個成員的WonGoo網(wǎng)絡(luò)中有個泄密者,發(fā)送者Alice已經(jīng)利用節(jié)點選擇算法[1]選定了個固定接收點。我們所考慮的問題是攻擊者是否能夠確定一條路徑的發(fā)送者是誰。對接收者的分析與對發(fā)送者的類似。如果發(fā)送者本身是一個泄密者,則對攻擊者來說,系統(tǒng)已經(jīng)被攻破。我們考慮由非泄密節(jié)點發(fā)起的一條路徑。在這條路徑上,泄密節(jié)點占據(jù)了一個位置。泄密者的目的是確定誰是該路徑的發(fā)起者。由于我們采用了加密技術(shù),因此通信的內(nèi)容是不會暴露發(fā)起者的身份的。所以,攻擊者有理由相信第一個泄密者的前驅(qū)節(jié)點比其他節(jié)點更像是發(fā)起者。這種假設(shè)是合理的,因為從攻擊者來看第一個泄密者的前者最有可能是發(fā)起者。后面的敘述中假設(shè)WonGoo網(wǎng)絡(luò)中誠實節(jié)點數(shù)為10。 協(xié)議的開始我們要求每一次會話都是由同一個發(fā)送者(observe0)發(fā)起的。這是通過在協(xié)議開始時設(shè)置變量lastSeen的值為零來實現(xiàn)的。同時,我們還要設(shè)置分別用于表示固定節(jié)點數(shù)和變化路徑長度的變量fixedNodeNum和FwLength的值。// Set up a new protocol instance[] new amp。 (runCount 0) (runCount39。 = runCount1) amp。 new39。 = false amp。 start39。 = true amp。 fixedNodeNum39。 = MaxfixedNodeNum amp。 FwLength39。 = MaxFwLength。// Start the protocol[] start lastSeen39。=0 amp。 run39。=true amp。 deliver39。=false amp。 start39。=false。 轉(zhuǎn)發(fā)節(jié)點的選擇發(fā)送者隨機的從個節(jié)點中選擇第一個概率接收點。假定個節(jié)點被選中的概率是相等的。我們把轉(zhuǎn)發(fā)節(jié)點的選擇模型化為兩次狀態(tài)轉(zhuǎn)移,一次確定所選擇的轉(zhuǎn)發(fā)節(jié)點是否是誠實的,另外一次確定轉(zhuǎn)發(fā)節(jié)點的身份。隨機選擇的轉(zhuǎn)發(fā)節(jié)點是惡意節(jié)點的概率為badC=C/N,是誠實節(jié)點的概率為goodC=1badC。// Good or bad WonGoo member [] (!good amp。 !bad amp。 !deliver amp。 run) goodC: (good39。=true) amp。 (recordLast39。=true) amp。 (run39。=false) + badC: bad39。=true amp。 badObserve39。=true amp。 run39。=false。如果轉(zhuǎn)發(fā)節(jié)點是誠實的,則它可能為NC個誠實節(jié)點中的任意一個。轉(zhuǎn)發(fā)者的身份記錄在lastSeen變量中。記錄轉(zhuǎn)發(fā)者的身份是為了模擬以下行為:如果該轉(zhuǎn)發(fā)節(jié)點的下一個節(jié)點是惡意節(jié)點,則該惡意節(jié)點可以記錄下該轉(zhuǎn)發(fā)節(jié)點的IP地址。// Record the last WonGoo member who touched the message, all good members may appear with equal // probability[] recordLast amp。 WonGooSize=10 : (lastSeen39。=0) amp。 (recordLast39。=false) amp。 (run39。=true) + … : (lastSeen39。=9) amp。 (recordLast39。=false) amp。 (run39。=true)。WonGoo協(xié)議中,每一個節(jié)點(包括惡意節(jié)點)都必須確定下一跳。轉(zhuǎn)發(fā)者以概率將數(shù)據(jù)轉(zhuǎn)發(fā)給隨機選定的概率接收點,以概率轉(zhuǎn)發(fā)給已經(jīng)選好的下一個固定接收點。// Good members, forward to a random selected node with probability PF, else deliver to the next fixed node. [] (good amp。 !deliver amp。 run amp。 FwLength 0) PF: (good39。=false) amp。 (FwLength39。=FwLength1) + notPF: (good39。=false) amp。 (fixedNodeNum39。=fixedNodeNum1) amp。 (FwLength39。=MaxFwLength)。 惡意節(jié)點的模型化顯然,匿名路徑上的節(jié)點是知道它前一跳的地址的。如果是惡意節(jié)點,則它將記錄下其上一跳的IP地址。這是通過讀取lastSeen變量的值并紀錄在observei中而實現(xiàn)的。// Bad members, remember from whom the message was received and terminate the protocol[] lastSeen=0 amp。 badObserve (observe039。 = observe0 + 1) amp。 deliver39。=true amp。 run39。=true amp。 badObserve39。=false。 … [] lastSeen=9 amp。 badObserve (observe939。 = observe9 + 1) amp。 deliver39。=true amp。 run39。=true amp。 badObserve39。=false。 對每一次路徑建立過程來說,計數(shù)器observei并不清零,而是進行累加。這使得攻擊者可以將對源自同一個發(fā)起者的多條路徑的觀察信息進行累加。我們假定攻擊者可以驗證出兩條路經(jīng)是否源自同一個發(fā)送者。 協(xié)議的結(jié)束當遇到攻擊者時我們就結(jié)束路徑建立過程,這是因為一旦碰到了惡意節(jié)點,則隨后的建立過程不會提供更多的關(guān)