門檻式簽章說明
首頁
文章
門檻式簽章說明

門檻式簽章說明

進階
發佈時間 Jul 21, 2019更新時間 Apr 29, 2021
12m

作者:Omer Shlomovits (ZenGo)。

門檻式簽章方案 (TSS) 是一種用於分散式金鑰生成和簽署的密碼學新技術。在區塊鏈客戶端中使用 TSS 是一種新興範式,它可提供許多好處,尤其是在安全性方面。廣義上來說,TSS 可以影響金鑰管理系統 (例如加密貨幣錢包) 的設計,並為去中心化金融 (DeFi) 的應用案例提供原生支援。儘管如此,TSS 仍然是一項新技術,因此亦應考慮風險和限制。

在本文中,我們將介紹什麼是 TSS、它為區塊鏈領域帶來的潛在優勢、它在區塊鏈客戶端的實施方式、它與 Shamir 秘密分享及多重簽名之比較、使用 TSS 進行分散式金鑰管理的不同方式,最後我們將討論其風險和限制。


密碼學的力量

若要了解 TSS,我們需要先具備一些基本的密碼學知識。自 1970 年代以來,越來越多的網際網路系統 (例如 TLS 和 PGP) 採用非對稱式加密,亦稱為公鑰加密 (PKC)。PKC 會使用兩個金鑰:一個公鑰和一個私鑰。公鑰並非秘密,可被公開並由任何人使用,而私鑰則是代表系統安全性的秘密資訊。

加密和數位簽章是 PKC 最常見的兩種應用。加密和數位簽章方案均依賴於三組演算法。第一組用於生成私鑰與公鑰對,第二組用於生成密文或簽章,第三組則用於解密或驗證。就數位簽章而言,簽署演算法必須使用僅為擁有者所知的私鑰,才能產生唯一簽章。該簽章附加於特定訊息之上,使任何持有公鑰的人均能驗證其真實性與正確性。


區塊鏈

毫無疑問,區塊鏈是一項非常強大的技術,提供了用於組織和記錄事件的共識層。該等基礎架構賦予我們 (用戶) 建構去中心化經濟體系甚至政府的潛在力量。出乎意料地的是,運行基本區塊鏈所需的加密技術可僅基於數位簽章。在區塊鏈中,私鑰代表身份,而簽章則是身分所做出的公開聲明或主張。區塊鏈會依據一套規則對聲明進行排序,並對其進行驗證,其中這些規則亦可確保簽章的不可偽造性和正確性。

相較於區塊鏈所採用的較為傳統的加密技術,現代加密工具箱中包含了一些超棒的魔法:零知識證明、同態加密和多方運算等。正如我們在過去十年所見,區塊鏈研究極大地推動了應用加密技術發展,並在上述所有方面和其他領域均取得了突破。 

在本文中,我們將重點介紹其中一項突破:高效安全的門檻式簽章 (TSS)。


多方運算 (MPC) 與門檻式簽章方案 (TSS)

多方運算 (MPC) 是加密技術的一個分支,始於近 40 年前 Andrew C. Yao 的開創性發展。在 MPC 中,一組互不信任的參與者試圖就其輸入數值共同運算一個函數,同時對這些數值進行保密。 

舉例來說,假設某家公司的 n 名員工想要知道誰的薪資最高,但又不希望透露彼此的實際薪資。此處的非公開輸入是薪資,輸出則是薪資最高的員工姓名。使用 MPC 進行運算時,我們知道在運算過程中,一筆薪資資料都不會洩露。 

MPC 的兩個主要特性是正確性和隱私性:

  • 正確性:演算法產生的輸出正確 (如預期)。

  • 隱私性:一方持有的秘密輸入資料不會洩露給另一方。

我們將使用 MPC 以分散式方式運算數位簽章。讓我們看看如何將上述特性應用於簽章。回顧簽章的三個步驟: 

  • 金鑰生成:是第一步,也是最複雜的步驟。我們需要生成一個公開的金鑰,用於驗證未來的簽章。但是,我們還需要為各方生成一個獨立的秘密,稱為 秘密持份。在正確性和隱私性方面,我們假設該函數將向所有各方輸出相同的公鑰,以及不同的秘密持份,因而符合:(1) 隱私性:秘密持份資料不會在各方之間洩露,以及 (2)正確性:公鑰是秘密持份的函數。

  • 簽署:此步驟涉及簽章生成函數。各方的輸入會是秘密持份,由其在上一步 (分散式金鑰生成) 的輸出所生。此外另有包括所有人皆知的公開輸入,亦即待簽署的訊息。輸出為數位簽章,隱私特性確保運算過程中不會洩露秘密持份。

  • 驗證:驗證演算法仍維持傳統設定。為了與單一密鑰簽章兼容,每個知道公鑰的人應均能夠驗證簽章並使其生效。這正是區塊鏈驗證節點所執行的功能。

分散式金鑰生成 (DKG) 與分散式簽署的組合名稱即為門檻式簽章方案 (TSS)。


