Hyperledger Fabric 國(guó)密改造項(xiàng)目介紹
有關(guān)bccsp的改造方案的RFC文檔
Fabric國(guó)密改造項(xiàng)目由Hyperlegder中國(guó)工作組(TWGC)發(fā)起執(zhí)行,旨在構(gòu)建支持國(guó)密算法且密碼算法可靈活擴(kuò)展的Fabric平臺(tái),方便世界各國(guó)開發(fā)者快速接入自定義的密碼算法。
根據(jù)改造需求分析,F(xiàn)abric國(guó)密改造方案由三個(gè)部分構(gòu)成:
-
國(guó)密算法基礎(chǔ)庫(kù)收集與改造
構(gòu)建完善可用的國(guó)密算法基礎(chǔ)庫(kù)是Fabric國(guó)密改造的首要事項(xiàng)。本次改造涉及的國(guó)密算法包括:SM2、SM3和SM4。另外,TLS協(xié)議也需要進(jìn)行對(duì)應(yīng)的國(guó)密改造。
- 北京大學(xué)信息安全實(shí)驗(yàn)室 GMSSL 系列 (https://github.com/Hyperledger-TWGC/pku-gm)
- 中國(guó)網(wǎng)安 CCS-GM 系列 (https://github.com/Hyperledger-TWGC/ccs-gm)
- 蘇州同濟(jì)區(qū)塊鏈研究院 (tjfoc-gm https://github.com/Hyperledger-TWGC/tjfoc-gm)
-
Fabric本體改造
Fabric本體改造包括:Fabirc改造和Fabric-CA改造,主要是重構(gòu)Fabric密碼套件接入方式,以便開發(fā)者靈活接入自定義的密碼算法。完成對(duì)Fabric的國(guó)密算法接入改造,主要涉及國(guó)密算法的Golang實(shí)現(xiàn)以及改造出符合國(guó)密標(biāo)準(zhǔn)的TLS通信加密組件。
-
Fabric SDK改造
Fabric SDK改造包括:Fabric客戶端SDK改造,這部分涉及的語(yǔ)言分別是Golang、NodeJS和Java。當(dāng)Fabric的國(guó)密改造完成時(shí),對(duì)應(yīng)的客戶端程序中部分涉及加密學(xué)的部分也需要進(jìn)行國(guó)密改造以適配Fabric網(wǎng)絡(luò)的國(guó)密PKI體系。
- java-gm (https://github.com/Hyperledger-TWGC/java-gm)
- node-gm (https://github.com/Hyperledger-TWGC/node-gm)
BCCSP
我們現(xiàn)在在 Hyperledger-TWGC github 組織下?lián)碛?3 個(gè)中國(guó)加密庫(kù)流。
其中一些還提供了成功的、經(jīng)過(guò)企業(yè)驗(yàn)證的 bccsp 實(shí)現(xiàn)。
但是隨著我們深入了解結(jié)構(gòu)源,我們注意到僅實(shí)現(xiàn) bccsp 并不能滿足中國(guó)國(guó)家加密規(guī)范的所有要求。
bccsp之外還有一些cypro庫(kù)的使用,比如通訊協(xié)議,X509格式轉(zhuǎn)換。
Fabric 核心與 x509 標(biāo)準(zhǔn)非常非常緊密地結(jié)合在一起:
所有通信都假設(shè) TLS 使用 x509 并且沒(méi)有可插拔算法(不過(guò),可以分叉 TLS 庫(kù)并制作您自己的版本)。
Fabric 身份驗(yàn)證基礎(chǔ)結(jié)構(gòu)使用 BCCSP MSP,它也很大程度上基于 x509,并沒(méi)有以任何方式將其抽象出來(lái)。
徹底檢查整個(gè)代碼庫(kù)以抽象出 x509 將需要大量工作,如果我們這樣做,它將使向后移植更改和錯(cuò)誤修復(fù)變得痛苦,因?yàn)榇a庫(kù)會(huì)分歧太多。
國(guó)密改造目標(biāo)
- 采用規(guī)范的非入侵式的改造設(shè)計(jì),希望國(guó)密改造能夠與Fabric升級(jí)持續(xù)兼容;
- 開發(fā)支持多語(yǔ)言且完善的國(guó)密庫(kù)和通訊套件;
- 實(shí)現(xiàn)Fabric-SDK多語(yǔ)言的國(guó)密改造;
MSP
目前,Hyperledger Fabric支持FABRIC類型和IDEMIX類型兩種MSP組件,默認(rèn)采用基于BCCSP組件構(gòu)建的FABRIC類型MSP組件
localMspType: bccsp # MSP類型, 目前支持bccsp或idemix
- BCCSP類型: Fabric默認(rèn)類型
- IDEMIX類型: Fabric 1.3中還增加了IDEMIX類型的MSP組件,采用了零知識(shí)證明的方法以提供身份驗(yàn)證與隱私保護(hù)功能(http://eprint.iacr.org/2016/663.pdf),這使得在不披露被驗(yàn)證者身份信息的情況下,向驗(yàn)證方證明自己的合法身份并完成交易,具有不可鏈接性(linkability),即無(wú)法從單個(gè)身份執(zhí)行的多個(gè)交易中分析出是由同一個(gè)身份實(shí)體提交的,以實(shí)現(xiàn)真正意義上的匿名隱私保護(hù)特性,同時(shí),提供Fabric CA(1.3以上版本,適用于生產(chǎn)環(huán)境)與idemixgen工具(適用于開發(fā)環(huán)境)作為發(fā)行者(Issuer)創(chuàng)建配置文件,為用戶提供憑證(credential)。
Other
common.InitCrypto()函數(shù)首先調(diào)用SetBCCSPKeystorePath()函數(shù),獲取Viper組件配置中BCCSP組件密鑰存儲(chǔ)文件的路徑(peer.BCCSP.SW.FileKeyStore.KeyStore配置項(xiàng)),轉(zhuǎn)換為絕對(duì)路徑后設(shè)置該配置項(xiàng)
調(diào)用creator.Verify()方法獲取哈希方法及消息摘要(哈希值),通過(guò)所屬M(fèi)SP組件的BCCSP加密安全組件調(diào)用id.msp.bccsp.Verify()方法,驗(yàn)證消息簽名的真實(shí)性。
然后,調(diào)用creator.Validate()→bccspmsp.validateIdentity()方法,驗(yàn)證該證書的有效性(7.2.1節(jié)),即是否滿足證書符合X.509標(biāo)準(zhǔn)、證書不屬于CRL、證書組織單元OU字段與MSP組織單元有交集等要求。
然后,執(zhí)行identity.SatisfiesPrincipal(signedByID)→bccspmsp.SatisfiesPrincipal()方法,驗(yàn)證該簽名身份實(shí)體信息identity是否滿足指定簽名策略的Principal結(jié)構(gòu)對(duì)象要求。
defaultBCCSP對(duì)象的Setup()方法基于參數(shù)解析出MSP組件配置對(duì)象(FabricMSP-Config類型),將其作為參數(shù)傳遞給內(nèi)部構(gòu)建方法(即bccspmsp.setupV1()方法)執(zhí)行調(diào)用,并依次調(diào)用msp.preSetupV1()方法和msp.postSetupV1()方法初始化本地MSP組件,文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-516411.html
(10)bccsp節(jié)點(diǎn)bccsp節(jié)點(diǎn)包含了加密算法相關(guān)的配置,在bccsp節(jié)點(diǎn)中可以選擇相關(guān)的加密算法以及相關(guān)加密算法的證書文件。bccsp節(jié)點(diǎn)的配置信息如下所示:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-516411.html
-
往期精彩回顧:
- 區(qū)塊鏈知識(shí)系列
- 密碼學(xué)系列
- 零知識(shí)證明系列
- 共識(shí)系列
- 公鏈調(diào)研系列
- BTC系列
- 以太坊系列
- EOS系列
- Filecoin系列
- 聯(lián)盟鏈系列
- Fabric系列
- 智能合約系列
- Token系列
到了這里,關(guān)于Fabric系列 - 國(guó)密改造的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!