本講將分四個部分介紹門限簽名的概念與應用:第一部分,介紹數字簽名的概念與分類,闡述其基本算法組成以及具備的應用功能;第二部分,針對數字簽名存在的單點失效風險引入門限簽名概念,並介紹其技術優勢與特徵;第三部分,對門限簽名和多重簽名進行比較,闡述門限簽名在靈活性、匿名性和可擴展性方面的優勢,這也是其能夠成為當今密碼學領域研究熱點的原因;最後,介紹門限簽名在區塊鏈領域的典型應用,展示其如何賦能不同的應用場景,並產生核心價值。
Part 1:數字簽名的概念與分類
數字簽名不是簽名的數字化
早期社會,簽署合同、文件、條約等通常使用手寫簽字與印章,但是當計算機網絡出現之後,如何對電子文檔、電子文件進行簽名就成了一個亟待解決的問題,而強大的應用需求也催生了問題的解決方案——數字簽名。
數字簽名是一種新型不同於傳統手寫簽名而以電子形式傳輸或存儲的消息簽名方式,並不是“手寫簽名的數字化”。學術層面,數字簽名是指一種能為接收者驗證數據完整性和確認數據發送者身份,並可由第三方確定簽名和所簽數據真實性的算法方案。
數字簽名的五元組表示
通過對數字簽名的運行原理進行抽象和形式化概括,可以得到數字簽名的五元組表示,即(M,K,S,SIG,VER):
M:消息集合,一般為被簽名對象的哈希摘要;
K:密鑰集合,即數字簽名可使用的密鑰範圍,一般為256 比特隨機數集合;
S:簽名集合,簽名算法的輸出,可被驗證算法驗證通過;
SIG:簽名算法,定義為K×M→S,以消息和密鑰為輸入,輸出簽名;
VER:驗證算法,定義為MS{True,False},驗證消息和簽名的一致性,當然這個過程也需要輸入簽名密鑰對應的公鑰。
數字簽名的分類
數字簽名可以通過不同的維度進行分類,如基於數學難題、簽名用戶數量、數字簽名是否可恢復、簽名者對消息是否可見、簽名是否支持委託等,具體見下圖。
目前常見的數字簽名有Shamir 背包數字簽名、Rabin 數字簽名、GOST 數字簽名、ElGamal 數字簽名、Schnorr 數字簽名、RSA 數字簽名、ECDSA 數字簽名、BLS 數字簽名等。
Part 2:門限簽名的誕生與技術特徵
數字簽名的阿喀琉斯之踵
阿喀琉斯是荷馬史詩中的英雄,其在沙場戰無不勝、無所畏懼,然而這樣一個強大的戰士也有他的致命弱點——腳踝,而其最終死去也是由於腳踝中箭。同樣的道理也適用於數字簽名,作為一個強大的密碼學工具,它能夠防偽造和防抵賴,但是這一切都是建立在簽名私鑰安全的基礎之上,一旦私鑰洩漏,攻擊者將很容易完成身份的偽造以及非授權訪問等惡意行為。
傳統的數字簽名方案下,簽名的私鑰是由單一主體掌握,通常通過加密存儲或者通過硬件保護(U 盾)等方式進行存儲,但是仍然具備極大的使用風險。
-
私鑰的安全性:攻擊者可以通過網絡攻擊的方式入侵簽名者計算機,即使加密存儲,也能夠在簽名過程中在內存中抓取私鑰,從而竊取簽名密鑰;
-
私鑰的可用性:無論是硬件還是軟件存儲的方式,都存在單一節點失效風險(Single Point of Failure),一旦簽名私鑰丟失,將無法復原。
門限簽名——雞蛋從不放在一個籠子裡
門限簽名正是解決數字簽名私鑰中心化控制安全性風險的方案。其核心思路是私鑰不再由單個節點掌握,而是拆分為多個碎片並由多個節點掌握,從而實現私鑰的高安全性和可用性。具體而言,門限簽名是普通數字簽名“門限化”後的結果,它將簽名的權力分散到一組節點,只需超過門限值數量的節點合作,即可完成簽名的生成。因此可以認為普通數字簽名算法的簽名過程是“中心化”的,而門限簽名算法的簽名過程是“分佈式”的。
門限簽名的算法構成
門限簽名算法生成的簽名和普通簽名算法是一致且不可區分的,二者簽名驗證過程相同。因此對於門限簽名算法,關注的重點在於其密鑰生成過程KeyGen 和簽名過程TSig。一個(t,n)門限簽名算法包含以下兩個過程:
KeyGen:以安全參數作為輸入,輸出簽名公鑰pk 和n 個私鑰碎片(sks1,sks2,…,sksn)。每個私鑰碎片sksi 僅被節點Pi 掌握,且n 個私鑰碎片共同構成簽名私鑰sk 的(t,n)秘密分享。需要注意的是,sk 只是理論存在,不會在密鑰生成或者簽名過程中出現;
TSig:以待簽名的消息和不少於t 個私鑰碎片作為輸入,輸出一個合法簽名。
Part 3:門限簽名與多重簽名的比較與優勢
除門限簽名外,另一個防止單點失效的方式即為多重簽名(Multi-signature)。樸素來講,在多重簽名機制下,簽名的公鑰不再是一個,而是有多個公鑰,只有收集超過門限值個數的簽名才算簽名成功。雖然多重簽名能夠在一定意義上實現和門限簽名等效的應用價值,但是門限簽名仍然在靈活性、匿名性和可擴展性三個方面具備優勢。以下將從區塊鏈角度去闡述這三方面優勢:
靈活性(Flexibility)
多重簽名在實現賬戶的多方管理過程中,其靈活性顯著低於門限簽名,具體體現在兩方面:首先,多重簽名機制下簽名者的公鑰以及其他信息共同決定賬戶地址,一旦賬戶的控制邏輯發生變化(如增加或者減少簽名者),那麼賬戶地址就會發生變化,需要將資金從舊賬戶地址轉移到新賬戶地址,靈活性較低;其次,在比特幣中,多重簽名的公鑰數量是有上限要求的,因此超過上限數量的多方賬戶管理場景,無法使用多重簽名。
而在門限簽名機制下,簽名者身份的變化會體現為賬戶私鑰份額的重新分配和生成(Reshare),賬戶地址並不會發生變化;同時,門限簽名中的n 和t 可以任意設置,不存在任何限制,可以支撐任意場景需求。
匿名性(Anonymity)
區塊鏈的一個核心特徵即為匿名性,即鏈上賬戶地址與現實身份無法一一對應。然而,多重簽名的使用會導致用戶匿名性的急劇降低,具體體現在兩個方面:首先,鏈上賬戶地址雖然與現實身份無法一一對應,但是其相關的交易是公共可見的,而多重簽名機制下,每個簽名者的公鑰都是暴露出來的,因此不同的賬戶就會通過公共的簽名者進行關聯,導致賬戶隱私和匿名性的破壞;其次,多重簽名公鑰集合的暴露,以及完整交易的所附的簽名個數,能夠有效推導出該賬戶的控制邏輯,甚至可以根據賬戶行為與現實業務進行掛鉤,降低了匿名性。
而在門限簽名機制下,其最終生成的交易和普通交易數據結構一致且不可區分,而簽名的過程則是在鏈下完成,並不會導致任何匿名風險。
可擴展性(Scalability)
在多重簽名機制下,最終的區塊鏈交易上需要附上所有簽名者的數字簽名,因此交易大小和簽名者的數量是呈線性增長關係的。因此,控制邏輯(如簽名者數量增加)越複雜,那麼最終的交易的數據量就越大。這一特徵導致兩個後果:首先,區塊鏈交易費是與交易大小掛鉤的,因此使用多重簽名會導致交易費升高,增加其使用成本,對於一些高頻業務場景,並不適配;其次,交易占用空間的提升也會額外增加整個區塊鏈的運行載荷,間接降低系統運行效率。
而門限簽名則完全沒有這一顧慮,因為其最終的輸出結果和普通數字簽名是一致的,只是在簽名過程中需要各節點進行相關的通信和計算。
具體而言,門限簽名機制下,交易的數據結構中仍然只包含一個簽名,和普通交易並無區別,因此交易費較低,也不會給區塊鏈系統增添額外的負擔。
Part 4:門限簽名在區塊鏈領域中的應用
保障區塊鏈賬戶安全
近年來,以比特幣為代表的加密數字貨幣得到了迅速發展,並作為一種新興的支付手段逐漸進入普通人的生活。與傳統支付系統不同,加密數字貨幣系統不存在中心化的運營機構,所有支付操作都是通過從賬戶發送帶數字簽名的交易完成。因此,加密貨幣賬戶的安全等價於簽名私鑰的安全,私鑰的洩露會直接導致賬戶內資產被竊取。然而用戶加密數字貨幣賬戶的安全正在遭受巨大威脅:黑客通過發送帶木馬的郵件控制用戶電腦,竊取賬戶私鑰,然後發送交易將其中的加密貨幣轉移到交易所出售牟利。因此,保障加密數字貨幣賬戶安全已經迫在眉睫。
門限簽名算法是保障加密數字貨幣賬戶安全的有效手段。用戶賬戶私鑰不再由單一節點生成和保存,而是由n 個節點合作生成一個賬戶地址,每個節點保存賬戶私鑰的一個碎片。發送交易時,由其中一個節點構造交易內容並發送其他節點。然後所有節點運行門限簽名算法,合作生成交易的合法簽名。最終由某個節點將帶簽名交易廣播到區塊鍊網絡中即可。攻擊者需要對至少t 個節點攻擊成功才能夠恢復賬戶私鑰。用戶可以根據實際需求靈活確定節點總數n 和安全門限t 的取值。因此,門限簽名算法能夠有效提高加密數字貨幣賬戶的安全性。
跨鏈資產鎖定
跨鏈技術能夠使得數字資產在不同區塊鏈上自由流動,打破不同區塊鏈之間信息孤島。跨鏈過程中一個重要前提是“資產守恆”,即當數字資產從一條區塊鏈轉移到另一條區塊鏈上時,原區塊鏈的數字資產需要鎖定。為保證去中心化,資產鎖定往往是由一組節點完成,只有超過一定數量節點合作才能夠完成解鎖。
對於以太坊、EOS 等支持智能合約的區塊鏈而言,僅需將資產鎖定的邏輯編寫為智能合約,用戶將資產轉入這一特定合約即可完成鎖定。而對於比特幣等不支持智能合約的區塊鏈而言,資產鎖定依賴於建立一個多方託管的鎖定賬戶,用戶將資產轉入這一賬戶即可完成鎖定。
正如第三部分介紹,雖然多重簽名也能完成賬戶的多方託管,但是門限簽名在靈活性、匿名性和可擴展性方面的優勢,更加適合跨鏈資產鎖定場景。靈活性方面,n 和t 的取值可以任意設置,滿足不同的場景需求;匿名性方面,門限簽名算法生成的鎖定賬戶與普通賬戶數據結構和使用方式完全相同,合法的簽名並不能暴露參與簽名過程節點的信息;可擴展性方面,每筆交易和普通交易一致,僅需攜帶一個數字簽名,降低了交易費用。
共識機制的設計
在拜占庭類(BFT)的共識協議中,共識節點需要對所要共識的內容進行投票,投票超過一定比例(如三分之二),即為達成共識。算法過程中,“投票”需要對投票者身份進行核驗,且要防止重放攻擊,而採用的解決方案即為對共識內容進行數字簽名,然後廣播。分析整個共識過程,其核心邏輯和門限簽名是非常吻合的,即超過一定門限值節點認可,即為共識/簽名成功。因此,與其共識節點需要在網絡中收集足夠數量的簽名信息,不如基於門限簽名構造一個共同的公鑰,然後每個共識節點掌握一個私鑰碎片,認可共識內容即用私鑰碎片計算得到簽名碎片,超過門限值數量的共識節點參與即可獲得完整的數字簽名。這種設計模式可以有效降低共識結果所佔用的空間。