作者:Omer Shlomovits、ZenGo。
閾值簽名方案 (TSS) 是用於生成和簽名分佈式密鑰的加密元素。在區塊鏈客戶端中使用 TSS 是一種新範例,可以提供許多好處,特別是在安全性方面。更廣泛地說,TSS 可以影響密鑰管理系統(例如加密錢包)的設計,併爲DeFi用例中的本機支持鋪平道路。儘管如此,TSS仍然是一項新技術,因此還應該考慮風險和侷限性。
在本文中,我們將瞭解 TSS 是什麼、它爲區塊鏈領域帶來哪些潛在好處、如何在區塊鏈客戶端中實現它、它與 Shamir 祕密分發方案和多重簽名有何不同、TSS 用於分佈式密鑰管理的不同方式有哪些,最後,我們將討論其風險和侷限性。
密碼學的力量
爲了理解 TSS,我們首先需要掌握密碼學的基本知識。自 20 世紀 70 年代以來,越來越多的互聯網系統(如 TLS 和 PGP)使用了非對稱加密技術,也稱爲公鑰加密技術 (PKC)。 PKC 使用兩個密鑰:一個公鑰,一個私鑰。公鑰不是祕密,任何人都可以發佈和使用,而私鑰是確保系統安全的祕密信息。
加密和數字簽名是 PKC 的兩種最常見用途。加密方案和數字簽名方案都依賴於三組算法。第一是私鑰和公鑰對的生成,第二是密文/簽名的生成,第三是解密/驗證過程。對於數字簽名,簽名算法需要只有其所有者知道的私鑰來創建唯一的簽名。簽名以這樣的方式添加到給定的消息中,即任何擁有公鑰的人都可以驗證其真實性和正確性。
區塊鏈
毫無疑問,區塊鏈是一項非常強大的技術。它提供了組織和記錄事件的共識水平。這樣的基礎設施爲我們用戶提供了建立分散經濟甚至政府的潛力。奇怪的是,底層區塊鏈工作所需的加密技術可以完全基於數字簽名。在區塊鏈的背景下,私鑰是個人,簽名是個人做出的公開聲明或主張。區塊鏈組織這些聲明並根據一組規則對其進行驗證,這些規則包括確保簽名不是僞造的並且是正確的。
與區塊鏈中使用的更傳統的加密技術不同,現代加密工具包包含一些令人驚歎的技巧:零披露證明、同態加密和多方計算等。在過去的十年中,由於上述各個領域以及其他領域的最新突破,區塊鏈研究極大地推動了應用密碼學的發展。
在本文中,我們將重點關注其中一項突破:高效閾值安全簽名(TSS)。
MPC 和門限簽名方案 (TSS)
多方計算 (MPC) 是密碼學的一個分支,始於近 40 年前 Andrew Qizhi Yao 的開創性工作。在 MPC 中,一組互不信任的參與方嘗試聯合計算其輸入的函數,並對這些輸入保持私密。
舉個例子,假設一家公司的 n 名員工想知道誰賺得最多,但又不想互相透露他們的實際工資。這裏,私人輸入是工資,輸出將是工資最高的員工的姓名。通過使用 MPC 進行此計算,我們發現計算過程中沒有工資泄露。
MPC 的兩個主要屬性是正確性和保密性:
正確性:算法得到的結果是正確的(符合預期)。
保密性:一方擁有的祕密輸入數據不會向其他方泄露。
我們將使用 MPC 以分佈式方式計算數字簽名。讓我們看看如何將上述屬性應用於簽名。我們提醒您,簽名分爲三個步驟:
密鑰生成:第一步也是最困難的一步。我們需要生成一個公開的密鑰並用於驗證未來的簽名。但我們還需要爲每一方生成一個單獨的祕密,我們將其稱爲祕密共享。在正確性和保密性方面,我們說該函數在以下條件下爲所有參與方輸出相同的公鑰,併爲每一方輸出單獨的祕密份額:(1)保密性:參與方之間沒有祕密數據的泄露;(2)正確性:私鑰是祕密份額的函數。
簽名:此步驟包括簽名創建功能。每一方的輸入將是其祕密份額,這是上一步(分佈式密鑰的生成)的結果。還有一個公共入口,大家都知道,這是需要簽名的信息。輸出將是一個數字簽名,機密性屬性確保在計算過程中不會泄露任何祕密粒子。
驗證:驗證算法與經典設置相同。爲了與單密鑰簽名兼容,任何知道公鑰的人都必須能夠檢查和驗證簽名。這正是節點驗證器在區塊鏈上所做的事情。
門限簽名方案(TSS)是我們對分佈式密鑰生成(DKG)和分佈式簽名門限簽名方案的這種組合的名稱。
將TSS與區塊鏈相結合
在區塊鏈中使用 TSS 的自然方式是修改區塊鏈客戶端以使用 TSS 生成密鑰和簽名。這裏我們使用術語“區塊鏈客戶端”來指代完整節點執行的一組命令。在實踐中,TSS 技術允許我們用分佈式計算取代所有與私鑰相關的命令。
爲了更詳細地解釋這一點,我們將首先簡要描述如何在經典區塊鏈設計中創建新地址。 簡單來說,我們可以通過生成私鑰,然後根據私鑰計算出公鑰來創建一個新的地址。最終通過公鑰獲取區塊鏈地址。
現在,使用 TSS,我們將擁有一組 n 方,他們共同計算一個公鑰,每方都持有私鑰的祕密份額(各個份額不會向其他方透露)。從公鑰中,我們可以按照與傳統系統相同的方式獲取地址,使得區塊鏈獨立於地址的生成方式。優點是私鑰不再是單點故障,因爲每一方只擁有私鑰的一部分。
簽署交易時也可以做同樣的事情。在這種情況下,我們不是讓一方簽署其私鑰,而是觸發多方之間生成分佈式簽名。因此,只要大多數人誠實行事,每一方都可以創建有效的簽名。我們再次從本地計算(單點故障)轉向交互。
值得注意的是,分佈式密鑰生成可以以允許不同類型的訪問結構的方式完成:一般的“t 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的加密技術來替代。可以在 TSS 框架之上構建去中心化應用程序、第 2 層擴展解決方案、原子交換、混合、繼承等。這最終將允許用更便宜、更可靠的替代方案取代昂貴且有風險的鏈上智能合約操作。
以下是一些具體的例子:Multi-Hop Locks巧妙地使用了雙向簽名,可以作爲比特幣閃電網絡的替代方案,提供更安全、更私密的支付渠道網絡。 ShareLock 可能是基於單閾值簽名驗證的以太坊鏈上混合最便宜的解決方案。
風險
過去幾年,TSS 實施的數量顯著增加。然而,作爲一項相對較新的技術,它仍然存在一些侷限性和挑戰。與傳統的公鑰加密相比,TSS 協議非常複雜,並且尚未經過“實戰檢驗”。通常,與簡單的數字簽名相比,TSS 需要額外的、更弱的加密假設。因此,傳統環境中不存在的加密攻擊媒介現在被發現了(請參閱 2019 年突破比特幣大會上的此演示文稿)。安全工程師和應用密碼學家可以幫助您在系統上安全地部署 TSS。
積極的一面是,由於貢獻、同行評審和審計的質量不斷提高以及算法性能的改進,當前和新的實現正在變得更加強大。
結果
在本文中,我們介紹了門限簽名方案(TSS)的基礎知識,這是一個令人興奮的加密元素,可以顯著改變區塊鏈的使用方式。
由於本文沒有討論可以在BNB Chain和比特幣中使用的Threshold ECDSA,因此感興趣的人可以參考以下近期文章列表。此外,如果您想嘗試一些 TSS 實現,您可以在此處找到 BNB Chain 雙向錢包的代碼,或者嘗試ZenGo 錢包,它使用混合方法在 BNB Chain 上提供非託管雙向錢包。
相關文章: