微眾銀行私鑰管理:區(qū)塊鏈?zhǔn)澜绲摹伴T禁卡”
區(qū)塊鏈歷經(jīng)10余年的發(fā)展,基礎(chǔ)技術(shù)框架逐漸完善,鏈上承載的業(yè)務(wù)越來(lái)越豐富,參與方越來(lái)越多。多方協(xié)作能否順暢進(jìn)行、業(yè)務(wù)摩擦能否得到有效解決、既往治理策略和實(shí)踐能否滿足日后高速發(fā)展的需求……行業(yè)關(guān)注的重點(diǎn)逐步聚焦到這些更具挑戰(zhàn)性的難題上。
2021年1月,微眾銀行區(qū)塊鏈在多年技術(shù)研究和應(yīng)用實(shí)踐的基礎(chǔ)上,重磅發(fā)布了《面向區(qū)塊鏈的多方協(xié)作治理框架》白皮書(shū),即MCGF(Multilateral Collaborative Governance Framework)。作為區(qū)塊鏈治理的參考架構(gòu),MCGF全面覆蓋區(qū)塊鏈治理的設(shè)計(jì)規(guī)范、參與角色、核心系統(tǒng)架構(gòu)、功能流程及應(yīng)用場(chǎng)景等領(lǐng)域。
區(qū)塊鏈多方協(xié)作治理組件(WeBankBlockchain-Governance)MCGF框架的實(shí)做基礎(chǔ)和原子性構(gòu)件,可復(fù)用、可定制,由私鑰管理組件(Governance-Key)、賬戶治理組件(Governance-Account)、權(quán)限治理組件(Governance-Authority)、證書(shū)管理組件(Governance-Cert)等子組件構(gòu)成。它們嵌入和運(yùn)行在整個(gè)MCGF大框架的各部分,宛如高速行駛的汽車上的車輪、齒輪、傳動(dòng)組、傳感器,協(xié)同助力構(gòu)建治理框架和提升開(kāi)發(fā)效率。
我們通過(guò)系列文章,抽絲剝繭地解析每一個(gè)子組件的關(guān)鍵特性和使用方式。本篇文章是區(qū)塊鏈多方協(xié)作治理組件系列文章的第三篇,介紹私鑰管理組件(Governance-Key),歡迎大家積極體驗(yàn)并將使用訴求或優(yōu)化建議反饋給我們。
私鑰管理的必要性
怎樣生成一個(gè)密鑰對(duì)? 密鑰生成是否可以兼容各標(biāo)準(zhǔn),包括國(guó)密、助記詞、HD派生? 如何對(duì)私鑰進(jìn)行安全備份? 有沒(méi)有私鑰的可視化工具? 有沒(méi)有私鑰的企業(yè)級(jí)托管方法? 擁有密鑰后如何操作數(shù)據(jù)?
……
針對(duì)上述問(wèn)題,微眾銀行區(qū)塊鏈在多方協(xié)作治理組件中推出私鑰管理子組件WebankBlockchain-Governance-Key,覆蓋用戶的私鑰使用需求。就功能而言,包括私鑰生成、私鑰備份、私鑰托管、私鑰使用,覆蓋了私鑰的全生命周期;就協(xié)議而言,支持助記詞生成、Keystore備份等多種協(xié)議;就場(chǎng)景而言,既支持個(gè)人開(kāi)發(fā)者使用私鑰,也支持企業(yè)級(jí)開(kāi)發(fā)者使用該組件進(jìn)行私鑰托管,適合B2B2C場(chǎng)景等。
功能
WebankBlockchain-Governance-Key整體功能可拆分為三塊,如下圖所示:

在私鑰頒發(fā)功能中,支持經(jīng)典的隨機(jī)數(shù)生成方式,并適配了ecc(secp256k1)曲線和國(guó)密曲線;還支持助記詞生成,方便用戶表達(dá)、記憶自己的私鑰;也支持密鑰派生方式,兼容BIP-32和BIP-44,方便用戶做到一密鑰多用。用戶可以將私鑰加密保存,支持keystore、pkcs12、pem格式,也支持通過(guò)shamir方式進(jìn)行門限分片。
在私鑰管理功能中,加密后的私鑰會(huì)被托管保存到文件或數(shù)據(jù)庫(kù)中,通常被用于企業(yè)托管用戶私鑰的場(chǎng)景。此外,還支持雙庫(kù)存儲(chǔ)模式,在該模式下加密私鑰和加密口令被分別存儲(chǔ)到不同數(shù)據(jù)源中,這樣即便遭受攻擊,也不至于出現(xiàn)私鑰明文被泄露的情況,提高了安全系數(shù)。
在私鑰使用功能中,包括了私鑰簽名、驗(yàn)簽、明文加密、密文解密四項(xiàng)功能,用戶可以根據(jù)實(shí)際需求使用。
特性
覆蓋全生命周期
WebankBlockchain-Governance-Key為了能夠讓用戶方便地使用私鑰,提供了私鑰生成、私鑰備份、私鑰托管、私鑰使用等一系列功能,覆蓋了整個(gè)私鑰的生命周期,旨在盡可能滿足使用者的各項(xiàng)需求。
適配多種主流協(xié)議
無(wú)論是私鑰生成還是備份等,WebankBlockchain-Governance-Key均提供了多種標(biāo)準(zhǔn)協(xié)議,便于用戶使用。例如,私鑰生成中,對(duì)于助記詞的支持源于BIP-39協(xié)議,對(duì)私鑰派生的支持則適配了BIP-32和BIP-44協(xié)議;就私鑰備份而言,既支持FISCO BCOS常用的pkcs12和pem格式,也支持keystore標(biāo)準(zhǔn),同時(shí)還支持分片保管。通過(guò)適配多種協(xié)議,盡量滿足用戶的密鑰需求。
面向個(gè)人和企業(yè)
對(duì)于私鑰的使用者,可分為兩類:個(gè)人使用者和企業(yè)使用者。對(duì)于個(gè)人使用者而言,主要需求是私鑰的生成、備份、簽名等。對(duì)于企業(yè)級(jí)使用者,多見(jiàn)于B2B2C場(chǎng)景,主要是托管C端用戶私鑰。對(duì)于個(gè)人級(jí)開(kāi)發(fā)者,WebankBlockchain-Governance-Key提供了相關(guān)功能,還提供了一個(gè)可視化界面;對(duì)于企業(yè)級(jí)開(kāi)發(fā)者,提供了私鑰托管功能,還包括了雙庫(kù)存儲(chǔ)模式等。
可視化使用
上述各項(xiàng)私鑰的功能,在對(duì)應(yīng)的sdk中,用戶可以通過(guò)sdk方式接入;此外,WebankBlockchain-Governance-Key還提供了一個(gè)可視化界面,用戶不需要任何配置就可以啟動(dòng)該界面,并體驗(yàn)私鑰的生成、備份等基本功能,期望滿足用戶的日常需求。
國(guó)密支持
WebankBlockchain-Governance-Key對(duì)私鑰的全生命周期做了國(guó)密化適配。首先,私鑰的生成曲線支持國(guó)密曲線;此外,支持備份國(guó)密私鑰,無(wú)論是keystore還是pem、p12均可支持;最后,對(duì)于私鑰的使用,支持國(guó)密私鑰的簽名驗(yàn)簽、加解密等。
場(chǎng)景
場(chǎng)景一:個(gè)人使用
下圖是個(gè)人使用私鑰的示意圖:

