作者:Omer ShlomovitsZenGo

門限簽名方案 (TSS) 是一種加密原語,可實現分佈式密鑰生成和簽名。在區塊鏈客戶端中引入 TSS 是一種新範式,可帶來諸多優勢,在安全方面的表現尤爲突出。從廣義上講,TSS 可以重新定義密鑰管理系統(如加密貨幣錢包)的設計,併爲 DeFi 用例提供原生支持。然而,TSS 作爲一項新興技術,也存在一定的風險與侷限性。

本文將詳細介紹 TSS 的基本概念、爲區塊鏈領域帶來的潛在優勢、在區塊鏈客戶端中的實現方法,及其與 Shamir 祕密共享和多重簽名的區別。同時,我們將瞭解利用 TSS 進行分佈式密鑰管理的不同方式,並探討相關風險和侷限性。


密碼學的力量

要理解 TSS 的概念,我們需要先掌握一些密碼學的基礎知識。自 20 世紀 70 年代以來,越來越多的互聯網系統(如 TLS 和 PGP)開始採用非對稱加密技術,也稱爲公鑰密碼學 (PKC)。PKC 基於兩把密鑰:公鑰和私鑰。公鑰是公開的,任何人都可以發佈和使用,而私鑰則是保護系統安全的核心機密。

加密與數字簽名是 PKC 的兩大主要應用場景。這兩種技術都依賴於三種算法:首先是生成私鑰與公鑰對,其次是生成密文/簽名,最後是解密/驗證過程。以數字簽名爲例,簽名算法利用僅由所有者掌握的私鑰生成獨一無二的簽名,並將其附加到消息中。隨後,任何持有公鑰的人都可以驗證該簽名的真實性和準確性。


區塊鏈

毫無疑問,區塊鏈是一項極具潛力的強大技術,它提供了一個用於組織和記錄事件的共識層。這一基礎架構賦予用戶構建去中心化經濟,甚至去中心化政府的可能性。令人意想不到的是,運行基本區塊鏈所需的密碼學僅依賴於數字簽名即可實現。在區塊鏈中,私鑰代表身份,而簽名則是身份所作的公開聲明或主張。區塊鏈通過對這些聲明進行排序並依據一套規則進行驗證,從而確保簽名的不可僞造性與準確性。

與區塊鏈中採用的傳統密碼學技術相比,現代密碼學引入了許多令人興奮的新成果,例如零知識證明、同態加密和多方計算等。在過去 10 年中,區塊鏈研究極大推動了應用密碼學的發展,在上述領域以及更多方面都取得了顯著突破。

本文將聚焦於其中一項突破,即安全高效的門限簽名方案 (TSS)。


MPC 和門限簽名方案 (TSS)

多方計算 (MPC) 是密碼學的一個分支,其起源可追溯至約 40 年前 Andrew C. Yao 的開創性研究。MPC 的核心在於,讓一組互不信任的參與方在不泄露各自輸入信息的前提下,共同計算出一個函數的結果。

舉例來說,假設某公司的 n 名員工希望知道誰的工資最高,但又不願意透露自己的實際工資。在這一場景中,每位員工的輸入是自己的工資,而最終輸出是工資最高的員工的姓名。通過 MPC,這一計算能夠在不暴露任何員工工資信息的情況下完成。

MPC 的兩大核心特性爲正確性和隱私性:

  • 正確性:算法的輸出是預期的正確結果。

  • 隱私性:任何參與方的輸入數據均不會泄露給其他方。

我們將利用 MPC 技術以分佈式方式計算數字簽名,並探討如何將上述特性應用到簽名過程中。如之前所述,簽名通常分爲三個步驟:

  • 密鑰生成:第一步是整個流程中最複雜的一步。這一步需要生成一個公鑰,用於驗證後續的簽名。同時,還需要爲每個參與方生成一個獨立的“祕密分片”。在正確性和隱私性方面,該函數會向所有參與方輸出相同的公鑰,同時爲每位參與方生成不同的祕密分片,從而確保:(1) 隱私性:祕密分片數據在各方之間不會泄露,以及 (2) 正確性:公鑰是所有祕密分片的函數計算結果。

  • 簽名:這一步涉及簽名生成函數。各方的輸入爲其祕密分片,源自上一步(分佈式密鑰生成)的輸出。此外還有一個衆所周知的公共輸入,即需要簽名的消息。輸出爲數字簽名,而隱私性可確保在整個計算過程中,祕密分片不會泄露。

  • 驗證:驗證算法與傳統方法保持一致。爲了確保與單一簽名方案的兼容性,任何掌握公鑰的人都能夠驗證並確認簽名,這也是區塊鏈驗證節點執行的核心任務。

