解碼聖杯:鏈上全衕態加密的挑戰與解決方案

中級Jan 12, 2024
本文介紹 FHE 的原理、麵臨的挑戰及未來優化方案。
解碼聖杯:鏈上全衕態加密的挑戰與解決方案

核心觀點:

1.全衕態加密(FHE)被譽爲「密碼學的聖杯」,但目前其應用受到性能、開髮體驗和安全性方麵的限製。

2.如上圖所示,爲了構建一個真正保密且安全的共享狀態繫統,需要將 FHE 與零知識證明(ZKPs)和多方計算(MPC)結合使用。

3.FHE 正在迅速髮展;新的編譯器、庫、硬件等的開髮,以及 Web2 公司(如英特爾、穀歌、DARPA 等)的研髮大大促進了 FHE 的髮展。

4.隨著 FHE 及其周邊生態繫統的成熟,我們預計「可驗證的 FHE」將成爲標準。去中心化應用程序(DApps)/rollups 可能選擇將計算和驗證外包給 FHE 協處理器。

5.鏈上 FHE 的一個基本限製是「誰持有解密密鑰」。閾值解密(Threshold decryption)和 MPC 提供了針對這種限製的解決方案,但它們通常有需要在性能與安全性之間權衡的問題。

引言:

區塊鏈的透明性是一把雙刃劍。雖然其開放性和可觀察性很有吸引力,但這也恰恰是企業採用區塊鏈技術時的顧慮所在。

鏈上隱私一直是加密領域近十年來最具挑戰性的問題之一。盡管有許多團隊正在構建基於零知識證明(ZKP)的繫統來實現鏈上隱私;但它們無法支持共享的加密狀態。原因在於這些方案是一繫列 ZKP 的函數,因此不可能對當前狀態應用任意邏輯。這意味著我們不能僅僅使用 ZKP 來構建加密的共享狀態應用程序(比如私有的 Uniswap)。

然而,最近的技術突破錶明,將 ZKP 與全衕態加密(FHE)相結合,可以實現完全通用化、加密的去中心化金融(DeFi)。這是如何實現的呢?FHE 是一個新興的密碼學領域,能夠在加密數據上進行任意計算。如上圖所示,ZKP 可以證明用戶輸入和計算的完整性,而 FHE 可以處理計算本身。

雖然 FHE 被譽爲「密碼學的聖杯」,我們將試圖提供對該領域及其各種挑戰及可能解決方案的客觀分析。該技術報告將涵蓋以下鏈上 FHE 主題:

  1. FHE 方案、庫和編譯器(FHE Schemes, Libraries and Compilers)
  2. 安全閾值解密(Secure Threshold Decryption)
  3. 用戶輸入和計算方的 ZKP(ZKPs for User Inputs + Computing Party)
  4. 可編程、可擴展的數據可用性(DA)層(Programmable, Scalable DA Layer)
  5. FHE 硬件(FHE Hardware)

全衕態加密(FHE)方案、庫和編譯器

挑戰:新興的 FHE 方案、庫和編譯器

鏈上 FHE 的基本瓶頸在於其開髮工具和基礎設施的滯後。與零知識證明(ZKP)或多方計算(MPC)不衕,FHE 自 2009 年以來髮展時間較短,因此成熟度較低。

FHE 開髮體驗的主要限製包括:

  1. 缺少易於使用的前端語言,讓開髮者在不需要深入了解後端密碼學的情況下進行編碼。
  2. 缺少功能齊全的 FHE 編譯器,能夠處理所有覆雜的工作(如參數選擇、BGV/BFV 的 SIMD 優化和併行優化)。
  3. 現有的 FHE 方案(特別是 TFHE)與普通計算相比大約慢 1000 倍。

爲了真正理解整合 FHE 的覆雜性,讓我們來看一下開髮者所要經歷的流程:

將 FHE 整合到應用程序中的第一步是選擇一個 FHE 方案。下錶解釋了主要的方案:

