吳 琦 舒展翔 鄭 昌 余 祥
1.國防科技大學(xué)電子對(duì)抗學(xué)院 安徽合肥 230037 2.解放軍61428 部隊(duì) 北京 100072
區(qū)塊鏈技術(shù)作為一種具備去中心化、開放性、匿名性、不可抵賴性等特點(diǎn)的新型集成應(yīng)用技術(shù)[1-6],在金融、通信、醫(yī)療、政府管理等領(lǐng)域應(yīng)用廣泛,已成為各界研究的熱點(diǎn).2019年10月24日,習(xí)近平主席在中央政治局第十八次集體學(xué)習(xí)時(shí)強(qiáng)調(diào),把區(qū)塊鏈作為核心技術(shù)自主創(chuàng)新重要突破口.2019年7月9日,美國參議院商業(yè)、科學(xué)和運(yùn)輸委員會(huì)批準(zhǔn)了《區(qū)塊鏈促進(jìn)法》.該法案明確要求美國商務(wù)部為“區(qū)塊鏈”建立標(biāo)準(zhǔn)定義,以及建立新的法律框架,為未來新興技術(shù)的應(yīng)用提供指導(dǎo)及防范風(fēng)險(xiǎn).除此之外,德國聯(lián)邦政府在區(qū)塊鏈戰(zhàn)略中指出,區(qū)塊鏈技術(shù)是未來互聯(lián)網(wǎng)的基石,德國將進(jìn)一步鞏固在該領(lǐng)域的領(lǐng)先地位.為此,聯(lián)邦政府還制定了區(qū)塊鏈戰(zhàn)略實(shí)施指導(dǎo)原則和路線圖.但隨著區(qū)塊鏈技術(shù)普及,其所面臨的安全挑戰(zhàn)也日漸展露.諸如比特幣交易所被黑客攻擊、51%攻擊、協(xié)議漏洞等,給區(qū)塊鏈用戶帶來巨大損失的同時(shí),也極大地限制了區(qū)塊鏈技術(shù)的發(fā)展.
認(rèn)證技術(shù)[7]是在復(fù)雜網(wǎng)絡(luò)環(huán)境條件下,對(duì)用戶身份進(jìn)行確認(rèn)的一種技術(shù),是確保用戶誠實(shí)可信,從而建立可信任的網(wǎng)絡(luò)通信系統(tǒng)的關(guān)鍵技術(shù)手段,在信息安全領(lǐng)域具有重要的地位.常見的認(rèn)證方式有:基于口令的認(rèn)證、基于密碼學(xué)的認(rèn)證、基于生物特征的認(rèn)證.其中,基于密碼學(xué)的認(rèn)證技術(shù)采用密碼算法,由于其安全性高,被大量運(yùn)用于網(wǎng)絡(luò)安全領(lǐng)域.基于密碼學(xué)的認(rèn)證包括基于對(duì)稱密碼的認(rèn)證和基于非對(duì)稱密碼的認(rèn)證.隨著技術(shù)的不斷完善,在基于密碼學(xué)的認(rèn)證技術(shù)基礎(chǔ)上逐漸衍生出眾多應(yīng)用廣泛的認(rèn)證機(jī)制.
多數(shù)區(qū)塊鏈系統(tǒng)是用公鑰地址來代替用戶的真實(shí)身份,用戶可以根據(jù)需要來公開部分信息,從而實(shí)現(xiàn)對(duì)用戶隱私信息的保護(hù).但在某些情況下,由于系統(tǒng)過強(qiáng)的匿名性使得區(qū)塊鏈用戶難以監(jiān)管,以致于發(fā)生惡意節(jié)點(diǎn)接入、用戶越權(quán)操作等安全威脅事件,產(chǎn)生重大損失.因此,區(qū)塊鏈系統(tǒng)的認(rèn)證機(jī)制一直是區(qū)塊鏈的重點(diǎn)研究方向之一.文獻(xiàn)[8]提出了基于區(qū)塊鏈的生物特征與口令雙因子跨域認(rèn)證方案,采用模糊提取技術(shù)提取用戶生物特征產(chǎn)生隨機(jī)密鑰參與認(rèn)證.文獻(xiàn)[9]基于區(qū)塊鏈和DNS 安全擴(kuò)展(domain name system security extensions,DNSSEC)技術(shù),提出了一種新的身份認(rèn)證模型,相比于文獻(xiàn)[8]降低了證書認(rèn)證機(jī)制對(duì)認(rèn)證中心(certificate authority,CA)的依賴性.文獻(xiàn)[10]采用匿名認(rèn)證、群簽名和零知識(shí)證明技術(shù)對(duì)PKI(public key infrastructure)機(jī)制進(jìn)行了改進(jìn),在傳統(tǒng)認(rèn)證過程中引入了監(jiān)管機(jī)制,同時(shí)對(duì)用戶的匿名證書信息進(jìn)行選擇性的隱匿,解決了CA 證書信息過于暴露以及用戶難以監(jiān)管的問題,但監(jiān)管機(jī)制會(huì)耗費(fèi)CA 中心較多資源,降低工作效率.文獻(xiàn)[11]提出一種基于區(qū)塊鏈的信息系統(tǒng)數(shù)據(jù)保護(hù)技術(shù),利用區(qū)塊鏈的多鏈結(jié)構(gòu)對(duì)節(jié)點(diǎn)進(jìn)行權(quán)限劃分,只有擁有相應(yīng)權(quán)限的節(jié)點(diǎn)才能對(duì)數(shù)據(jù)進(jìn)行訪問與操作,進(jìn)而通過數(shù)據(jù)保護(hù),實(shí)現(xiàn)信息系統(tǒng)數(shù)據(jù)的高安全性.文獻(xiàn)[12]利用區(qū)塊鏈的多鏈技術(shù)對(duì)用戶權(quán)限進(jìn)行管理,不同權(quán)限的用戶在對(duì)信息系統(tǒng)數(shù)據(jù)進(jìn)行處理時(shí),在操作層面上實(shí)現(xiàn)隔離,從而提高系統(tǒng)的安全性.文獻(xiàn)[13]提出通過基于區(qū)塊鏈的認(rèn)證技術(shù),對(duì)軍事數(shù)據(jù)進(jìn)行簽名和驗(yàn)證,進(jìn)而保證軍事信息的安全可靠.文獻(xiàn)[14]指出將區(qū)塊鏈技術(shù)應(yīng)用于軍事指揮、軍事信息系統(tǒng)、無人機(jī)集群等領(lǐng)域,發(fā)揮區(qū)塊鏈技術(shù)的軍事效能.
目前在區(qū)塊鏈系統(tǒng)中使用較多的認(rèn)證機(jī)制有PKI 機(jī)制、IBC(identity based cryptograph)機(jī)制等.PKI機(jī)制與IBC 機(jī)制都是基于公鑰密碼算法的認(rèn)證機(jī)制.PKI 機(jī)制是利用CA 中心生成的安全證書來實(shí)現(xiàn)其認(rèn)證功能;IBC 機(jī)制是依據(jù)一個(gè)可信的密鑰產(chǎn)生中心(key generate center,KGC)來生成密鑰,通過安全通信將密鑰分發(fā)給用戶,通過對(duì)用戶簽名的消息進(jìn)行驗(yàn)證來認(rèn)證用戶的身份.但是上述兩種認(rèn)證機(jī)制均需要依賴一個(gè)可信的第三方(CA 或KGC),而第三方容易受到黑客攻擊導(dǎo)致信息泄漏等安全問題,且經(jīng)由第三方提供的憑證進(jìn)行身份確認(rèn),無法防范用戶入網(wǎng)后的惡意破壞,并且這種中心化的服務(wù)與區(qū)塊鏈技術(shù)去中心化的思想相違背,在一定程度上制約了區(qū)塊鏈的發(fā)展.
針對(duì)傳統(tǒng)認(rèn)證體制存在的可信第三方(CA 或KGC)易受攻擊、核心技術(shù)非國產(chǎn)自主可控等安全問題,本文考慮將國產(chǎn)自主可控CFL 認(rèn)證機(jī)制應(yīng)用到區(qū)塊鏈系統(tǒng)中.CFL 認(rèn)證機(jī)制[15-17]是國內(nèi)知名專家陳華平、范修斌、呂述望3 人研發(fā)的一種基于標(biāo)識(shí)的證書認(rèn)證機(jī)制(CFL 為3 個(gè)發(fā)明人的姓名拼音縮寫),在2011年首次提出,并于2016年通過了國家密碼管理局的審查.CFL 認(rèn)證機(jī)制相較于傳統(tǒng)PKI 和IBC 認(rèn)證機(jī)制,具有去中心化、去存儲(chǔ)化、動(dòng)態(tài)認(rèn)證、核心技術(shù)自主可控等優(yōu)勢(shì),能夠在區(qū)塊鏈系統(tǒng)中更好地發(fā)揮安全認(rèn)證功能.
區(qū)塊鏈系統(tǒng)的認(rèn)證機(jī)制主要包括: 節(jié)點(diǎn)認(rèn)證、用戶身份認(rèn)證和用戶權(quán)限的管理機(jī)制.本文主要從區(qū)塊鏈系統(tǒng)的節(jié)點(diǎn)認(rèn)證方向出發(fā),介紹區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)間互認(rèn)機(jī)制與CFL 認(rèn)證機(jī)制過程,研究基于CFL 機(jī)制的區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)間互認(rèn)機(jī)制,通過實(shí)驗(yàn)研究CFL認(rèn)證機(jī)制在區(qū)塊鏈系統(tǒng)的可行性,從而為區(qū)塊鏈系統(tǒng)的應(yīng)用與發(fā)展提供一定的理論支撐.
區(qū)塊鏈系統(tǒng)是在P2P 對(duì)等網(wǎng)絡(luò)的基礎(chǔ)上建立起來的,區(qū)塊鏈系統(tǒng)的節(jié)點(diǎn)是指區(qū)塊鏈網(wǎng)絡(luò)中參與通信的計(jì)算機(jī)或終端等設(shè)備.區(qū)塊鏈系統(tǒng)的節(jié)點(diǎn)互認(rèn)機(jī)制是指通過數(shù)字簽名等技術(shù)對(duì)構(gòu)成網(wǎng)絡(luò)節(jié)點(diǎn)的身份安全性進(jìn)行認(rèn)證.通過認(rèn)證,可以防止惡意節(jié)點(diǎn)入網(wǎng),有利于構(gòu)建節(jié)點(diǎn)間安全可信任的網(wǎng)絡(luò)環(huán)境.
區(qū)塊鏈系統(tǒng)按照系統(tǒng)是否具有節(jié)點(diǎn)準(zhǔn)入機(jī)制,可分類為許可區(qū)塊鏈和非許可區(qū)塊鏈.許可鏈根據(jù)擁有控制權(quán)限的主體是否集中可分為聯(lián)盟鏈和私有鏈,其節(jié)點(diǎn)的加入與退出需要區(qū)塊鏈系統(tǒng)的許可;而非許可鏈則是完全開放的,也稱為公有鏈,節(jié)點(diǎn)可以自由地加入和退出.
許可區(qū)塊鏈系統(tǒng)中引入可信任的第三方作為證書發(fā)布中心CA,使用可信第三方頒發(fā)的證書來實(shí)現(xiàn)對(duì)等節(jié)點(diǎn)間的認(rèn)證.
文獻(xiàn)[18]提出一種基于數(shù)字證書以及CA 認(rèn)證體系的聯(lián)盟鏈權(quán)限控制方法.該方法針對(duì)傳統(tǒng)區(qū)塊鏈系統(tǒng)權(quán)限粒度大且準(zhǔn)入機(jī)制不完善的缺陷,采用準(zhǔn)入證書、角色證書以及交易證書3 種證書,來分別實(shí)現(xiàn)節(jié)點(diǎn)準(zhǔn)入、角色認(rèn)證和交易驗(yàn)證3 種權(quán)限的管理.節(jié)點(diǎn)使用CA 頒發(fā)的準(zhǔn)入證書來進(jìn)行入網(wǎng)認(rèn)證,實(shí)現(xiàn)了對(duì)惡意節(jié)點(diǎn)的識(shí)別,提高了區(qū)塊鏈系統(tǒng)的安全性.
文獻(xiàn)[19]在私有鏈中采用基于量子密碼水印的認(rèn)證機(jī)制來認(rèn)證誠實(shí)節(jié)點(diǎn)的接入.該機(jī)制使用量子通信技術(shù)產(chǎn)生具有真隨機(jī)性的安全密碼,同時(shí)結(jié)合具有唯一性和穩(wěn)定性的指紋識(shí)別技術(shù),極大地降低了非誠實(shí)節(jié)點(diǎn)入網(wǎng)的可能性;并且由于對(duì)部分或全部接入節(jié)點(diǎn)的誠實(shí)性的認(rèn)證,可以使得區(qū)塊鏈系統(tǒng)內(nèi)部部分或全部節(jié)點(diǎn)可信.
文獻(xiàn)[20]針對(duì)傳統(tǒng)遠(yuǎn)程證明模型在分布式網(wǎng)絡(luò)中存在的中心化、單點(diǎn)化等問題,提出了基于區(qū)塊鏈的遠(yuǎn)程證明模型(remote attestation based on blockchain,RABBC).該模型通過對(duì)Dolev-Yao 威脅模型[21]的安全性分析,在入網(wǎng)節(jié)點(diǎn)中引入可信平臺(tái)模塊(trusted piatfom moudule,TPM),根據(jù)節(jié)點(diǎn)提供的自身的TPM標(biāo)識(shí),生成匿名身份證書,進(jìn)而實(shí)現(xiàn)對(duì)節(jié)點(diǎn)的身份認(rèn)證.
非許可區(qū)塊鏈建立在P2P 對(duì)等網(wǎng)絡(luò)的基礎(chǔ)上,節(jié)點(diǎn)可以自由加入或退出而不受系統(tǒng)的控制.因此,在非許可鏈中,無法通過引入可信第三方來對(duì)節(jié)點(diǎn)接入與否進(jìn)行認(rèn)證.但在P2P 網(wǎng)絡(luò)中,為防止惡意節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)安全進(jìn)行破壞,仍需采用其他方法對(duì)節(jié)點(diǎn)的安全性進(jìn)行認(rèn)證.
文獻(xiàn)[22]指出在非許可區(qū)塊鏈系統(tǒng)中,節(jié)點(diǎn)認(rèn)證方式可包括行為模式檢測(cè)與信任關(guān)系建立兩種.其中行為檢測(cè)方法通過對(duì)節(jié)點(diǎn)行為的監(jiān)測(cè),發(fā)現(xiàn)節(jié)點(diǎn)是否存在惡意行為,并建立惡意節(jié)點(diǎn)名單,進(jìn)而避免惡意節(jié)點(diǎn)接入.信任關(guān)系建立方法在對(duì)節(jié)點(diǎn)的信任度進(jìn)行評(píng)估分析后,依據(jù)節(jié)點(diǎn)間信任程度進(jìn)行信任關(guān)系的建立,從而決定節(jié)點(diǎn)的入網(wǎng)與否.上述兩種方式提高了節(jié)點(diǎn)入網(wǎng)的難度,使惡意節(jié)點(diǎn)接入的可能性得以降低.
文獻(xiàn)[23]根據(jù)假設(shè)在解離散對(duì)數(shù)和大數(shù)分解困難條件下,針對(duì)Kim 等人方案中存在Sybil 攻擊和合謀攻擊風(fēng)險(xiǎn)[24],提出了一種適合P2P 網(wǎng)絡(luò)的準(zhǔn)入控制方案.節(jié)點(diǎn)在申請(qǐng)入網(wǎng)時(shí),先將申請(qǐng)信息在網(wǎng)絡(luò)中廣播,已在網(wǎng)絡(luò)中的可信節(jié)點(diǎn)先對(duì)該節(jié)點(diǎn)申請(qǐng)信息的有效性進(jìn)行驗(yàn)證,通過后再判斷該節(jié)點(diǎn)是否符合P2P 網(wǎng)絡(luò)的安全要求.申請(qǐng)節(jié)點(diǎn)在獲得一定閾值的可信節(jié)點(diǎn)“信任”后,方可成為該網(wǎng)絡(luò)的可信節(jié)點(diǎn).
文獻(xiàn)[25]提出了一種基于行為模式聚類的方法對(duì)區(qū)塊鏈節(jié)點(diǎn)進(jìn)行識(shí)別.在將常用的長度計(jì)算方法進(jìn)行比較之后,針對(duì)性地提出關(guān)于區(qū)塊鏈聚類的BPC(behavior pattem clustering,BPC)算法,并依據(jù)區(qū)塊鏈節(jié)點(diǎn)的行為使用DTW 長度進(jìn)行聚類.通過實(shí)驗(yàn)驗(yàn)證,該方案能夠在區(qū)塊鏈網(wǎng)絡(luò)中識(shí)別并過濾惡意節(jié)點(diǎn),提高區(qū)塊鏈網(wǎng)絡(luò)的安全性.
綜上所述,目前在區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)間認(rèn)證的方法主要是:1)通過引入可信第三方來為節(jié)點(diǎn)生成相應(yīng)的身份證書參與認(rèn)證過程,從而對(duì)節(jié)點(diǎn)進(jìn)行驗(yàn)證;2)基于行為模式檢測(cè)、信任關(guān)系建立等方法對(duì)節(jié)點(diǎn)的可信度進(jìn)行識(shí)別與評(píng)估,進(jìn)而判斷節(jié)點(diǎn)的安全性.但是上述認(rèn)證方法仍存在以下問題:1)在行為檢測(cè)與信任關(guān)系建立過程中,需要大量節(jié)點(diǎn)信息作為判斷依據(jù),對(duì)計(jì)算資源的占用較大;2)在證書認(rèn)證機(jī)制中,證書由可信第三方頒發(fā)給各節(jié)點(diǎn)進(jìn)行認(rèn)證,但不排除節(jié)點(diǎn)入網(wǎng)后存在惡意操作的情況發(fā)生,因此,證書認(rèn)證機(jī)制的安全性仍需進(jìn)一步加強(qiáng).
基于CFL 的區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)互認(rèn)機(jī)制是指使用CFL 認(rèn)證機(jī)制替代傳統(tǒng)的PKI 機(jī)制或IBC 機(jī)制,對(duì)節(jié)點(diǎn)的身份進(jìn)行安全認(rèn)證.CFL 認(rèn)證機(jī)制是在傳統(tǒng)證書認(rèn)證機(jī)制和標(biāo)識(shí)認(rèn)證機(jī)制的基礎(chǔ)上,彌補(bǔ)這兩種認(rèn)證機(jī)制的不足,并結(jié)合它們的優(yōu)勢(shì)發(fā)展出來的一種自主可控的認(rèn)證機(jī)制.該機(jī)制基于SM2、SM3 密碼算法生成CFL 證書來參與認(rèn)證過程.SM2 算法用于產(chǎn)生公私鑰對(duì),進(jìn)而對(duì)信息進(jìn)行簽名與驗(yàn)證.SM3 算法實(shí)現(xiàn)哈希算法的功能,對(duì)信息進(jìn)行數(shù)字簽名,從而可以壓縮信息的長度.SM2、SM3 密碼算法的引入使得CFL 認(rèn)證機(jī)制具備了較強(qiáng)的自主可控性.
CFL 認(rèn)證由用戶端、驗(yàn)證端以及CFL 發(fā)證機(jī)關(guān)3部分實(shí)體參與認(rèn)證過程,如圖1所示.用戶端隨機(jī)生成一組工作公私鑰對(duì),將自身標(biāo)識(shí)信息發(fā)送給CFL發(fā)證機(jī)關(guān)申請(qǐng)用戶CFL 證書;發(fā)證機(jī)關(guān)擁有一組種子公私鑰序列,基于用戶端標(biāo)識(shí)信息從序列中控選產(chǎn)生相應(yīng)的標(biāo)識(shí)公私鑰組合,使用該私鑰對(duì)用戶信息進(jìn)行簽名得到用戶端CFL 靜態(tài)證書,并將該證書頒發(fā)給用戶端;驗(yàn)證端則通過對(duì)發(fā)起端用戶的證書進(jìn)行驗(yàn)證從而對(duì)發(fā)起端用戶進(jìn)行認(rèn)證.
在區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)中,按照是否已經(jīng)完成網(wǎng)絡(luò)準(zhǔn)入可以分為:
1)成員節(jié)點(diǎn):已經(jīng)加入?yún)^(qū)塊鏈通信網(wǎng)絡(luò)的節(jié)點(diǎn).成員節(jié)點(diǎn)可以與區(qū)塊鏈網(wǎng)絡(luò)中其他節(jié)點(diǎn)進(jìn)行通信、事務(wù)處理、區(qū)塊交易等,并能夠?qū)ι形催M(jìn)入網(wǎng)絡(luò)的節(jié)點(diǎn)進(jìn)行認(rèn)證.
2)游離節(jié)點(diǎn):沒有加入?yún)^(qū)塊鏈網(wǎng)絡(luò)的節(jié)點(diǎn).游離節(jié)點(diǎn)尚未通過節(jié)點(diǎn)準(zhǔn)入機(jī)制的認(rèn)證,不參與節(jié)點(diǎn)間通信和區(qū)塊交易等.
除此之外,無論是成員節(jié)點(diǎn)還是游離節(jié)點(diǎn)都可以與區(qū)塊鏈系統(tǒng)發(fā)證機(jī)關(guān)進(jìn)行通信,可以從發(fā)證機(jī)關(guān)處獲得身份證書用于節(jié)點(diǎn)入網(wǎng)時(shí)與其他節(jié)點(diǎn)進(jìn)行相互認(rèn)證.游離節(jié)點(diǎn)的CFL 認(rèn)證過程可分為3 個(gè)階段:CFL 證書申請(qǐng)簽發(fā)、CFL 證書動(dòng)態(tài)認(rèn)證以及認(rèn)證成功后CFL 證書的注銷,其流程圖如圖2所示.在以下過程中,游離節(jié)點(diǎn)作為用戶端,成員節(jié)點(diǎn)作為驗(yàn)證端.
游離節(jié)點(diǎn)在此階段需向區(qū)塊鏈系統(tǒng)CFL 發(fā)證機(jī)關(guān)申請(qǐng)CFL 靜態(tài)證書,其流程圖如圖3所示.
CFL 證書申請(qǐng)簽發(fā)算法:
Step 1:用戶端使用SM2 密碼算法隨機(jī)生成一組工作公私鑰對(duì),作為本節(jié)點(diǎn)私有資源存儲(chǔ)在本地.
Step 2:用戶端創(chuàng)建證書申請(qǐng)信息,其中,包含節(jié)點(diǎn)自身標(biāo)識(shí)、工作公鑰和工作私鑰,使用工作私鑰對(duì)其簽名信息進(jìn)行解密,通過安全套接層(secure sockets layer,SSL)協(xié)議將該申請(qǐng)信息發(fā)送給CFL 發(fā)證機(jī)關(guān).
Step 3:CFL 發(fā)證機(jī)關(guān)在接收到來自用戶端的申請(qǐng)信息后,先通過其工作公鑰驗(yàn)證簽名的有效性,若驗(yàn)證不通過則此次申請(qǐng)失敗.
Step 4:Step 3 中驗(yàn)證通過后,基于用戶標(biāo)識(shí)信息在發(fā)證機(jī)關(guān)的多組種子公私鑰組合中控選生成該用戶端的標(biāo)識(shí)公私鑰組合.
Step 5:將接收到的用戶標(biāo)識(shí)、用戶工作公鑰、工作私鑰簽名信息以及標(biāo)識(shí)公鑰、標(biāo)識(shí)私鑰簽名信息、證書有效時(shí)間簽入證書中,生成用戶端CFL 靜態(tài)證書,并通過安全信道頒發(fā)給用戶端.
Step 6:用戶端接收CFL 靜態(tài)證書并存儲(chǔ)在本地,完成CFL 證書申請(qǐng)簽發(fā)過程.
游離節(jié)點(diǎn)在加入?yún)^(qū)塊鏈網(wǎng)絡(luò)前,需要與已經(jīng)加入網(wǎng)絡(luò)的成員節(jié)點(diǎn)進(jìn)行相互認(rèn)證.本階段游離節(jié)點(diǎn)與成員節(jié)點(diǎn)都擁有CFL 發(fā)證機(jī)關(guān)頒發(fā)的各自的CFL 靜態(tài)證書,且通過安全信道進(jìn)行通信.動(dòng)態(tài)認(rèn)證階段流程圖如圖4所示.
CFL 證書動(dòng)態(tài)認(rèn)證算法:
Step 1:用戶端先產(chǎn)生一個(gè)隨機(jī)數(shù),使用工作私鑰對(duì)證書簽名,將隨機(jī)數(shù)、工作私鑰簽名值、時(shí)間戳加入證書生成CFL 動(dòng)態(tài)證書.
Step 2:用戶將CFL 動(dòng)態(tài)證書發(fā)送給驗(yàn)證端進(jìn)行認(rèn)證.
Step 3:驗(yàn)證端接收用戶端CFL 動(dòng)態(tài)證書,對(duì)用戶端的身份進(jìn)行認(rèn)證,詳細(xì)步驟如下.
Step 3.1:根據(jù)證書中的用戶工作公鑰對(duì)用戶標(biāo)識(shí)及其簽名信息有效性進(jìn)行驗(yàn)證,若驗(yàn)證通過,則進(jìn)行下一步;否則驗(yàn)證失敗.
Step 3.2:根據(jù)證書中的用戶標(biāo)識(shí)公鑰對(duì)CFL 發(fā)證機(jī)關(guān)用標(biāo)識(shí)私鑰簽名的信息進(jìn)行驗(yàn)證,若驗(yàn)證失敗則結(jié)束認(rèn)證,驗(yàn)證成功則進(jìn)行下一步.
Step 3.3:再使用工作公鑰對(duì)證書的動(dòng)態(tài)簽名值進(jìn)行驗(yàn)證,若通過則用戶端認(rèn)證成功,否則認(rèn)證失敗.
Step 4:按照Step 1 步驟同樣操作,驗(yàn)證端生成自身的CFL 動(dòng)態(tài)證書.
Step 5:驗(yàn)證端將自己的CFL 動(dòng)態(tài)證書發(fā)送給用戶端進(jìn)行互認(rèn)證.
Step 6:用戶端按Step 3.1、Step 3.2、Step 3.3 步驟對(duì)驗(yàn)證端CFL 動(dòng)態(tài)證書各項(xiàng)信息進(jìn)行驗(yàn)證,認(rèn)證驗(yàn)證端的有效性.
Step 7:若用戶端對(duì)驗(yàn)證端認(rèn)證有效后,將自身CFL 動(dòng)態(tài)證書恢復(fù)為靜態(tài)證書,動(dòng)態(tài)認(rèn)證過程結(jié)束.
3)CFL 證書注銷
在節(jié)點(diǎn)CFL 動(dòng)態(tài)認(rèn)證結(jié)束后,為保證認(rèn)證過程的動(dòng)態(tài)性,本次認(rèn)證所用的CFL 動(dòng)態(tài)證書將被注銷.如若需要與其他節(jié)點(diǎn)在進(jìn)行認(rèn)證,則需重新進(jìn)行證書申請(qǐng).CFL 動(dòng)態(tài)證書注銷階段流程圖如圖5所示.
CFL 證書注銷算法:
Step 1:用戶端將CFL 動(dòng)態(tài)證書,用工作私鑰對(duì)撤銷申請(qǐng)的簽名信息進(jìn)行加密再發(fā)送給CFL 發(fā)證機(jī)關(guān).
Step 2:CFL 發(fā)證機(jī)關(guān)在接收到用戶端信息后,依據(jù)階段2)中Step 3.1、Step 3.2、Step 3.3 步驟對(duì)用戶端信息有效性進(jìn)行驗(yàn)證,如驗(yàn)證不通過,則此次通信結(jié)束.
Step 3:在用戶端信息驗(yàn)證成功后,對(duì)證書撤銷信息用用戶端對(duì)應(yīng)的標(biāo)識(shí)私鑰簽名,并簽入證書中.
Step 4:CFL 發(fā)證機(jī)關(guān)將用戶端CFL 撤銷證書發(fā)送給用戶端.
Step 5:用戶端接收到CFL 撤銷證書,自此用戶端的CFL 證書已經(jīng)注銷,其CFL 證書將不具有認(rèn)證功能.
在經(jīng)過上述3 個(gè)階段后,若游離節(jié)點(diǎn)成功通過認(rèn)證,則其將作為可信節(jié)點(diǎn)加入?yún)^(qū)塊鏈網(wǎng)絡(luò)中,并能夠與其他成員節(jié)點(diǎn)進(jìn)行通信、區(qū)塊交易等操作.
基于上述CFL 證書申請(qǐng)簽發(fā)、動(dòng)態(tài)認(rèn)證以及注銷算法,在經(jīng)典的fabric 區(qū)塊鏈系統(tǒng)中,設(shè)計(jì)證書簽發(fā)過程、證書驗(yàn)證過程以及證書撤銷過程共15 個(gè)接口函數(shù),在基于CFL 的fabric 系統(tǒng)節(jié)點(diǎn)互認(rèn)的實(shí)現(xiàn)中作為接口模塊,接口函數(shù)如表1所示.
表1 fabric 區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)認(rèn)證接口函數(shù)Table 1 Authentication interface functions of fabric blockchain system nodes
在Hyperledger Fabric 環(huán)境下,對(duì)基于CFL認(rèn)證的節(jié)點(diǎn)認(rèn)證機(jī)制進(jìn)行實(shí)驗(yàn),以此驗(yàn)證CFL 認(rèn)證機(jī)制在區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)互認(rèn)時(shí)的可行性.Fabric 區(qū)塊鏈系統(tǒng)引入可信第三方fabric-CA[27],區(qū)塊鏈節(jié)點(diǎn)通過fabric-CA 頒發(fā)的身份證書進(jìn)行節(jié)點(diǎn)間互相認(rèn)證.實(shí)驗(yàn)使用CFL 發(fā)證機(jī)關(guān)代替fabric-CA,實(shí)現(xiàn)其證書簽發(fā)、注銷等功能.實(shí)驗(yàn)使用Go 語言來編碼實(shí)現(xiàn)CFL 動(dòng)態(tài)認(rèn)證的過程.在fabric 區(qū)塊鏈系統(tǒng)中,節(jié)點(diǎn)認(rèn)證可由普通對(duì)等節(jié)點(diǎn)peer 節(jié)點(diǎn)與用戶端節(jié)點(diǎn)client 節(jié)點(diǎn)進(jìn)行信息交互.
Fabric 區(qū)塊鏈網(wǎng)絡(luò)環(huán)境拓?fù)淙鐖D6所示,由一臺(tái)計(jì)算機(jī)作為client 節(jié)點(diǎn),另一臺(tái)計(jì)算機(jī)作為已加入fabric 網(wǎng)絡(luò)的peer 節(jié)點(diǎn).還有一臺(tái)計(jì)算機(jī)模擬CFL 發(fā)證機(jī)關(guān),用于實(shí)現(xiàn)證書簽發(fā)、撤銷等功能.并且已建立主要由區(qū)塊鏈系統(tǒng)Hyperledger Fabric(v1.0)、Docker虛擬容器、Golang(v1.8)編譯器等構(gòu)成的滿足基于CFL認(rèn)證機(jī)制的區(qū)塊鏈認(rèn)證系統(tǒng)開發(fā)的集成開發(fā)環(huán)境.
實(shí)驗(yàn)基于表1接口函數(shù),在fabric 區(qū)塊鏈環(huán)境下,client 節(jié)點(diǎn)向CFL 發(fā)證機(jī)關(guān)申請(qǐng)CFL 證書,如圖7所示.根據(jù)第3 部分中所述CFL 動(dòng)態(tài)認(rèn)證過程,在client 節(jié)點(diǎn)與peer 節(jié)點(diǎn)間進(jìn)行相互驗(yàn)證,最后在驗(yàn)證過程后將各自證書恢復(fù)成靜態(tài)證書.為驗(yàn)證證書撤銷的結(jié)果,在證書驗(yàn)證后對(duì)證書進(jìn)行撤銷,然后檢驗(yàn)證書是否已經(jīng)失去效用.驗(yàn)證過程如圖8~圖9所示.
在上述過程中,節(jié)點(diǎn)通過對(duì)CFL 靜態(tài)證書的申請(qǐng)、動(dòng)態(tài)證書的發(fā)送及驗(yàn)證過程最終被驗(yàn)證端成功認(rèn)證,動(dòng)態(tài)地證明了節(jié)點(diǎn)自身身份的合法性.根據(jù)最終實(shí)驗(yàn)結(jié)果分析,CFL 認(rèn)證機(jī)制在fabric 區(qū)塊鏈系統(tǒng)中可以替代傳統(tǒng)證書認(rèn)證機(jī)制,并在區(qū)塊鏈節(jié)點(diǎn)互認(rèn)過程中發(fā)揮作用.在此過程中,CFL 發(fā)證機(jī)關(guān)不直接參與證書驗(yàn)證過程,滿足了去中心化的需求;CFL 動(dòng)態(tài)證書由用戶端自生成,且動(dòng)態(tài)恢復(fù),體現(xiàn)了其去存儲(chǔ)化、動(dòng)態(tài)認(rèn)證的特性;驗(yàn)證過程需要經(jīng)過3 次有效性檢驗(yàn),提高了對(duì)節(jié)點(diǎn)的安全性檢驗(yàn)門限,可以有效地降低惡意節(jié)點(diǎn)入網(wǎng)的可能性.因此,CFL 認(rèn)證機(jī)制區(qū)塊鏈系統(tǒng)中能夠較好地實(shí)現(xiàn)安全認(rèn)證的功能.
驗(yàn)證是對(duì)CFL 認(rèn)證機(jī)制的安全性和認(rèn)證效率的驗(yàn)證;分析是對(duì)CFL 認(rèn)證機(jī)制與傳統(tǒng)的PKI 認(rèn)證機(jī)制的分析比較.從安全根角度對(duì)兩種認(rèn)證機(jī)制的安全性進(jìn)行驗(yàn)證,使用Hyperledger-Caliper 工具對(duì)兩種機(jī)制的認(rèn)證效率進(jìn)行分析,總結(jié)得出兩種認(rèn)證機(jī)制的差異.
PKI 認(rèn)證機(jī)制的用戶與證書生成中心都只有一個(gè)安全根,其安全性取決于生成安全根的簽名驗(yàn)證算法對(duì)應(yīng)的數(shù)學(xué)難題的破解難度.攻擊方只要解開PKI機(jī)制的簽名驗(yàn)證算法的數(shù)學(xué)難題,就可以徹底破解PKI 證書生成機(jī)制.然而目前大多數(shù)PKI 機(jī)制的簽名驗(yàn)證算法對(duì)應(yīng)的數(shù)學(xué)難題為離散對(duì)數(shù)難題或大數(shù)分解難題,在當(dāng)前的超算水平下,已經(jīng)存在較大的安全風(fēng)險(xiǎn),不能為用戶提供安全的可信認(rèn)證.
CFL 認(rèn)證機(jī)制存在L 個(gè)安全根,攻擊者只有對(duì)L個(gè)安全根對(duì)應(yīng)的數(shù)學(xué)難題完全破解,才能攻克CFL認(rèn)證機(jī)制.因此,CFL 機(jī)制的破解難度是PKI 機(jī)制的L 倍.當(dāng)L 的取值足夠大時(shí),能夠使CFL 認(rèn)證機(jī)制在現(xiàn)實(shí)中不可破.而目前CFL 機(jī)制的安全根為8 192個(gè),其取值已經(jīng)可以滿足CFL 機(jī)制現(xiàn)實(shí)不可破的需求.
綜上所述,CFL 認(rèn)證機(jī)制相較于PKI 認(rèn)證機(jī)制,在安全根的破解難度上有了極大的提高.因此,相比PKI 機(jī)制,可以認(rèn)為CFL 認(rèn)證機(jī)制能夠?yàn)橛脩籼峁└踩恼J(rèn)證.
在Hyperledger Fabric 的區(qū)塊鏈系統(tǒng)環(huán)境中使用Hyperledger-Caliper[26]工具,針對(duì)不同的區(qū)塊鏈?zhǔn)聞?wù)產(chǎn)生速率,對(duì)PKI 認(rèn)證和CFL 認(rèn)證兩種方案的工作效率進(jìn)行實(shí)驗(yàn)測(cè)試.在測(cè)試中,設(shè)定區(qū)塊鏈?zhǔn)聞?wù)產(chǎn)生速率分別為50 TPS,100 TPS,150 TPS,200 TPS,250 TPS,300 TPS;設(shè)置種子密鑰對(duì)長度為CFL 可信根個(gè)數(shù)8 192;設(shè)置區(qū)塊鏈?zhǔn)聞?wù)數(shù)據(jù)包的總長度為5 000,單位區(qū)塊的大小為512 KB.以10 輪測(cè)試為一組,計(jì)算平均值.測(cè)試結(jié)果如圖10和圖11所示.
由圖10和圖11可以得出,兩種方案在相同的事務(wù)產(chǎn)生速率情況下,CFL 方案的系統(tǒng)吞吐量低于PKI方案,CFL 方案的系統(tǒng)延遲高于PKI 方案.
經(jīng)分析,CFL 方案相比于PKI 方案,系統(tǒng)吞吐量低和系統(tǒng)延遲高的原因是CFL 認(rèn)證過程進(jìn)行了多次驗(yàn)證,且CFL 認(rèn)證是動(dòng)態(tài)認(rèn)證.因此,可以認(rèn)為CFL認(rèn)證機(jī)制的工作效率與PKI 機(jī)制相比,有一定程度的降低.
綜合4.1,4.2 驗(yàn)證可得,雖然CFL 認(rèn)證機(jī)制相比PKI 機(jī)制在工作效率方面有所下降,但CFL 認(rèn)證能向用戶提供更加安全的認(rèn)證.而且,CFL 機(jī)制在工作效率上的延遲平均不超過0.5 s,在可接受的范圍內(nèi).所以,可以認(rèn)為在當(dāng)前網(wǎng)絡(luò)環(huán)境下,CFL 認(rèn)證機(jī)制要比PKI 認(rèn)證機(jī)制更符合實(shí)現(xiàn)用戶認(rèn)證安全的要求.
通過對(duì)自主可控、具有自主知識(shí)產(chǎn)權(quán)的CFL 認(rèn)證機(jī)制的研究,建立了基于CFL 認(rèn)證機(jī)制的區(qū)塊鏈系統(tǒng)節(jié)點(diǎn)的互認(rèn)機(jī)制,實(shí)現(xiàn)了fabric 區(qū)塊鏈系統(tǒng)的CFL 節(jié)點(diǎn)的互認(rèn),驗(yàn)證了CFL 認(rèn)證機(jī)制的安全性和效率.下一步將對(duì)區(qū)塊鏈系統(tǒng)中CFL 認(rèn)證機(jī)制的認(rèn)證效率的優(yōu)化問題、基于CFL 認(rèn)證的密鑰協(xié)商與數(shù)據(jù)加密協(xié)議等問題進(jìn)行研究,進(jìn)一步提高區(qū)塊鏈節(jié)點(diǎn)安全可靠交互認(rèn)證的能力.