2.6 Algorand 如何保證安全性
上述的共識算法在理想情況下可以實現去中心化環境下較快速的拜占庭共識,數字簽名和 VRF 本身的安全性也對系統安全提供了基本的保障。除此之外,Algorand 還引入了以下機制,進一步提升安全性:
種子 Q(r)
Algorand 中的隨機性主要靠 VRF 保證,每輪隨機的選出 leader 及驗證組。一個比較直接的想法是把上一區塊 B(r-1) 作為隨機函數的輸入。但這種方法將給惡意節點帶來一定的優勢:因為區塊和其包含的交易高度相關,惡意節點可以通過調整區塊中包含的交易集,獲得多個輸出,并選擇對其最有利的交易集產生新區塊,從而提高自己在下一輪中成為 leader 或驗證組的概率。
為解決這一問題,Algorand 引入了一個隨機的、不斷更新的種子參數 Q(r),Q(r) 與交易集本身相互獨立,因此惡意節點無法通過調整交易集而獲利。
當區塊非空時,Q(r) = H(SIG(Q(r-1),r) (其中,SIG 為 本輪 leader 的簽名)
當區塊為空時,Q(r) = H(Q(r-1),r)
可以看出,Q(r) 在每一輪都發生變化,且與交易本身無關。可以證明,當 Q(r-1) 是隨機的,則 Q(r) 也是隨機的。因此惡意節點無法通過改變交易集影響下一個種子的生成。其中,Q(1) 的定義沒有在相關文獻中找到。
回溯系數 k
種子參數降低了惡意節點預測 leader 的可能性,但擁有多個潛在 leader 的惡意節點仍可以有比普通節點更高的概率成為下一個區塊的 leader,但這個概率會隨著區塊的變多而逐漸變小。因此,Algorand 引入了一個回溯系數 k,第 r 輪的候選組只從 r-k 輪已存在的候選組中選取,惡意節點在 r-k 輪能夠影響第 r 輪候選組的概率極低。
一次性公鑰
上一節中提到,Algorand 從協議層面的分叉僅在理論上可能發生。在實際中,如果惡意節點可以挾持其他節點,仍可以在驗證組被公開的瞬間,強制這些節點重新簽名新的區塊,從而產生短暫的分叉。Algorand 引入了一種一次性公鑰的機制,以杜絕這種可能性。
具體原理是所有節點在加入 Algorand 網絡時(即發生第一筆交易時),都生成足夠多的一次性公鑰,并公布。這些公鑰將用作后續所有輪次的簽名驗證,并且每個公鑰只使用一次,一旦被使用后就銷毀。一次性公鑰的生成過程需要一定的時間,在 Algorand 的典型實現中,每個新節點需要約 1 小時來生成未來 10^6 輪的所有公鑰(約 180 MB 數據)。雖然這增加了節點加入時的門檻,但可以從根本上杜絕上述分叉攻擊:因為一旦簽名完成,公鑰即被銷毀,即使被惡意節點劫持,也無法再次簽名產生分叉。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。