如上錶所示,布爾電路(如 FHEW 和 TFHE)具有最快的 bootstrapping 速度,可以避免覆雜的參數選擇過程,併且可以用於任意 / 通用計算,但相對較慢;而 BGV/BFV 適合一般 DeFi 應用,因爲它們在高精度算術計算方麵更高效,但開髮者必鬚提前知道電路的深度以設置 scheme 的所有參數。另一方麵,CKKS 支持衕態乘法,允許精度誤差,使其適用於非精確用例,如機器學習。

作爲開髮者,你需要非常謹慎地選擇一個 FHE 方案,因爲它將影響所有其他設計決策和未來的性能。此外,還有幾個關鍵參數對於正確設置 FHE 方案至關重要,例如模數大小的選擇和多項式次數的作用。

接下來我們討論庫,下錶展示了目前使用較多的 FHE 庫的功能和能力:

但是,這些庫與不衕的 FHE 方案和編譯器的關繫也各不相衕,如下所示:

選擇了 FHE 方案後,開髮者需要設置參數。正確選擇參數將對 FHE 方案的性能産生巨大影響。比較睏難的是,這需要對抽象代數、FHE 特定操作(如重新線性化和模數切換)以及算術或二進製電路有所了解。最後,爲了有效選擇參數,需要從概念上理解它們如何影響 FHE 方案。

此時,開髮者可能會問:

我的明文(plaintext)空間需要多大?可以接受多大的密文?我在哪裡可以併行計算?等等問題……

此外,盡管 FHE 可以支持任意計算,但開髮者在編寫 FHE 程序時需要改變思維方式。例如,程序中不能根據變量寫一個分支(if-else),因爲程序不能將變量視爲普通數據進行直接比較。相反,開髮者需要將代碼從分支改爲可以包含所有分支條件的某種計算。衕樣,這也阻止了開髮者在代碼中編寫循環。

簡而言之,對於不熟悉 FHE 的開髮者來説,將 FHE 整合到他們的應用程序中幾乎是不可能的。這將需要顯著的開髮工具和基礎設施來抽象化 FHE 所呈現的覆雜性。

解決方案:

  1. Web3 特定的 FHE 編譯器

雖然已經存在由穀歌和微軟等公司構建的 FHE 編譯器,但它們:

  1. 沒有以性能爲設計目標,與直接編寫電路相比增加了 1000 倍的「開銷」
  2. 爲 CKKS(即 ML)優化,對於 DeFi 所需的 BFV/BGV 併不那麽有益
  3. 不是爲 Web3 構建的。不支持與 ZKP 方案、可編程區塊鏈等的兼容性。

直到 Sunscreen FHE 編譯器的出現。它是一個 Web3 原生編譯器,爲算術操作(例如 DeFi)提供了一些最佳性能,而不需要硬件加速器。如上所述,參數選擇可能是實施 FHE 方案最睏難的部分。Sunscreen 不僅自動化了參數選擇,還實現了數據編碼、密鑰選擇、實施重新線性化和模數切換、設置電路和實現 SIMD 操作。

隨著技術的不斷進步,我們期待看到不僅在 Sunscreen 編譯器中,還有其他團隊構建屬於自己的,能夠支持其他高級語言的進一步優化。

  1. 新的 FHE 庫

雖然研究人員不斷探索新的有效方案,但 FHE 庫也可以使更多開髮者整合 FHE。

以 FHE 智能合約爲例。盡管從不衕的 FHE 庫中進行選擇可能很睏難,但當我們談論鏈上 FHE 時,選擇就變得更容易了,因爲在 Web3 中隻有少數幾種主導編程語言。

例如,Zama 的 fhEVM 將 Zama 的開源庫 TFHE-rs 集成到典型的 EVM 中,將衕態操作作爲預編譯合約公開。有效地使開髮者能夠在他們的合約中使用加密數據,而無需對編譯工具進行任何更改。

而對於其他特定場景,可能還需要一些其他基礎設施。例如,用 C++ 編寫的 TFHE 庫維護得不如 Rust 版本好。盡管 TFHE-rs 可以支持 C/C++ 的導出,但如果 C++ 開髮者想要更好的兼容性和性能,他們必鬚編寫自己的 TFHE 庫版本。

最後,市場缺乏 FHE 基礎設施的一個核心原因是我們缺少有效的方式來構建 FHE-RAM。一個可能的解決方曏是針對一個沒有某些操作碼的 FHE-EVM 進行研究。

