現(xiàn)今,越來越多的企業(yè)與投資機(jī)構(gòu)正涌入?yún)^(qū)塊鏈行業(yè)。與個人用戶使用的冷熱錢包保護(hù)資產(chǎn)不同,企業(yè)與投資機(jī)構(gòu)由于資金量大而需要更高級別的安
現(xiàn)今,越來越多的企業(yè)與投資機(jī)構(gòu)正涌入?yún)^(qū)塊鏈行業(yè)。與個人用戶使用的冷熱錢包保護(hù)資產(chǎn)不同,企業(yè)與投資機(jī)構(gòu)由于資金量大而需要更高級別的安全性,因此多方密鑰托管服務(wù)應(yīng)運(yùn)而生。
多方密鑰托管是指資產(chǎn)需要 M 個中的 N 個密鑰(M>N)才能夠轉(zhuǎn)移,其中部分密鑰由專門的托管方所保護(hù)。目前的密鑰托管服務(wù)存在隱私性不足的問題,面臨著權(quán)威機(jī)構(gòu)的審查與干預(yù)的風(fēng)險。本文提出一種基于 BLS 和盲簽名的多方密鑰托管服務(wù)以解決上述問題。
多重簽名技術(shù)
多方密鑰托管服務(wù)以 Bitcoin 的多重簽名技術(shù)為最基本實(shí)現(xiàn)。BTC 的多簽技術(shù)最初在 BIP11 中進(jìn)行了論述。假設(shè)一個 2/3 的多重簽名錢包,通過將某一個密鑰托管至專業(yè)的托管方,必須有 2 個以上的密鑰才能夠轉(zhuǎn)移該資金。這防止了單一密鑰的風(fēng)險,黑客盜取某一密鑰將無法轉(zhuǎn)移資金。與此同時,這也能夠防止密鑰丟失的問題:假設(shè)丟失了其中一個私鑰,用戶也能夠再次設(shè)置另外一個 2/3 多重簽名,并寫入重新生成的公鑰即可。
除此之外,多簽技術(shù)的應(yīng)用領(lǐng)域廣泛。在企業(yè)中,多簽技術(shù)能夠防止單一人員控制企業(yè)資產(chǎn)的風(fēng)險。在商業(yè)交易中,假設(shè)交易雙方互不信任,可以使用多簽技術(shù)選擇獨(dú)立第三方作為交易簽名者,以防止某一交易方的不誠信行為。
多重簽名技術(shù)極大地提升了資產(chǎn)的安全性,并拓展了區(qū)塊鏈的應(yīng)用場景。但是多重簽名技術(shù)的隱私性并無法得到保障,在解鎖多簽?zāi)_本時將暴露多簽的公鑰:
m {pubkey}...{pubkey} n OP_CHECKMULTISIG
公鑰隱私(地址)的暴露便捷了權(quán)威機(jī)構(gòu)的審查與干預(yù),權(quán)威機(jī)構(gòu)可以根據(jù)多簽公鑰快速定位托管方以及審查對象,并要求當(dāng)?shù)剡\(yùn)營的托管方對某些用戶拒絕提供簽名服務(wù),甚至強(qiáng)制資產(chǎn)轉(zhuǎn)移。
BLS 簽名技術(shù)
就上述問題而言,BLS 簽名技術(shù)提供了相對好的隱私性。BLS 簽名所能夠?qū)崿F(xiàn)的功能與目前 BTC 的多重簽名是一致的,但在鏈上僅表現(xiàn)為單一聚合簽名。在具體的實(shí)現(xiàn)中,BLS 簽名將密鑰拆分成 M 份分發(fā)給 M 個人,只需要有 N(N 小于等于 M)個人進(jìn)行簽名,就可以進(jìn)行解簽并轉(zhuǎn)移該密鑰下的數(shù)字資產(chǎn)。
在采用 BLS 簽名的情況下,參與多簽的用戶與托管者信息及其數(shù)量從未暴露。但是當(dāng)用戶需要使用該資金并請求托管方進(jìn)行簽名時,用戶需要將交易哈希發(fā)送至托管方進(jìn)行簽名。如果交易成功上鏈,托管方就能夠掌握用戶的公鑰,也因此本質(zhì)問題并未解決。
多方盲簽名技術(shù)
根據(jù)上文的論述,我們只需要在用戶請求托管方簽名時,不傳遞交易哈希(或者其他可能暴露用戶信息的數(shù)據(jù))就可以將用戶信息與托管方相隔離,間接地解決上文中的諸多問題。此處需要引入盲簽名的概念。盲簽名由 David Chaum 于 1982 年提出,一般用于如下場景:用戶 A 的交易需要用戶 B 進(jìn)行簽名,且不希望用戶 B 知道簽名信息。
我們將盲簽名與 BLS 簽名技術(shù)相結(jié)合,就能妥善地解決多簽隱私問題,其具體流程如下:
1. 用戶為多個資產(chǎn)托管方生成私鑰份額,并通過秘密的方式發(fā)送給對應(yīng)的托管方;
2. 當(dāng)用戶需要對消息簽名時,先對消息進(jìn)行盲化處理,然后再發(fā)送給選定的托管方進(jìn)行簽名;
3. 托管方響應(yīng)用戶的簽名請求,將盲化交易簽名后發(fā)送給用戶;
4. 用戶收集好一定數(shù)量的托管方簽名后,進(jìn)行去盲操作,計(jì)算出用戶自己的簽名。
Bingo!通過這種方式,托管方不僅無法掌握用戶的公鑰信息,在類似 Bitcoin、Ethereum 這樣交易量大的區(qū)塊鏈中,亦不可能鎖定用戶的交易信息。用戶既能夠享受到多簽技術(shù)帶來各種優(yōu)勢,也能夠保證良好的隱私性,因此避免了上文中描述的諸多問題。在這種方案下,托管方所承擔(dān)的責(zé)任也僅僅是維護(hù)私鑰份額的安全,與用戶進(jìn)行了風(fēng)險隔離。
Nervos 能更好適配新密碼學(xué)算法
具備隱私特性的多簽算法能夠擴(kuò)展區(qū)塊鏈的應(yīng)用場景,但是并非所有的區(qū)塊鏈都支持 BLS 簽名。BLS 簽名的驗(yàn)簽速度低于目前比特幣使用的 ECDSA 算法,更低于 Blockstream 團(tuán)隊(duì)所建議的 Schnorr 簽名算法(https://medium.com/cryptoadvance/bls-signatures-better-than-schnorr-5a7fe30ea716)。因此,將 BLS 簽名算法作為區(qū)塊鏈預(yù)設(shè)的簽名算法會極大地降低整體區(qū)塊鏈的吞吐量。對于大多數(shù)只支持單一簽名算法的區(qū)塊鏈來說,BLS 簽名算法不是好的選擇。
Nervos 為此給出了答案。Cipher 在《Nervos CKB 應(yīng)用層優(yōu)勢二:安全與便捷兼得》(https://talk.nervos.org/t/nervos-ckb-2/2862)中談到:和幾乎所有的公鏈項(xiàng)目不同,Nervos CKB 將密碼學(xué)算法作為抽象的原語與底層剝離。用戶可以指定自己的資產(chǎn)或合約采用任意預(yù)定義的密碼學(xué)算法來驗(yàn)證授權(quán)。這意味著在 Nervos 上可以部署任何種類的密碼學(xué)算法作為交易的驗(yàn)簽算法,無需通過硬分叉的方式獲得支持。
相信 Nervos 的這一特性能夠促進(jìn)更多密碼學(xué)創(chuàng)新應(yīng)用的出現(xiàn)。(Chendibo)