黃逸翔,王亞威,陳文軒,張子蛟
(1.鄭州大學(xué) 軟件學(xué)院,河南 鄭州 450000;2. 鄭州大學(xué) 網(wǎng)絡(luò)管理中心,河南 鄭州 450000)
由于計算機只能通過識別用戶的數(shù)字身份來進行身份驗證,所有對用戶的授權(quán)操作都依賴于針對用戶數(shù)字身份的授權(quán)[1]。身份認證技術(shù)就起到了決定性作用。公鑰基礎(chǔ)設(shè)施(public key infrastructure,PKI)作為互聯(lián)網(wǎng)安全基礎(chǔ)設(shè)施,從多個方面為身份驗證提供安全服務(wù)。文獻[2]闡明了PKI提供安全保障服務(wù)的完整過程。對數(shù)字證書的集中管理,進行在證書頒發(fā)機構(gòu)(certificate authority,CA)上。CA是證書的簽發(fā)機構(gòu),它是PKI的核心,是信任的起點。認證中心CA進行證書簽發(fā)、證書更新、證書撤銷等操作,并負責(zé)定期將過期證書發(fā)布到證書廢除列表CRL中[3]。它為每個使用公開密鑰的用戶發(fā)放一個數(shù)字證書,該證書是不能偽造和篡改的。信任某CA所頒發(fā)的數(shù)字證書的前提是信任該CA。
但是,由于傳統(tǒng)PKI體系結(jié)構(gòu)是樹形結(jié)構(gòu)的,在特定應(yīng)用中PKI技術(shù)存在一些缺陷。處于核心地位的CA顯得十分薄弱,一旦遭受攻擊,CA根證書以及該CA已經(jīng)簽發(fā)的證書都不能再作為信任錨點,各種單點故障問題暴露無遺。同時用戶配置證書和安裝證書到目標設(shè)備過程極其復(fù)雜,在需要批量配置時效率極低,要求極高的成本和管理開銷。當(dāng)用戶涉及到多個CA的時候,不同CA之間的無法驗證的問題又使得用戶操作變得十分繁瑣,存在多CA互信難的問題。
文獻[4,5]闡述了區(qū)塊鏈技術(shù)優(yōu)勢和應(yīng)用前景。研究表明區(qū)塊鏈有利于在人工智能和人類增強領(lǐng)域得到應(yīng)用。隨著區(qū)塊鏈技術(shù)在身份認證領(lǐng)域的應(yīng)用研究,區(qū)塊鏈技術(shù)將會解決傳統(tǒng)PKI體系中遇到的問題。
本文設(shè)計了一種基于區(qū)塊鏈的PKI系統(tǒng),并對系統(tǒng)進行了架構(gòu)和網(wǎng)絡(luò)拓撲的設(shè)計,同時使用一套鏈上證書管理方案,將證書及證書操作記錄存儲到區(qū)塊鏈上。通過標準驗證和區(qū)塊鏈驗證相結(jié)合的方式來實現(xiàn)證書驗證。在查詢證書時,可以向區(qū)塊鏈中的任意一個節(jié)點查詢,從而避免單點故障問題。采用聯(lián)盟鏈作為模型結(jié)構(gòu),通過對X.509數(shù)字證書進行改進,使用實體雙向認證來實現(xiàn)跨域認證,同時從證書鏈入手,簡化證書路徑,降低跨域認證的復(fù)雜度,減少簽名次數(shù),提高跨域認證效率,解決上述問題。并在最后進行模擬實驗對模型進行分析。
文獻[6,7]分析了比特幣的信任機制和數(shù)字貨幣功能,使用區(qū)塊鏈技術(shù)保證交易和操作的正確性成為了可能。區(qū)塊鏈協(xié)議固有的特性限制了交易的吞吐量和延遲,文獻[8]提出了基于Bitcoin的可擴展協(xié)議,使用比特幣的共享信任模型,提高了交易實時性,并且具有容錯性和魯棒性。當(dāng)合同發(fā)生違約或中止時,去中心化區(qū)塊鏈能夠確保實施相應(yīng)的賠償政策,然而現(xiàn)有的交易系統(tǒng)缺乏對用戶的隱私保護,所有的交易信息可通過區(qū)塊鏈進行查詢,文獻[9]提出了一種去中心化智能合約系統(tǒng),間接存儲區(qū)塊鏈交易數(shù)據(jù),達到了保護用戶隱私的目的。因此區(qū)塊鏈技術(shù)具有不可比擬的獨特優(yōu)勢,把區(qū)塊鏈技術(shù)運用到公鑰基礎(chǔ)設(shè)施中正好可以解決上述問題。所以本文設(shè)計基于區(qū)塊鏈技術(shù)的PKI系統(tǒng),利用區(qū)塊鏈的特性解決PKI的單點故障問題,同時把不同域的根CA加入到聯(lián)盟鏈中,使得各個CA中心之間無障礙互信,解決了多CA互信難的問題,并提高證書部署的實際效率。
伴隨著區(qū)塊鏈技術(shù)在各行各業(yè)的應(yīng)用研究,在身份認證領(lǐng)域,區(qū)塊鏈的引入對PKI體系的發(fā)展也起到了積極作用。2014年,美國學(xué)者Conner提出了第一個將區(qū)塊鏈技術(shù)與PKI相結(jié)合的例子Certcoin,使用區(qū)塊鏈的分布式賬本來記錄域名和公鑰,通過區(qū)塊鏈的交易來實現(xiàn)證書管理,使用Merkle樹記錄的Hash值來實現(xiàn)身份的驗證。但由于區(qū)塊鏈中的信息都是公開透明的,所以在Certcoin中,用戶的隱私不受到保護。隨后,文 獻[10,11]提出了新的PB-PKI(privacy-awareness in blockchain-based PKI)模型,該模型使用不同密鑰的方式對用戶隱私進行了保護,同時設(shè)置多種用戶隱私等級,減少了用戶隱私被泄露的風(fēng)險。文獻[12,13]提出了一種及時響應(yīng)的PKI框架IKP(instant karma PKI),通過利用智能合約和基于區(qū)塊鏈的共識機制,對IKP的權(quán)力進行分散,利用自動激勵措施,針對檢測器進行獎勵和對違法CA的懲罰來保證體系安全??缬蛘J證是通過不同域之間建立信任關(guān)系,來實現(xiàn)一個域請求另一個域中的資源。
Kerberos系統(tǒng)是最早出現(xiàn)的跨域認證案例,使用非對稱密碼技術(shù)建立,但該技術(shù)僅適用于特定的Kerbers域中。文獻[14]提出了一種基于公鑰的分布式身份認證模型,該模型具有良好的可擴展性,為后續(xù)的拓展研究提供了基礎(chǔ)。文獻[15]以基于身份的密碼體制為基礎(chǔ),提出了一種基于身份的多信任域認證模型,但因其用戶需要多次完成雙線性對運算,導(dǎo)致計算開銷過大。在跨域認證方面,文獻[16]提出了一種基于PKI域和IBC域之間的異構(gòu)跨域認證密鑰協(xié)商方案,該方案可以保證較高的安全性和效率,但該方案只針對EIM環(huán)境下的異構(gòu)企業(yè)之間。文獻[17]提出一種基于區(qū)塊鏈的跨異構(gòu)域認證方案,采用將IBC域中的區(qū)塊鏈域代理服務(wù)器和PKI域區(qū)塊鏈證書服務(wù)器加入到聯(lián)盟鏈中方法,實現(xiàn)了IBC域和PKI域之間的跨異構(gòu)域認證,并且降低用戶終端的計算量,但因為區(qū)塊鏈系統(tǒng)中數(shù)據(jù)只增不刪,引起存儲數(shù)據(jù)而帶來的系統(tǒng)的開銷浪費。
根據(jù)區(qū)塊鏈的開放對象的不同,參與者和權(quán)限的差異,區(qū)塊鏈的應(yīng)用模式被分為以下3種類型:公有區(qū)塊鏈(public blockchain)、行業(yè)區(qū)塊鏈(consortium blockchain)、私有區(qū)塊鏈(private blockchain)。這里考慮到一方面要符合用戶、CA中心等多域間跨域認證需要,另一方面由于區(qū)塊鏈公式算法不同,聯(lián)盟鏈效率較高,系統(tǒng)可擴展性強的特點,選用其為原型。
出于對未來實用化時方便拓展和改進的準備,本文使用模塊化思想進行PKI系統(tǒng)的概念設(shè)計,基于區(qū)塊鏈的PKI系統(tǒng)的架構(gòu)設(shè)計如圖1所示。
圖1 基于區(qū)塊鏈的PKI系統(tǒng)架構(gòu)
架構(gòu)中基本要素包括:
證書用戶:指PKI系統(tǒng)中證書的實際擁有者。
PKI系統(tǒng):用于完成傳統(tǒng)PKI體系中RA中心功能的注冊中心RA,負責(zé)審核用戶的數(shù)字證書申請,并將用戶申請轉(zhuǎn)交給證書頒發(fā)機構(gòu)CA;負責(zé)證書發(fā)放和證書生命周期管理的證書頒發(fā)機構(gòu)CA;包括共識機制策略管理、節(jié)點管理和智能合約管理的區(qū)塊鏈管理部分,負責(zé)將PKI系統(tǒng)產(chǎn)生的數(shù)字證書和證書操作過程寫入到區(qū)塊鏈中。
區(qū)塊鏈平臺:結(jié)合以太坊(ethereum,ETH)設(shè)計靈活、適應(yīng)性強、對智能合約支持能力強大等特點。它支持任何人在上面創(chuàng)建和使用通過區(qū)塊鏈技術(shù)運行的去中心化應(yīng)用(decentralized application,DApp)。
針對基于區(qū)塊鏈的PKI系統(tǒng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)設(shè)計,區(qū)塊鏈網(wǎng)絡(luò)中主要部署了背書節(jié)點、記賬節(jié)點、主節(jié)點和排序服務(wù)節(jié)點。設(shè)計背書交易、成塊交易、提交與確認等交易流程來實現(xiàn)PKI證書在區(qū)塊鏈上進行存儲。將所有有關(guān)證書的操作,都視為區(qū)塊鏈平臺中的一筆交易進行處理,來實現(xiàn)基于區(qū)塊鏈的PKI系統(tǒng)的證書管理。
在證書使用者和證書依賴方之間建立信任關(guān)系,采用將數(shù)字證書和證書操作記錄存儲到區(qū)塊鏈中的方式,使得用戶在查詢證書時,可以向區(qū)塊鏈中的任意一個節(jié)點查詢,從而避免單點故障問題。實際驗證過程在保證標準的CA證書驗證過程的基礎(chǔ)上,當(dāng)中間證書服務(wù)器或根證書服務(wù)器發(fā)生故障的情況下,才使用區(qū)塊鏈上的驗證過程。其核心操作是,對證書進行哈希運算,得到一個哈希值并以此為關(guān)鍵參數(shù),將對證書的驗證轉(zhuǎn)換為對交易的驗證,用戶到區(qū)塊鏈平臺上查詢證書的合法性。驗證過程如圖2所示。
圖2 基于區(qū)塊鏈改進后的CA證書驗證過程
通過分析信任列表信任模型、交叉認證信任模型、根CA信任模型和橋CA信任模型等多個模型的安全屬性,確定出基于聯(lián)盟鏈的跨域認證模型,如圖3所示。由根CA、CA、用戶、聯(lián)盟鏈平臺等組成,把每個域內(nèi)的根CA加入到聯(lián)盟鏈網(wǎng)絡(luò)中,共同構(gòu)建多中心的聯(lián)盟鏈平臺。
圖3 本文聯(lián)盟鏈跨域認證模型
認證思路如下:PKI使用的信任模型是基于CA域來描述的,獨立的CA認證中心及其所管理的范圍構(gòu)成一個CA信任域,并以其為單位進行跨域通信。將A域用戶和B域用戶的鏈證書的哈希值存儲到區(qū)塊鏈中,當(dāng)A域用戶請求訪問B域的資源時,A域的用戶將自己的簽名、區(qū)塊鏈證書和隨機數(shù)發(fā)送給B域的認證服務(wù)器,B域認證服務(wù)器對收到的信息進行驗證,驗證A域用戶的根CA區(qū)塊鏈證書的哈希值,如果驗證通過,則A域用戶被允許跨域訪問B域服務(wù)器資源。
CA對傳輸數(shù)據(jù)的加密、解密、數(shù)字簽名和身份驗證等操作都是依賴數(shù)字證書,PKI體系就是依據(jù)數(shù)字證書實現(xiàn)的。本文通過以X.509證書為基礎(chǔ)進行改進,來設(shè)計一種區(qū)塊鏈證書,并將其存儲于聯(lián)盟鏈中,作為跨域認證模型的信任憑證。區(qū)塊鏈證書結(jié)構(gòu)如圖4所示。
圖4 本文設(shè)計的區(qū)塊鏈證書
設(shè)計方案如下:
(1)去除頒布者標識和主體標識
傳統(tǒng)X.509數(shù)字證書中,證書頒布者和證書擁有者的唯一標識屬于可選項,一句具體應(yīng)用需要來確定是否使用。在區(qū)塊鏈上信任域中的實體對象有效,頒布節(jié)點和持有節(jié)點可以驗證證書的唯一性,所以直接去掉這兩項以簡化證書數(shù)據(jù)。
(2)去除CA簽名項
由于區(qū)塊鏈天然的具有不可篡改性,證書相關(guān)數(shù)據(jù)一旦上傳至區(qū)塊鏈就得到了保護,同時在通過交易的方式產(chǎn)生證書時,證書的頒布者已經(jīng)被進行了記錄,所以頒布者再用自己的私鑰對證書進行簽名和驗證顯得重復(fù)。
(3)更改有效期標識為有效時長
區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)中包含有時間戳項,每產(chǎn)生一個新的區(qū)塊都會被打上時間標志,通過記錄有效時長與時間戳項相結(jié)合可以直觀得到S證書有效期。
(4)去除證書撤銷檢查服務(wù)的UPL項
區(qū)塊鏈上的數(shù)據(jù)是隨時可查的,查詢存儲在其中的證書狀態(tài)也變得十分簡單。
對證書寫入?yún)^(qū)塊鏈的接口定義
write(station,Hash(Cert))
(1)
其中,write、station、Hash(Cert)分別表示寫入、證書的狀態(tài)、對證書進行哈希計算;證書的狀態(tài)包括發(fā)布和撤銷。
針對存儲在區(qū)塊鏈上的區(qū)塊鏈證書,通過索引技術(shù)和大數(shù)據(jù)技術(shù)設(shè)計了一種查詢證書狀態(tài)的方案,實現(xiàn)對區(qū)塊鏈證書狀態(tài)的查詢。
對證書查詢的查詢接口定義
query(Hash(Cert))
(2)
其中,query表示證書查詢操作,證書狀態(tài)station有3種:publish、revocation、null(為該證書不存在或被篡改)。需要驗證某一證書時,節(jié)點首先將所查證書進行哈希運算,再將哈希結(jié)果值在區(qū)塊鏈上進行查詢,通過區(qū)塊鏈返回該證書的最新Station結(jié)果和該存儲區(qū)塊的時間戳來進行合法性驗證。
驗證CA證書的合法性,主要通過:①該證書是否在有效期內(nèi);②發(fā)行方CA是否可靠;③驗證公鑰是否正確,通過能否解開證書發(fā)行者簽名確定;④證書名稱是否對應(yīng)擁有者真實名稱;⑤證書是否在證書吊銷列表(CRL)中。其中第①、②、④項包含在證書內(nèi)部,不需要進行線上驗證;③、⑤兩項需要線上訪問發(fā)行證書的CA來進行確認。一旦證書服務(wù)器故障,則無法進行③和⑤的過程,證書驗證失敗。
3.3.1 執(zhí)行的前提
加入?yún)^(qū)塊鏈中的節(jié)點必須是可信任的,之后對需要跨域認證的兩個實體的根CA區(qū)塊鏈證書取哈希值并存儲到區(qū)塊鏈中,作為跨域認證的信任憑證。
協(xié)議的主體包括A域用戶(UA)和B域用戶(UB)、用戶證書服務(wù)器(CAA、CAB)、認證服務(wù)器(ASA、ASB)。用戶證書服務(wù)器用來查詢證書的當(dāng)前狀態(tài),認證服務(wù)器用來對證書信息進行驗證。
本模型的區(qū)塊鏈只存儲根CA的哈希值,在每個獨立的信任域內(nèi)部,仍然保持傳統(tǒng)的認證方式實現(xiàn)用戶和認證服務(wù)器的認證,保證臨節(jié)點認證效率。進行多域間的跨域認證時,本域的認證服務(wù)器先請求目標域的區(qū)塊鏈根證書,正在對得到的證書進行哈希運算得到唯一的哈希值,將其與區(qū)塊鏈上數(shù)據(jù)進行對比,驗證通過則可以建立信任。通過兩個步驟來實現(xiàn)兩個域間用戶與用戶的雙向?qū)嶓w認證:首先依靠本域用戶和對方域服務(wù)器的建立認證信任,然后對方域服務(wù)器與對方域用戶建立認證信任。
3.3.2 認證過程
協(xié)議流程執(zhí)行的具體過程分為傳統(tǒng)CA認證階段和區(qū)塊鏈CA認證階段,大致如圖5所示。步驟(1)、步驟(2)代表了傳統(tǒng)域內(nèi)用戶認證階段;使用步驟(1)~步驟(10)實現(xiàn)B域?qū)域的跨域認證,同理重復(fù)步驟(1)~步驟(10)實現(xiàn)A域?qū)域的跨域認證,從而達到A、B兩域的雙向認證。其中跨域初次認證區(qū)塊鏈CA認證階段步驟(8)、步驟(9)如下:
圖5 協(xié)議流程
(1)ASB→BC
B域CA認證服務(wù)器查詢聯(lián)盟鏈節(jié)點,驗證A域CA認證服務(wù)器證書BCertAA的有效性,結(jié)合區(qū)塊鏈時間戳和有效時長解析其有效性,并檢查隨機數(shù)N2是否正確。
(2)BC→ASB
聯(lián)盟鏈節(jié)點將驗證結(jié)果返回給B域CA認證服務(wù)器。若A域的CA認證服務(wù)器證書可信且有效,生成跨域證書。
(3)ASB→UA
B域認證服務(wù)器ASB將跨域證書發(fā)送給A用戶。
初次認證結(jié)束,再進行跨域通信時,A域內(nèi)用戶UA只需直接把跨域區(qū)塊鏈證書BCertAA發(fā)送給B域認證服務(wù)器ABS。B域認證服務(wù)器ABS收到區(qū)塊鏈證書BCertAA后,計算該證書的哈希值,并查詢區(qū)塊鏈,進行有效性確認(步驟(8)、步驟(9))。
通過對比分析發(fā)現(xiàn),公有鏈中節(jié)點可以自由加入,當(dāng)節(jié)點數(shù)量變多時,交易速度就會變慢,如若應(yīng)用到PKI體系中,會影響認證效率;私有鏈又存在數(shù)據(jù)共享性差的問題;聯(lián)盟鏈的多中心結(jié)構(gòu),適合于將PKI域中的根CA加入到聯(lián)盟鏈中,使得每個信任域內(nèi)保持原有的邏輯關(guān)系不變,綜合考慮選用聯(lián)盟鏈作為模型結(jié)構(gòu)。
跨域認證模型的系統(tǒng)架構(gòu)主要包括聯(lián)盟鏈平臺部分和PKI信任域部分,各個PKI信任域包含非驗證節(jié)點(non-validating peer,NVP)、PKI系統(tǒng)和人員系統(tǒng)3個部分,聯(lián)盟鏈通過多個驗證節(jié)點(validating peer,VP)構(gòu)成?;诼?lián)盟鏈的跨域認證系統(tǒng)架構(gòu)如圖6所示。
圖6 系統(tǒng)架構(gòu)
3.4.1 PKI信任域
非驗證節(jié)點(NVP)是那些在區(qū)塊鏈中只參與記賬的節(jié)點,不參與共識驗證操作,只包含驗證節(jié)點的部分功能,需要鏈接驗證節(jié)點,為驗證節(jié)點分擔(dān)部分工作。本文中非驗證節(jié)點承擔(dān)用戶注冊、認證等操作。非驗證節(jié)點驗證本域發(fā)起交易的簽名的正確性,并將交易按照時間戳的先后順序廣播給驗證節(jié)點。非驗證節(jié)點由認證服務(wù)器擔(dān)任。
PKI系統(tǒng)和人員系統(tǒng)的其它部分與現(xiàn)存PKI體系完全相同。
3.4.2 聯(lián)名鏈平臺
驗證節(jié)點(VP)是參與共識驗證的節(jié)點。驗證節(jié)點中包含鏈碼執(zhí)行環(huán)境,可以獨立處理接收到的交易信息,并可以通過共識機制,將新區(qū)塊存儲到鏈上。同時由于區(qū)塊鏈的特性,每個節(jié)點又同時存儲著當(dāng)前完整的賬本記錄。驗證節(jié)點由每個PKI信任域的根CA服務(wù)器承擔(dān)。
驗證節(jié)點將根CA生成自簽名的區(qū)塊鏈證書的哈希值存儲到區(qū)塊鏈中。非驗證節(jié)點通過查詢區(qū)塊鏈中區(qū)塊鏈證書的哈希值,完成跨域認證。
(1)基礎(chǔ)系統(tǒng)環(huán)境
本文模擬實驗通過Hyper-V 2.0虛擬機來完成,模擬3臺主機簡稱:nodeA、nodeB、nodeC成為3個實驗節(jié)點。并修改c:Windowssystem32driversetchosts文件,完成主機名到IP地址的解析。
(2)安裝部署以太坊系統(tǒng)
先安裝以太坊客戶端,在實驗節(jié)點上分別使用geth account new命令,然后創(chuàng)建區(qū)塊鏈測試賬戶。
(3)通信配置
1)查看集群節(jié)點
>admin.peers
結(jié)果顯示:[]。表明未與其它節(jié)點進行通訊。
2)獲取節(jié)點信息
分別在節(jié)點的console上執(zhí)行admin.nodeInfo.enode得到3個節(jié)點的公鑰信息。
3)組建聯(lián)盟鏈
在nodeA上執(zhí)行admin.addPeer命令,將nodeB加入nodeA。同理,把nodeC加入nodeA,分別對nodeB、nodeC執(zhí)行相同操作。至此聯(lián)盟鏈已經(jīng)組建完成。
安裝配置OpenSSL,在nodeA、nodeC上安裝一套CA服務(wù)軟件。通過OpenSSL中rand語句創(chuàng)建隨機數(shù)文件,使用隱私增強郵件(privacy enbanced mail,PEM)格式保存私鑰,使用genrsa命令,以AES256加密方式生成2048 bits的私鑰。接著創(chuàng)建根證書簽發(fā)申請文件,得到簽發(fā)根證書rootca.cer。出于OpenSSL產(chǎn)生的數(shù)字證書不能在java等語言環(huán)境中直接使用的原因,將其轉(zhuǎn)換為PKCS#12編碼格式,PKCS#12為個人信息交換文件格式,可以作為密鑰庫或信任庫使用,可使用keytool查看該密鑰庫的詳細信息。此時,根證書rootca.car的創(chuàng)建已完成,后續(xù)可使用其簽發(fā)證書,本模擬實驗以簽發(fā)服務(wù)器證書和客戶端證書為例。
步驟與創(chuàng)建根證書相似,首先創(chuàng)建私鑰,接著申請簽發(fā)服務(wù)器證書,通過命令簽發(fā)服務(wù)器證書servera.car,并對其進行格式轉(zhuǎn)化,最后驗證證書可使用性,表明該證書沒有問題。
接著創(chuàng)建一個客戶端證書用于驗證準備。至此單個節(jié)點的CA中心已搭建完畢,并簽發(fā)了服務(wù)器證書和客戶端證書,依次在其它節(jié)點上按照相同步驟搭建CA證書中心。
出于本文對CA證書的驗證等操作超出了現(xiàn)有CA標準體系和流程考慮,無法使用現(xiàn)有的標準CA證書驗證軟件進行,本實驗編制了專用的CA證書驗證程序。
CA證書驗證程序使用Delphi 2007編程實現(xiàn),其核心函數(shù)或進程包括:獲取文件簽名、獲取證書接口、執(zhí)行文件簽名、對文件簽名進行驗證、對簽名信息進行分解、附加簽名信息等。
基于先前“基于區(qū)塊鏈的PKI系統(tǒng)架構(gòu)”所設(shè)計,調(diào)用智能合約實現(xiàn)證書簽發(fā)、證書更新和證書撤銷等操作。核心內(nèi)容包括標準的聯(lián)盟鏈和證書智能合約的實現(xiàn)。其中智能合約調(diào)用在專用證書驗證程序中也有體現(xiàn)。
在nodeA上配置IIS服務(wù)器,提供根證書下載和證書吊銷列表(CRL)下載服務(wù)。吊銷列表失效時間設(shè)置為10 min。把noseA的服務(wù)器證書servera.cer復(fù)制到一臺client機器上安裝,斷開nodeA網(wǎng)卡服務(wù)10 min,在client機器上再次打開servera.cer,由于無法獲取有效的證書吊銷列表,所以無法訪問該網(wǎng)站。通過調(diào)用智能合約對證書servera.cer進行驗證,結(jié)果顯示可以獲得證書吊銷列表,同時確認該證書的有效性,表明本實驗完成了基于區(qū)塊鏈的KPI身份認證功能。
以節(jié)點nodeB為中心做CA跨域認證實驗,實驗配置見表1。
表1 CA跨域認證的實驗配置
在nodeA上安裝rootca.cer,并允許訪問nodeA的證書吊銷列表,可以完成對證書serverb.car的證書簽名校驗。不在nodeA上安裝nodeC 頒發(fā)的根證書PKI-BlockChainC-CA.cer,并不允許訪問nodeC的證書吊銷列表,不能對證書cert_b.cer的數(shù)字簽名校驗。驗證結(jié)果表明,不能依據(jù)nodeA的根證書rootca.cer驗證nodeC頒發(fā)的證書cert_b.cer。也就是說,在標準的PKI體系和框架下,不能實現(xiàn)CA證書的跨域認證。
當(dāng)調(diào)用智能合約對證書cert_b.car進行驗證時,可以成功完成證書簽名校驗,實驗結(jié)果如圖7 所示。表明本文提出的基于聯(lián)盟鏈的跨域認證模型合理,達到期望目標。
圖7 調(diào)用智能合約后對證書cert_b.cer的驗證結(jié)果
4.7.1 安全性分析
(1)證書安全性
本文對區(qū)塊鏈數(shù)字證書的關(guān)鍵操作步驟是將數(shù)值證書文件進行哈希運算得到哈希值,并將其作為區(qū)塊鏈資產(chǎn)以交易的方式將哈希值存儲到區(qū)塊鏈中。關(guān)于哈希運算的兩個特性:
單向性:哈希運算是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。對于給定的Hash值m,通過其運算過程Hash(n)=m,來推導(dǎo)出被運算信息n是不可能的。
抗碰撞性:一是對于給定Hash函數(shù),給出一條消息,找出一條消息y使Hash(x)=Hash(y)是計算上不可行的(弱抗沖突),二是找出任意兩條消息x、y,使Hash(x)=Hash(y)也是計算上不可行的(強抗沖突)。
由此可見基于單向性和抗碰撞性,將PKI中各個信任域的根CA的數(shù)字證書進行哈希運算,可以得到唯一的哈希值。將其存儲到不可篡改的區(qū)塊鏈中,具有極高的安全性。
(2)認證安全性
本模型中只將各域的根CA證書信息哈希值體現(xiàn)在區(qū)塊鏈中。通過將原有認證方式和雙向?qū)嶓w認證方式聯(lián)合使用,利用區(qū)塊鏈的高安全等級和哈希存儲的唯一性等特性,提高認證雙方安全性的同時,也提升了跨域認證的效率。
(3)體系安全性
區(qū)塊鏈技術(shù)作為一個分布式數(shù)據(jù)庫,各個節(jié)點是對等存在的,每個節(jié)點都參與鏈上數(shù)據(jù)維護的同時也存儲了相關(guān)信息,即使單個節(jié)點被攻擊導(dǎo)致失效,也不影響其它節(jié)點,可以有效克服多種單點故障導(dǎo)致的安全問題。
傳統(tǒng)的PKI體系通過區(qū)塊鏈中共識機制達成分布式場景下的一致性,使得一些常見的身份攻擊變得不再可行,區(qū)塊鏈的可追溯性杜絕了中間人攻擊的可能,同時也對各域CA認證中心進行了側(cè)面監(jiān)管。
4.7.2 效率分析
通過模擬實驗結(jié)果,分析協(xié)議的計算開銷,并與文獻[18]方案作比較。本文模擬實驗過程與文獻[18]方案的聯(lián)盟數(shù)類似,其聯(lián)盟數(shù)為2,本實驗聯(lián)盟數(shù)為3。進行效率對比結(jié)果見表2,單位為運算次數(shù),表中記錄分步次數(shù)合計值。
表2 開銷對比
與文獻[18,19]方案相比,本文方案減少了公鑰的加解密操作。在聯(lián)盟數(shù)量相似的情況下,本文使用哈希算法次數(shù)也少于二者;基于聯(lián)盟鏈的特殊優(yōu)勢,不受盟員的增加而導(dǎo)致跨域認證時使用公鑰算法次數(shù)的增加,實際結(jié)果只會更好于模擬實驗對比分析結(jié)果;隨著多個域間認證工作量的大量增加,本文總體哈希次數(shù)也會隨之增長,但本方案使用的SHA-256單次計算耗時僅為RSA-1023的1/10,在哈希計算步驟效率遠高于公鑰加密,本文方案的實際效率與負載能力在多域聯(lián)盟環(huán)境下也是值得肯定的。文獻[18]通過將公鑰證書的發(fā)放過程轉(zhuǎn)換為區(qū)塊鏈網(wǎng)絡(luò)中的智能合約的交易過程,在一定程度上解決了安全的通信信道和抵抗DDos攻擊的問題,但其選用的合約方式需要節(jié)點過去參與操作,帶來了不小的時延,并沒有發(fā)展為公共機制的能力,僅適合一定范圍或私有機構(gòu)內(nèi)部使用。
文獻[19]采用的添加獨立于CA的信任中間人的方式無疑是安全性極高的,可以檢測到PKI攻擊并區(qū)分攻擊和錯誤,達到異常的精確管理。但其信任中間人的建議方式也帶來了極高的開銷支出,等同于多一個進行雙重CA驗證,同時該模型建立于Hyperledger fabric上,節(jié)點子集30個時達到最優(yōu)配置更限制了其模型智能應(yīng)用在私有領(lǐng)域。綜上所述,本文設(shè)計的哈希存儲與區(qū)塊鏈數(shù)據(jù)結(jié)合方案,使用部分現(xiàn)有技術(shù)和以太坊相結(jié)合,提高安全性的同時又不帶來過多的負載壓力,對于參與對象與數(shù)量沒有限制,也不存在節(jié)點數(shù)量對系統(tǒng)性能影響的可能性,并且伴隨著區(qū)塊鏈的特性,參與用戶越多會促使體系的安全性越高。是一種比較適合現(xiàn)有網(wǎng)絡(luò)模式下的安全PKI體系應(yīng)用方案。
本文提出一種基于區(qū)塊鏈的PKI跨域認證模型。利用區(qū)塊鏈的去中心化、去信任、不可篡改等特征,在證書使用者和證書依賴者之間建立信任關(guān)系,將數(shù)字證書和證書管理的一系列操作都記錄在區(qū)塊鏈中,使得查詢變得簡單高效,同時解決了傳統(tǒng)PKI體系高度中心化帶來的單點故障問題,提高了PKI體系的魯棒性。通過區(qū)塊鏈交易方式將證書管理一系列操作變得十分簡單高效。對X.509證書的改進實現(xiàn)了將PKI體系中每個信任域內(nèi)信任錨的區(qū)塊鏈證書哈希值存儲在鏈上,保證了每個信任域中原有信任結(jié)構(gòu)不變,并實現(xiàn)了CA的跨域認證。本文針對傳統(tǒng)PKI體系存在的問題,選用比較新興的區(qū)塊鏈技術(shù)來解決PKI問題,工作具有現(xiàn)實意義和研究價值。
作為一門新興技術(shù),區(qū)塊鏈技術(shù)仍有改進空間,在針對本文研究的問題上,本文仍有進步空間。目前所有基于區(qū)塊鏈的設(shè)計原理都是基于現(xiàn)有的區(qū)塊鏈平臺,區(qū)塊鏈系統(tǒng)在特定共識機制下無休止地自動成塊,導(dǎo)致嚴重的資源浪費,如何讓其按需成塊值得深究。由于區(qū)塊鏈中的數(shù)據(jù)公開透明,下一步可以從隱私保護入手,可以考慮隱藏用戶和用戶公鑰的對應(yīng)關(guān)系,提高用戶隱私的安全性。同時,區(qū)塊鏈的核心是在共識機制,是否可以尋找一套針對PKI體系的特有共識機制,成為今后研究方向。如何進一步完善本文提出的一種基于聯(lián)盟鏈的PKI跨域認證模型,使之適用于國內(nèi)PKI認證體系現(xiàn)狀,值得進一步研究。如何用區(qū)塊鏈全面替換PKI體系,使其全面承載PKI的功能,值得進一步探討。