安全閾值解密(Secure Threshold Decryption)

挑戰:不安全 / 中心化的閾值解密

每個保密的共享狀態繫統都基於加密和解密密鑰。由於不能信任任何單一方,因此解密密鑰在網絡參與者之間通過多方計算(MPC)進行分片。

鏈上全衕態加密(FHE)最具挑戰性的方麵之一是構建一個安全且高性能的閾值解密協議。主要有兩個瓶頸:(1)基於 FHE 的計算引入了顯著的「開銷」,因此需要高性能的節點,這本質上減少了驗證者集合的潛在規模;(2)隨著參與解密協議的節點數量增加,延遲也會增加。

至少目前爲止,FHE 協議依賴於驗證者中的大多數是誠實的(honesty majority),然而如上所述,鏈上 FHE 意味著較小的驗證者集合,因此存在更高的串謀和惡意行爲的可能性。

如果閾值節點串謀作惡怎麽辦?它們將能夠繞過協議,基本上解密任何東西,包括用戶輸入到任何鏈上數據。此外,更要註意的是在當前繫統中解密協議可以不被察覺地髮生(即「無聲攻擊」)。

解決方案:改進的閾值解密或動態 MPC

有幾種可能的方法來解決閾值解密的缺點。(1)啟用 n/2 閾值,這將使串謀更加睏難;(2)在硬件安全模塊(HSM)內運行閾值解密協議;(3)使用基於受信任執行環境(TEE)的閾值解密網絡,由去中心化鏈控製認證,允許動態密鑰管理。

與其利用閾值解密,更可能的情況是使用 MPC。一個在鏈上 FHE 中可以使用的 MPC 協議的現象級的例子:Odsy 的新的 2PC-MPC,這是第一個非串謀且大規模去中心化的 MPC 算法。

另一種方法可能是僅使用用戶的公鑰來加密數據。然後驗證者處理衕態操作,必要時用戶自己可以解密結果。雖然這隻適用於特定的使用案例,但我們完全可以避免閾值假設。

總結來説,鏈上 FHE 需要一個高效的 MPC 實現,這種實現具備如下特點:(1)即使在存在惡意行爲者的情況下也能工作;(2)引入最小的延遲;(3)允許無需許可 / 靈活的節點加入。

用戶輸入和計算方的零知識證明(ZKP)

挑戰:用戶輸入和計算的可驗證性:

在 Web2 世界中,當我們請求執行一個計算任務時,我們完全信任某個公司會按照他們承諾的方式在幕後運行這個任務。在 Web3 中,這個模型完全顛倒了。我們不再依賴公司的聲譽併簡單地相信他們會誠信做事,而是在一個無需信任的環境中運作,這意味著用戶不應該需要信任任何人。

雖然全衕態加密(FHE)允許處理加密數據,但它無法驗證用戶輸入或計算的正確性。如果沒有驗證的能力,FHE 在區塊鏈的背景下幾乎沒有用處。

解決方案:用戶輸入和計算方的 ZKP:

雖然 FHE 允許任何人對加密數據進行任意計算,但 ZKP 允許人們在不透露底層信息本身的情況下證明某事是真實的。那麽它們是如何相關的呢?

FHE 和 ZKP 結合在一起有三個關鍵方式:

  1. 用戶需要提交一個證明,錶明他們的輸入密文是正確的格式。這意味著密文符合加密方案的要求,而不僅僅是任意的數據字符串。
  2. 用戶需要提交一個證明,錶明他們的輸入明文滿足給定應用程序的條件。例如,賬戶餘額大於轉賬金額。
  3. 驗證節點(即計算方)需要證明他們已正確執行 FHE 計算。這被稱爲「可驗證的 FHE」,可以看作是 rollups 所需 ZKP 的類比。

爲了進一步探索 ZKP 的應用:

  1. 密文的 ZKP

FHE 建立在基於格(lattice-based)的密碼學上,這意味著加密原語的構造涉及格(lattice),這些格是後量子(post-quantum)安全的。相比之下,流行的 ZKP,如 SNARKs、STARKs 和 Bulletproofs,併不依賴於基於格的密碼學。

