區(qū)塊鏈共識(shí)中的三大加密對(duì)手
想象我們生活在一個(gè)人人都誠(chéng)實(shí)的世界。這難道不會(huì)達(dá)成共識(shí)的情況變得更容易嗎?烏托邦離現(xiàn)實(shí)還很遠(yuǎn),這就是為什么我們有計(jì)算機(jī)安全技術(shù)、加密貨幣原語(yǔ)以及最近的區(qū)塊鏈協(xié)議。
人類本質(zhì)上是復(fù)雜的,他們的行為也是如此。因此,處理許多交互的協(xié)議是一項(xiàng)相當(dāng)具有挑戰(zhàn)性的任務(wù)。每個(gè)人都受到一系列獨(dú)特因素的刺激,因此對(duì)刺激的反應(yīng)也不同。因此,找出適用于大多數(shù)人類的一套正確的方法,是設(shè)計(jì)一種算法以就共同世界觀(即共識(shí)協(xié)議)達(dá)成一致意見(jiàn)的重要一步。
在協(xié)商共識(shí)協(xié)議中,任何超出節(jié)點(diǎn)預(yù)期行為且不遵守協(xié)議的行為都被認(rèn)為是惡意的。大量惡意活動(dòng)可能會(huì)破壞協(xié)議的基本假設(shè),并阻止協(xié)議參與者達(dá)成一致意見(jiàn)。這導(dǎo)致共識(shí)或區(qū)塊鏈協(xié)議在最好的情況下被迫停止(有時(shí)稱為活性失?。T谧顗牡那闆r下,惡意的參與者可能會(huì)對(duì)多個(gè)不一致的視圖產(chǎn)生錯(cuò)誤的協(xié)議,甚至?xí)?dǎo)致已經(jīng)達(dá)成的協(xié)議(安全故障)的倒退。這種情況需要昂貴的外部干預(yù)來(lái)重新啟動(dòng)共識(shí)算法。因此,使用正確的假設(shè)集創(chuàng)建協(xié)議是至關(guān)重要的,以便避免昂貴的操作。
開發(fā)的第一套共識(shí)協(xié)議傾向于在簡(jiǎn)單的對(duì)抗性假設(shè)下運(yùn)行。我們的目標(biāo)只是通過(guò)假設(shè)一個(gè)沒(méi)有惡意參與者的環(huán)境,讓預(yù)先確定的節(jié)點(diǎn)集達(dá)成一致。這是一個(gè)微不足道的問(wèn)題,一旦設(shè)計(jì)了這樣的協(xié)議,下一步自然就是改進(jìn)它們。不能處理任何類型的錯(cuò)誤或惡意操作的協(xié)議在某些設(shè)置(如internet)中是不切實(shí)際的。這些協(xié)議要求提前知道所有參與的節(jié)點(diǎn),并要求所有這些節(jié)點(diǎn)保持在線狀態(tài),同時(shí)始終誠(chéng)實(shí)行事,以便協(xié)議正確終止。但這是不切實(shí)際的,因?yàn)榧词挂粋€(gè)節(jié)點(diǎn)因?yàn)椴环€(wěn)定的通信通道而離線,它也可能阻止共識(shí)。
無(wú)論是光纜還是互聯(lián)網(wǎng)本身都無(wú)法提供足夠可靠的通信渠道。在斷電或網(wǎng)斷開的情況下,系統(tǒng)將失效。
為了構(gòu)建一個(gè)在不穩(wěn)定環(huán)境中實(shí)際上更有利的系統(tǒng),系統(tǒng)必須至少允許節(jié)點(diǎn)脫機(jī)。它不能假設(shè)所有節(jié)點(diǎn)都是完全誠(chéng)實(shí)的。因此,通過(guò)創(chuàng)建被稱為“對(duì)手”的惡意行為者,最早應(yīng)該假定哪種類型的安全漏洞協(xié)議能夠容忍。
對(duì)手的類型
對(duì)對(duì)手進(jìn)行分類的第一種方法是基于對(duì)手所能采取的最有力的行動(dòng)。這類最簡(jiǎn)單的對(duì)手只是會(huì)永久離線的節(jié)點(diǎn)。這種節(jié)點(diǎn)的協(xié)議偏離行為被稱為崩潰故障。當(dāng)互聯(lián)網(wǎng)連接中出現(xiàn)任何形式的中斷或終止時(shí),節(jié)點(diǎn)就會(huì)脫機(jī)。期望全球多個(gè)節(jié)點(diǎn)在互聯(lián)網(wǎng)上一直在線是不切實(shí)際的,因?yàn)槿魏螖嚯姸伎赡軐?dǎo)致節(jié)點(diǎn)離線。如果互聯(lián)網(wǎng)上的數(shù)據(jù)包被丟棄或延遲發(fā)送,節(jié)點(diǎn)也可能在幾秒鐘內(nèi)失去同步?;ヂ?lián)網(wǎng)本身還不夠安全,只能以“盡我所能”的方式提供數(shù)據(jù)包。因此,期望所有的信息都能及時(shí)交換,所有節(jié)點(diǎn)都保持在線狀態(tài)是不合理的。因此,容錯(cuò)協(xié)議在開發(fā)實(shí)際工作的共識(shí)算法方面發(fā)揮了重要作用。
下一個(gè)迭代的協(xié)議處理可能是竊聽(tīng)用戶之間發(fā)送消息的對(duì)手。這些對(duì)手可能會(huì)通過(guò)閱讀不打算與任何人分享的信息來(lái)侵犯通信各方的隱私。這些對(duì)手被稱為被動(dòng)對(duì)手。這種類型的對(duì)手的目標(biāo)是在監(jiān)聽(tīng)了多輪協(xié)議后冒充誠(chéng)實(shí)的參與者。這些對(duì)手對(duì)那些本應(yīng)傳輸機(jī)密信息的協(xié)議構(gòu)成了威脅。這些敵人也是一種威脅,因?yàn)樯贁?shù)不誠(chéng)實(shí)的人能夠影響大多數(shù)誠(chéng)實(shí)人所同意的價(jià)值,因?yàn)樯贁?shù)人可以模仿其他誠(chéng)實(shí)的人。這些類型的對(duì)手在20世紀(jì)70年代和80年代被研究過(guò)。加密貨幣和其公鑰基礎(chǔ)設(shè)施是用于在被動(dòng)對(duì)抗模型中保持隱私、數(shù)據(jù)完整性和安全性的技術(shù)。
很自然地,下一步是用協(xié)議來(lái)處理那些可以利用他們收集的信息來(lái)任意行動(dòng)的對(duì)手。這可能包括發(fā)送錯(cuò)誤或沖突的消息。這些對(duì)手被稱為拜占庭或活躍的對(duì)手。拜占庭這個(gè)詞來(lái)源于萊斯利·蘭波特1982年寫的一篇里程碑式的論文,叫做“拜占庭將軍問(wèn)題”。這篇論文描述了圍繞一個(gè)城市的拜占庭軍隊(duì)面臨的共識(shí)問(wèn)題,他們?cè)噲D就是否應(yīng)該進(jìn)攻或撤退達(dá)成一致。當(dāng)他們?cè)噲D達(dá)成協(xié)議時(shí),他們面臨著信息被刪除、復(fù)制和修改的問(wèn)題。不誠(chéng)實(shí)的將軍們的目的是為了確保軍隊(duì)在戰(zhàn)爭(zhēng)中敗下陣來(lái),他們使一部分進(jìn)攻,另一部分撤退,或者干脆不采取行動(dòng)。盡管存在所有這些挑戰(zhàn),但所有誠(chéng)實(shí)將軍的目標(biāo)都是以一種共同的方式行事。
攻擊還是不攻擊?
類似地,任何公共區(qū)塊鏈共識(shí)協(xié)議都必須能夠增長(zhǎng),并且在任意攻擊的情況下保持一致。某些應(yīng)用程序的用戶可能不希望某些事務(wù)被記錄在區(qū)塊鏈上,也可能會(huì)積極采取惡意行動(dòng),并試圖審查這些事務(wù)。這些例子包括前面運(yùn)行的攻擊、雙重攻擊和交易審查攻擊,以防止支付渠道的結(jié)算。一旦有一個(gè)依賴于區(qū)塊鏈的巨大金融生態(tài)系統(tǒng)存在,并且協(xié)議需要能夠容忍這些攻擊,才能使其在大范圍內(nèi)實(shí)際可用,那么也就是說(shuō)這些攻擊是可以預(yù)見(jiàn)的。因此,公共區(qū)塊鏈共識(shí)協(xié)議必須是拜占庭容錯(cuò)協(xié)議。
然而,對(duì)手的力量不僅僅是對(duì)手所能采取的最激烈的行動(dòng)。它還需要考慮對(duì)手的行動(dòng)生效所需的時(shí)間,或者對(duì)手破壞不同參與者所需的時(shí)間。
另一種對(duì)對(duì)手進(jìn)行分類的方法是,對(duì)手在決定了要腐敗的對(duì)象之后,多久才能腐敗另一個(gè)節(jié)點(diǎn)。如果對(duì)手可以瞬間腐蝕參與者,那么對(duì)手就被稱為“強(qiáng)適應(yīng)性”。在“靜態(tài)”對(duì)抗性模型中,在協(xié)議執(zhí)行開始之前,對(duì)手可以選擇他們想要破壞的參與者。 在那之后,就不能做任何改變了。那些需要一段時(shí)間(比瞬時(shí)時(shí)間長(zhǎng),但比無(wú)限時(shí)間短)來(lái)破壞協(xié)議參與者的對(duì)手被稱為“溫和適應(yīng)性”。對(duì)手破壞協(xié)議參與者所需的時(shí)間與選擇驗(yàn)證器和委員會(huì)成員的過(guò)程有關(guān)。
對(duì)手的力量也與對(duì)手的計(jì)算和存儲(chǔ)限制緊密相關(guān)。如果假設(shè)對(duì)手有一定數(shù)量的資源,那么我們可以假設(shè)一個(gè)計(jì)算安全的模型。大多數(shù)協(xié)議的共同假設(shè)是存在多項(xiàng)式有界的對(duì)手。這意味著一個(gè)對(duì)手不能在多項(xiàng)式數(shù)量的步驟/時(shí)間/空間中破壞協(xié)議的任何一個(gè)原語(yǔ)。這也意味著對(duì)手可以以很小的概率破壞協(xié)議的安全性。這通常就足夠了,因?yàn)檫@意味著對(duì)手要花上50-60年的時(shí)間才能用這種級(jí)別的安全性來(lái)破壞原語(yǔ)。另一方面,如果對(duì)手被認(rèn)為是非常豐富和強(qiáng)大的,協(xié)議必須在統(tǒng)計(jì)上是安全的。這意味著即使有無(wú)限的計(jì)算資源也需要花費(fèi)10億年時(shí)間,實(shí)踐中使用的大多數(shù)加密原語(yǔ)都在計(jì)算上安全的。
經(jīng)濟(jì)對(duì)手
到目前為止,我們考慮了基于計(jì)算和存儲(chǔ)考慮的假設(shè)。所有這些假設(shè)都聚焦于那些決定攻擊系統(tǒng)的參與者。所有公開的區(qū)塊鏈共識(shí)協(xié)議都是很復(fù)雜的,通常需要對(duì)付的對(duì)手比那些確定要攻擊系統(tǒng)的對(duì)手多。從長(zhǎng)遠(yuǎn)來(lái)看,對(duì)于公共區(qū)塊鏈協(xié)議來(lái)說(shuō),與參與者如何應(yīng)對(duì)激勵(lì)措施相關(guān)的經(jīng)濟(jì)假設(shè)是一個(gè)重要方面。這些都是很重要的,因?yàn)樗鼈儧Q定了什么能激勵(lì)一個(gè)人誠(chéng)實(shí)行事,并從一開始就遵守協(xié)議。在任何系統(tǒng)中都有三種角色。
第一種是經(jīng)濟(jì)上的理性,第二種是利他的,第三種是非理性的惡意。設(shè)計(jì)的大多數(shù)區(qū)塊鏈協(xié)議并沒(méi)有使經(jīng)濟(jì)理性的參與者始終與遵循協(xié)議的動(dòng)機(jī)保持一致,這導(dǎo)致了在協(xié)議級(jí)別上可能無(wú)法解釋的幾個(gè)攻擊向量。