區塊鏈上有 2 種私鑰攻擊:舊私鑰攻擊和當前私鑰攻擊

Proof-of-Stake

1. 舊私鑰攻擊

權益證明的早期版本使用的是固定的驗證節點設置。這意味着在過去的某個時間點賣出他們權益的用戶,在未來,仍然可以加入驗證過程(在權益證明中,驗證等同於挖區塊)。這樣會造成一個巨大的漏洞,因爲任何人擁有這些過期的私鑰(通過改寫歷史),都可以獲得很多錢,而且沒有任何不利因素。這也被稱爲“無風險問題“。

爲了解決這個問題,更新版本的權益證明使用動態驗證節點設置和檢查點。這個想法是爲了取消過去權益持有者對未來區塊驗證的參與權。

但是,儘管有了這些方法,權益證明協議也不能完全解決這個問題。兩類節點仍然特別危險:
a) 剛剛加入網絡的新節點
b) 長期不使用的節點

因爲以上說的節點要麼是從空白的記憶開始,或者是在他們的記憶中有很大的空缺,當這些節點不在線的時候,在檢測一些已經在主鏈上賣出代幣的權益持有者的時候,會遇到麻煩。
一些權益證明的支持者會很快地指出在工作量證明也會有類似的問題,所以這是個可接受的問題。

這個其實是有些錯誤的。雖然這是真實的,在工作量證明系統中的新用戶確實需要信任某人,從而下載正確的軟件和程序,但是這種信任不會延伸到哪條鏈是有效的。

其次也是更爲重要地,一旦工作量證明算法節點軟件已經下載,對於工作量證明節點的操作者來說,在某段時間關閉節點是相對安全的。在通過自啓動階段,工作量證明是高度無需許可的:節點可以在任何時候使用或者關閉。唯一的例外,就是在硬分叉過程中,這需要節點操作者重複自啓動過程(這也是硬分叉應該非常謹慎使用的原因,並且儘可能避免)。

相反地,對於權益證明的節點操作者,儘管你下載了正確的軟件,也需要經常去和可信任的第三方進行溝通,從而確保一直在主鏈上。對於丟失主網合約以及進入錯誤鏈的情況,會一直成爲擔憂,特別是在可信任的第三方長期不存在的情況下!這就在安全方面造成了極大的隱患。

這是所有權益證明協議都會有的最基本的問題。

2. 當前私鑰攻擊

這類攻擊的第二類中,私鑰是現在的。這意味着無論是動態驗證節點或是檢查站都沒有作用。(其實,自動檢查站會使得問題更加無法解決。)

這是如何作用的:

獲得私鑰的攻擊者可以控制至少 1/3 的供給代幣,這樣就可以很容易地創建兩個在相同高度的有效區塊,而且不會有區塊比網絡中其他的更加“正確”(有效地創建了鏈分叉)。這已經是大多數權益證明協議的頑疾,因爲如果 2/3 以上的誠實閥值沒有達到,那麼他們就會被強制去停止運行。在任何週期中,沒有區塊可以“最終結算”。那麼這個權益證明的鏈就會最終死亡。(能夠保證持續運行的能力被稱爲“活躍”特性。)

我們可以更仔細的觀察一些權益證明的實施:

i) Tendermint:

Tendermint 理解了上述的缺陷,在協議出現卡頓時,用戶需要去帶外獲得共識:

通過外部方法驗證節點的子集,應該協調簽署一個選擇一個分叉的建議。

誠實是值得稱讚的,但是我不同意這個“解決方案”真算得上是解決方案。增加對人工人工干預的依賴意味着該協議的可擴展性和更容易破壞。對於設計正確地底層架構軟件來說,離我們想要的穩定性,還差的很遠。

ii) Casper

Casper 在 1/3 以上權益被控制的時候,也會陷入卡頓。

Casper 使用了“靜止泄露”這個概念介紹這個問題,節點如果單純是爲了犯罪而離線,是需要受到懲罰的。不論你是不是故意離線,造成了損失,這不重要。這是個非常保守的規則,因爲 a)
這造成了新的風險,攻擊者可以對誠實的驗證節點進行 DDOS 攻擊,從而讓他們離線,並且造成資金損失 b) 這也會抑制節點,他們會因爲害怕丟失資金,從而不想去擁有權益。這對於整體的安全性來說,是有消極影響的,因爲對於權益證明來說,權益參與者是非常重要的。

權益參與者

目前,在此篇分析中,我們假設最差的情況是攻擊者獲得了超過 1/3 的供應代幣控制權,這很困難但並不是不可能。但是在現實中,對於攻擊者發動的條件其實低的多,因爲攻擊者只需要 1/3 的活躍權益。

所有權益持有者都加入權益和驗證的過程,這顯然是不太可能的。假設參與率是 50%,那麼攻擊者就需要獲得流通代幣的 1/6 來進行對區塊的攻擊,而不是 1/3。如果參與率是 25%,那麼攻擊者只需要 1/12。

權益參與率很低,也許對於權益證明協議來說是最大的威脅。

總結來說,私鑰攻擊對於權益證明協議是非常重要的問題。在工作量證明中,失去對算力的控制很嚴重,但是這並不意味着整個系統最終會完全失效。但是,如果在權益證明協議中,失去主要的控制,那麼整個系統都會毫無防衛能力。


作者:Hugo Nguyen
編譯:nuszjj

來源鏈接:www.8btc.com