爲了證明用戶的 FHE 密文格式正確,我們需要展示它滿足某個帶有環中元素(entries from rings)的矩陣 - 曏量方程,併且這些元素的數值是小的。本質上,我們需要一個爲處理基於格關繫(lattice-based relations)而設計的、在鏈上驗證成本效率高的證明繫統,這是一個開放的研究領域。

  1. 明文輸入的 ZKP

除了證明格式正確的密文外,用戶還需要證明他們的輸入明文滿足應用程序的要求。幸運的是,與之前的步驟不衕,我們可以利用通用的 SNARKs 來證明用戶輸入的有效性,從而使開髮者能夠利用現有的 ZKP 方案、庫和基礎設施。

然而,挑戰在於我們需要「連接」這兩個證明繫統。連接意味著我們需要確保用戶對兩個證明繫統使用了相衕的輸入。否則,惡意用戶可能會欺騙協議。這裡需要再次強調,這是一個極其睏難的密碼學壯舉,也是一個早期研究的開放領域。

Sunscreen 已經爲此奠定了基礎,他們的 ZKP 編譯器支持 Bulletproofs,因爲它最容易與 SDLP 連接。針對「連接」FHE 和 ZKP 編譯器的研究也在不斷推進。

Mind Network 一直在引領 ZKP 的整合,以確保零信任輸入和輸出,衕時利用 FHE 進行安全計算。

  1. 正確計算的 ZKP

在現有硬件上運行的 FHE 極其低效和昂貴。正如我們之前所見的可擴展性三難問題的動態錶現,那些對節點資源要求較高的網絡無法擴展到足夠的去中心化水平。一個可能的解決方案是一個被稱爲「可驗證的 FHE」的過程,其中計算方(驗證者)提交一個 ZKP 來證明交易的誠實執行。

一個可驗證的 FHE 的早期原型可以通過一個名爲 SherLOCKED 的項目展示。本質上,FHE 計算被加載到 Risc ZERO 的 Bonsai zkVM 上,該 VM 在鏈下處理加密數據上的計算,併返回帶有 ZKP 的結果,併在鏈上更新狀態。

舉一個利用 FHE 協處理器的最近的例子:Aztec 的鏈上拍賣演示。正如我們之前所討論的,現有的 FHE 鏈使用閾值密鑰加密整個狀態,這意味著繫統的強度僅取決於其閾值委員會(threshold committee)。相反,在 Aztec 中,用戶擁有自己的數據,因此不受閾值安全假設的約束。

最後,重要的是要了解開髮者可以在哪裡首先構建 FHE 應用程序。開髮者可以在 FHE 支持的 L1、FHE rollup 上構建他們的應用程序,或者在任何 EVM 鏈上構建併利用 FHE 協處理器。每種設計都有其自身的權衡,但我們更傾曏於設計良好的 FHE rollups(由 Fhenix 開創)或 FHE 協處理器,因爲它們從以太坊中繼承了安全性等其他好處。

直到最近,在 FHE 加密數據上實現欺詐證明還是覆雜的,但最近 Fhenix.io 的團隊展示了如何使用 Arbitrum Nitro 堆棧與 FHE 邏輯編譯到 WebAssembly 來實現欺詐證明。

FHE 的數據可用性(DA)層

挑戰:缺乏可定製性和吞吐量

雖然在 Web2 中「存儲」已經商品化,但在 Web3 中情況併非如此。考慮到全衕態加密(FHE)維持著超過 10000 倍的數據膨脹,我們需要確定在哪裡存儲大量的 FHE 密文。如果給定的 DA 層中的每個節點操作者都要下載併存儲每個 FHE 鏈的數據,那麽隻有機構操作者才能跟上需求,從而增加了中心化的風險。

關於吞吐量,Celestia 的最高速度爲 6.7 MB/s,如果我們想運行任何形式的 FHEML,我們將需要每秒數 GB 的帶寬。根據 1k(x) 最近分享的數據,由於設計決策限製了吞吐量(有意爲之),現有的 DA 層無法支持 FHE。

解決方案:水平擴展 + 可定製性

我們需要一個能夠支持水平可擴展性的 DA 層。現有的 DA 架構將所有數據傳播到網絡中的每個節點,這是可擴展性的一個主要限製。相反,隨著更多 DA 節點進入繫統,水平可擴展性意味著每個節點存儲的數據量減少,隨著更多區塊空間的可用,性能和成本得到改善。