首先用戶可以通過(guò)助記詞等方式生成私鑰;
接下來(lái),用戶需要對(duì)私鑰備份。除了將助記詞抄到紙上等方式,還支持將它導(dǎo)出到keystore,pkcs12等文件中;此外,還允許將私鑰分片,只有當(dāng)湊齊指定數(shù)目的碎片,才可以還原出完整私鑰。
最后,對(duì)于不同的使用場(chǎng)景,用戶可以根據(jù)不同的場(chǎng)景確定性地派生出子私鑰,這樣一方面可以降低根私鑰泄露的風(fēng)險(xiǎn),另一方面還可以提高私鑰保存的簡(jiǎn)便程度,避免為不同的場(chǎng)景去維護(hù)不同的私鑰。
場(chǎng)景二:企業(yè)級(jí)使用
企業(yè)級(jí)場(chǎng)景中,多見(jiàn)于B2B2C模式,在該模式中,企業(yè)會(huì)托管C端用戶的私鑰。
以下圖場(chǎng)景為例,企業(yè)生成用戶生的私鑰。接下來(lái),企業(yè)會(huì)將該用戶私鑰進(jìn)行加密備份,備份后的密文會(huì)被保存到數(shù)據(jù)庫(kù)中。對(duì)于該密文的加密口令,會(huì)被保存到另一個(gè)數(shù)據(jù)庫(kù)中,這樣降低了數(shù)據(jù)庫(kù)被攻擊,造成明文泄露風(fēng)險(xiǎn)。

快速體驗(yàn)
Governance-Key包含兩種使用模式:sdk模式和可視化界面模式。這一節(jié)介紹可視化模式,該模式包含私鑰的主要使用功能,包括私鑰生成、備份、格式轉(zhuǎn)換等。
源碼下載
通過(guò)git下載源碼。
github下載:
git clone https://github.com/WeBankBlockchain/Governance-Key.git如果因網(wǎng)絡(luò)等原因無(wú)法下載,可以使用gitee地址:
git clone https://gitee.com/WeBankBlockchain/Governance-Key.git編譯源碼
進(jìn)入相關(guān)目錄,并編譯界面:
cd Governance-Keycd key-core-webgradle bootJar
啟動(dòng)界面
編譯完成后,啟動(dòng)界面:
cd distjava jar key-core-web.jar
啟動(dòng)成功后,會(huì)自動(dòng)彈出一個(gè)可視化界面,如下圖所示。如果未自動(dòng)彈出,用戶也可以訪問(wèn)該端口:
http://localhost:8001

體驗(yàn)界面
用戶可以在這個(gè)界面上進(jìn)行操作。以私鑰生成為例,如果用戶希望生成私鑰明文,可以直接點(diǎn)擊“生成”,隨后私鑰、公鑰、地址都會(huì)被顯示出來(lái):

用戶也可以直接將私鑰導(dǎo)出,例如導(dǎo)出為pem格式:

點(diǎn)擊后,會(huì)自動(dòng)下載pem格式文件等。
關(guān)于sdk的使用,則可以參考后文中的文檔地址。
即刻使用
文檔地址:
https://governance-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Governance-Key/index.html
GitHub代碼庫(kù)地址:
https://github.com/WeBankBlockchain/Governance-Key
gitee代碼庫(kù)地址:
https://gitee.com/WeBankBlockchain/Governance-Key
如項(xiàng)目對(duì)您有幫助,歡迎點(diǎn)亮我們的小星星(點(diǎn)擊項(xiàng)目右上方Star按鈕)。 歡迎提交代碼(Pull requests)。 提問(wèn)和提交BUG。 如果發(fā)現(xiàn)代碼存在安全漏洞,可通過(guò)https://security.webank.com/上報(bào)。
如需咨詢技術(shù)問(wèn)題,歡迎關(guān)注本公眾號(hào),對(duì)話框回復(fù)【小助手】進(jìn)技術(shù)交流群。





