DKLS23 密碼學背景

多方運算會使用兩種金鑰演算法簽署:secp256k1 上的 ECDSA 和 Ed25519 上的 EdDSA (即將推出)。本頁面將介紹門檻 ECDSA 通訊協定 DKLS23,以及 Google 對其所做的變更。如要瞭解支援的演算法,請參閱「支援的區塊鏈」。

門檻 ECDSA 和 DKLS23

與其他簽章機制相比,ECDSA 的門檻簽章問題向來難以解決。在 2017 年之前,大多數解決方案都涉及嚴重的取捨。

2018 年,DKLS 提出了第一個 ECDSA 2-out-of-2 簽章解決方案,該方案僅依賴基於 ECDSA 的密碼學假設(例如,不需要 Paillier、RSA 或其他不同系列的密碼學難度假設)。這項通訊協定的突破性構想,是針對 MPC 做法提出新穎的惡意安全論證 (先前嘗試套用一般惡意安全 MPC 技術,導致通訊協定需要數分鐘才能執行,而非毫秒)。

同一批作者後續改良出 k-out-of-n 協定,最後 DKLS23 改良版則發展出 3 輪 k-out-of-n 門檻 ECDSA 的通用架構,涵蓋所有先前的做法,並根據重要成效指標,認定 DKLS 做法最有效率。具體來說,該版本的通訊協定僅仰賴理想承諾和雙方乘法基元。產生的通訊協定需要每方進行個位數毫秒的運算 (與競爭方法相比,速度提升了數個數量級),更重要的是,它依賴更簡單的加密編譯基元,僅使用橢圓曲線運算 (相較於其他工作所需的昂貴 Paillier、同態運算,以及昂貴的零知識範圍證明和加密編譯金鑰格式正確性證明)。

這項通訊協定已由多位稽核人員進行內部評估,包括 Coinbase 聘請的專家和其他密碼學專家。Doerner 和 Roy DR26 最近發現 DKLS 乘法器的安全性分析有誤,需要額外叫用 22 次 OT,才能達到宣稱的 120 位元安全性。這項異動已實施。同樣地,其他外部稽核人員也指出,通訊協定說明中缺少有關點對點管道模型中廣播影響的詳細資料 (值得注意的是,必須回應部分設定參數,才能取得共同知識)。

Google 後續對這項通訊協定的研究,大幅強化了實作方式、減少大規模運作通訊協定所需的資源,並擴充了配置功能。舉例來說,學術文獻並未明確說明隨機預言機的選擇和實作方式。雖然隨機預言機是實用的學術抽象概念,但實作起來相當複雜,因此安全性稽核記錄了多項缺陷。

我們工作的一大重點是開發類型系統 (以兩個 spawn 和 fork 作業為基礎,並嚴格使用類型系統,防止複製、移動及別名指向預言機的指標),確保每個工作階段和子工作階段都使用不同的隨機預言機。

另一項重要改善與工作階段和子工作階段 ID 的選取有關。UC 模型以及在該模型中證明安全的所有通訊協定,都需要環境提供新的工作階段 ID。在實務上,系統必須確保對手無法違反這項假設,而這通常需要參與者為此目的維護無限制狀態。我們在原始 DKLS 通訊協定中加入額外回合,以僅需常數大小狀態的方式選取這個 ID。

整體而言,更新及強化後的通訊協定仍可在數十毫秒內完成簽署作業。

在功能方面,DKLS23 論文僅考慮標準的 k-out-of-n 門檻存取結構。在實際操作中,客戶可能需要模擬組織規則的存取結構。密碼學文獻中包含許多設計秘密分享存取結構的方法。我們擴充了 DKLS 通訊協定,支援更通用的存取結構,可由門檻 k-out-of-n 閘組成。這樣一來,您就能設定「下列 3 個群組中須有 2 個:(a) 客戶、(b) 10 位風險控管人員中須有 2 位、(c) 3 位財務、法務和會計部門主管中須有 2 位」等政策。

在 v1beta API 中,您可以在 keyPolicy 欄位中將這個存取結構定義為 KeyRing 的金鑰政策。在 KeyRing 中建立的所有金鑰都會使用這個位置。金鑰政策最多可有兩個層級:根門檻規則,以及直接位於其下的門檻規則。根目錄下的門檻規則不得包含其他門檻規則。