作者: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 C. Yao 的開創性工作。在 MPC 中,一組互不信任的各方嘗試根據其輸入計算函數,同時保持這些輸入的私密性。
例如,假設一些公司員工想知道誰的工資更高,但又不想向對方透露他們的實際工資。這裏的特殊輸入是工資,而尷尬將是工資最高的員工的名字。當使用 MPC 進行此計算時,結果是在計算過程中甚至沒有泄漏任何工資。
MPC的兩個主要特點是真實性和隱私性:
正確性:算法生成的輸出是正確的(符合預期)。
隱私:一方持有的機密輸入數據不會泄露給其他方。
我們將使用 MPC 以分佈式方式計算數字簽名。讓我們看看如何將上述屬性應用於簽名。對於簽名,我們分爲三個步驟:
密鑰生成:第一步也是最複雜的。我們需要創建一個公開的密鑰並用於驗證未來的簽名。但我們還需要爲每個參與方創建一個單獨的祕密,我們將其稱爲祕密共享。在正確性和隱私的背景下,我們說該函數將爲所有各方輸出相同的公鑰,併爲以下雙方輸出不同的祕密共享:(1)隱私:雙方之間不會泄露有關祕密共享的數據,並且( 2)正確性:公鑰是祕密份額的函數。
簽名:該步驟包括創建簽名的功能。每一方的貢獻是他們的祕密份額,它是作爲上一步(分佈式密鑰生成)的輸出生成的。還有一個大家都知道的通用輸入,就是要簽名的消息。輸出將是數字簽名,隱私功能可確保計算過程中不會發生祕密共享的泄漏。
驗證:驗證算法與經典設置相同。爲了與個人密鑰簽名兼容,每個瞭解公鑰的人都必須能夠驗證和驗證簽名。這正是區塊鏈驗證節點所做的事情。
門限簽名方案(TSS)是我們對門限簽名方案上分佈式密鑰生成(DKG)和簽名分發的組合的稱呼。
TSS 與區塊鏈的結合
TSS 在區塊鏈中使用的自然方式是更改區塊鏈客戶端以使用 TSS 生成密鑰和簽名。這裏我們使用術語“客戶端”來指代由完整節點執行的一組命令。在實際應用中,TSS技術可以讓我們用分佈式計算來代替所有與私鑰相關的命令。
爲了更詳細地解釋這一點,我們將從快速描述如何在經典區塊鏈結構上創建新地址開始。簡單來說,我們可以通過生成私鑰,然後根據私鑰計算公鑰來創建新的地址。最後,由公鑰推導出區塊鏈地址。
現在,使用 TSS,我們將有一組各方共同計算公鑰。每個參與方都持有私鑰的祕密份額(各個份額不會透露給其他參與方)。使用公鑰,我們可以以與傳統系統中相同的方式導出地址,這使得區塊鏈在地址生成方式上具有一定的中立性。這樣做的優點是私鑰不再是單點故障,因爲各方都保留私鑰的一部分。
簽署交易時也可以這樣做。在這種情況下,我們不是一方使用其私鑰進行簽名,而是在多方之間運行分佈式簽名生成器。只要足夠多的參與者誠實行事,即使各方都可以產生有效的簽名。我們再次從本地帳戶(單點故障)轉移到交互式帳戶。
值得注意的是,分佈式密鑰的生成可以通過允許不同類型訪問它們的方式來完成:通用的“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 協議,它將祕密共享作爲輸入並輸出一組新的祕密共享。舊的祕密共享可以被刪除,新的共享也可以以同樣的方式使用。
這種架構爲安全性增加了時間維度,這意味着攻擊者必須同時位於多個位置才能嘗試攻擊 Threshold 錢包。如果攻擊者想要僞造簽名,則將輪換前和輪換後祕密共享結合起來不會賦予攻擊者任何額外的權力。
這種類型的錢包的缺點是缺少助記詞,這使得它與單密鑰錢包系統不兼容。因此,決定哪些方將保密共享非常重要。
有一些可能的方法,例如:
TSS 外包:用戶將允許“n”臺服務器代表他運行計算。將密鑰創建、管理和簽名有效地外包給服務提供商,這些服務提供商不是資產所有者,但提供一層安全層以換取一些激勵。
使用多個設備:用戶將在他們擁有的設備上運行 TSS。例如,一方是物聯網設備,另一方是手機用戶,另一方是筆記本電腦,等等。
混合系統:TSS 的運行方式將使得某些方由外部服務提供商控制,而某些方在自己的硬件上運行。
第一種方法減輕了用戶客戶端繁重的 TSS 計算負擔。另一方面,服務提供商可以串通(我們假設大量服務提供商不會同時受到攻擊,但實際上他們可以同時受到攻擊)並竊取用戶資產。
第二種方法爲用戶提供了完全的控制權,但使交易過程變得繁瑣,因爲您需要多個設備連接到互聯網並參與 TSS 帳戶。
第三個選項是這兩個選項中最好的一個,因爲它爲用戶提供了一種簡單快捷的方式來進行交易,而不會在未經用戶許可的情況下進行交易。
TSS 和智能合約
多年來,研究人員發現了數字簽名的許多用途,但有些用途並不令人驚訝。如前所述,TSS 是一種原始加密,可以顯着提高安全性。在區塊鏈的背景下,我們可以說許多功能可以被基於 TSS 的密碼學取代。去中心化應用程序、用於擴展、原子交換、洗牌、繼承等的第 2 層解決方案可以構建在 TSS 框架上。這最終將使昂貴且有風險的智能合約操作被更便宜、更可靠的替代方案所取代。
舉一些具體的例子:多跳鎖以巧妙的方式使用兩方簽名,可以用來將比特幣的閃電網絡替換爲更安全和私密的支付通道網絡。 ShareLock 可能是最便宜的以太坊區塊鏈加擾解決方案,基於使用單個閾值簽名的驗證而構建。
風險
過去兩年,TSS 申請量顯着增加。但與任何相對較新的技術一樣,它仍然存在一些侷限性和擔憂。與傳統的公鑰加密技術相比,TSS 協議可能非常複雜,並且尚未經過“實際測試”。與簡單的數字簽名相比,TSS 通常需要額外的、較弱的加密假設。因此,以前傳統環境中不存在的加密攻擊向量現在可以被檢測到(請參閱 2019 年 Breaking Bitcoin Conference 的演示文稿)。安全工程師和應用密碼學家可以幫助將 TSS 安全地實施到您的系統中。
從積極的一面來看,由於質量貢獻的增加、同行評審、交叉檢查以及使用算法的計算性能的改進,現有的和新的應用程序正在變得越來越強大。
結論性想法
在本文中,我們介紹了閾值簽名方案(TSS)的基礎知識,這是一種令人驚歎的密碼學原語,有可能極大地改變區塊鏈的使用方式。
由於本文沒有討論可以在幣安鏈和比特幣上使用的 Threshold ECDSA,有興趣的人可以閱讀以下列表中的文章。此外,如果您想嘗試一些 TSS 實現,您可以在此處找到 2 方幣安鏈錢包的代碼,或者嘗試使用提供 2 方幣安鏈錢包的混合方法的 ZenGo 錢包。
深度閱讀:
快速安全的雙方 ECDSA 簽名
具有實用分佈式密鑰生成的快速安全多方 ECDSA 及其在加密貨幣託管中的應用
基於哈希證明系統和高效實例的雙方 ECDSA
具有快速無信任設置的快速多方閾值 ECDSA
根據 ECDSA 假設實現安全的雙方門限 ECDSA
ECDSA 假設中的閾值 ECDSA:多方案例

