a16z:詳談去中心化鏈上可信設置儀式的可行性

原文作者:Valeria Nikolaenko 和Sam Ragsdale

原文編譯:Amber,Foresight News

可信設置儀式(Trusted Setup Ceremony)雖然一直向加密社區發起挑戰,但這絕對也是最能讓加密社區興奮的環節。儀式的目標是生成可靠的加密密鑰,用於保護加密錢包、區塊鏈協議或零知識證明系統。這些程序是項目安全性的信任之根,因此確保分毫不差的操作和執行可信設置儀式至關重要。

目前區塊鏈項目進行可信設置儀式的形式多種多樣,包括但不限於blowtorches、radioactive dust 以及airplanes 等,而這幾種形式都有一個共同點,也就是他們都依賴於一個中心化的協調器。本文將展示如何通過智能合約替換中心化協調器來讓流程實現去中心化,與此同時我們還會開源一個庫,允許任何人在以太坊上運行被加密從業者稱為Kate-Zaverucha-Goldberg(KZG)或「powers-of-tau」的儀式。

我們的去中心化方法有局限性,但它仍然有用。由於當前的鏈上數據限制,加密參數的大小必須保持不超過64 KB。但是參與者的數量沒有上限,任何人在任何時候都能提交貢獻。這些短參數的應用包括小型零知識SNARK、數據可用性採樣和Verkle 樹等。

可信設置儀式的歷史和機制

在典型的可信設置儀式中,一組參與者將協作生成一組加密參數。每個參與方都使用本地生成的加密信息來生成有助於創建這些參數的數據。適當的設置可以確保加密信息不會洩露,加密信息僅能被按照協議指定使用,並且這些加密信息在儀式結束時會被完全銷毀。只要儀式中至少有一方保證誠實並且(在儀式結束後)銷毀了加密信息,那麼整個流程就可以被視作是安全的。 (當然,前提是代碼沒有錯誤)

一些最突出的儀式是由Zcash 推出的,這是一個以隱私為導向的區塊鏈項目。這些儀式的參與者生成了公共參數,旨在允許Zcash 用戶構建和驗證私人加密交易。六名參與者在2016 年舉辦了第一屆Zcash 儀式Sprout。兩年後,加密研究員Ariel Gabizon,現在是Aztec 的首席科學家,在儀式的設計中發現了一個毀滅性的錯誤,這個錯誤是從一篇基礎研究論文中繼承下來的。該漏洞可能使攻擊者能夠在不被檢測到的情況下創建無限的Zcash 硬幣。 Zcash 團隊將這個漏洞保密了七個月,直到系統升級Sapling(其儀式涉及90 名參與者)解決了這個問題。雖然基於安全漏洞的攻擊不會影響用戶交易的隱私,但無限偽造的前景破壞了Zcash 的安全前提。 (從理論上講,不可能知道是否發生了攻擊。)

可信設置的另一個值得注意的例子是永久的「tau-power-of-tau」儀式,該儀式主要為Semaphore 設計,Semaphore 是一種用於以太坊上匿名信令的隱私保護技術。該設置使用BN254 橢圓曲線,到目前為止已有71 名參與者。其他著名的項目後來使用這種設置在頂部運行自己的儀式,包括Tornado.Cash、Hermez 網絡和Loopring。 Aztec 在BLS12_381 橢圓曲線上舉行了類似的儀式,有176 名參與者參加zkSync,這是一個「第二層」以太坊擴展解決方案,使用零知識匯總。 Filecoin 是一種分散的數據存儲協議,分別在第一階段和第二階段與19 名和33 名參與者一起舉行了儀式,分叉了原始存儲庫。 Celo 是一個1 層區塊鏈,也為他們的輕量級客戶端Plumo 舉辦了一個儀式。

永久儀式對參與者人數沒有限制。換句話說,任何人都可以參與任何程度的安全,而不是信任其他人來運行受信任的設置儀式。一個值得信賴的參與者確保所有結果參數的安全性;鏈條與其最強的環節一樣強大。顧名思義,永久儀式可以永久舉行,就像原始的tau 權力儀式的前提一樣。也就是說,項目通常會決定儀式的具體開始和結束時間,這樣他們就可以將生成的參數嵌入到協議中,而不必擔心不斷更新它們。

以太坊計劃為即將到來的ProtoDankSharding 和DankSharding 升級運行一個較小的可信設置儀式。這兩次升級將增加以太坊鏈提供給客戶端進行存儲的數據量。此數據的有效期為建議的30 到60 天。該儀式正在積極開發中,計劃於明年初持續運作六週左右的時間。 (請參見kzg-ceremony-specs 了解更多詳情)而它正在成為迄今為止最大的區塊鏈可信設置儀式。

偏執是一種「美德」,尤其當涉及到可信的設置儀式時。如果機器的硬件或軟件受到損害,則可能會破壞其生成的秘密的安全性。洩露秘密的偷偷摸摸的側信道攻擊也很難排除。例如,手機可以通過記錄CPU 振動的聲波來監視計算機的操作。在實踐中,由於很難消除所有可能的側信道攻擊- 包括那些尚未發現或披露的攻擊- 甚至有人提議將機器飛到太空在那裡舉行儀式。

