跳至主要內容
Standards Track Draft

BIP-327: MuSig2 多簽聚合

定義 MuSig2 協議,實現 Schnorr 多重簽章的密鑰和簽章聚合。

Jonas Nick, Tim Ruffing, Elliott Jin 2022年3月22日
BIP 編號

327

類型

Standards Track

狀態

Draft

創建日期

2022-03-22

摘要

MuSig2 是一個多重簽章方案,允許多個簽署者共同創建一個單一的 Schnorr 簽章。 最終的簽章和公鑰看起來與單一簽署者產生的完全相同,提供了極佳的隱私性和效率。

為什麼需要 MuSig2?

傳統多簽的問題

傳統的 OP_CHECKMULTISIG 需要在區塊鏈上暴露所有公鑰和簽章。 這不僅佔用空間增加費用,還暴露了參與者結構。

特性 傳統多簽 MuSig2
鏈上公鑰數量 N 個 1 個(聚合)
簽章數量 M 個 1 個(聚合)
隱私 暴露結構 與單簽相同
費用 較高 與單簽相同

MuSig2 協議流程

MuSig2 是一個兩輪協議(相比 MuSig1 的三輪):

協議步驟

0

設置(一次性)

每個參與者 i 有私鑰 x_i,公布公鑰 X_i

計算聚合公鑰 X = KeyAgg(X_1, ..., X_n)

1

第一輪:Nonce 生成與交換

每個參與者生成隨機 nonce 並分享 nonce 公鑰

可以在知道消息之前預生成

2

第二輪:部分簽章

每個參與者使用自己的私鑰和 nonce 生成部分簽章

聚合所有部分簽章得到最終簽章

密鑰聚合

MuSig2 使用特殊的密鑰聚合函數,防止「惡意密鑰攻擊」:

# 密鑰聚合

L = H(X_1 || X_2 || ... || X_n)

a_i = H(L || X_i)

X = a_1·X_1 + a_2·X_2 + ... + a_n·X_n

每個公鑰都乘以一個係數 a_i,這個係數取決於所有參與者的公鑰列表。 這確保沒有人可以選擇一個「抵消」其他人的惡意公鑰。

安全性考量

Nonce 安全

Nonce 的安全使用至關重要。重用 nonce 或使用可預測的 nonce 會導致私鑰洩露。 MuSig2 設計允許 nonce 在不知道消息的情況下預生成,提高了實用性。

警告: 永遠不要重用 nonce! 在 Schnorr 簽章中,如果用相同的 nonce 簽署兩條不同的消息, 私鑰可以被直接計算出來。

並發會話攻擊

MuSig2 的兩輪設計可能受到並發會話攻擊。攻擊者可以同時發起多個簽名會話, 試圖提取受害者的私鑰。BIP-327 提供了緩解措施。

應用場景

  • 多簽錢包:n-of-n 多簽看起來像單簽
  • 閃電網路:通道開啟/關閉交易
  • Taproot 密鑰路徑:聚合密鑰作為內部密鑰
  • 原子交換:跨鏈交易簽章
  • 門限簽章:結合 FROST 實現 t-of-n

與其他方案比較

特性 MuSig1 MuSig2 FROST
輪數 3 2 2
門限 n-of-n n-of-n t-of-n
Nonce 預生成
複雜度 中等 中等 較高

實作狀態

  • libsecp256k1-zkp:參考實作
  • Bitcoin Core:開發中
  • LND / CLN:實驗性支援

相關 BIP

已複製連結
已複製到剪貼簿