門限簽名方案 (TSS) 是我們爲分佈式密鑰生成 (DKG) 和分佈式簽名過程的結合所賦予的名稱。


將 TSS 與區塊鏈相結合

在區塊鏈中採用 TSS 的直觀方式是更改區塊鏈客戶端,使其通過 TSS 技術生成密鑰和簽名。這裏的“區塊鏈客戶端”指的是由全節點執行的一組命令。在實際應用中,TSS 可以將所有與私鑰相關的命令替換爲分佈式計算。

爲進行詳細說明,我們先簡要介紹在傳統區塊鏈設計中如何創建新地址。簡單來說,首先生成私鑰,然後根據私鑰計算公鑰,最終從公鑰推導出區塊鏈地址。

在 TSS 模式下,公鑰由 n 個參與方共同計算得出,每個參與方僅持有私鑰的一個祕密分片(且各分片不會互相泄露)。我們可以通過與傳統系統相同的方式,從公鑰推導生成地址,使地址的生成方式不受區塊鏈的限制。這種方式的優勢在於,各方僅持有一部分私鑰,因此私鑰不再是單點故障的來源。

交易簽名也可以採用類似方式。不同之處在於,不再使用私鑰進行單方簽名,而是通過多方協作生成分佈式簽名。因此,只要有足夠多的參與方誠實行事,即可產生有效簽名,從而實現從本地計算(單點故障)到交互式計算的轉變。

值得一提的是,分佈式密鑰生成能夠支持不同類型的訪問結構:通用的“t out of n”模式可以確保即便在最多 t 次任意故障的情況下,仍然能夠安全地執行密鑰相關操作。


TSS 與多重簽名

某些區塊鏈將 TSS 功能作爲軟件的內置或可編程部分提供,通常我們稱之爲多重簽名。爲了更清楚地理解兩者的差異,可以將多重簽名看作是區塊鏈應用層的 TSS。

換句話說,多重簽名和 TSS 本質上都在實現類似的目標,但 TSS 使用的是鏈下加密技術,而多重簽名發生在鏈上。然而,區塊鏈需要一種特定的方法來對多重簽名進行編碼,這可能會影響隱私性,因爲訪問結構(簽名者數量)會暴露在區塊鏈上。此外,多重簽名交易的成本較高,因爲每個簽名者的信息都需要傳輸到區塊鏈上。

在 TSS 中,簽名者的詳細信息嵌入常規交易中,從而降低成本並保護隱私。另一方面,多重簽名可通過非交互式方法實現,這省去了在不同簽名者之間運行復雜通信層的麻煩。

兩者的主要區別在於,多重簽名特定於區塊鏈,需要爲每個區塊鏈單獨實現,且在某些區塊鏈中可能根本不支持。相較之下,TSS 完全基於密碼學,始終能夠得到支持。欲進一步瞭解兩者之間的區別,請參閱此處


TSS 與 Shamir 祕密共享方案

Shamir 祕密共享方案 (SSSS) 提供了一種分佈式存儲私鑰的方法,可在私鑰處於靜止狀態時將其分散存儲到多個位置。SSSS 與 TSS 主要有兩大區別:

  • 密鑰生成:在 SSSS 中,由一個稱爲“分發者”(dealer) 的角色負責生成私鑰祕密分片。分發者在單一位置生成完整的私鑰,並將其拆分爲多個祕密分片,然後分發到不同的位置。在 TSS 中,沒有分發者的存在,因爲整個流程是分佈式的,完整的私鑰從未在單一位置生成。

  • 簽名:在 SSSS 中,各方需要先重建完整的私鑰才能完成簽名,這導致每次簽名時都會面臨單點故障的風險。而在 TSS 中,簽名過程以分佈式方式完成,無需重建祕密分片。

因此,在 TSS 方案中,私鑰在整個生命週期內都不會出現在單一位置,顯著提升了系統安全性。


門限錢包

基於 TSS 技術的錢包與傳統的加密貨幣錢包略有不同。傳統錢包通常通過生成助記詞來確定性地推導錢包地址。用戶可以利用這種分層確定性 (HD) 結構:1) 獲取與錢包地址對應的私鑰並進行交易簽名;2) 通過助記詞恢復所有錢包密鑰。

