當前加密項目依賴於中心化的可信設置儀式,a16z 探索了去中心化鏈上可信設置儀式的可行性。

原文:On-chain trusted setup ceremony

作者: Valeria Nikolaenko 和 Sam Ragsdale

編譯: Amber,Foresight News

封面: Photo by Lorenzo Herrera on Unsplash

可信設置儀式(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 網絡和 Loopping。阿茲特克在 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」恰好是用於表示參與者生成的秘密的變量:

對於某些應用(例如 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 在以太坊研究論壇上的這篇文章。

我們設計了一個智能合約,可以部署在以太坊區塊鏈上,以運行可信設置儀式。該合約將公共參數完全存儲在鏈上,並通過用戶的交易收集參與。

新參與者首先讀取這些參數:

然後對隨機密鑰τ' 進行採樣併計算更新的參數:

並將它們發佈在鏈上,並附上證明三件事:

  • 離散對數的知識:參與者知道τ'。(證明對可信設置儀式的最新貢獻建立在所有先前參與者的工作之上。
  • 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 中所建議的那樣),我們的設置合同也可以很容易地用於其他曲線。

讓我們估計將設置更新為

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

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

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

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

當然我們也還在探索降低 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 曲線。

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

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。