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

2021-09-22 13:57:38 字數 3479 閱讀 5967

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

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

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

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

b)長期不活躍的節點

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

而對於 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 < n)。由於該子集是隨機選取的,惡意節點很容易在某些子集中占多數(也許在其他子集裡只佔少數)。能夠控制 1/3 驗證者子集的攻擊者可能在乙個子集中有超過 1/3 的參與度。隨後攻擊者可以進一步進行身份「研磨(grinding)」,直到占有他想要的份額來提高攻擊成功的概率。(他不需要控制所有的准入小組,只需要控制 部分 即可。)

在上述的分析中,我們假設的最壞情況是攻擊者控制了 貨幣總供給量 的 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 在2023年提出。

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

POS權益證明

proof of stake,權益證明,是即將在以太坊中使用的共識機制。與pow不同的是,pos用幣齡的概念替換了pow中算力的概念,幣齡即持有的貨幣數量與持有時間的乘積,單個節點的幣齡越大,則其越容易找到滿足難度目標的隨機值,從而獲得記賬權。pos避免了pow中的資源消耗,縮短了共識達成的時間,但...

PoS 權益證明 go簡單實現

pos proof of stake 譯為權益證明,是一種在公鏈中的共識演算法,可作為 pow 算 法的一種替換 基於權益證明的數字貨幣中,下乙個區塊的選擇是根據不同節點的股份和時間進行 隨機選擇的 pos 的設計理念,來自於對位元幣危機的思考,位元幣的區塊產量每 4 年會減半,在不久的未來,隨著位...

kali攻擊ssh私鑰洩露

本文章用於記錄本人成長過程 目標 找到三個flag值 flag1 flag2 lag3 攻擊準備步驟 一 使用ifconfig命令檢視本機ip位址,可見本機ip為 注 以本機為例 192.168.43.161 然後使用netdiscover r 1 24命令掃瞄靶場機器 注 1 24以本機為例 19...