門限錢包的運作機制則更加複雜。雖然也支持生成 HD 結構,但這一過程需要以分佈式的方式進行計算,類似於另一種 MPC 協議。各參與方需共同決定下一個要使用的密鑰。換句話說,每個參與方都有各自獨立的助記詞。這些助記詞是單獨生成的,並不會組合在一起,因此任何一方都無法單獨從自己的助記詞中推導出完整的私鑰。

此外,基於 TSS 的錢包還具備一項強大的安全功能,即可以在無需更改公鑰和區塊鏈地址的情況下進行私鑰輪換。私鑰輪換也稱爲主動祕密共享,是另一種 MPC 協議,以舊的祕密分片爲輸入,生成一組全新的祕密分片。舊的祕密分片可以刪除,而新的分片則可以繼續使用。

這一架構爲門限錢包的安全性引入了時間維度,意味着攻擊者必須在同一時間出現在多個位置,才能成功對錢包發動攻擊。即便試圖僞造簽名,攻擊者在私鑰輪換前後所獲得的祕密分片也無法結合成完整的密鑰,對安全性不會產生額外威脅。

然而,這類錢包的一個侷限在於其不支持助記詞,與單密鑰錢包系統不兼容。因此,明確哪些方持有祕密分片顯得尤爲重要。

可能的架構有以下幾種:

  • 外包 TSS:用戶將計算交由“n”臺服務器完成。密鑰生成、管理和簽名將有效地外包給服務提供商,這些服務提供商不是資產所有者,但通過提供安全保障獲取一定回報。

  • 多設備協作:用戶在自己擁有的設備之間運行 TSS。例如,物聯網設備、移動設備和筆記本電腦協同工作。

  • 混合模式:部分參與方由外部服務提供商控制,部分運行在用戶自有設備上,共同完成 TSS 計算。

第一種方式減輕了用戶客戶端的 TSS 計算負擔,但服務提供商可能會串通,從而竊取用戶資產(儘管通常假設足夠多的服務提供商不會同時被攻破,但不排除這種可能性)。

第二種方式爲用戶提供了完全控制權,但由於需要多臺設備在線參與 TSS 計算,交易操作較爲繁瑣。

第三種方式實現了兩者兼顧,讓用戶能以簡單高效的方式完成交易,又確保交易未經用戶授權無法完成。


TSS 和智能合約

多年來,研究人員探索出了數字簽名的諸多用途,其中一些已經成爲不可或缺的關鍵技術。如前所述,TSS 是一種可以顯著提升安全性的加密原語。在區塊鏈場景中,基於 TSS 的密碼學方案能夠取代許多傳統功能。例如,去中心化應用、Layer 2 擴容方案、原子交換、混幣、遺產傳承等都可以通過 TSS 框架實現。這使得成本和風險較高的鏈上智能合約操作逐漸讓位於更加經濟可靠的解決方案。

舉例來說,多跳鎖通過巧妙利用兩方簽名,提供了一種更安全、更私密的支付通道網絡,可作爲比特幣閃電網絡的替代方案。ShareLock 則可能是以太坊上成本最低的鏈上混幣方案,基於單次門限簽名驗證。


風險

近年來,TSS 的應用逐步增多。然而,作爲一項相對較新的技術,它仍面臨一些侷限和潛在問題。與傳統的公鑰密碼學技術相比,TSS 協議更加複雜,且尚未經過廣泛的“實戰檢驗”。通常,與簡單的數字簽名相比,TSS 需要額外的加密假設,而這些假設可能不夠穩健,因此引入了傳統方案中未曾出現的加密攻擊向量(請參閱 2019 年 Breaking Bitcoin Conference 的相關演示文稿)。要在系統中安全部署 TSS,建議尋求安全工程師與密碼學專家的專業支持。

從積極的一面來看,得益於不斷增加的社區貢獻、同行評審、代碼審計以及算法優化,現有和新興的 TSS 應用正變得日益成熟。


總結

本文介紹了門限簽名方案 (TSS) 的基本概念,這是一種極具潛力的加密原語,有望改變我們與區塊鏈交互的方式。

由於本文未涉及可在 BNB Chain 和比特幣中應用的門限 ECDSA,感興趣的讀者可以參考以下最新論文。此外,如果您希望嘗試一些 TSS 應用,可以查看此處的兩方 BNB Chain 錢包的開源代碼,或使用 ZenGo 錢包,這是一款採用混合模式的非託管兩方 BNB Chain 錢包。


深度閱讀: