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