隨著越來(lái)越多的高調(diào)區(qū)塊鏈試圖從工作證明協(xié)議轉(zhuǎn)換過(guò)來(lái),利益證明協(xié)議成為人們關(guān)注的焦點(diǎn)。他們中的許多人探索混合系統(tǒng)(POW/POS)的選擇,而其他人則致力于純POS實(shí)現(xiàn)。
而Proof of Stake協(xié)議的最大威脅之一是遠(yuǎn)程攻擊。
在我對(duì)這個(gè)主題的研究中,我發(fā)現(xiàn)有關(guān)遠(yuǎn)程攻擊的信息很少,很多時(shí)候都會(huì)產(chǎn)生誤導(dǎo)。即使深入學(xué)術(shù)論文,有時(shí)我也無(wú)法理解這個(gè)攻擊組的本質(zhì)。下面你會(huì)發(fā)現(xiàn)我試圖抵御遠(yuǎn)程攻擊。
簡(jiǎn)而言之,長(zhǎng)程攻擊就是攻擊者創(chuàng)建了一條從創(chuàng)世區(qū)塊開(kāi)始的長(zhǎng)區(qū)塊鏈分支,并試圖替換掉當(dāng)前的合法主鏈。該分支上可能存有和主鏈不同的交易和區(qū)塊,所以這種攻擊又被稱(chēng) 替換歷史攻擊或歷史覆寫(xiě)攻擊。
對(duì)于本文的其余部分,術(shù)語(yǔ)long range、alternative history、alternate history、history revision將交替使用。
遠(yuǎn)程攻擊之所以存在的主要原因是一個(gè)被稱(chēng)為弱主觀性的概念。
弱主觀性(Weak Subjectivity)
該術(shù)語(yǔ)用于描述影響區(qū)塊鏈網(wǎng)絡(luò)的新節(jié)點(diǎn)的問(wèn)題以及在大量時(shí)間離線后聯(lián)機(jī)的節(jié)點(diǎn)。在線節(jié)點(diǎn)不受弱主觀性的影響。
當(dāng)一個(gè)新節(jié)點(diǎn)添加到網(wǎng)絡(luò)時(shí),始終會(huì)與創(chuàng)世塊有一定聯(lián)系。這是所有節(jié)點(diǎn)作為第一個(gè)節(jié)點(diǎn)接受的唯一塊。與創(chuàng)世塊一起,該節(jié)點(diǎn)將被呈現(xiàn)該區(qū)塊鏈的所有當(dāng)前發(fā)布的分支。不幸的是,節(jié)點(diǎn)將無(wú)法立即告知哪個(gè)分支是主鏈。
這同樣適用于長(zhǎng)時(shí)間離線的節(jié)點(diǎn)。在某個(gè)時(shí)間點(diǎn)上,這些節(jié)點(diǎn)知道哪個(gè)分支是主鏈,但在離線之后,它們不再清楚那個(gè)是主鏈。
在線節(jié)點(diǎn)實(shí)時(shí)跟蹤和監(jiān)控區(qū)塊鏈。除非一個(gè)分支合法地成為主鏈,否則不能欺騙他們接受另一個(gè)分支作為主鏈。
示例區(qū)塊鏈,綠色區(qū)塊為Genesis區(qū)塊,紫色表示孤立/分支,黑色區(qū)塊為主鏈
如您所見(jiàn),上面的區(qū)塊鏈快照有許多不同的分支。其中一些比其他的長(zhǎng)。
我們將在本文中討論的第一個(gè)規(guī)則是最長(zhǎng)的鏈規(guī)則。根據(jù)這條規(guī)則,主鏈永遠(yuǎn)是塊數(shù)最多的分支。在需要物理資源來(lái)生成區(qū)塊的工作塊鏈的證明中,最長(zhǎng)的鏈規(guī)則是確定分支中投入了多少工作量的一個(gè)很好的方法。
POW弱主觀性(POW Weak Subjectivity)
在工作證明區(qū)塊鏈中,我們基于這樣的假設(shè):除非網(wǎng)絡(luò)受到51%的攻擊,否則不可能有來(lái)自創(chuàng)世塊的競(jìng)爭(zhēng)分支。對(duì)于分支,為了達(dá)到主鏈的長(zhǎng)度,需要大量的計(jì)算能力投入。對(duì)于PoW區(qū)塊鏈,最長(zhǎng)鏈規(guī)則足以抵消弱主觀性。
無(wú)成本模擬(Costless Simulation)
在Proof of Stake協(xié)議中,最長(zhǎng)的鏈規(guī)則不足以確定主鏈。這是因?yàn)槲覀兎Q(chēng)之為無(wú)成本模擬的概念。
權(quán)益證明協(xié)議采用驗(yàn)證人和一種被稱(chēng)為“權(quán)益”的虛擬資產(chǎn)來(lái)保障網(wǎng)絡(luò)的安全。權(quán)益證明區(qū)塊鏈網(wǎng)絡(luò)中沒(méi)有礦工,也不再需要任何人消耗算力來(lái)計(jì)算無(wú)用的哈希難題。整個(gè)網(wǎng)絡(luò)構(gòu)建在對(duì)驗(yàn)證人的信任之上,相信他們由于對(duì)特定某條鏈的投資而一直會(huì)為這條鏈記賬。
驗(yàn)證者僅僅是從交易池中取交易,打包到區(qū)塊中,然后廣播出去,僅此而已。所以說(shuō),無(wú)代價(jià)模擬就是幾乎不消耗算力資源來(lái)創(chuàng)建一條從創(chuàng)世區(qū)塊開(kāi)始的長(zhǎng)分支鏈的能力。
多個(gè)分支具有相同長(zhǎng)度的POS區(qū)塊鏈?zhǔn)纠?/p>
任何到網(wǎng)絡(luò)的新節(jié)點(diǎn)都將顯示區(qū)塊鏈的多個(gè)分支,并且許多分支可以具有相同的長(zhǎng)度。 通過(guò)無(wú)成本模擬和弱主觀性,最長(zhǎng)鏈規(guī)則受到挑戰(zhàn)。 僅僅確定區(qū)塊鏈的主鏈?zhǔn)遣粔虻摹?遠(yuǎn)程攻擊利用這兩個(gè)概念。
長(zhǎng)程攻擊
到目前為止,有三種不同類(lèi)型的遠(yuǎn)程攻擊。大多數(shù)出版物通常將前兩種情況混為一談,即簡(jiǎn)單腐敗(simple Corruption)和變節(jié)攻擊(Posterior Corruption),或者只接受變節(jié)攻擊(Posterior Corruption)作為這些攻擊的唯一案例。不幸的是,我沒(méi)能為第一個(gè)案例找到更具描述性的名稱(chēng)。
總而言之,我們有以下案例:
Simple(簡(jiǎn)單攻擊)
Posterior Corruption(變節(jié)攻擊)
Stake Bleeding(權(quán)益流損)
攻擊者通過(guò)回溯至創(chuàng)世區(qū)塊并分叉整條區(qū)塊鏈的行為來(lái)進(jìn)行長(zhǎng)程攻擊。這條新的分支將覆寫(xiě)和主鏈完全不同的區(qū)塊歷史(或是部分)。一旦這條人造的惡意分支長(zhǎng)度超過(guò)主鏈,它就會(huì)取代主鏈,成功上位。
從最簡(jiǎn)單的遠(yuǎn)程攻擊案例開(kāi)始,我們將構(gòu)建更復(fù)雜的場(chǎng)景。在我們的示例中,我們有一個(gè)帶有3個(gè)驗(yàn)證人的驗(yàn)證器池,Bob,Alice和Malory,他們都擁有相同股份33.3%。
關(guān)鍵細(xì)節(jié):關(guān)于驗(yàn)證人及其股份關(guān)系的信息都存儲(chǔ)在Genesis區(qū)塊。
SIMPLE
第一種情況是指對(duì)Pos協(xié)議的簡(jiǎn)單實(shí)施。 在這種情況下,節(jié)點(diǎn)不檢查塊時(shí)間戳。
在POS協(xié)議的正常循環(huán)中,每個(gè)驗(yàn)證人都有機(jī)會(huì)驗(yàn)證區(qū)塊。
示例區(qū)塊鏈的快照,每個(gè)驗(yàn)證器都有相同的選舉機(jī)會(huì)
Malory決定執(zhí)行遠(yuǎn)程攻擊并創(chuàng)建區(qū)塊鏈的另一個(gè)分支。Malory回到創(chuàng)世區(qū)塊,并開(kāi)始創(chuàng)建分叉區(qū)塊鏈。
由于驗(yàn)證人的信息都位于Genesis區(qū)塊內(nèi),Malory將無(wú)法以比主鏈更快的速度生成區(qū)塊。Maloy只能以相同的速率生成塊。在所有這些條件下,Maloy想要超越主鏈的唯一途徑就是提前生產(chǎn)區(qū)塊。
在Maloy的分支鏈中,當(dāng)選的機(jī)會(huì)與其他分支鏈相同。“括號(hào)”塊是空區(qū)塊。 Malory分支的當(dāng)前長(zhǎng)度是2個(gè)區(qū)塊。
三點(diǎn)表示多個(gè)空區(qū)塊。 Malory為了與主鏈競(jìng)爭(zhēng),她必須提前計(jì)算區(qū)塊。 上面的區(qū)塊鏈快照中,兩個(gè)分支都有5個(gè)區(qū)塊。
Malory將不得不偽造時(shí)間戳,并且由于她是該分支中唯一的活躍利益相關(guān)者,因此可以這樣做。在節(jié)點(diǎn)不考慮時(shí)間戳的實(shí)現(xiàn)中,兩個(gè)分支都是有效的,節(jié)點(diǎn)將無(wú)法發(fā)現(xiàn)Malory的把戲。
Posterior Corruption(變節(jié)攻擊)
假設(shè)更改時(shí)間戳的伎倆已經(jīng)失效了, Malory 明白為了實(shí)現(xiàn)長(zhǎng)程攻擊她必須另辟蹊徑。她要在相同的時(shí)間幀數(shù)內(nèi)生成比主鏈更多的區(qū)塊。由于她產(chǎn)生區(qū)塊的概率是寫(xiě)死的,她得好好想想了。
如果她也可以使用Bob的生成區(qū)塊呢?這會(huì)增加她與主鏈競(jìng)爭(zhēng)的機(jī)會(huì),但為什么Bob會(huì)同意這一點(diǎn)呢?這是介紹驗(yàn)證人輪換概念的好時(shí)機(jī)。
驗(yàn)證者應(yīng)當(dāng)可以選擇退出,并且區(qū)塊鏈系統(tǒng)在某些情況下能輪換更替驗(yàn)證者或是把驗(yàn)證者移除出系統(tǒng)。
為了便于我們的討論,假設(shè) Bob 決定在第10000塊之后退出區(qū)塊鏈系統(tǒng)。Bob 提走了他質(zhì)押的權(quán)益,兌現(xiàn)之后度假去了。在當(dāng)驗(yàn)證人的時(shí)候,Bob 使用了保管私鑰的最優(yōu)方法。而當(dāng)他在系統(tǒng)中不再持有任何權(quán)益時(shí),就沒(méi)有必要再那么小心翼翼地保管私鑰了。
關(guān)鍵細(xì)節(jié):即使Bob不再能夠簽署新的區(qū)塊(他不再是驗(yàn)證人),他也能夠再次簽署前10000個(gè)區(qū)塊。如果他在另一個(gè)分支中的前10000個(gè)區(qū)塊上簽名,這非常有用。
由于Bob沒(méi)有任何利害關(guān)系,因此他對(duì)攻擊系統(tǒng)沒(méi)有任何阻礙作用。
這種攻擊有兩種可能的情況:
Malorys盜取Bob的私鑰;
Malorys賄賂Bob,Bob加入了這次攻擊;
既然Bob的私人密鑰可供Malory使用,Malory可以作為Bob簽署有效的塊,從而增加了她成功超越主鏈的機(jī)會(huì)。這種攻擊被稱(chēng)為變節(jié)攻擊。
Bob加入Malory的長(zhǎng)程攻擊。 現(xiàn)在分分支更具競(jìng)爭(zhēng)力,超越主鏈的機(jī)會(huì)更大
如上圖所示,Bob的區(qū)塊不再是空的,而Malory的分支與主鏈的競(jìng)爭(zhēng)更加激烈。這種長(zhǎng)程攻擊可以通過(guò)使用關(guān)鍵的進(jìn)化密碼技術(shù)和移動(dòng)的檢查點(diǎn)來(lái)對(duì)抗。有關(guān)緩解技術(shù)的更多詳細(xì)信息將在本文檔的后面部分介紹。
Stake Bleeding(權(quán)益流損)
邪惡的 Malory 又決定對(duì)區(qū)塊鏈發(fā)動(dòng)攻擊了,這一次她打算使用權(quán)益流損攻擊。和上文中提及的初始場(chǎng)景條件一致,Malory一方面是主鏈上的驗(yàn)證者,一方面密謀著從創(chuàng)世區(qū)塊開(kāi)始構(gòu)建自己的分支鏈。問(wèn)題又來(lái)了,當(dāng)產(chǎn)生分支鏈時(shí),Malory 能被選作為區(qū)塊驗(yàn)證者的概率和在主鏈上是一致的。要記得所有驗(yàn)證者的初始信息在創(chuàng)世區(qū)塊中早已經(jīng)固定寫(xiě)死了。在自己的分支鏈沒(méi)有超過(guò)主鏈長(zhǎng)度之前,Malory是不會(huì)把分支鏈廣播發(fā)布出去的。
Malory 在本地制造分支鏈(虛線表示)并且不廣播此鏈
這一次Malory為了增加攻擊的成功率,開(kāi)始拖延主鏈的正常運(yùn)行。如果Malory持有的權(quán)益占比足夠多,這種行為可能會(huì)演變?yōu)橐淮位钚詢(xún)鼋Y(jié)攻擊(Liveness Denial Attack)。每當(dāng) Malory 被選舉為主鏈上的區(qū)塊驗(yàn)證者時(shí),她都會(huì)跳過(guò)該塊,放棄自己的區(qū)塊驗(yàn)證的身份。這并不意味著別的驗(yàn)證者會(huì)替代她的工作,相反,在該區(qū)塊位置處,不會(huì)有新的區(qū)塊加入到主鏈中。這是 Malory 精心設(shè)計(jì)用于拖延主鏈出塊的策略。
Malory 在主鏈上放棄了驗(yàn)證區(qū)塊來(lái)讓自己的分支鏈更有競(jìng)爭(zhēng)力
這樣會(huì)導(dǎo)致 Malory 不能從系統(tǒng)中獲得區(qū)塊驗(yàn)證的獎(jiǎng)勵(lì),以至于她的權(quán)益占比將不斷減少,所有正常進(jìn)行區(qū)塊驗(yàn)證的節(jié)點(diǎn)都將從系統(tǒng)中獲得區(qū)塊獎(jiǎng)勵(lì)和交易費(fèi)。在這次攻擊中,我們假設(shè)驗(yàn)證的獎(jiǎng)勵(lì)由他們所占的權(quán)益比例來(lái)進(jìn)行分配。
另一方面在自己的分支上,Malory是唯一的驗(yàn)證者,每當(dāng)有機(jī)會(huì)被選作區(qū)塊驗(yàn)證者時(shí),她都會(huì)生成區(qū)塊。在這種場(chǎng)景下,Malory會(huì)想盡辦法增加他的權(quán)益占比。此外,她會(huì)從主鏈上復(fù)制交易并在自己的分支鏈上廣播出去。這樣做能增加她所獲得的交易費(fèi)用,并且增加她的權(quán)益占比。
通過(guò)采用這樣的策略,一方面拖延主鏈的出塊速度,一方面在分支鏈上盡可能廣播更多的區(qū)塊,Malory最終可以在自己的分支鏈上獲得絕大部分的權(quán)益,并且比主鏈更快地產(chǎn)生區(qū)塊。一旦她的分支鏈長(zhǎng)度超過(guò)了主鏈,她就將發(fā)布最后一筆交易,將自己的權(quán)益交易給其他的驗(yàn)證者,并且緊接著廣播發(fā)布自己的分支鏈。
Malory 一方面在分支鏈上增加著權(quán)益占比,一方面在主鏈上由于廢棄區(qū)塊不斷地?fù)p失權(quán)益
你可以看到這樣的攻擊遠(yuǎn)遠(yuǎn)比前文中提到了兩種攻擊更加復(fù)雜。它引入了我兩種新的概念,一是用于拖延主鏈正常出塊的活性?xún)鼋Y(jié),另一個(gè)則是從主鏈中復(fù)制交易信息出來(lái)。
值得留意的是,這樣的攻擊只能針對(duì)非常長(zhǎng)區(qū)塊時(shí)間的區(qū)塊鏈來(lái)實(shí)施。根據(jù)研究,持有 30% 權(quán)益的攻擊者在長(zhǎng)約 6 年的區(qū)塊鏈上才能發(fā)動(dòng)這種攻擊(由于無(wú)代價(jià)模擬,構(gòu)建一條這樣長(zhǎng)度的分支鏈其實(shí)是十分迅速且不費(fèi)力的)。
權(quán)益流損攻擊可以通過(guò)采用移動(dòng)檢查點(diǎn)的策略來(lái)應(yīng)對(duì)。充裕法則(Plenitude Rule)同樣可以用來(lái)判斷那一條分支是惡意的。
應(yīng)對(duì)方法
在過(guò)去的幾年里,人們研究了各種緩解技術(shù)。盡管它們都提供了某種保護(hù)來(lái)抵御遠(yuǎn)程攻擊,但它們都不是一種有效的緩解技術(shù)。因此,需要結(jié)合使用這些方法來(lái)應(yīng)對(duì)此類(lèi)攻擊。
最長(zhǎng)鏈原則
這是解決弱主觀性的最簡(jiǎn)單的方案。在Pos協(xié)議中,這種策略常常需要與其他手段混合使用以應(yīng)對(duì)弱主觀性,而POW協(xié)議僅使用這種技術(shù)就可以對(duì)抗弱主觀性。
主鏈時(shí)擁有區(qū)塊數(shù)目最多的分支,在上圖中黑色區(qū)塊組成的分支即為主鏈
根據(jù)此規(guī)則,主鏈?zhǔn)蔷哂凶畲髩K數(shù)的分支。 主鏈可以不時(shí)變化,可以重組塊。 當(dāng)鏈的另一個(gè)分支變得比主鏈長(zhǎng)時(shí),將發(fā)生鏈的重組。
移動(dòng)檢查點(diǎn)
檢查點(diǎn)或者說(shuō)移動(dòng)檢查點(diǎn)策略可以說(shuō)是所有Pos協(xié)議區(qū)塊鏈中都用到的保護(hù)策略。它的簡(jiǎn)單性和易實(shí)現(xiàn)性使其成為在POS驅(qū)動(dòng)的區(qū)塊鏈中實(shí)施的第一種緩解技術(shù)之一,當(dāng)然是在最長(zhǎng)的鏈規(guī)則之后。
移動(dòng)檢查點(diǎn)背后的想法是,只能重新組織鏈中最新的x個(gè)塊。可重組塊的數(shù)量取決于協(xié)議的實(shí)現(xiàn),其范圍從一個(gè)月的塊(如peercoin)到幾天或幾小時(shí)的塊(如nxt)。
在本例中只有末端最后兩個(gè)區(qū)塊可能被重組。使用移動(dòng)檢查點(diǎn)之后,灰色的區(qū)塊將不可篡改。紅色的區(qū)塊分支由于試圖重組不可篡改的區(qū)塊(灰色塊)而變得無(wú)效了。在上圖中唯一可以被重組的只有紫色的區(qū)塊。
等等!如果攻擊者可以重組后 X 個(gè)區(qū)塊,那不還是長(zhǎng)程攻擊碼?
前半段沒(méi)錯(cuò),你的確可以試圖重組最后幾個(gè)區(qū)塊并且對(duì)系統(tǒng)造成一定的擾亂,可是這樣的攻擊已經(jīng)屬于其他的攻擊范疇了。長(zhǎng)程攻擊指的是從創(chuàng)世區(qū)塊開(kāi)始發(fā)動(dòng)的攻擊。
對(duì)十分有限數(shù)量區(qū)塊發(fā)動(dòng)的攻擊被稱(chēng)為短距離攻擊或者行賄攻擊(對(duì)數(shù)日到數(shù)月不等跨度的區(qū)塊進(jìn)行重組)。短程攻擊具有不同的激勵(lì)、執(zhí)行方法、影響和緩解技術(shù)。盡管短程攻擊很有意思,但本文不討論這些攻擊。
通過(guò)移動(dòng)檢查點(diǎn),主鏈真正變得直到最后 X 區(qū)塊之前都不可篡改。我知道這聽(tīng)起來(lái)很奇怪,你習(xí)慣將區(qū)塊鏈稱(chēng)為“不變的分類(lèi)賬”,但你有沒(méi)有想過(guò)它是否真的是這樣??事實(shí)是,事實(shí)并非如此。
您可能無(wú)法從一個(gè)塊中更改事務(wù),但是您可以分支鏈、構(gòu)建自己的塊、繞過(guò)主鏈、重新組織塊和TAA DAA,您只是修改了不可變鏈。準(zhǔn)確地說(shuō),我們沒(méi)有修改任何塊,只是創(chuàng)建了另一個(gè)歷史記錄。前一個(gè)主鏈即使仍然不變,也不再有效。它不再擁有任何來(lái)自系統(tǒng)的信任。
密鑰演進(jìn)加密技術(shù)
接下來(lái)我們要討論一些更復(fù)雜的應(yīng)對(duì)策略,密鑰演進(jìn)加密技術(shù)是用來(lái)應(yīng)對(duì)變節(jié)攻擊的。在變節(jié)攻擊的場(chǎng)景中,退休驗(yàn)證者手中的密鑰雖然不能驗(yàn)證新區(qū)快了,但是他們能對(duì)舊有的區(qū)塊進(jìn)行簽名。
使用密鑰演進(jìn)加密技術(shù),更確切來(lái)說(shuō)密鑰演進(jìn)簽名技術(shù)(KES),當(dāng)前區(qū)塊驗(yàn)證者能在區(qū)塊簽名后馬上銷(xiāo)毀掉使用過(guò)的密鑰。
利用不斷演進(jìn)的密鑰以及舊有密鑰不可回溯的特點(diǎn),如果 Bob 想要為另一條分支進(jìn)行簽名,他并不能重新從創(chuàng)世區(qū)塊開(kāi)始使用他的密鑰(因?yàn)樗呀?jīng)在主鏈上使用過(guò)該密鑰了)。
這種策略還在試驗(yàn)階段,仍需要很多相關(guān)研究來(lái)保證以上密鑰演進(jìn)加密技術(shù)的假設(shè)能順利實(shí)行。
情境感知交易(Context-Aware Transactions)
區(qū)塊鏈的每一個(gè)區(qū)塊在區(qū)塊頭中都包含了上一個(gè)區(qū)塊的哈希值,這是用以識(shí)別區(qū)塊所屬分支的標(biāo)識(shí)。利用情境感知交易,我們能進(jìn)一步延伸這個(gè)概念,在每一個(gè)交易中也記錄上一個(gè)區(qū)塊的哈希值。
這樣一來(lái),每一個(gè)交易都和特定的區(qū)塊以及特定的分支聯(lián)系起來(lái)。由于交易中已經(jīng)保存了當(dāng)前分支鏈的索引,它就不能被有效地復(fù)制到其他的分支中(除非這個(gè)索引也存在于其他鏈中)。
Jeff Coleman 曾經(jīng)在通用哈希時(shí)間中深入地討論了情境感知交易的工作方式, 通用哈希時(shí)間也是情境感知交易的其中一種。
Malory 把紫色分支中的交易拷貝出來(lái)使自己的分支鏈長(zhǎng)得更快,然而該交易是和 Bob 的區(qū)塊聯(lián)系著的。Malory 的分支(紅色)會(huì)因?yàn)椴贿B續(xù)而被誠(chéng)實(shí)的節(jié)點(diǎn)拒絕同步。
這種策略能用來(lái)阻止長(zhǎng)程攻擊。應(yīng)用情境感知交易,攻擊者無(wú)法從主鏈向分支鏈拷貝交易。雖然它不能完全防止長(zhǎng)程攻擊,但的確給長(zhǎng)程攻擊帶來(lái)了巨大的阻礙。
攻擊者被迫只能完全地創(chuàng)造不一樣的歷史交易數(shù)據(jù)。即使他們完成了攻擊,也不會(huì)太輕巧。
充裕法則(Plenitude Rule)
充裕法則是又一種應(yīng)對(duì)長(zhǎng)程攻擊的成熟策略。這種策略基于探查存在競(jìng)爭(zhēng)關(guān)系的不同分支中區(qū)塊的稀疏程度。
創(chuàng)世區(qū)塊中寫(xiě)死的驗(yàn)證者權(quán)益大小
攻擊者無(wú)法操控他們的初始權(quán)益占比。假定所有分支都從同一個(gè)創(chuàng)世區(qū)塊開(kāi)始,如果攻擊者在創(chuàng)世區(qū)塊中寫(xiě)死的權(quán)益為 20% ,那在所有的分支上均以 20% 開(kāi)始。
在長(zhǎng)程攻擊中,攻擊者在開(kāi)始時(shí)被選作驗(yàn)證區(qū)塊的概率十分之小,而隨著不斷驗(yàn)證區(qū)塊并獲得區(qū)塊獎(jiǎng)勵(lì),他的權(quán)益占比也越來(lái)越大。驗(yàn)證者的權(quán)益越多,他被選中出快的概率也越高。現(xiàn)在我們要做的是找到這個(gè)加速階段。
直到 X 點(diǎn)之前區(qū)塊鏈的狀態(tài)圖。在任意給定的分支鏈上驗(yàn)證者都有著同樣的出塊概率。
在惡意節(jié)點(diǎn)積攢足夠多權(quán)益來(lái)加速分支鏈出塊之前,剩余誠(chéng)實(shí)的驗(yàn)證者負(fù)責(zé)了 80% 的出塊任務(wù)(在本例中)。根據(jù)這一信息,我們就能看到,哪一條分支鏈出的塊只是其它鏈的一部分(一條分支在給定位置有 80% 到 100% 的概率出塊,而另一個(gè)分支在給定區(qū)塊位置只有最多 20% 的概率出塊)。(校對(duì)注:即在權(quán)益流損攻擊中,由于 M 在主鏈上拖延出塊,所以主鏈上出塊幾率為 80-100%,但在分支鏈上,由于只有 TA 自己出塊,所以出塊幾率最高為 20%)
惡意分支在第一部分的區(qū)塊十分稀疏的示意圖
在上圖中我們能看到權(quán)益是如何累積的。位于上面的時(shí)惡意分支,在頭兩部分的區(qū)塊要遠(yuǎn)遠(yuǎn)比最后一部分更為稀疏。而在另一條分支中,我們能看到在所有的部分中,區(qū)塊始終平滑的產(chǎn)生。
出現(xiàn)空塊并不意味著驗(yàn)證者是在刻意阻延區(qū)塊鏈(像上圖中的 Alice)。有時(shí)由于該時(shí)間段內(nèi)沒(méi)有交易,區(qū)塊就會(huì)是空的。
在第三部分,上面那條分支鏈積攢了足夠多的權(quán)益,使得區(qū)塊的密度大大提高。
在 X 時(shí)間之后 Malory 分支鏈上的權(quán)益持有情況
在該時(shí)間點(diǎn)后,攻擊者的權(quán)益在自己的分支鏈上會(huì)繼續(xù)增多,而誠(chéng)實(shí)驗(yàn)證者的權(quán)益占比會(huì)不斷降低。在分支鏈上區(qū)塊會(huì)更頻繁地出塊,并最終超過(guò)主鏈。
充裕原則旨在檢測(cè)分支的區(qū)塊密度自產(chǎn)生起到一段時(shí)間后區(qū)塊密度顯著改變的異常表現(xiàn)。假設(shè)惡意驗(yàn)證者總是少數(shù)的(當(dāng) 34% 以上的驗(yàn)證者都是惡意的,區(qū)塊鏈系統(tǒng)就失敗了),那么主鏈的區(qū)塊密度總會(huì)比競(jìng)爭(zhēng)的惡意分支鏈要更高。
根據(jù)這一原則,很輕易就能識(shí)別出主鏈并解決弱主觀性問(wèn)題。
結(jié)論
在本文中,我們探討了權(quán)益證明中最有意思的一種攻擊方式——長(zhǎng)程攻擊,并將其根據(jù)特點(diǎn)劃分為三個(gè)子類(lèi)。在討論了簡(jiǎn)單攻擊、變節(jié)攻擊和權(quán)益流損三種攻擊方式之后,我們同樣列舉了對(duì)應(yīng)的保護(hù)策略。
盡管在工作量證明系統(tǒng)中最長(zhǎng)鏈原則已經(jīng)足夠應(yīng)對(duì)長(zhǎng)程攻擊問(wèn)題,權(quán)益證明區(qū)塊鏈仍然需要聯(lián)合使用不用的策略來(lái)解決這一難題。在維護(hù)權(quán)益證明區(qū)塊鏈安全性的過(guò)程中,我們需要混合采用移動(dòng)檢查點(diǎn)、情境感知交易、密鑰演進(jìn)加密技術(shù)和充裕法則來(lái)保證區(qū)塊鏈的安全。
評(píng)論
查看更多