目前,嚴謹的儀式參與者的劇本通常如下。購買新機器(未受污染的硬件)。通過移除所有網卡(以防止本地機密洩露)來進行風險隔離。在法拉第籠中遠程未公開的位置運行機器(以挫敗潛在的窺探者)。為偽隨機加密信息生成器設定大量熵和硬複製數據,如隨機輸入或視頻文件的種子(以使加密信息難以被破解)。最後,通過將一切燃燒成灰燼來銷毀加密信息- 以及任何關於加密信息的痕跡。

協調可信設置儀式

所有可信設置儀式都依賴於一個中心化的協調者。協調者是個人或私人服務器或其他實體,他們被委託註冊和訂購參與者,通過將信息從前一個參與者轉發到下一個參與者來充當中繼,並保留所有通信的集中日誌以用於審計。協調員通常還負責永久向公眾提供日誌,不過必須要承認的是,這種中心化的系統很容易因為管理不善或者一些非人為因素導致信息丟失。

具有諷刺意味的是,當去中心化是加密精神的核心原則時,加密項目必須依賴於中心化的可信設置儀式。因此,我們決定證明直接在以太坊區塊鏈上為永續的powers-of-tau 舉辦一個小型儀式的可行性。該設置是完全去中心化的,無需許可的,抗審查的,並且只要任何一個參與者是誠實的,都是安全的。按照當前價格計算,參加儀式的費用僅為7 至400 美元,具體取決於所需結果參數的大小(在這種情況下,介於8 和1024 次tau 之間)。

到目前為止,我們建議不要將代碼用於實驗目的以外的任何目的。如果發現代碼有任何問題的人向我們報告,我們將不勝感激。我們很樂意收集有關我們方法的反饋和審核。

了解KZG 或「powers-of-tau」儀式

讓我們來探索一下最受歡迎的可信設置之一,它被稱為KZG,或「powers-of-tau」儀式。感謝以太坊聯合創始人Vitalik Buterin,他關於可信設置的博客文章為我們在本節中的想法提供了信息。該設置生成powers-of-tau 的編碼,之所以這樣命名,是因為「tau」恰好是用於表示參與者生成的秘密的變量:

a16z:詳談去中心化鏈上可信設置儀式的可行性

對於某些應用(例如Groth16,Jens Groth 在2016 年設計的流行的zkSNARK 證明方案),設置的第一階段之後是第二階段,即多方計算(MPC)儀式,為特定的SNARK 電路生成參數。但是,我們的工作僅集中在第一階段。第一階段- 生成tau 的冪- 已經可以用作通用SNARK(例如PLONK 和SONIC)以及其他加密應用程序(例如KZG 承諾,Verkle 樹和數據可用性採樣)的基礎構建塊。 (DAS)。通常,通用SNARK 參數應該非常大,以便它們可以支持大而有用的電路。包含更多門的電路通常更有用,因為它們可以捕獲大型計算;tau 的冪數大致對應於電路中的柵極數。因此,典型的設置大小為|pp|= ~40 GB,能夠支持~2 的電路28 Gas。鑑於以太坊目前的約束,將如此大的參數放在鏈上是不可行的,但是對於小型SNARK 電路,Verkle 樹或DAS 有用的較小的可信設置儀式可以在鏈上運行。

以太坊基金會計劃為大小為200 KB 至1.5 MB 的powers-of-tau 運行幾個較小的儀式。雖然更大的儀式可能看起來更好,但考慮到更大的參數可以創建更有用的SNARK 電路,實際上,更大的並不總是更好。某些應用程序(如DAS)特別需要一個較小的應用程序![原因非常技术性,但如果你很好奇,那是因为具有 n 次幂的设置(在 G 中)1) 仅允许 KZG 对≤ n 次多项式的承诺,这对于确保 KZG 承诺下的多项式可以从任何 n 次评估中重建至关重要。此属性支持数据可用性采样:每次成功获得(采样)多项式的随机评估时,它保证多项式可以用概率 t/n 完全重构。如果你想了解更多关于 DAS 的信息,请查看 Buterin 在以太坊研究论坛上的这篇文章。

我们设计了一个智能合约,可以部署在以太坊区块链上,以运行可信设置仪式。该合约将公共参数完全存储在链上,并通过用户的交易收集参与。

新参与者首先读取这些参数:

a16z:详谈去中心化链上可信设置仪式的可行性

然后对随机密钥 τ’ 进行采样并计算更新的参数:

a16z:详谈去中心化链上可信设置仪式的可行性

