基于去中心化的DHT的優(yōu)劣勢分析
前言
開放且去中心化的DHT早在區(qū)塊鏈問世前就已蔚為風(fēng)行,然而網(wǎng)路世界上并不存在完美無暇的協(xié)定,DHT也不免有一些設(shè)計(jì)缺陷。在這篇文章中,筆者將延伸前文來說明DHT的若干弱點(diǎn)以及可能的對策。
關(guān)于紙條協(xié)定的補(bǔ)充
接續(xù)前文的紙條協(xié)定:
紙條協(xié)定
1.紙條正面需須標(biāo)注目標(biāo)T,紙條背面須標(biāo)注請求
2. S與T的距離為其二人座位的直線距離
3. T的鄰員都知道T的小考分?jǐn)?shù)
4. S只知道坐在S鄰員的座號并寫在鄰員名單中
5. S只能傳紙條給在S鄰員名單中的R且R與T的距離須小于S與T的距離
查詢
在上課時(shí)傳紙條給X號同學(xué),問他的小考分?jǐn)?shù)
然而以上的敘述并未說明一個(gè)關(guān)鍵的環(huán)節(jié):發(fā)起查詢的人要如何得知目標(biāo)的座號(鍵值)?在這里,我們必須使用座位表來得知目標(biāo)的座號:
座位表
1.座位表是座號與位置的對照表
2.座位表是得知座號的唯一方式
3.座位表需不停地在所有人之間流傳
4.全班只有一份座位表
座位表其實(shí)就是DHT的索引表,也就是鍵值的列表,它可以讓節(jié)點(diǎn)掌握DHT上可查詢內(nèi)容的鍵值。為什么需要索引表?這是由于在最初只有在DHT寫入內(nèi)容的節(jié)點(diǎn)知道該內(nèi)容的鍵值,其他節(jié)點(diǎn)只能透過索引表獲得DHT全局的概觀,這對檔案分享類的應(yīng)用(例如BitTorrent)尤其重要。
針對DHT的攻擊手法
接下來,筆者將繼續(xù)延續(xù)紙條協(xié)定來簡述這些攻擊的精要。許多文獻(xiàn)都曾探討過針對DHT的攻擊手法,它們大致可以總結(jié)成7種。我們假設(shè)攻擊者是一個(gè)具有破壞意圖的個(gè)體,暫且稱呼其為E;而受害者可能是單個(gè)或多個(gè)個(gè)體,我們稱呼其為V:
女巫攻擊(Sybil Attack):很多E的同伙加入班級,E一個(gè)人支配了全班。
在DHT中,能代表節(jié)點(diǎn)「身份」的只有節(jié)點(diǎn)編號,然而節(jié)點(diǎn)編號過于單薄且易于修改,因此攻擊者可以大量制造虛假的身份潛入并進(jìn)而控制整個(gè)網(wǎng)路。身份是一個(gè)難解的問題,在當(dāng)今的網(wǎng)路協(xié)定我們只能倚賴少數(shù)的權(quán)威(例如政府或網(wǎng)路服務(wù)商)提供對身份的認(rèn)證,這顯然不是去中心化且注重隱私的做法。
日蝕攻擊(Eclipse Attack):E串通了V的鄰員,使V被孤立,且E能得知V所有紙條的內(nèi)容。
由于節(jié)點(diǎn)編號可以被自由更動,因此攻擊者可以選定特定受害者并修改攻擊節(jié)點(diǎn)的編號使其與受害者距離接近,如此受害者的路由表內(nèi)就會被攻擊者的節(jié)點(diǎn)占據(jù)。一旦受害者被「隔離」在攻擊者的網(wǎng)路內(nèi)部,攻擊者就可以阻斷、監(jiān)控、甚至竄改受害者的查詢訊息。
擾動攻擊(Churn Attack):E在上課途中經(jīng)常進(jìn)出教室,讓V查不到分?jǐn)?shù),且影響V訊息接力的效率。
由于加入/退出DHT幾乎不需要耗費(fèi)任何資源,攻擊者可以頻繁地進(jìn)出網(wǎng)路,使鄰近節(jié)點(diǎn)疲于更新路由表,造成網(wǎng)路阻塞及離線資源無法取得。尤其在Chord缺乏冗余(路由表在每個(gè)區(qū)間只對應(yīng)一個(gè)節(jié)點(diǎn))與路由更新流程相當(dāng)繁瑣(需要4個(gè)步驟)的條件下,其對擾動攻擊更是無法抵抗。
敵對路由(Adversarial Routing):E亂傳V的紙條。
在DHT開放的環(huán)境下,參與者的行為是不可預(yù)期的,攻擊者可以無視路由表而將訊息接力給攻擊者的隔離網(wǎng)路或直接拒絕處理,這種攻擊對于缺乏冗余的Chord來說相當(dāng)棘手。一個(gè)運(yùn)作良好的開放分散式系統(tǒng)需奠基于參與者的正常行為;而一個(gè)設(shè)計(jì)良好的開放分散式系統(tǒng)則要能確保系統(tǒng)運(yùn)作良好,意即其能獎(jiǎng)勵(lì)正常行為及懲罰隨機(jī)行為或者能約束隨機(jī)行為的發(fā)生。在這樣的定義之下,缺乏獎(jiǎng)懲機(jī)制與約束機(jī)制的DHT并不是一個(gè)設(shè)計(jì)良好的開放分散式系統(tǒng)。
污染攻擊(PolluTIon Attack):E竄改自己的分?jǐn)?shù),使V拿到錯(cuò)誤的分?jǐn)?shù)。
污染攻擊與敵對路由手法同樣地簡單而暴力:攻擊者直接回傳錯(cuò)誤的結(jié)果使查詢失敗,對缺乏冗余的Chord也同樣很棘手。盡管只需比對內(nèi)容的雜湊值與鍵值就能檢查內(nèi)容是否受到污染,然而具足夠規(guī)模的污染仍能癱瘓整個(gè)網(wǎng)路。
索引投毒(Index Poisoning):E在座位表傳到自己時(shí),竄改V的座號。
DHT必須透過索引表來獲得對全局的概觀,而索引表通常由第三方服務(wù)進(jìn)行管理(例如BitTorrent的種子網(wǎng)站),這些服務(wù)對檔案分享類的應(yīng)用至關(guān)重要。然而,第三方服務(wù)無法阻止攻擊者對DHT大量注入無意義甚至有害的資源(例如木馬程式)污染索引表。這些有害資源偽裝成有意義的資源(你知道的)以引誘使用者下載,且攻擊者自身幾乎不需要負(fù)擔(dān)任何成本(不占用自身頻寬)。
服務(wù)阻斷(Denial of Service):E不停地傳紙條,讓V沒空傳其他人的紙條。
服務(wù)阻斷就是攻擊者透過各種手段耗竭服務(wù)提供者有限的資源導(dǎo)致其無法再提供任何服務(wù),以達(dá)成癱瘓服務(wù)的目的。由于任何協(xié)定都受限于網(wǎng)路頻寬與運(yùn)算資源,因此對DHT只需發(fā)起大量查詢令節(jié)點(diǎn)疲于應(yīng)付,便能使其資源耗竭(記憶體/硬碟空間/頻寬等)。盡管DHT具有去中心化與規(guī)?;奶匦?,在體質(zhì)上對服務(wù)阻斷有較高的抗性,但仍無法幸免于具足夠規(guī)模的服務(wù)阻斷。
對弱點(diǎn)的解決對策
上述的攻擊情境可以總結(jié)出幾個(gè)主要弱點(diǎn):
1. 可以隨意進(jìn)出教室(加入/退出網(wǎng)路的成本極低)
2. 可以不斷地傳紙條詢問分?jǐn)?shù)(服務(wù)請求成本極低)
3. 缺乏做好事的動機(jī)(缺乏獎(jiǎng)懲機(jī)制)
4. 缺乏對隨機(jī)行為的約束(缺乏共識機(jī)制)
5. 可以輕易形成多數(shù)(身份單薄易于制造)
事實(shí)上,這些并非DHT獨(dú)有的問題 — 幾乎所有開放分散式系統(tǒng)都必須處理這些問題。對DHT來說,這些方案的對策大多很直觀:
針對第1點(diǎn)的對策是讓進(jìn)出教室的成本提高,例如S/Kademlia就是其中一種應(yīng)用此對策的改進(jìn)方案:要先交作業(yè)才能進(jìn)教室且每次進(jìn)教室的座號不同,跟作業(yè)成績有關(guān)。
針對第2點(diǎn)的對策是使用者付費(fèi),讓詢問分?jǐn)?shù)者需支付手續(xù)費(fèi)(或其他稀缺資源);針對第3點(diǎn)的對策是讓表現(xiàn)好的記功、表現(xiàn)不好的記過,而記功多的可以參與更多訊息接力,獲得更多利益;記過多的則會逐漸被排除于網(wǎng)路外,失去參與資格。
針對第4點(diǎn)的對策是每個(gè)人在行動前需經(jīng)所有人投票表決,投票者可以檢驗(yàn)個(gè)別行為是否符合規(guī)則,用多數(shù)行動(Majority AcTIon)來取得對個(gè)別行動的共識(Consensus)以借此約束隨機(jī)行為。Robust CommunicaTIon Protocol即采取這種策略:每個(gè)人要傳紙條前需與自己的左右鄰員投票表決。
針對第5點(diǎn),除了使用權(quán)威認(rèn)可的身份之外,其中一個(gè)可能的方案是去中心化身份(Decentralized IdenTIty),自從區(qū)塊鏈問世后這個(gè)領(lǐng)域被再度重視。
DHT上能發(fā)行加密貨幣嗎?
當(dāng)然可以,然而此貨幣之安全性是堪憂的,因?yàn)橐粋€(gè)穩(wěn)定可靠的貨幣必須奠基于其對隨機(jī)行為的抗性,這種抗性稱為拜占庭容錯(cuò)(Byzantine Fault Tolerance),這也是區(qū)塊鏈一個(gè)重要的性質(zhì)。
具備共識機(jī)制的DHT是一個(gè)值得探索的改進(jìn)方案。有趣的是,這樣的改進(jìn)方案被視為是一種區(qū)塊鏈分片(Sharding):各分片維護(hù)自己的共識,不同分片之間透過基于鍵值的路由(Key-based Routing)來削減對主鏈的依賴。
Holochain是一個(gè)基于DHT的去中心化應(yīng)用程式平臺(Dapp Platform),它對貨幣則持有不同的看法:貨幣也可以是一種只存在于交易雙方之間的相互信用(Mutual Credit),這是一個(gè)很有趣的觀點(diǎn),然而這并未解決DHT的根本缺陷。
結(jié)語
DHT除了逐漸被視為區(qū)塊鏈分片的一種思路,也開始在一些區(qū)塊鏈專案中成為負(fù)責(zé)資料儲存的基礎(chǔ)建設(shè)。