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