作者:Kiara Bickers
來源:https://bitcoinmagazine.com/technical/not-ecdsa-not-schnorr-meet-dahlias
“聚合簽名” 並不是什麼新想法,從 2000 年代初就有了。但開發出能在比特幣的安全模式、比特幣的橢圓曲線下實際使用的方案,則從未完全實現。開發者們猜測這是有可能做到。他們分享手繪的草稿,然後說,“興許它的工作原理會跟 ‘MuSig2’ 差不多,只是可以跨越交易的輸入”。這個想法作為 開發者的傳說 縈繞了多年,但從未得到確切的證實。
但最近,事情有了改變:Jonas Nick 和 Tim Ruffing(來自 Blockstream Research),還有 Yannick Seurin(來自 Ledger),發表了一篇論文,將這個密碼學幽靈的故事轉化成了一個具體的、可證明的結果。“DahLIAS”是可以在比特幣的原生曲線上工作的恆定體積的(跨輸入)完全聚合簽名方案的第一種正式、安全的構造!
這裡面有好多定語,我們要逐個解釋:
- 完全聚合:分散在不同輸入中的多個簽名可以合併成一個 —— 結果就是一個 64 字節的簽名;簽名體積總是保持恆定,不論有多少個簽名人、多少個輸入。
- 跨輸入:每個簽名人都可以授權不同的輸入,所有的簽名最後都會合併成為一個簽名。
除了比特幣已經依賴的假設,DahLIAS 並沒有增加多少假設。也就是說,使用比特幣已經依賴的數學,DahLIAS 形成了一個新的密碼學原語,解鎖了全新的簽名類型。
先聊聊曲線和簽名
數字簽名是在比特幣世界中證明一個用戶授權了一筆交易的手段。當你要花費比特幣的時候,你的錢包軟件會使用一個私鑰來簽名一條消息,然後整個網絡(中的全節點)都會使用對應的公鑰來驗證這個簽名。
比特幣使用型號為 “secp256k1” 的橢圓曲線(用戶據以生成公鑰和簽名)。它是快速、高效的,也久經考驗。它支持像 “ECDSA” 和 “Schnorr” 這樣的簽名方案;前者是比特幣最初使用的簽名算法;後者則是在 2021 年的 “Taproot” 升級中加入的,可在 P2TR 輸出中使用;這兩者也是目前僅有的受到比特幣的共識規則認可的簽名方案。
傳統上,完全的簽名聚合所依賴的數學操作,在比特幣的曲線(secp256k1)上是不支持的,因此似乎遙不可及。這些特性一般來說依賴於其它類型的橢圓曲線。比如說,“BLS(Boneh–Lynn–Shacham)” 簽名使用一類特殊的曲線,叫做 “適於配對的曲線”,以啟用高級的操作,比如合併多個簽名(甚至是對不同消息的簽名)為一個簽名。
問題在於,BLS 簽名在 secp256k1 上無法工作。雖然從 ECDSA 走向 Schnorr 是一項自然的升級,因為兩種依賴於相同類型的橢圓曲線,但加入 BLS 簽名就會是一個大得多的跳躍,意味著從比特幣現有的安全模型出走。雖然說技術上可以做得到,但它會引入新的密碼學假設,以及給協議增加顯著的複雜性。支持一條適於配對的曲線,比如 “BLS12-381”,對比特幣來說將是 一次巨大的變更。
這就是完全聚合簽名在 secp256k1 上從未實現的部分原因。
直到現在。
簽名聚合的原理
絕大部分的比特幣用戶都熟悉多簽名了。在多簽名錢包中,多人一起授權花費一個 UTXO(或者說一個 “錢幣”)。每個人都簽名相同的輸入數據。這種裝置是有用的,對於(比如說)共享式託管錢包來說。
聚合簽名的工作原理有所不同。它不是多個人簽名相同的輸入(或者說錢幣),而是每個人都授權一筆交易中的不同輸入(UTXO)。然後,這些單獨的簽名會被壓縮成一個緊湊的證據。使用 DahLIAS,就意味著,驗證一個在比特幣的 secp256k1 曲線上的長為 64 字節的簽名,就足以驗證所有的輸入。
(譯者注:為免於誤解,在比特幣世界中,“把多個公鑰對相同消息的簽名聚合成一個簽名”,也算是聚合簽名,比如大家常說的 MuSig、MuSig2,都是基於 Schnorr 的聚合簽名;作者在這裡說的這種情形(將來自多個公鑰對不同消息的簽名聚合成一個簽名),通常被歸類為 “CISA(跨輸入的簽名聚合)”。)
那就是說,原本,如果一筆交易有來自 5 個不同人的 5 個不同輸入,那麼這筆交易將包含 5 個不同簽名。使用聚合簽名,所有這些簽名可以綁定為 1 個。即使每個簽名人都在花費不同的輸入、簽名的是這筆交易的不同部分,也不影響:結果只是一個簽名,證明這筆交易得到了合適的授權。
這就像將許多份許可壓縮到一個文件中。這個簽名是緊湊的,但依然是可以驗證的,證明了每個簽名人都授權了自己那個的 UTXO 。
這可以幫助重新協調對隱私性的激勵。通過將簽名開銷減少到一個 64 字節的證據,DahLIAS 降低了在 CoinJoin 交易中合併輸入的開銷,從而選擇隱私交易比不選擇它在財務上都是更加明智的。
為什麼 “減半聚合” 方案結束了?
在 Schnorr 簽名進入比特幣的不久之後,開發者們探索過 “減半聚合” 方案,作為一種壓縮多個簽名的方案,但得到的結果並不是固定大小的。每多一個輸入,最終證據的大小就要多一些,所以,交易的體積依然會隨參與者數量的增加而增加。DahLIAS 通過在輸入和簽名人之間實現完全聚合而修復了這一點。不管有多少人參與了、他們簽名了什麼,所有簽名都會被壓縮成一個固定大小(64 字節)的證據。
DahLIAS 真正的用處
使用 DahLIAS 的主要好處是,它能減少複雜交易的體積。
DahLIAS 使用一套兩回合的交互式簽名流程。這跟 MuSig2 在交互層面上相似,但是,它不是一個多重簽名協議,因為它並不要求所有參與者聯合簽名相同的消息。相反,它的作用是聚合對不同消息的簽名。
DahLIAS 驗證起來也比單獨驗證每一個簽名更快,最快能達到兩倍。更低的驗證成本,將使更多人能運行全節點,幫助保護比特幣的去中心化。
重要的是,DahLIAS 擁有強大的密碼學保證。這個方案包含了形式化安全證明。而更早的 “開發者神話” 方法們則沒有這個,甚至一些在後來被證明是不安全的。所以沒有過早地採用它們,也是一種幸運。
值得重複一遍:DahLIAS 並不是一種多簽名協議。不能從功能角度將它與 MuSig2 或者 FROST 作比較,即便它們的密碼學基礎是相似的。它的用途在別的地方。它提供了一種新的辦法,將多個獨立的許可編碼為一個清楚、可驗證的包裹。
未來的方向
你可能會想:如果 DahLIAS 是這麼強大,為什麼它沒有一個 BIP?為什麼不提議把它加入比特幣?
DahLIAS 簽名與 Schnorr 簽名和 ECDSA 簽名都不同。它的驗證算法不一樣,不是取一個公鑰、一條消息和一個簽名來驗證,而是取一組公鑰和對應的一組消息,加上一個 64 字節的證據。
這讓 DahLIAS 跟比特幣當前的共識規則不兼容。在基礎層支持它,將需要一次共識變更。DahLIAS 的論文不是要提議這樣的變更,但做的事情是同樣重要的。
這篇論文證明了,在比特幣原生的橢圓曲線上設計一種完全聚合簽名方案是有可能。
就這,也是很大的進步。
要想讓 DahLIAS 進入比特幣,需要有人來撰寫一份 BIP,甚至可能要用到 secp256k1lab 。這意味著,要指定方案的細節、考慮它對共識和實現的影響,並建立社區支持。論文只是為這樣的轉化建立密碼學基礎。
DahLIAS 論文的真正價值是它證明的東西。在 secp256k1 上實現完全簽名聚合已經不止停留在想象層面。它成真了,高效且安全。數年依賴,這個想法一直只是開發者的傳說。現在,它被寫下來、分析了、證明了。剩下的只是,如果我們想要的話,把它帶到比特幣。
(完)



