當前位置:
首頁 > 最新 > 權益證明,私鑰攻擊與無法偽造的奢侈

權益證明,私鑰攻擊與無法偽造的奢侈

在我的上一篇文章中(編者註:中譯本見文末超鏈接《權益證明與錯誤的工程思維》),我討論了為何在最壞的情況下,PoS 不如 PoW 恢復能力強。

在本文中,我將擴展討論上文提過的場景 3:私鑰攻擊。

私鑰攻擊可以分為兩類:舊私鑰攻擊 &現有私鑰攻擊。


1. 舊私鑰攻擊

在先前的 PoS 版本中,我們總是使用一個固定的驗證者集。這意味著已經出售了一部分「權益」的用戶仍舊能夠參與到未來的區塊驗證過程中(PoS 的驗證功能上等同於PoW 的挖礦)。這是個巨大的漏洞,畢竟只要能獲得幾個這樣的舊私鑰(可以通過重寫區塊歷史獲得),就能賺到大筆的獎金,而幾乎沒什麼風險。

為了解決這一問題,新版本的 PoS 開始使用動態驗證者集或者檢查點(Checkpoint)。背後的思想是要收回曾經的」權益持有者「參與未來驗證過程的權利。

然而,即使使用了上述方法,我們也無法完全在 PoS 協議中消除這個問題。以下兩類節點仍舊十分脆弱:

a)剛剛加入網路的新節點

b)長期不活躍的節點

由於這些節點要麼無任何區塊歷史,要麼由於長期下線缺失了許多區塊歷史,他們(上述節點)很難檢測到一些「權益持有者」在自己不在線的期間已經出售了其所持有的代幣。

某些 PoS 的支持者可能會很快指出,PoW 的新節點中也會出現類似的問題,因此這個問題是可以接受的。

不過該論斷非常具有誤導性。雖然 PoW 系統中的新用戶的確需要信任 某人,才能下載正確版本的軟體並跟上其他節點的節奏。該信任並不延伸到信任某人來選擇哪條鏈是合法的。

第二,也是更重要的一點,只要 PoW 節點軟體下載完成,對於節點操作者來說,離線任意時間都是比較安全的。在引導步驟完成後,PoW 可以達到高度「無需許可性(Permission-less)」:節點可以隨時加入或者離開。除了在發生硬分叉的時候,需要節點操作者重複引導步驟(這也是為什麼我們需要謹慎地進行硬分叉,並在可能的情況下盡量避免)。

而對於 PoS 的操作者來說,即使有了正確版本的節點軟體,仍需定期向可信任的第三方溝通,以確定自己還在合法鏈上。對與主網失聯或是被騙上錯誤的鏈的擔憂會持續存在,說不定比你的可信任第三方的存在還要持久。這將大大降低協議的安全性。

所有 PoS 協議都會遭遇這一根本問題。


第二類私鑰攻擊的對象是現有私鑰。這意味著即使加入動態驗證者集或是檢查點都無法預防該攻擊。(事實上,由於自動檢查點把未決的鏈分裂永久化,反而會加劇該問題。)

以下簡述該類攻擊是如何發生的:一名獲得了持有至少 1/3 代幣供應量的私鑰的攻擊者[1] 能夠輕易地在相同高度創建出兩條具有相當合法性的鏈,對於網路中的其他參與者來說,兩條鏈中的任一條都不會看起來更「正確」(這實際上就是一次鏈分裂)。這對於大多數 PoS 協議來說都是破壞性的,因為在 PoS 下如果無法達到大於 2/3 的參與者是誠實參與者,協議就會停止運作。那麼我們將無法「確認」任何區塊,這條基於 PoS 的鏈就會停止生長並最終死去。

(上述保證持續運作的性質被稱為「活躍性(liveness)」。)

讓我們具體來看幾個PoS實現:


Tendermint 認同上述缺點,並承認在協議卡住的情況下,用戶需要通過鏈下手段達成共識:

「驗證者子集應該通過外部方法協作,以簽署」重組提案(reorg-proposal)「來選擇出一條鏈。

我們還是應該讚揚他們的誠實,不過我完全無法同意該」解決方案「能真正解決問題。增加人類用戶的手動干涉意味著該協議更難擴展,也意味著更容易被賄賂。這離我們在設計重要的基礎設施級別的軟體時想要的強健程度差了十萬八千里。正如我上一篇文章里說的,從根本上說,這是心態問題。


Casper 在攻擊方控制超過 1/3 權益時也會卡死。

Casper 引入了一個很成問題的概念——「不活躍漏洞(inactivity leak)」,節點只要離線就會受到懲罰,無論你是否故意惡意離線。這是一個非常 保守的規則 因為:a)這給了攻擊者另一個攻擊面,即攻擊者可以發起 DDoS 攻擊誠實驗證者使其離線,進而使其虧損;b)這將使節點有潛在的理由(擔心虧損)不抵押保證金(即 stake)。由於抵押保證金的參與度對 PoS 來說 極度 重要,該概念總體上會對整個網路的安全性造成負面影響。(下文會詳述)


在 DFINITY 項目中,每個區塊需要「認證(notorized)」兩次才能最終「確認」。持有超過 1/3 權益的攻擊者也有能力不讓區塊成功「認證」,以凍結該協議。

