KeyFrame內部研究專用

Bulletproof Protocol for Set/Not-Set Membership Proofs: Security and Implementation Considerations

DeFi Security Summit - DSS·11月23日週日·22 min英文

三句話摘要

Concordium 資深工程師深講 Bulletproof 零知識證明協議,說明如何將「成員資格」與「非成員資格」問題轉化為內積關係並實作。 把成員/非成員問題系統性翻譯為內積方程組是套用 Bulletproof 的關鍵,而正確的 Fiat-Shamir 轉換與 Domain Separation 才是工程落地不出錯的護城河。 協議選型取決於集合大小:集合元素極少時用 Sigma Protocol + OR 組合即可;中等規模(如 200 國國籍)適合 Bulletproof;超大集合才需要 Accumulator Tree(如 Tornado Cash 的 Sparse Merkle Tree),每種方案效能代價不同。

重點整理

重點
  • 1

    協議選型取決於集合大小:集合元素極少時用 Sigma Protocol + OR 組合即可;中等規模(如 200 國國籍)適合 Bulletproof;超大集合才需要 Accumulator Tree(如 Tornado Cash 的 Sparse Merkle Tree),每種方案效能代價不同。

  • 2

    成員證明的核心數學:將集合元素寫成向量 `a_L`(秘密的 0/1 指示向量),利用內積關係 `<a_L, s> = v` 表達「v 是集合中某元素」,再加三條約束方程(元素只含 0/1、每個位置乘積為零、恰好一個 1)構成完整的方程式系統,再輸入 Bulletproof。

  • 3

    非成員證明的關鍵差異:利用乘法群單位元性質——對每個集合元素 `s_i`,必定存在一個數使得 `(v - s_i) * x = 1`;非成員時此條件對所有元素均成立,將此構造為向量 `a_R` 的約束即可,且 `a_R` 向量本身不需要進一步格式限制。

  • 4

    實作三大坑:隨機盲化因子不可重用(參考 Merlin Transcript);Fiat-Shamir 轉換時所有公開值必須先 hash 進 Transcript 再取 Challenge;Domain Separator 標籤要足夠細分,避免不同協議的 Challenge 值碰撞。

實用技巧與重點

乾貨
  • 協議:Bulletproof(Bulletproofs 研究論文,Boneh 等人)
  • 平台:Concordium 區塊鏈,錢包端產生 ZK 證明,鏈上驗證
  • 集合規模建議:< 十幾個元素 → Sigma Protocol;數十至約 200 → Bulletproof;極大集合 → Sparse Merkle Tree / Tornado Cash-style Accumulator
  • 數學符號:`○`(Hadamard Product,向量逐元素乘積);`<·,·>`(Inner Product,內積)
  • 轉換方法名稱:Fiat-Shamir Transform(互動式 → 非互動式)
  • 成員證明需要的約束方程共 3 條:① `<a_L, s> = v`;② `a_L ○ a_R = 0`(每位置乘積為零);③ `<1, a_L> = 1`(恰好一個 1)
  • 非成員證明關鍵構造:`a_R[i] = (v - s_i)^{-1}` for all i,再加連接向量 `a_R` 的約束
  • 工具建議:Merlin Transcript Library(處理隨機數與 Domain Separation)
  • 實際效能:Rust 後端生成證明、錢包彈窗點擊即完成,鏈上驗證延遲不顯著
  • 國籍案例:最多 ~200 個國家,中等集合規模,Bulletproof 適用

結論

結論

把成員/非成員問題系統性翻譯為內積方程組是套用 Bulletproof 的關鍵,而正確的 Fiat-Shamir 轉換與 Domain Separation 才是工程落地不出錯的護城河。

完整解析

詳細

這場演講的背景是 Concordium 區塊鏈需要讓使用者在不洩露真實身份資料的前提下,證明自己的護照資訊符合某些條件——例如「我是某個歐盟國家的公民」(成員資格),或「我不在黑名單國家名單內」(非成員資格)。講者的目標是向工程師說明如何將這兩類問題系統性地轉化為 Bulletproof 零知識協議可以直接處理的形式。

Bulletproof 的核心架構分兩階段:第一階段,證明者對秘密值(如護照欄位的數字)做出「承諾」(Commitment),類比於把資料封入密封信封;第二階段,產生一段「證明」傳給驗證者,驗證者只看得到承諾,不知道信封裡的內容,卻能確認「某種內積關係在信封內成立」。Bulletproof 的強項在於這類內積關係的驗證效率很高,因此工程上的策略就是把所有想證明的性質都「翻譯」成內積方程式。

成員資格的翻譯方式如下:假設公開集合為 `S = {s_0, s_1, ..., s_n}`,要證明秘密值 `v` 是其中某一個元素。講者引入一個秘密的 0/1 指示向量 `a_L`:若 `v = s_i`,則 `a_L[i] = 1`,其餘為 0。透過內積 `<a_L, s> = v` 即可表達「v 等於集合中某元素」,再加兩條輔助約束(每個位置的 `a_L[i] * a_R[i] = 0`,以及 `sum(a_L) = 1`)確保這個向量的確只有一個 1,整體構成一個可輸入 Bulletproof 的方程式系統。

非成員資格的構造則利用乘法群的性質:若 `v ≠ s_i`,則 `(v - s_i)` 在有限域中一定有乘法逆元,即存在某個值使乘積為 1。講者定義秘密向量 `a_R[i] = (v - s_i)^{-1}`,再加一條連接 `a_L`(此時 `a_L[i] = v - s_i`)與 `a_R` 的約束:`a_L ○ a_R = 1`(向量逐元素乘積全為 1),即完成非成員的數學刻畫。與成員證明不同的是,這裡的 `a_L` 向量不需要額外的格式限制。

實作層面,講者特別提醒三件事:第一,隨機盲化因子絕對不可重用,建議直接採用 Merlin Transcript Library 管理所有亂數與 Domain Separator;第二,做 Fiat-Shamir 轉換時,所有公開資訊(曲線點、公開金鑰、承諾值等)都必須事先寫入 Transcript 再 hash 取 Challenge,否則協議不安全;第三,Domain Separator 標籤要夠細分且唯一,因為一旦不同協議共用同一個 Hash Context,攻擊者可能構造出「ab 與 b 的拼接等於 ab 與 a 的拼接」這類碰撞,導致 Challenge 值可被操控。Concordium 目前在 Rust 後端實作這套流程,使用者只需在錢包介面點擊確認,證明即在本地生成並送上鏈驗證,實際感受幾乎無延遲。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