另外,考慮到與 FHE 相關的大量數據的大小,爲開髮者提供更高級別的糾刪碼閾值(erasure coding thresholds)定製化是有意義的。換句話説,開髮者對 DA 繫統的保證感到什麽程度的舒適?是基於權益的加權還是基於去中心化的加權。

EigenDA 的架構可以作爲 FHE 的 DA 層某種可能性的一個基礎。它的水平擴展性、結構成本降低、DA 和共識的解耦等屬性,都爲能夠支持 FHE 的可擴展性水平鋪平了道路。

最後,一個更高維度的想法可能是爲存儲 FHE 密文構建優化的存儲槽,因爲密文遵循特定的編碼方案,所以擁有優化的存儲槽可能有助於高效使用存儲空間和更快的檢索。

全衕態加密(FHE)硬件

挑戰:低性能的全衕態加密(FHE)硬件

在鏈上全衕態加密(FHE)應用的推廣中,一個主要問題是由於計算開銷導緻的顯著延遲,這使得在任何標準處理硬件上運行 FHE 變得不切實際。這種限製源自於與內存的大量交互,這是由於處理器需要處理巨大的數據量。除了內存交互外,覆雜的多項式計算和耗時的密文維護操作也帶來了大量的開銷。

爲了深入理解 FHE 加速器的狀態,我們需要揭開其中具體設計的麵紗:針對特定應用的 FHE 加速器與可泛化的 FHE 加速器。

FHE 的計算覆雜性和硬件設計的核心始終與給定應用所需的乘法數量有關,稱爲「衕態操作的深度」。在特定應用的情況下,深度是已知的,因此繫統參數和相關計算是固定的。因此,針對特定應用的硬件設計將更容易,併且通常可以優化以穫得比可泛化加速器設計更好的性能。在一般情況下,如果需要 FHE 支持任意數量的乘法,需要引入 bootstrapping 技術來移除衕態操作中積纍的部分噪聲。 bootstrapping 技術代價比較高,需要大量硬件資源,包括芯片內存、內存帶寬和計算,這意味著硬件設計將與特定應用的設計大不相衕。因此,盡管英特爾、Duality、SRI、DARPA 等行業重要參與者在 GPU 和 ASIC 設計方麵的工作無疑在提高上限,但它們可能無法一對一地應用於支持區塊鏈場景。

在開髮成本方麵,可泛化硬件需要比特定應用的硬件更多的資本進行設計和製造,但其靈活性允許硬件在更廣泛的應用範圍內使用。另一方麵,對於特定應用的設計,如果應用的需求變化併需要支持更深層次的衕態計算,則需要將特定應用的硬件與一些軟件技術(如 MPC)結合使用,以實現與可泛化硬件相衕的目的。

值得註意的是,與特定應用用例(例如 FHEML)相比,鏈上 FHE 的加速要睏難得多,因爲它需要能夠處理更一般的計算,而不是更具特定性的集合。例如,fhEVM 開髮網絡目前的交易處理速度僅限於個位數 TPS。

鑒於我們需要針對區塊鏈定製的 FHE 加速器,另一個考慮因素是:從 ZKP 硬件到 FHE 硬件的可轉移性到底如何?

ZKP 和 FHE 之間存在一些共衕的模塊,例如數論變換(NTT)和底層的多項式操作。然而,這兩種情況中使用的 NTT 的位寬(bit width)不衕。在 ZKP 中,硬件需要支持 NTT 的多種位寬,例如 64 位和 256 位,而在 FHE 中,由於使用了剩餘數繫統,NTT 的操作數較短。其次,ZKP 中處理的 NTT degree 通常高於 FHE。由於這兩個原因,設計一個衕時對 ZKP 和 FHE 都有令開髮者滿意的性能的 NTT 模塊併非易事。除了 NTT 之外,FHE 中還存在一些其他的計算瓶頸,如自衕構(automorphism),這些在 ZKPs 中併不存在。將 ZKP 硬件簡單轉移到 FHE 設置的一種方法是將 NTT 計算任務加載到 ZKP 硬件上,併使用 CPU 或其他硬件處理 FHE 中的其餘計算。

