很多密碼學應用要求一個可信的權威持有金鑰,但這種系統存在單點故障和金鑰託管的問題。分散式金鑰產生DKG(distributed key generation)透過多方參與,計算共享的公鑰與私鑰集,解決上述問題, 分散式金鑰的產生不依賴任何可信的第三方。同理,區塊鏈作為分散式系統,區塊鏈中的節點透過DKG分散式地產生金鑰,克服單點故障以及單個節點不可信任問題。在(n,t)-DKG中, n為節點數量,t為閾值, DKG協議允許n個節點共同產生金鑰,使得任何數量大於閾值t的節點子集都能使用該共享金鑰,然而任何數量少於閾值t的節點子集都沒有對該共享金鑰的任何知識。在Annchain OG共識演算法中,採用了可驗證隨機數(VRF)和分散式金鑰分發(DKG),以保障在公網環境下公平選舉出Sequencer的潛在節點,不定期進行輪換。同時採用門限簽名(BLS)技術保障了委員會節點出塊的權威性和安全性。本次我們將拆解DKG在Annchain中的實現,歡迎留言拍磚。作者介紹Shor,Annchain核心開發成員,畢業於中科大。負責Annchain高效能p2p網路、通訊與編碼、基於DAG的高效交易同步、交易執行邏輯、wasm虛擬機器智慧合約平臺、rpc等模組的研發以及系統最佳化。可驗證秘密共享可驗證秘密共享 (verifiable secret sharing, 簡稱VSS) 是DKG的基本構造塊 ,VSS的概念被Shamir 和Blakley引入。(n,t+δ, t) -秘密共享:對整數n, t ,δ 滿足 n>=t+δ>t>=0 ,一個(n,t+δ, t) 秘密共享協議是被用於一個交易方(dealer)n個節點之間共享一個金鑰,使得其中任何t+δ或者更多的節點能夠計算金鑰s, 但是t個或更少的節點沒有關於s的任何資訊。δ=1的秘密共享被稱之為閾值秘密共享(threshold secret sharing) ,記為(n,t)-秘密共享。在一些秘密共享應用中,客戶端需要驗證持續的交易(deal)來避免交易方(dealer)的惡意行為。一種擁有這種可驗證性保證的模式被稱之為可驗證秘密共享(verifiable secret sharing) VSS一個可驗證秘密共享(n,t)-VSS 模式有兩個階段(phase)組成。共享階段和重建階段共享階段:一個交易方(dealer)在n個節點之間分發一個秘密,K為足夠大的金鑰空間。此階段結束之後,每個誠實的節點持有分散式秘密s中的一個秘密。重建階段:每個節點廣播它的秘密共享,一個重建函式用於計算秘密或者判斷出是惡意的節點。對於誠實的節點, 而對惡意節點可能不同於甚至沒有。可驗證秘密共享VSS要滿足兩個安全要求:保密性(VSS-WS):一個能夠控制t個節點的敵人,在共享階段無法計算出s。正確性(VSS-C):重建值應該等於共享秘密s或者每個誠實節點判斷出是惡意節點。任何t+1個或者2t+1個誠實節點能夠重建s,所以引入強正確性要求。強正確性(VSS-SC):敵方用大於2t的節點和重建演算法能重建出相同的唯一值s進一步的, 有的VSS模式需要更強的保密安全性。強保密性(VSS-S):能夠控制t個節點的敵方,除了共有的引數之外,沒有任何關於s的資訊。同態承諾
分散式金鑰產生
Pedersen引入了分散式金鑰產生(DKG)的概念,研發了一個DKG模式。 每個節點執行VSS例項,新增分散式共享(distributed shares),在沒有交易方(dealer)的情況下產生組合的共享金鑰。與VSS不同, DKG不需要可信方。
一個(n,t)-DKG模式包含兩個階段(phase):共享階段(sharing phase)階段和重建階段( reconstruction phase )
DKG在區塊鏈中的應用
區塊鏈作為分散式系統,區塊鏈中的節點透過DKG分散式地產生金鑰,克服單點故障以及單個節點不可信任問題。在Annchain OG共識演算法中, DKG與門限簽名演算法(BLS)結合,DKG的金鑰作為門限簽名的金鑰,保證任意2/3的共識節點對一筆訊息進行門限簽名,都能夠恢復出公鑰並進行驗證,具有拜占庭容錯性。