并将它们发布在链上,并附上证明三件事:

  • 离散对数的知识:参与者知道τ’。(证明对可信设置仪式的最新贡献建立在所有先前参与者的工作之上。

  • pp 的格式良好 1:这些元素确实编码增量幂。(验证了新参与者对仪式的贡献的良好形式。

  • 更新未擦除:τ’ ≠ 0。(针对试图通过删除所有参与者过去的工作来破坏系统的攻击者的防御。

智能合约验证证明,如果它是正确的,它会更新它存储的公共参数。您可以在存储库中找到有关数学及其背后推理的更多详细信息。

计算 Gas 成本

在链上运行设置的主要挑战是使受信任的设置仪式尽可能高效。理想情况下,提交捐款的费用不超过 50 美元。(大型项目可能能够为贡献者补贴 Gas,在这种情况下,数百名参与者每人花费 100 美元更容易想象)。下面,我们提供有关设置中最昂贵部分的更多详细信息。较低的 Gas 成本将降低贡献成本,并允许构建更长的参数(更多的 tau 功率和更大的 SNARK 电路)!

我们的设置适用于椭圆曲线 BN254(也称为 BN256,BN128 和 alt_bn128),它支持 以太坊上的以下预编译合约:

ECADD 允许添加两个椭圆曲线点,即计算[α+ β]1 來自 [α]1 和 [β]1: 汽油費150

ECMULT 允許橢圓曲線點乘以標量,即計算 [a*α]1 從a 和 [α]1: 汽油費6,000

ECPAIR 允許檢查橢圓曲線對的乘積,即計算e([α1]1, [β1]2)* … *e([α1]1, [β1]2) = 1,相當於檢查α1*β1+ … + αk*βk= 0 : Gas 成本34,000 * k + 45,000

如果以太坊能夠啟用BLS12_381(如EIP-2537 中所建議的那樣),我們的設置合同也可以很容易地用於其他曲線。

讓我們估計將設置更新為

a16z:詳談去中心化鏈上可信設置儀式的可行性

驗證證明的Gas 成本。如上所述,每個參與者都會更新設置並提交包含三個組件的證明。證明的組件1 和3 – 「離散日誌知識」和「更新是非擦除的」 – 驗證起來非常便宜。挑戰在於驗證組件2,「pp 的良好成形性」1「,在鏈上。它需要一個大的多標量乘法(MSM)和兩個配對:

a16z:詳談去中心化鏈上可信設置儀式的可行性

其中ρ0,…,?n-1 是偽隨機採樣標量。就預編譯的智能合約而言,需要:

a16z:詳談去中心化鏈上可信設置儀式的可行性

存儲數據的Gas 成本。每個參與者還將鏈上更新存儲為調用數據(每字節68 gas),佔n * 64 * 68 gas。 (對於那些熟悉橢圓曲線密碼學的人來說,需要注意一點:根據我們對n = 256 的測量,存儲壓縮點將使解壓縮主導總體成本。

以此估算出的Gas 成本如下:

a16z:詳談去中心化鏈上可信設置儀式的可行性

當然我們也還在探索降低Gas 成本的解決方案。

開源庫:evm-powers-of-tau

我們已經在github.com/a16z/evm-powers-of-tau 開源了基於EVM 的powers-of-tau 儀式。使用我們的策略進行儀式既簡單又透明:

  • 部署存儲和驗證協定(協定/KZG.sol)

  • 參與者從以前的事務調用數據中讀取儀式參數

  • 參與者在本地生成一個密鑰,計算更新的參數

  • 貢獻者生成他們的證明:pi1,pi2

  • 貢獻者通過KZG.potUpdate()將更新的參數提交給公共區塊鏈上部署的智能合約

  • 智能合約將驗證更新的有效性,在提交格式錯誤的情況下恢復

  • 多個貢獻者可以永久執行步驟2-5,每個步驟都可以提高儀式的安全性

  • 每當開發人員對提交的數量和質量有信心時,他們就可以在區塊鏈中查詢當前參數,並將這些值用作加密密鑰。

我們的存儲庫使用arkworks-rs 來計算步驟2 和3(rust 計算可以在src / pot_update.rs 中找到),但用戶可能想要編寫自己的。更新提交的整個端到端流程可以在tests/integration_test.rs 的集成測試中找到。

請注意,我們選擇使用calldata 在鏈上存儲更新的powers-of-tau 參數,因為它比存儲便宜幾個數量級。可以在src/query.rs 中找到此數據的基於ethers-rs 的查詢。

最後,證明和詳細的方程式可以在techreport/main.pdf 的技術報告中找到。

未來工作計劃

在將這種可信設置儀式用於生產環境之前,我們建議首先對數學證明和示例實現進行全面審核。

隨著實施,更新儀式的交易成本隨著設置大小而線性增長。對於大多數應用程序(SNARKs,DAS),我們希望設置n > = 256,目前每次更新的費用為73 美元。

我們也許能夠通過有效更新計算的STARK 證明和對更新值的向量承諾來實現亞線性驗證成本增長。這種結構還將消除對以太坊L1 BN254 預編譯的依賴性,從而可以使用更流行的BLS12-381 曲線。

所有的儀式策略都是經過反復權衡和測試的。我們認為這種結構是可靠的,並且具有很好的可驗證和抗審查性。但同樣,在完成更多工作來驗證我們方法的合理性之前,直接使用文中提到的這一方案仍然需要高度謹慎。

Total
0
Shares
Related Posts