結合 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 中,稱為「牌莊」的單一方負責生成私鑰秘密持份。亦即當金鑰生成時,私鑰在單一位置生成,然後由牌莊分發到不同位置。在 TSS 中並無牌莊,因為該角色是分散,完整的私鑰從未存放在單一位置。

  • 簽署:在 SSSS 中,各方必須重建完整私鑰才能進行簽暑,導致每次簽署時會出現單點故障的風險。在 TSS 中,簽署以分散式方式完成,無需重建秘密持份。

正如我們所見,在 TSS 中,私鑰 (代表系統安全性) 在整個生命週期內從未處於單一位置。


門檻式錢包

基於 TSS 技術的錢包與傳統的加密貨幣錢包有些不同。通常,傳統錢包會生成助記詞,並以其導出確定地址。用戶之後可使用此分層確定性 (HD) 結構執行以下操作:1) 取得與錢包地址相對應的私鑰,並用其簽署交易,以及 2) 使用助記詞恢復所有錢包金鑰。

門檻式錢包則比較複雜。雖然也可以生成 HD 結構,但其生成必須如同其他 MPC 協定以分散方式進行運算。各方必須共同決定下一個要使用的金鑰。換句話說,各方均有自己的助記詞。助記詞會單獨生成,絕不合併,因此僅單一方無法從其助記詞中推導出私鑰。

TSS 式錢包也具有不錯的安全功能,即能夠在不變更相對應的公鑰和區塊鏈地址的情況下進行私鑰輪替。私鑰輪替,也稱為主動秘密分享,是另一種 MPC 協定。它將秘密持份作為輸入,並輸出一組新的秘密持份。舊的秘密持份可被刪除,而以同樣方式使用新的秘密持份。

此結構增加了時間層面的安全性,代表攻擊者必須同時位於多個位置才能攻擊門檻式錢包。即使攻擊者在輪替前後合併秘密持份,亦無法獲得額外權限來偽造簽章。 

此類錢包的缺點是由於缺乏助記詞,其無法與單一金鑰錢包系統兼容。因此,考慮由哪幾方持有秘密持份非常重要。

以下是一些可能的架構:

  • 外包 TSS:用戶將讓「n」個伺服器代表其執行運算,實質上是將金鑰的生成、管理和簽署外包給服務供應商。服務供應商並非資產的擁有者,而是提供安全防護層以換取某些獎勵。

  • 使用多個裝置:用戶將在其擁有的裝置之間執行 TSS。例如,一方為特定物聯網裝置,另一方是用戶手機,再一方則是其筆記型電腦等。

  • 混合型:TSS 的執行由外部服務供應商控制的特定方和運行於用戶自有裝置的特定方共同完成。

第一種方法減輕用戶端繁重的 TSS 運算。但是,服務供應商可能進行串通 (我們假設不會有足夠多的服務供應商同時受到攻擊,但在實務中這可能會發生) 並竊取用戶的資產。

第二種方法可讓用戶擁有完全的控制權,但在進行交易時會變得麻煩,因為您需要多個裝置連上網路並參與 TSS 運算。

第三種方法被視為結合前兩者優點的選項,因為它既為用戶提供簡單快速的交易方式,亦確保不會發生未經用戶授權完成交易。


TSS 與智能合約 

多年來,研究人員發現了數位簽章的許多用途,其中有些出乎意料地重要。如前所述,TSS 是一種大幅提升安全性的密碼學新技術。在區塊鏈的應用情境中,許多功能均可使用基於 TSS 的加密技術來取代。去中心化應用程式、第 2 層擴展解決方案、原子交換、混合、繼承等均可建構在 TSS 架構之上。這最終將使昂貴且高風險的鏈上智能合約操作被更便宜、更可靠的替代方案所取代。

以下舉幾個具體例子:Multi-Hop Lock 巧妙利用兩方簽章,將其作為比特幣閃電網路的替代方案,進而提供更安全與更私密的支付管道網路。ShareLock 則是以單一門檻式簽章驗證為基礎,適用於以太坊的最便宜鏈上混合解決方案。


風險

過去幾年,TSS 的運用大幅增加。然而,作為一項相對較新的技術,它仍然存在一些限制和問題。與傳統的公鑰加密技術相比,TSS 協定可能非常複雜,且尚未經過「實戰測試」。相較於簡單的數位簽章,TSS 通常需要額外且較弱的加密假設。因此,傳統設定中不存在的加密攻擊媒介現已出現 (請參閱 2019 年 Breaking Bitcoin Conference 的此簡報)。安全工程師與應用密碼學家可協助您將 TSS 安全地部署到系統中。

就正向層面而言,由於日益增加的品質貢獻、同行審查、審計和演算法效能改善,現有和新興的 TSS 技術變得更為強大。


總結

在本文中,我們介紹了門檻式簽章方案 (TSS) 的基礎知識。TSS 是一種具有吸引力的密碼學新技術,有潛力顯著改變我們使用區塊鏈的方式。

由於本文並未討論可用於 BNB 鏈和比特幣的門檻式橢圓曲線數位簽章算法 (ECDSA),若有興趣,請參閱以下近期文章列表。此外,若您想嘗試使用一些 TSS 技術,您可在此處找到兩方 BNB 鏈錢包的程式碼,或嘗試 ZenGo 錢包,該錢包利用混合方法提供非託管式兩方 BNB 鏈錢包。


延伸閱讀: