曹琪,阮樹驊,陳興蜀,蘭曉,張紅霞,金泓鍵
Hyperledger Fabric平臺的國密算法嵌入研究
曹琪,阮樹驊,陳興蜀,蘭曉,張紅霞,金泓鍵
(1. 四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,四川 成都 610065;2. 四川大學(xué)網(wǎng)絡(luò)空間安全研究院,四川 成都 610065)
Hyperledger Fabric是為企業(yè)級商用區(qū)塊鏈項(xiàng)目提供支撐的且可擴(kuò)展的聯(lián)盟鏈平臺,密碼算法為該平臺的核心,保證上鏈數(shù)據(jù)的安全和不可篡改,但原始Fabric平臺缺乏對國密算法的支持。因此,設(shè)計(jì)并實(shí)現(xiàn)了Fabric平臺的國密算法的嵌入和支持。首先,通過分析Fabric平臺中組件間交互邏輯和密碼算法的調(diào)用場景,提出了在該平臺嵌入國密支持的設(shè)計(jì)思路;其次,基于同濟(jì)開源國密實(shí)現(xiàn)源碼,為Fabric平臺BCCSP添加SM2、SM3和SM4算法模塊與接口;再次,將Fabric平臺的各組件上層應(yīng)用的密碼算法調(diào)用接口與對應(yīng)國密算法接口相關(guān)聯(lián),實(shí)現(xiàn)上層應(yīng)用對國密算法調(diào)用的支持;最后,通過創(chuàng)建fabric-gm聯(lián)盟鏈測試實(shí)例驗(yàn)證Fabric平臺中嵌入的國密算法模塊和接口的正確性及有效性,并與原生Fabric平臺鏡像構(gòu)建的測試實(shí)例進(jìn)行了性能比較。實(shí)驗(yàn)結(jié)果表明,嵌入的國密算法模塊和接口可用、正確且生成的國密證書有效,與原生Fabric平臺鏡像相比,網(wǎng)絡(luò)啟動時(shí)間增加3%,毫秒級單位下的交易時(shí)間開銷增加1倍,動態(tài)證書生成時(shí)間增加9%,各項(xiàng)性能指標(biāo)均在可接受范圍內(nèi)。
區(qū)塊鏈;Hyperledger Fabric;SM2;SM3;SM4
Hyperledger Fabric[1](簡稱Fabric平臺)是由IBM牽頭、旨在為企業(yè)級商用區(qū)塊鏈應(yīng)用場景打造的許可分布式賬本支撐平臺,也是目前聯(lián)盟鏈[2]的典型代表。在克服了公有鏈吞吐量低[3]、交易公開而導(dǎo)致的無隱私性和私有鏈[4]的強(qiáng)中心化等問題的同時(shí),它以模塊化和可插拔的特性,可向上提供高度的機(jī)密性、靈活性及可擴(kuò)展性[5],使Fabric平臺滿足廣泛行業(yè)的商業(yè)應(yīng)用訴求。密碼技術(shù)是Fabric平臺實(shí)現(xiàn)的核心技術(shù)之一,是Fabric上層應(yīng)用開發(fā)的基礎(chǔ)支撐技術(shù)?;诿艽a技術(shù),F(xiàn)abric實(shí)現(xiàn)了一種基于證書的身份管理與一種“執(zhí)行?排序?驗(yàn)證”并行執(zhí)行的新交易模式,保證了對鏈上的每一步操作進(jìn)行嚴(yán)格的身份與權(quán)限驗(yàn)證,進(jìn)而保證該平臺上數(shù)據(jù)的安全與不可篡改。但目前原生的Fabric平臺僅支持通用的國際密碼算法,缺乏對國家密碼算法(簡稱國密算法)支持。同時(shí),我國政府在技術(shù)監(jiān)管和自主可控方面對從事區(qū)塊鏈系統(tǒng)建設(shè)、服務(wù)運(yùn)營的機(jī)構(gòu)提出了國密算法規(guī)范要求[6],因此,將我國自主研發(fā)的國產(chǎn)密碼算法嵌入Fabric平臺顯得尤為必要。
目前,已有國內(nèi)學(xué)者或機(jī)構(gòu)主要針對Hyperledger Fabric 1.0開展了SM2[7-8]、SM3[9-10]等國密算法的嵌入工作。其中,具有代表性的是蘇州同濟(jì)區(qū)塊鏈研究院[11]開源的Fabric 1.0的國密嵌入代碼。在此基礎(chǔ)上,張青禾[12]基于支持國密的Fabric1.0提出了一種隱私保護(hù)方案。張夢一[13]基于支持國密的Fabric1.0實(shí)現(xiàn)了一種通用積分管理系統(tǒng)。但上述工作僅針對Fabric平臺的部分組件進(jìn)行了針對性應(yīng)用的國密嵌入支持,不具有通用性,且未實(shí)現(xiàn)整個(gè)平臺的國密算法支持,無法支持廣泛的商用應(yīng)用。
本文通過分析Fabric平臺組件間交互邏輯與密碼算法的調(diào)用場景,提出了Fabric平臺國密算法嵌入的設(shè)計(jì)思路,對Fabric平臺核心組件區(qū)塊鏈密碼服務(wù)提供者[1](BCCSP,blockchain cryptographic service provider)嵌入國密SM2、SM3及SM4[14]算法模塊與接口,并將Fabric平臺各組件的上層密碼調(diào)用關(guān)聯(lián)到國密算法接口,進(jìn)而實(shí)現(xiàn)了Fabric平臺的國密算法支持。
Fabric平臺由Fabric聯(lián)盟鏈網(wǎng)絡(luò)[15]、Fabric-CA[16]以及Fabric-SDK[17]3部分組成,組件間交互邏輯如圖1所示,展示了Fabric聯(lián)盟鏈網(wǎng)絡(luò)典型的交易流程。
1) Fabric聯(lián)盟鏈網(wǎng)絡(luò)[1,15]是Fabric平臺的核心組成部分,依賴于底層密碼算法為上鏈數(shù)據(jù)提供不可篡改等特性。
2) Fabric-CA[16]是Fabric平臺的證書頒發(fā)機(jī)構(gòu),用于網(wǎng)絡(luò)成員身份證書的動態(tài)管理,包括證書的動態(tài)頒發(fā)與吊銷等。
圖1 Fabric平臺組件間交互邏輯圖
Figure 1 The interaction logic between components in the Fabric
3) Fabric-SDK[17]是為開發(fā)人員編寫和測試鏈碼應(yīng)用程序提供的一個(gè)結(jié)構(gòu)化、可配置的庫環(huán)境,并作為Fabric平臺的客戶端。
從圖1可以看出,F(xiàn)abric-SDK向Fabric-CA進(jìn)行網(wǎng)絡(luò)成員動態(tài)身份證書的注冊,并向Fabric聯(lián)盟鏈網(wǎng)絡(luò)發(fā)起交易等操作。在交易處理的每個(gè)環(huán)節(jié)上都會進(jìn)行簽名驗(yàn)簽操作,并對交易信息進(jìn)行權(quán)限與格式檢查,需要大量調(diào)用密碼算法。因此,為了實(shí)現(xiàn)Fabric平臺對國密算法的支持,需要分別實(shí)現(xiàn)Fabric聯(lián)盟鏈網(wǎng)絡(luò)、Fabric-CA及Fabric-SDK對國密算法的支持。
這里需要強(qiáng)調(diào)的是關(guān)于網(wǎng)絡(luò)成員身份證書的動態(tài)管理問題,F(xiàn)abric本身維護(hù)了一個(gè)在網(wǎng)絡(luò)啟動時(shí)用于靜態(tài)生成節(jié)點(diǎn)證書的二進(jìn)制證書生成工具cryptogen,通過該工具可生成各節(jié)點(diǎn)證書,從而實(shí)現(xiàn)對任何上鏈操作的身份驗(yàn)證,但是在系統(tǒng)要求動態(tài)添加節(jié)點(diǎn)用戶時(shí),該方式存在反復(fù)修改配置文件并重啟網(wǎng)絡(luò)更新配置的問題。故在實(shí)際應(yīng)用中,可使用Fabric-CA代替cryptogen證書生成方式,實(shí)現(xiàn)動態(tài)管理Fabric聯(lián)盟鏈網(wǎng)絡(luò)中節(jié)點(diǎn)身份證書,進(jìn)而為Fabric平臺提供可動態(tài)頒發(fā)與吊銷的動態(tài)成員管理功能。
Fabric聯(lián)盟鏈網(wǎng)絡(luò)技術(shù)架構(gòu)如圖2所示,與本文研究工作關(guān)系最為密切的是區(qū)塊鏈密碼服務(wù)提供者BCCSP[1]模塊,基于BCCSP可實(shí)現(xiàn)Fabric聯(lián)盟鏈網(wǎng)絡(luò)共同的安全與密碼服務(wù),為上層應(yīng)用提供安全的、可插拔的成員身份管理(MSP,membership service provider)、共識服務(wù)和鏈碼服務(wù)[18]。
圖2 Fabric聯(lián)盟鏈網(wǎng)絡(luò)技術(shù)架構(gòu)
Figure 2 The technology architecture of the Fabric alliance chain network
BCCSP模塊封裝了基于軟件實(shí)現(xiàn)的SW和基于硬件實(shí)現(xiàn)的PCAS11兩類BCCSP實(shí)例,每類實(shí)例提供包括密鑰的生命周期管理、哈希、簽名驗(yàn)證及加解密等4大類功能接口供上層服務(wù)調(diào)用。BCCSP模塊支持的密碼算法主要有哈希密碼算法、對稱密碼算法和非對稱密碼算法3類,各類密碼算法支持的應(yīng)用場景如圖3所示,可通過CSP選項(xiàng)來指定BCCSP選取的實(shí)例,如國密算法實(shí)例,從而為上層應(yīng)用提供相應(yīng)的國密算法調(diào)用的支持。為了在Fabric聯(lián)盟鏈網(wǎng)絡(luò)中嵌入國密支持,首先需要在BCCSP底層實(shí)現(xiàn)中嵌入基于國密的BCCSP實(shí)例,并提供國密SM3、SM2和SM4的功能接口,其次需要將上層應(yīng)用的密碼算法調(diào)用接口與國密接口關(guān)聯(lián),從而最終實(shí)現(xiàn)基于國密的Fabric聯(lián)盟鏈網(wǎng)絡(luò)共同的安全與密碼服務(wù)。
圖3 Fabric平臺支持的密碼算法及使用場景
Figure 3 Cryptographic algorithms support and usage scenarios in the Fabric
本文將嵌入了國密支持的Fabric平臺稱為Fabric-gm,具體的Fabric-gm平臺實(shí)現(xiàn)過程同時(shí)考慮了Fabric-gm聯(lián)盟鏈網(wǎng)絡(luò)、Fabric-CA-gm和Fabric-SDK-gm三類組件的國密嵌入實(shí)現(xiàn),國密算法嵌入設(shè)計(jì)思路如圖4所示,主要工作有以下4個(gè)部分。
圖4 Fabric平臺國密算法嵌入設(shè)計(jì)思路
Figure 4 The embedding scheme of the GM in the Fabric
1) 基于Go標(biāo)準(zhǔn)的底層國密算法嵌入:可依據(jù)SM系列國密算法的標(biāo)準(zhǔn)規(guī)范文件,設(shè)計(jì)并實(shí)現(xiàn)基于Go標(biāo)準(zhǔn)的國密算法,包括常用的加解密算法(SM4、SM2)、哈希算法(SM3)以及簽名驗(yàn)簽算法(SM2)等。在這部分工作中,本文對開源實(shí)現(xiàn)(指同濟(jì)區(qū)塊鏈研究院對國密SM2、SM3和SM4算法的開源實(shí)現(xiàn))的底層國密算法實(shí)例[19]進(jìn)行了正確性驗(yàn)證,并在BCCSP模塊的國密實(shí)例中采用了該算法實(shí)例。
2) BCCSP模塊的國密算法接口嵌入:分別在BCCSP模塊的哈希算法子模塊、對稱密碼算法子模塊和非對稱密碼算法子模塊下,添加相關(guān)的國密SM3模塊、SM4模塊和SM2模塊的調(diào)用接口。
3) 上層應(yīng)用的國密算法接口嵌入:在上層程序與應(yīng)用中,添加相關(guān)的國密算法接口調(diào)用,將原哈希、簽名驗(yàn)簽等密碼算法接口與國密SM3、SM2算法接口關(guān)聯(lián),以實(shí)現(xiàn)上層應(yīng)用對國密算法調(diào)用的支持。
4) 對嵌入國密算法及相關(guān)調(diào)用接口后的Fabric平臺源碼進(jìn)行編譯,形成支持國密算法的可執(zhí)行文件,并打包成Fabric-gm鏡像文件,部署支持國密算法的Fabric-gm平臺,通過基于國密接口的加解密、簽名驗(yàn)簽及哈希對比等實(shí)驗(yàn)驗(yàn)證所嵌入的國密算法的正確性、可用性和有效性。
4.1.1 BCCSP國密算法相關(guān)接口實(shí)現(xiàn)
Fabric聯(lián)盟鏈網(wǎng)絡(luò)BCCSP模塊國密算法相關(guān)接口實(shí)現(xiàn)如圖5所示。將基于同濟(jì)實(shí)現(xiàn)的底層國密算法GMSM代碼封裝成支持國密算法的BCCSP實(shí)例,即在CSP選項(xiàng)添加GM軟件實(shí)現(xiàn)選項(xiàng)并在該選項(xiàng)下添加bccsp-gm實(shí)例,提供SM2非對稱加密算法選項(xiàng)(用于數(shù)字簽名及驗(yàn)證)、SM3哈希算法選項(xiàng)、SM4對稱加密算法選項(xiàng)以及與X.509證書相關(guān)的各類國密算法與服務(wù)支持的接口,如圖5所示。特別地,國密證書生成和國密證書與密鑰轉(zhuǎn)換接口,不僅提供了已封裝的國密證書生成接口,還提供了將X.509證書和密鑰轉(zhuǎn)換成SM2國密證書和密鑰的接口。
4.1.2 Fabric聯(lián)盟鏈網(wǎng)絡(luò)上層應(yīng)用國密算法調(diào)用支持
Fabric聯(lián)盟鏈網(wǎng)絡(luò)上層應(yīng)用的國密算法支持主要分為網(wǎng)絡(luò)啟動過程和交易流程的國密算法調(diào)用支持兩個(gè)部分。
網(wǎng)絡(luò)啟動過程要求證書生成工具cryptogen能夠?yàn)閷?yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)生成國密身份證書與密鑰。因此,相關(guān)的國密算法調(diào)用支持主要包括以下內(nèi)容:
圖5 BCCSP國密算法接口實(shí)現(xiàn)示意
Figure 5 The GM interface implementation for BCCSP
1) 修改example和sampleconfig文件下的網(wǎng)絡(luò)結(jié)構(gòu)配置參數(shù),保證其BCCSP實(shí)例指向BCCSP-gm實(shí)例;
2) 修改common文件下CA結(jié)構(gòu)體、證書生成與加載及MSP證書鏈,保證能夠生成支持國密的cryptogen,進(jìn)而為各網(wǎng)絡(luò)節(jié)點(diǎn)生成對應(yīng)的國密身份證書與密鑰。
交易流程要求對一次完整交易中涉及的交易發(fā)起、執(zhí)行、不同類型網(wǎng)絡(luò)節(jié)點(diǎn)簽名與驗(yàn)簽、通道管理、賬本管理、區(qū)塊生成、基于Gossip的區(qū)塊分發(fā)、鏈碼調(diào)用等處理操作都進(jìn)行基于國密的身份與權(quán)限驗(yàn)證。因此,相關(guān)的國密算法調(diào)用支持主要包括以下內(nèi)容。
1) Common模塊:在channel.go中添加國密SM3算法的調(diào)用支持,在csp.go中添加SM2的密鑰獲取方法,保證默認(rèn)密鑰加載選項(xiàng)指向國密SM2接口。
2) Core模塊:在server.go中添加國密X.509格式的證書解析方法。
3) MSP模塊:在cert.go中添加國密X.509格式的證書反序列化方法,在identities.go添加指向SM3哈希算法的實(shí)現(xiàn)。
4) Common、Core、MSP、Peer、Orderer、Gossip等模塊的密碼算法調(diào)用修改指向bccsp-gm提供的國密接口,從而實(shí)現(xiàn)各上層應(yīng)用的國密算法調(diào)用支持。
將4.1.1節(jié)和4.1.2節(jié)修改后的源碼重新編譯,生成支持國密的二進(jìn)制文件,并打包生成用于環(huán)境部署的Fabric-gm鏡像文件,從而實(shí)現(xiàn)國密支持嵌入。
4.2.1 Fabric-CA的國密算法接口實(shí)現(xiàn)
首先,在Fabric-CA組件的lib文件下添加國密CA驗(yàn)證方法,新添gmca.go文件,該文件封裝了基于國密算法的簽名、證書生成、證書請求與轉(zhuǎn)換等國密GM實(shí)現(xiàn)方法與接口。
同時(shí),修改Fabric-CA客戶端和服務(wù)端的config.go配置文件的BCCSP的default和CSR選項(xiàng)字段需要指向國密GM實(shí)例和新國密接口。
此外,在Fabric-CA組件中的util文件下添加基于國密算法的證書與密鑰管理方法,添加的方法如圖6所示,并修改令牌創(chuàng)建與驗(yàn)證代碼,為Fabric-CA上層應(yīng)用對國密算法接口的調(diào)用提供支持。
圖6 fabric-CA組件下util文件新添方法示意
Figure 6 The new methods added to the util file
4.2.2 Fabric-CA上層應(yīng)用國密算法調(diào)用支持
Fabric-CA動態(tài)證書申請流程如圖7所示,上層應(yīng)用的國密算法調(diào)用支持主要包括以下4個(gè)階段。
圖7 Fabric-CA動態(tài)證書申請流程
Figure 7 The flowchart of dynamic certificate application for the Fabric-CA
1) Fabric-CA服務(wù)器初始化啟動階段的國密算法調(diào)用支持。
2) Enroll(注冊)管理員注冊階段的國密算法調(diào)用支持。
3) Register(用戶登記)階段的國密算法調(diào)用支持。
4) Enroll(注冊)普通用戶注冊階段的國密算法調(diào)用支持。
Fabric-CA服務(wù)器初始化啟動階段國密調(diào)用流程如圖8所示,圖上虛線箭頭表示間接調(diào)用,實(shí)線箭頭表示直接調(diào)用,灰色背景部分為新添的國密算法調(diào)用支持,以CA服務(wù)器初始化部分為例,通過修改證書有效性檢測、根密鑰生成以及添加CA部分調(diào)用的接口或方法,可實(shí)現(xiàn)將該CA指向BCCSP-gm及新添的國密證書與密鑰處理方法,進(jìn)而實(shí)現(xiàn)該部分對國密算法的調(diào)用支持。通過對注冊處理程序和監(jiān)聽與服務(wù)部分進(jìn)行類似的操作,最終可實(shí)現(xiàn)該階段的國密調(diào)用支持。
Enroll(注冊)階段的國密算法調(diào)用流程如圖9的Enroll操作部分所示,該階段主要涉及管理員注冊和用戶注冊。因此,該階段的操作主要有:①實(shí)例化支持國密的Fabric-CA客戶端;②修改CSR的生成代碼和基于MSP的證書存儲代碼;③修改圖9中注冊階段所涉及的函數(shù)以及相關(guān)函數(shù)中的子調(diào)用,添加對國密算法相關(guān)接口的調(diào)用,從而實(shí)現(xiàn)對國密密鑰/證書請求與生成的支持。
圖8 Fabric-CA服務(wù)器初始化啟動階段的國密調(diào)用流程
Figure 8 The invoking flowchart of the GM during the Fabric-CA initial phase
圖9 Enroll與Register國密調(diào)用流程
Figure 9 The invoking flowchart of the GM during the enroll and register phase
Register(用戶登記)階段的國密算法調(diào)用流程如圖9的Register操作部分所示,該階段僅在管理員身份驗(yàn)證部分存在密碼算法的調(diào)用,因此,直接修改圖9中Register操作下調(diào)用函數(shù)及其子調(diào)用,添加對國密算法相關(guān)接口的調(diào)用,就能夠?qū)崿F(xiàn)基于國密的通信憑證token創(chuàng)建、簽名及證書驗(yàn)證等操作。
本文所有實(shí)驗(yàn)均在虛擬化環(huán)境下進(jìn)行。宿主機(jī)配置:Win10 x86_64、Intel Core i5-8400 CPU @ 2.80 GHz 2.81 GHz。虛擬機(jī)配置:Ubuntu 16.04.05 x86_64,CPU可用核數(shù)為1,內(nèi)存4 GB。
5.1.1 國密算法接口測試
國密算法接口測試對Fabric-gm平臺上BCCSP下添加的國密SM3、SM4及SM2接口的可用性和有效性進(jìn)行評估,測試實(shí)驗(yàn)如下。
(1)SM3哈希算法接口測試
首先,進(jìn)行Fabric-gm平臺上SM3哈希算法接口調(diào)用可用性驗(yàn)證,驗(yàn)證上層應(yīng)用調(diào)用的哈希算法指向國密SM3哈希算法接口。圖10的長方形框內(nèi)顯示了Fabric-gm平臺默認(rèn)的哈希選項(xiàng)為國密SM3哈希算法接口,即Fabric-gm平臺上層應(yīng)用調(diào)用的哈希算法指向了國密SM3哈希算法接口,使用國密SM3哈希算法進(jìn)行簽名驗(yàn)簽及標(biāo)識ID值計(jì)算等操作過程。
圖10 Fabric-gm上的SM3哈希接口調(diào)用可用性驗(yàn)證
Figure 10 The verification of usability for SM3 interface
其次,進(jìn)行Fabric-gm平臺上SM3哈希算法接口有效性驗(yàn)證,驗(yàn)證上層應(yīng)用調(diào)用的國密SM3哈希算法計(jì)算的正確性。將測試消息設(shè)定為“Hello World”,分別使用GmSSL[20]函數(shù)庫和Fabric-gm平臺的SM3哈希算法接口計(jì)算測試消息的哈希值,比較計(jì)算結(jié)果。圖11(a)為基于GmSSL的SM3哈希函數(shù)計(jì)算得到的結(jié)果,圖11(b)為基于Go test測試調(diào)用BCCSP下哈希算法接口的哈希計(jì)算結(jié)果,由計(jì)算結(jié)果可知,兩者對同一測試消息計(jì)算的哈希結(jié)果一致,因此,F(xiàn)abric-gm平臺的SM3哈希算法接口是可用且有效的,可被正確使用。
圖11 Fabric-gm上的SM3哈希接口有效性驗(yàn)證
Figure 11 The verification of validity for SM3 in the Fabric-gm
(2)SM4算法接口測試
驗(yàn)證Fabric-gm平臺上BCCSP下添加的國密SM4算法接口的可用性和有效性。調(diào)用BCCSP下的KeyGen接口生成SM4算法密鑰,再調(diào)用SM4的Encrypt接口和Decrypt接口進(jìn)行數(shù)據(jù)的加解密操作。測試結(jié)果如圖12所示,首先,SM4密鑰生成成功,其次,基于該SM4密鑰對明文數(shù)據(jù)進(jìn)行加解密操作,解密后數(shù)據(jù)與明文數(shù)據(jù)一致,因此,驗(yàn)證了Fabric-gm平臺的SM4算法相關(guān)接口是可用且有效的,可被正確使用。
圖12 Fabric-gm/BCCSP上的SM4算法接口可用性和有效性驗(yàn)證結(jié)果
Figure 12 The verification of availability and validity for SM4 in the Fabric-gm/BCCSP
(3)SM2算法接口測試
驗(yàn)證Fabric-gm平臺上BCCSP下添加的國密SM2算法接口的可用性和有效性。調(diào)用BCCSP下KeyGen生成SM2算法密鑰,再調(diào)用signGMSM2和verifyGMSM2接口進(jìn)行簽名驗(yàn)簽操作。測試結(jié)果如圖13所示,簽名過程中的值與驗(yàn)簽過程中的值相等,表明BCCSP下SM2算法相關(guān)接口被成功使用,因此,驗(yàn)證了Fabric-gm平臺的SM2算法相關(guān)接口是可用且有效的,可被正確使用。
圖13 Fabric-gm/BCCSP上的SM2算法接口有用性和有效性驗(yàn)證結(jié)果
Figure 13 The verification of availability and validity for SM2 in the Fabric-gm/BCCSP
5.1.2 國密算法證書有效性測試
測試驗(yàn)證是否能夠成功生成國密證書,包含兩方面的內(nèi)容。
(1)證書生成工具cryptogen對國密算法支持的驗(yàn)證
如圖14所示,證書生成工具cryptogen中的簽名與哈希算法分別指向SM2和SM3算法,表明基于cryptogen工具生成節(jié)點(diǎn)證書的Fabric-gm聯(lián)盟鏈網(wǎng)絡(luò)實(shí)現(xiàn)了對國密證書生成操作的支持。
圖14 fabric-gm/cryptogen支持國密證書生成
Figure 14 The GM certificate in the fabric-gm/cryptogen
(2)Fabric-CA-gm動態(tài)證書生成測試
在Fabric-CA-gm容器內(nèi),首先,通過fabric-ca-client命令注冊名為JimTest新用戶;其次,將該新用戶的證書信息復(fù)制至容器外,利用Gmssl命令展示此證書信息。如圖15所示,該證書的簽名與哈希算法指向國密SM2和SM3算法,表明Fabric-CA-gm實(shí)現(xiàn)了對國密動態(tài)證書生成操作的支持。
綜上所述,F(xiàn)abric-gm和Fabric-CA-gm基于國密算法的證書鏈成功建立。
圖15 Fabric-CA-gm支持國密證書生成
Figure 15 The GM certificate supported by the Fabric-CA-gm
5.1.3 Fabric-gm聯(lián)盟鏈測試網(wǎng)絡(luò)正常啟動驗(yàn)證
通過命令./byfn.sh up -a依次執(zhí)行Fabric-gm聯(lián)盟鏈測試網(wǎng)絡(luò)啟動時(shí)的節(jié)點(diǎn)容器(包括CA容器)創(chuàng)建、節(jié)點(diǎn)密鑰證書生成驗(yàn)證、鏈碼實(shí)例化及一次完整的交易等過程。執(zhí)行結(jié)果如圖16所示,表明Fabric-gm聯(lián)盟鏈測試網(wǎng)絡(luò)能夠正常啟動。
圖16 Fabric-gm聯(lián)盟鏈測試網(wǎng)絡(luò)正常啟動驗(yàn)證
Figure 16 The normal startup verification for the Fabric-gm testing network
5.2.1 系統(tǒng)時(shí)間開銷對比測試
基于聯(lián)盟鏈測試網(wǎng)絡(luò)啟動時(shí)間探索系統(tǒng)時(shí)間開銷在國密嵌入前后的變化。
聯(lián)盟鏈測試網(wǎng)絡(luò)啟動時(shí)間定義:從byfn.sh開始執(zhí)行開始,經(jīng)歷證書生成、容器創(chuàng)建、通道創(chuàng)建、節(jié)點(diǎn)配置以及鏈碼安裝實(shí)例化等過程,直至完成一次鏈碼查詢?yōu)橹梗环Q為聯(lián)盟鏈測試網(wǎng)絡(luò)的啟動時(shí)間。
在虛擬環(huán)境下分別部署基于國密算法的Fabric-gm平臺和原生Fabric平臺開發(fā)環(huán)境,保證兩種環(huán)境下聯(lián)盟鏈測試網(wǎng)絡(luò)的結(jié)構(gòu)配置信息和鏈碼不變。基于每種環(huán)境重復(fù)啟動聯(lián)盟鏈測試網(wǎng)絡(luò)10次,求均值。測試結(jié)果顯示:① Fabric-gm環(huán)境下的聯(lián)盟鏈測試網(wǎng)絡(luò)啟動時(shí)間均值為109.6 s;②原生Fabric環(huán)境下聯(lián)盟鏈測試網(wǎng)絡(luò)啟動時(shí)間均值為106.1s。綜上,F(xiàn)abric-gm平臺環(huán)境下聯(lián)盟鏈測試網(wǎng)絡(luò)的啟動時(shí)間相較于原生Fabric平臺環(huán)境下增加3%,因此,F(xiàn)abric-gm平臺的系統(tǒng)時(shí)間開銷在可接受范圍內(nèi)。
5.2.2 系統(tǒng)運(yùn)算性能開銷對比測試
SM2和SM3算法主要用于Fabric-gm平臺中的交易發(fā)起、執(zhí)行和證書生成階段,因此,基于SDK客戶端發(fā)起交易與證書動態(tài)生成時(shí)間來探索系統(tǒng)運(yùn)算性能開銷在國密嵌入前后的變化。針對同樣的交易內(nèi)容和用戶證書信息進(jìn)行時(shí)間開銷測試,每項(xiàng)測試各進(jìn)行1 000次,分別求得測試均值,測試結(jié)果如表1所示,F(xiàn)abric-gm平臺相較于原生Fabric平臺其平均交易時(shí)間開銷增加1倍,管理員用戶證書動態(tài)生成時(shí)間增加10%,普通用戶證書動態(tài)生成時(shí)間增加8%,平均動態(tài)證書生成時(shí)間增加9%,但增加的時(shí)間量級為毫秒級,因此,F(xiàn)abric-gm平臺的運(yùn)算性能開銷在可接受范圍內(nèi)。
表1 系統(tǒng)運(yùn)算性能開銷結(jié)果
5.2.3 系統(tǒng)性能影響原因分析
支持國密的Fabric-gm平臺性能提升或減損可能的原因有以下兩方面:① SM2和SM3國密算法效率本身與對應(yīng)的ECDSA和SHA256算法效率存在差異;② 不同版本的SM2和SM3國密算法實(shí)現(xiàn)存在算法效率差異。
Fabric平臺原生密碼算法與同濟(jì)實(shí)現(xiàn)的國密算法的效率對比分析實(shí)驗(yàn)結(jié)果如圖17所示,分析有如下發(fā)現(xiàn)。
圖17 密碼算法時(shí)間開銷對比
Figure 17 The comparison of cryptographic algorithm time overhead
1) 各密碼算法簽名、驗(yàn)簽以及哈希操作的時(shí)間開銷基本保持在毫秒級。
2) 圖17(a)表明,在基于ECDSA和SM2的不同字節(jié)數(shù)規(guī)模的數(shù)據(jù)的簽名驗(yàn)簽實(shí)驗(yàn)中,兩者的時(shí)間開銷均不隨著字節(jié)數(shù)的增加而增加;基于SM2簽名操作的效率優(yōu)于ECDSA簽名,但ECDSA的驗(yàn)簽操作效率略高于SM2的驗(yàn)簽操作。
3) 圖17(b)表明,SM3和SHA256哈希操作時(shí)間開銷均隨著字節(jié)數(shù)的增加而近線性增長,SM3時(shí)間開銷高于SHA256,同等條件下,SM3哈希時(shí)間開銷約為SHA256的4倍;圖17(c)表明,哈希調(diào)用的次數(shù)增加其時(shí)間開銷近線性增長。Fabric平臺中單個(gè)交易哈希計(jì)算次數(shù)和區(qū)塊大小規(guī)模有限,因此不會出現(xiàn)系統(tǒng)時(shí)間開銷無限增加的情況。
Fabric平臺中密碼算法調(diào)用場景如節(jié)2.2所述,哈希算法在多應(yīng)用場景中被頻繁調(diào)用,哈希算法調(diào)用不僅發(fā)生在所有基于SM2和ECDSA的簽名驗(yàn)簽過程中,還存在于區(qū)塊鏈的鏈?zhǔn)浇Y(jié)構(gòu)形成和特殊ID值計(jì)算的過程中,遠(yuǎn)大于ECDSA和SM2算法調(diào)用頻率。由圖17的分析結(jié)果可知,SM2與ECDSA的算法效率差異較小,而SM3與SHA256在同等條件下算法差異近4倍左右。因此,在時(shí)間開銷單位為毫秒級別的基礎(chǔ)上,同濟(jì)實(shí)現(xiàn)的SM3哈希算法可能是導(dǎo)致Fabric-gm性能減損的主要原因之一。此外,文獻(xiàn)[21]中結(jié)果表明,不同版本的SM3實(shí)現(xiàn)具有不同的算法效率,因此后期可嘗試優(yōu)化SM3的實(shí)現(xiàn),以使Fabric-gm平臺獲得更接近或略優(yōu)于原生Fabric平臺的系統(tǒng)性能。
本文提出了對Fabric平臺實(shí)現(xiàn)國密嵌入的思路,并基于該思路針對長期穩(wěn)定版本Fabric release1.4開展了國密算法的嵌入工作:①基于同濟(jì)開源國密實(shí)現(xiàn)源碼,在Fabric平臺的BCCSP下添加SM2、SM3和SM4算法模塊與接口;②將Fabric平臺的各組件上層調(diào)用的密碼算法接口與對應(yīng)國密算法接口相關(guān)聯(lián),實(shí)現(xiàn)上層應(yīng)用對國密算法調(diào)用的支持。實(shí)驗(yàn)結(jié)果表明,F(xiàn)abric平臺國密嵌入后,測試網(wǎng)絡(luò)啟動、交易以及動態(tài)證書生成等過程都成功調(diào)用了基于國密算法實(shí)現(xiàn)的加解密、簽名驗(yàn)簽及哈希接口,與原系統(tǒng)相比,改造后的系統(tǒng)時(shí)間開銷和系統(tǒng)運(yùn)算性能開銷均在可接受范圍。此外,本文對系統(tǒng)性能影響的原因進(jìn)行對比實(shí)驗(yàn)分析,國密算法本身效率和原生Fabric平臺的密碼算法之間存在差異性,且不同版本的國密算法實(shí)現(xiàn)同樣存在差異性,從而可能對平臺的性能造成一定的影響。未來,將已嵌入國密的Fabric-gm平臺與產(chǎn)業(yè)應(yīng)用相結(jié)合,加速產(chǎn)業(yè)應(yīng)用落地并提升生產(chǎn)效益。
[1] hyperledger-fabricdocs documentation[EB].
[2] 董友康,張大偉,韓臻,等. 基于聯(lián)盟區(qū)塊鏈的董事會電子投票系統(tǒng)[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2017, 3(12): 31-37.
DONG Y K, ZHANG D W, HAN Z, et al. Board voting system based on the consortium blockchains[J]. Chinese Journal of Network and Information Security, 2017, 3(12): 31-37.
[3] 潘晨, 劉志強(qiáng), 劉振, 等. 區(qū)塊鏈可擴(kuò)展性研究:問題與方法[J]. 計(jì)算機(jī)研究與發(fā)展, 2018, 55(10):7-18.
PAN C, LIU Z Q, LIU Z, et al. Research on scalability of blockchain technology:problems and methods[J]. Journal of Computer Research and Development, 2018, 55(10):7-18.
[4] GUEGAN D. Public blockchain versus private blockhain[J]. documents de travail du centre deconomie de la sorbonne, 2017.
[5] An introduction to hyperledger[EB].
[6] 中華人民共和國金融行業(yè)標(biāo)準(zhǔn). 金融分布式賬本技術(shù)安全規(guī)范[EB].
Financial industry standard of the people's Republic of China. Security specification for financial distributed ledger technology[EB].
[7] 國家密碼管理局. SM2橢圓曲線公鑰密碼算法[EB].
State Cryptography Administration. Public key cryptographic algorithm sm2 based on elliptic curves[EB].
[8] 郭青霄,張大偉,常亮,等. 基于SM2的代理保護(hù)代理簽名的設(shè)計(jì)與實(shí)現(xiàn)[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2017, 3(9): 47-54.
GUO Q X, ZHANG D W, CHANG L, et al. Design and implementation of proxy-protected proxy signature based on SM2[J]. Chinese Journal of Network and Information Security, 2017, 3(9): 47-54.
[9] 國家密碼管理局. SM3密碼雜湊算法[EB].
State Cryptography Administration. SM3 Cryptographic hash algorithm[EB].
[10] 邵夢麗,殷新春,李艷梅. SM3雜湊算法的SoPC組件實(shí)現(xiàn)[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2017, 3(5): 47-53.
SHAO M L, YIN X C, LI Y M. Implementation of SM3 algorithm based on SoPC component[J]. Chinese Journal of Network and Information Security, 2017, 3(5): 47-53.
[11] Tongji blockchain Research Institute. Hyperledger-Fabric-gm[EB].
[12] 張青禾. 區(qū)塊鏈中的身份識別和訪問控制技術(shù)研究[D]. 北京:北京交通大學(xué),2018.
ZHANG Q H. Research on identification and acess control in blockchain[D]. Beijing: Beijing Jiaotong University, 2018.
[13] 張夢一. 基于區(qū)塊鏈的通用積分管理系統(tǒng)[D]. 濟(jì)南: 山東大學(xué), 2019.
ZHANG M Y. General integration management system based on blockchain[D]. Jinan: Shandong University, 2019.
[14] 國家密碼管理局. SM4分組密碼算法[EB].
State Cryptography Administration. SM4 Block cipher algorithm[EB].
[15] ANDROULAKI E, BARGER A, BORTNIKOV V, et al. Hyperledger Fabric: a distributed operating system for permissioned blockchains[C]//Proceedings of the Thirteenth EuroSys Conference (EuroSys '18). Association for Computing Machinery.2018: 1-15.
[16] hyperledger-fabric-ca documentation[EB].
[17] Hyperledger Fabric SDKs[EB].
[18] 陳劍雄, 張董朱, 深度探索區(qū)塊鏈Hyperledger技術(shù)與應(yīng)用[M]. 北京: 機(jī)械工業(yè)出版社, 2018.
CHEN J X, ZHANG D Z. In-depth exploration of blockchain Hyperledger technology and application[M],BeiJing:China Machine Press,2018.
[19] 同濟(jì)區(qū)塊鏈研究院. 國密SM2、SM3和SM4算法實(shí)現(xiàn)[EB].
Suzhou Tongji blockchain Research Institute. Implementation of SM2, SM3 and SM4 algorithms[EB].
[20] GUAN Z. GmSSL[EB].
[21] SM2算法與原生RSA、ECDSA算法的比較[EB].
Comparison of SM2 algorithm with RSA and ECDSA[EB].
Embedding of national cryptographic algorithm in Hyperledger Fabric
CAO Qi, RUAN Shuhua, CHEN Xingshu, LAN Xiao, ZHANG Hongxia, JIN Hongjian
1. School of Cyber Science and Engineering, Sichuan University, Chengdu 610065, China 2. Cybersecurity Research Institute, Sichuan University, Chengdu 610065, China
Hyperledger Fabric is an extensible alliance blockchain platform and provides support for enterprise-level commercial blockchain projects. The cryptographic algorithm is the core technologies of the platform, ensuring the security and non-tampering of the data on the chain. But the original Fabric platform lacks the national cryptographic algorithm support. The embedding and support of the national cryptographic algorithm of the Fabric platform was designed and implemented. Firstly, the interaction logic of between components and the invocation scenario of each type of cryptographic algorithm in the Fabric platform were analyzed, an idea of embedding national cryptographic algorithm support for the platform was proposed. Secondly, the modules and interfaces for SM2, SM3 and SM4 were added to BCCSP of the Fabric platform based on the open source code of national cryptographic algorithm implementation. Thirdly, the interface of cryptographic algorithm invoked by the upper layer of each component is associated to the interface of corresponding national cryptographic algorithms, which realized the invocation support of national cryptographic algorithm for the upper layer applications. Finally, the correctness and effectiveness of the embedded national cryptographic algorithm were verified by creating a fabric-gm test instance. And compared with the performances of the test instance built by the mirror of the native Fabric platform. The experimental results show that the embedded national cryptographic algorithm interfaces are corrected and the generated national cryptographic certificates are effective. Moreover, compared with the native Fabric platform, the network start up time increases by about 3%. In the millisecond unit, the transaction time cost increases by about one time, the dynamic certificate generation time increases by about 9%, and all the performance are within the acceptable range.
blockchain, Hyperledger Fabric, SM2, SM3, SM4
TP309.2
A
10.11959/j.issn.2096?109x.2021007
2020?05?24;
2020?09?18
阮樹驊,ruanshuhua@scu.edu.cn
國家自然科學(xué)基金(61802270);中央高?;A(chǔ)研究經(jīng)費(fèi)(SCU2018D018, 2019SCU12069)
The National Natural Science Foundation of China(61802270), The Fundamental Research Funds for the Central Universities (SCU2018D018, 2019SCU12069)
曹琪, 阮樹驊, 陳興蜀, 等. Hyperledger Fabric平臺的國密算法嵌入研究[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2021, 7(1): 65-75.
CAO Q, RUAN S H, CHEN X S, et al. Embedding of national cryptographic algorithm in Hyperledger Fabric[J]. Chinese Journal of Network and Information Security, 2021, 7(1): 65-75.
曹琪(1996? ),女,四川廣安人,四川大學(xué)碩士生,主要研究方向?yàn)閰^(qū)塊鏈安全及應(yīng)用、網(wǎng)絡(luò)行為分析。
阮樹驊(1966? ),女,浙江紹興人,四川大學(xué)副教授、碩士生導(dǎo)師,主要研究方向?yàn)樵朴?jì)算與大數(shù)據(jù)安全、區(qū)塊鏈安全。
陳興蜀(1968? ),女,貴州六枝人,博士,四川大學(xué)教授、博士生導(dǎo)師,主要研究方向?yàn)樵朴?jì)算與大數(shù)據(jù)安全、可信計(jì)算與信息保障。
蘭曉(1990? ),女, 四川自貢人,博士,四川大學(xué)助理研究員,主要研究方向?yàn)閼?yīng)用密碼學(xué)、安全多方計(jì)算、認(rèn)證密鑰協(xié)商協(xié)議、區(qū)塊鏈安全。
張紅霞(1996? ),女,河北邢臺人,四川大學(xué)碩士生,主要研究方向?yàn)閰^(qū)塊鏈安全及應(yīng)用、網(wǎng)絡(luò)行為分析。
金泓鍵(1996? ),男,重慶人,四川大學(xué)碩士生,主要研究方向?yàn)閰^(qū)塊鏈安全及應(yīng)用、大數(shù)據(jù)分析。