Musig 中的 R/r 可以僅從種子和消息雜湊派生嗎?
我想知道在 MuSig 簽名中預送出和揭示 R/r 的前兩次往返是否可以移至密鑰生成階段並具有確定性。這減少了需要交換的消息數量;由於 keygen 只完成一次,我們希望擴展該階段。這對於 HD 錢包特別有用:以使錢包創建更加複雜為代價,簽名將需要更少的互動。
第 10-11 頁的 musig 論文指定了以下內容(從簽名者 1 的角度來看):
MuSig 方案
密鑰生成
- 生成私鑰 x 1和對應的公鑰 X 1
- 發送 X 1
- 接收 X i
簽署(特別是關於同意 R i的部分)
- 發送 t 1 =H com (R 1 )
- 收到 t我
- 發送 R 1
- 接收 R i
- 檢查 H com (R i )==t i
r 1被指定為隨機的。簽名包括三輪互動,其中兩輪用於上述步驟(同意 R i)。我想將這些步驟移至 keygen 階段。
HD 錢包可能會使用 BIP32 來生成 X 1。我們也可以使用 BIP32 來推導 R i /r i嗎?
請考慮以下方案。(從 cosigners 1 的角度來看)
提議的高畫質方案
高畫質錢包設置階段
- 生成 xprv y 1和對應的 xpub Y 1
- 生成 xprv k 1和相應的 xpub K 1
- 發送 xpub Y 1
- 發送 u 1 =H(K 1 )
- receives xpub Y i
- 收到你我
- 發送 xpub K 1
- 接收 xpub K i
- 檢查 H(K i )==u i
密鑰生成
- 從 xprv y 1沿著一些 BIP32 路徑 p,導出私鑰 x 1和公鑰 X 1
- 從 xpub Y i沿著相同的 BIP32 路徑 p,導出公鑰 X i
- 從 xprv K 1沿著相同的 BIP32 路徑 p,導出私鑰 j 1和公鑰 J 1
- 從 xpub K i沿著相同的 BIP32 路徑 p,導出公鑰 J i。
簽署(特別是關於同意 R i的部分)
- 計算 r 1 =j 1 +hash(m) 和 R 1 =J 1 +hash(m)*G
- compute R i =J i +hash(m)*G
這種方法在簽名期間只有一輪互動(發送 s i,省略,因為它與論文中描述的內容沒有變化)。
我已經閱讀了去隨機化部分,但解釋為什麼它不起作用需要攻擊者選擇R i 。如果我們使其確定性派生,並且 BIP32 是安全的,則此攻擊不適用。該論文指出“每個簽名者必須確保每當其他共同簽名者發送的任何 R j或消息m發生變化時,他的 ri值都會發生不可預測的變化。只要 f 是確定性的,這意味著在選擇隨機值時存在循環依賴性。”
這個循環依賴在哪裡?RFC 6979 中的 f 僅取決於 key 和 m。
只要您不簽署超過一條消息,您建議的結構可能會起作用。通過提前有效地選擇 R 點,您已經建構了單次顯示簽名。
但是,您用於不同 R 值的推導是沒有意義的。不重用 R 值是不夠的;您也不能使用多個相關的 R 值。您正在建構的所有 R 值都通過一個線性方程相關聯。這足以讓攻擊者(知道這種關係)從看到兩個簽名中導出私鑰。