總結這些挑戰,使用 FHE 在加密數據上進行計算曾經比在明文數據上慢 100,000 倍。然而,由於較新的加密方案和 FHE 硬件的最新髮展,目前的性能已經顯著提高到比明文數據慢大約 100 倍。

解決方案:

  1. FHE 硬件的改進

許多團隊正在積極構建 FHE 加速器,但他們併未專註於特定於可泛化區塊鏈計算(例如 TFHE)的 FHE 加速器。一個針對區塊鏈的特定硬件加速器示例是 FPT,一種固定點 FPGA 加速器。FPT 是第一個重度利用 FHE 計算中固有噪聲的硬件加速器,它完全使用近似的固定點算術實現 TFHE 引導。另一個對 FHE 可能有用的項目是 BASALISC,這是一個旨在雲端大幅加速 FHE 計算的硬件加速器架構的繫列。

正如前麵提到的,FHE 硬件設計中的一個主要瓶頸是與內存的大量交互。爲了繞過這個障礙,一個潛在的解決方案是盡可能減少與內存的交互。處理器內存(PIM)或近內存計算(near memory computation)可能在這種情況下有所幫助。PIM 是應對未來計算機繫統的「內存牆(memory wall)」挑戰的有希望的解決方案,它允許內存衕時承擔計算和存儲功能,承諾對計算與內存關繫進行根本性改革。在過去十年中,設計解決此問題的非易失性內存方麵取得了巨大進展,例如電阻式 RAM、自旋轉移扭矩磁性 RAM 和相變存儲器。使用這種特殊內存,已有研究顯示在機器學習和基於格的公鑰加密中顯著改善了計算性能。

  1. 優化的軟件和硬件

在最近的髮展中,軟件被公認爲硬件加速過程中的一個關鍵組成部分。例如著名的 FHE 加速器,如 F1 和 CraterLake,使用編譯器進行混合軟硬件共衕設計。

隨著這一領域的髮展,我們可以期待與針對區塊鏈的 FHE 編譯器共衕設計的功能齊全的編譯器。FHE 編譯器可以根據相應 FHE 方案的成本模型優化 FHE 程序。這些 FHE 編譯器可以與 FHE 加速器編譯器集成,通過結合硬件級別的成本模型,改善端到端性能。

  1. 網絡 FHE 加速器:從垂直擴展到水平擴展

現有的針對 FHE 硬件加速的努力主要集中在「垂直擴展」,即專註於單個加速器的垂直改進。另一方麵,「水平擴展」則關註於通過網絡橫曏連接多個 FHE 加速器,這可能會大大提高性能,類似於與零知識證明(ZKPs)的併行證明生成。

FHE 加速的一個主要睏難是數據膨脹問題:指的是在加密和計算過程中髮生的數據大小顯著增加,爲芯片內和芯片外存儲器之間的高效數據傳輸帶來挑戰。

數據膨脹對通過網絡橫曏連接多個 FHE 加速器構成了顯著的挑戰。因此,FHE 硬件與網絡的共衕設計將是未來研究的一個有前景的方曏。例如針對 FHE 加速器的自適應網絡路由:實現一種基於實時計算負載和網絡流量,來動態調整 FHE 加速器之間數據路徑的路由機製。這將確保最佳的數據傳輸速率和高效的資源利用。

結束語

FHE 將從根本上重新構建我們在各個平颱上保護數據的方式,爲一個前所未有的隱私新時代鋪平道路。構建這樣一個繫統將需要在 FHE、零知識證明(ZKPs)和多方計算(MPC)上取得重大進展。

當我們進入這個新領域時,密碼學家、軟件工程師和硬件專家之間的協作努力將是必不可少的。更不用説立法者、監管機構等,因爲合規性是實現主流採用的唯一途徑。

歸根結底,FHE 將站在數字主權變革浪潮的前沿,預示著一個數據隱私和安全不再是相互排斥而是密不可分的未來。

聲明:

  1. 本文轉載自[HashKey Capital],著作權歸屬原作者[Jeffrey Hu、Arnav Pagidyala],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!
Створити обліковий запис