關於 DFINITY,還有一些重點我要提一下。

DFINITY 建立了一個模仿 PoW 鏈中的「區塊重量」特徵的機制(由此解決鏈分裂問題),但沒有 PoW背後的能源支持。該機制通過一個叫「random beacon」的東西在每一輪中隨機部署一個驗證者「排行榜」,每個區塊的「重量」等於創建該區塊的驗證者的排名。簡單來說,DFINITY 「對於重量」的思考僅僅基於隨機性(並且所有參與者對相同的隨機性達成共識)。

先不考慮這個「random beacon」是否真的能安全地實現,並以去中心化的形式實現,直觀上說,這並不是個好點子。

一個數字化區塊並沒有真正的重量,所有的區塊都是由一堆 0 和 1 組成的。如果生產區塊沒有成本,那麼造假或者重新生產也就不會有成本。使得 PoW 區塊具有真正的重量的,是區塊哈希與挖礦消耗的能量之間的直接且可證明的聯繫。(更多關於該話題的內容,請看我關於 PoW 的文章)(編者註:中譯本見文末《剖析工作量證明》)

而 DFINITY 的區塊重量則是主觀的,因此可能被操控。當出現以下兩種情況時,該「被相信」的重量會變得毫無意義:a)當節點無法就隨機性達成共識,或者 b)當隨機數源停止運作(例如:區塊「認證」錯誤會導致 random beacon 停止運作)

總的來說,DFINITY 的安全性可能實際上比 Tendermint 和 Casper 要差。雖然「准入小組」是個好主意,但它只是全部活躍驗證者的一個子集(k 部分即可。)


在上述的分析中,我們假設的最壞情況是攻擊者控制了 貨幣總供給量 的 1/3 或以上,這在事實上很難,但並非不可能。不過在現實中,攻擊者需要控制的「權益」並不需要這麼高,因為攻擊者只需控制「活躍權益(active stake)」的 1/3 或以上即可。

所有的權益持有者都參與到權益抵押與驗證過程中的可能性是非常低的。我們先來假設參與度為 50%,那麼攻擊者只需控制 1/6(而非 1/3)的代幣總供給就能夠製造衝突區塊或檢查點了。假設參與度為 25%,那麼攻擊者只需控制 1/12。這有著很大的警示作用,正如之前提到的,財富通常服從冪定律分布,幾個最富有的權益持有者輕易就能控制代幣總供給量的1/12。

權益抵押的低參與度很可能是 PoS 協議需要面對的最大威脅。


讓我們來回想一下,比特幣成為一個突破性創新的背後到底有什麼秘密?以下是三個關鍵因素:

隨機性

「Unforgeable costliness」 (即所謂「無法偽造的奢侈消耗」)

激勵機制

第一和第二點都是 PoW 挖礦的方面,而第三點則嵌入了比特幣的共識協議代碼中。

第一點屬於計算機科學與密碼學的領域,第三點則屬於經濟學與博弈論的領域。

而唯獨第二點,卻很難說到底屬於哪門學科。理解第二點並理解其重要性所需的思維模型可以說是多個學科的綜合,如考古學、進化心理學、經濟學甚至物理學。[2]

很可能是因為我們對第二點尚未充分研究,許多人忽視且大大低估了其重要性。 PoS 協議的設計者就經常犯這個錯,在他們的設計中只考慮第一和第三點。

在 DFINITY 對隨機性的執念中我們能看到這一點。DFINITY 的設計者認為隨機性就是解決所有問題的關鍵。

而以太坊的 Casper 協議則是對激勵機制有著執念,在這條路上走得越來越遠,還創造了個毫無意義的術語——「加密經濟學」。以太坊的設計者們以為只要巧妙地設計激勵機制就能解決所有問題。

有句老話說:「如果你只有一個鎚子,那麼所有東西看起來都是釘子。」這句話還挺適合 PoS 協議設計領域的。

事實是,這個「無法偽造的奢侈消耗」很可能就是支撐起比特幣最最最重要的組成部分。沒有此種無法偽造的奢侈,比特幣就既沒有任何新東西,也不具備任何顛覆性。

總的來說,私鑰攻擊對 PoS 協議來說是個嚴肅的問題。在 PoW 中失去對大多數哈希率的控制不是什麼好事,但這並不意味整個系統會完全崩塌。但在 PoS 中失去對「權益」的控制將使整個系統完全暴露且毫無防禦能力。

注 1:這個1/3的比例取自已經有成熟研究的傳統拜占庭容錯系統,而PoS本身就是其中的一部分。傳統拜占庭容錯系統在大於等於1/3的節點是惡意節點時會失效。而"拜占庭容錯"的概念則來自拜占庭將軍問題,由 Lamport、Pease 與 Shostak 在1982年提出。

注2:請閱讀 Nick Szabo 關於貨幣起源的論文,以便更好地理解第二點的重要性。

本文由作者授權 EthFans 翻譯及再出版。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 以太坊愛好者 的精彩文章:

加密貨幣礦業的現狀
觀點 以太貓的意義

TAG:以太坊愛好者 |