李銘堃 馬利民 王佳慧 張 偉
1(網(wǎng)絡文化與數(shù)字傳播北京市重點實驗室(北京信息科技大學) 北京 100101)
2(北京信息科技大學計算機學院 北京 100101)
3(國家信息中心信息與網(wǎng)絡安全部 北京 100045)
身份認證是計算機及網(wǎng)絡系統(tǒng)確認操作者身份的過程.身份認證技術經(jīng)過長期發(fā)展,出現(xiàn)了:短信認證等非生物認證;指紋、視網(wǎng)膜認證等生物認證;也出現(xiàn)了數(shù)字簽名和短信密碼組合的多因素認證.在諸多認證方式中,基于非對稱密碼算法的公鑰基礎設施(public key infrastructure, PKI)技術是應用廣泛的身份認證技術[1].PKI由密鑰管理中心、證書認證機構(certificate authority, CA)、證書系統(tǒng)等組成,根據(jù)不同根證書劃分成不同PKI域,根據(jù)PKI域?qū)⑸矸菡J證劃分成域內(nèi)認證和跨PKI域間認證.數(shù)字證書是用于身份認證的數(shù)字憑據(jù),包含公鑰、數(shù)字簽名等信息,是PKI技術中重要組成部分.
PKI原理是基于信任錨沿著信任路徑的信任傳遞,信任錨是CA中心根證書,信任路徑是證書鏈[2],該認證體系存在中心化問題,CA節(jié)點宕機或被攻擊將導致整個信任域功能喪失[3].在域內(nèi)認證和域間認證中,PKI技術必須圍繞數(shù)字證書作大量證書解析、證書路徑構建、證書有效性驗證、簽名驗簽等操作,需要不斷與上級CA進行數(shù)據(jù)通信和數(shù)據(jù)交互,認證流程較為繁瑣.
區(qū)塊鏈技術最早于2008年中本聰發(fā)表的論文中有所闡述[4],作為一種分布式賬本技術,具有點對點傳輸、加密安全、不可篡改和去中心化等特點.區(qū)塊鏈本身不具備身份認證功能,但可以基于共識機制建立分布式的信任驗證,解決PKI技術中單點故障、中心瀆職[5]等問題.劉騰飛等人[6]闡述了區(qū)塊鏈在工業(yè)互聯(lián)網(wǎng)領域和公共服務領域的應用前景,同時提出各國應當推動區(qū)塊鏈數(shù)字身份系統(tǒng)建立的觀點.首個基于區(qū)塊鏈的分布式PKI系統(tǒng)Certcion由麻省理工大學的Connoer提出[7-8],該系統(tǒng)完成證書簽發(fā)后,將用戶身份數(shù)據(jù)和證書本身數(shù)據(jù)存儲于區(qū)塊鏈中,以公開方式將用戶身份和公鑰作綁定.但該系統(tǒng)鏈上數(shù)據(jù)未進行處理,存在用戶信息隱私泄露風險.Axon[9]提出一種改進的Certcion方案:帶隱私保護的PKI認證系統(tǒng).滕鵬國等人[10]提出一種基于區(qū)塊鏈的身份認證方案,該方案減少了認證過程中證書解析、簽名驗簽等操作,但該方案使用RSA算法,計算開銷較大且無法實現(xiàn)密碼算法自主可控.該方案證書撤銷操作通過用戶新注冊證書方式實現(xiàn),計算開銷較大且用戶舊證書和私鑰泄露會造成假冒身份的安全隱患.馬曉婷等人[11]結合區(qū)塊鏈技術和國密SM9算法提出一種基于區(qū)塊鏈技術的跨域異構認證方案,設計了跨域認證協(xié)議和重認證協(xié)議.周致成等人[12]提出一種基于區(qū)塊鏈的高效跨域認證方案,通過頒發(fā)跨域區(qū)塊鏈證書實現(xiàn)不同域之間身份認證,減少了簽名驗簽等操作,但該方案僅討論和設計了認證服務器和信任模型間的認證,并沒有設計用戶和認證服務器間的身份認證,存在假冒身份的隱患,且該方案證書數(shù)據(jù)直接存儲于鏈上,存在用戶信息隱私泄露的問題.長安鏈作為我國自主研發(fā)的新一代區(qū)塊鏈軟硬件技術體系,具有安全、自主、高效、靈活的特點.長安鏈已經(jīng)成功應用于北京冷鏈食品追溯平臺項目,北京電子印章項目、教師資格認定項目等多種場景,國家層面也在穩(wěn)步推進長安鏈在身份認證[13]、身份管理、金融貿(mào)易、電子病歷等多方面的實踐.
本文提出基于長安鏈的身份認證模型,設計長安鏈數(shù)字證書,提出一種基于長安鏈數(shù)字證書和公鑰基礎設施的認證方案.
圖1 傳統(tǒng)PKI認證模型及證書鏈示意圖
具有三級CA的身份認證模型如圖1所示,該模型由根CA服務器、數(shù)據(jù)庫服務器、注冊機構、安全服務器、目錄服務器(lightweight directory access protocol, LDAP)等組成,且該模型根CA下層包含二級CA和某系統(tǒng)服務端CA,通過頒發(fā)證書構建證書鏈,達到信任傳遞目的,對應的證書鏈如圖1所示.
持有證書的用戶User通過客戶端訪問某系統(tǒng),身份認證流程如圖2所示:
1) 用戶通過客戶端發(fā)出認證請求;
2) 服務端生成真隨機數(shù)random返回;
3) 客戶端使用用戶私鑰對random簽名生成簽名值signature;
4) 客戶端將簽名值signature、用戶證書cert發(fā)送給服務端;
5) 服務端解析用戶證書,獲取公鑰pubkey,傳入signature,random,pubkey作簽名值驗證.若驗證不通過,則返回身份認證失敗,若驗證通過,則進行證書有效性驗證;
6) 證書有效性驗證包含3方面:證書有效期驗證、證書吊銷列表(certificate revocation list , CRL)驗證、根證書簽名值驗證,根證書簽名值驗證會構造、解析并驗證整條證書鏈;
7) 返回認證結果.
圖2 PKI域內(nèi)身份認證流程
2個包含不同CA根節(jié)點的PKI域本文稱為A PKI域和B PKI域,簡稱為A域和B域,存在以下場景,持有證書的A域用戶(UserA)通過客戶端訪問B 域某系統(tǒng)服務端(SeverB),圖3所示為身份認證流程.
圖3 跨PKI域間身份認證流程
1) 用戶UserA訪問B域系統(tǒng)服務端,提交證書cert請求身份認證;
2) B域系統(tǒng)服務端檢查證書發(fā)現(xiàn)該證書為A域某系統(tǒng)服務端CA簽發(fā),B域服務端CA向上級CA發(fā)送交叉認證請求;
3) B域根CA將交叉認證請求發(fā)送至A域根CA,A域根CA將本地根CA證書發(fā)送給B域根CA;
4) B域根CA對A域根CA證書進行簽名,生成交叉證書certBA,將交叉證書certBA發(fā)送給A域根CA;
5) A域根CA將交叉證書存于LDAP目錄服務器中,并返回交叉認證完成的響應;
6) B域服務端調(diào)用本地隨機數(shù)模塊生成真隨機數(shù)random并返回;
7) 客戶端使用用戶私鑰對random簽名生成簽名值signature;
8) 客戶端將簽名值signature、用戶證書cert發(fā)送給B域服務端CA;
9) B域服務端解析用戶證書,并作簽名值驗證,若驗證不通過則返回,身份認證失敗,若驗證通過,則進行證書有效性驗證;
10) 證書有效性驗證采用反向構造證書路徑方式,構造出包括B域根CA證書、certBA、A域二級CA證書、A域服務端CA證書、用戶證書的證書鏈,解析并驗證證書鏈;
11) 返回認證結果.
圖4 證書的對比及構成
在域內(nèi)認證3)5)6),域間認證4)7)9)10)等流程中存在大量證書路徑構造、證書解析等操作,認證流程繁瑣,效率不高.同時,PKI身份認證模型存在單點故障問題.因此,本文基于長安鏈設計身份認證模型,并提出該模型下的身份認證方案.
長安鏈數(shù)字證書由長安鏈共識節(jié)點產(chǎn)生并頒發(fā)給注冊用戶.圖4為國密SM2證書和長安鏈數(shù)字證書的對比及構成:
如圖4所示,相較國密SM2證書,長安鏈數(shù)字證書主要作出以下改進:增加了頒發(fā)節(jié)點信息和頒發(fā)時間,該字段用于記錄生成該證書的長安鏈共識節(jié)點信息;在原基本證書域中增加了256b真隨機數(shù)字段,由共識節(jié)點的真隨機數(shù)發(fā)生器生成,用于保證基本證書域的唯一性.共識節(jié)點信息字段,頒發(fā)時間字段和真隨機數(shù)字段共同保證了證書的唯一性.基本證書域哈希值認證過程中用于驗證證書是否被篡改.
將原有多個PKI域根CA節(jié)點用長安鏈鏈接起來組成多節(jié)點的證書頒發(fā)和身份認證模型,如圖5所示,該節(jié)點類型為長安鏈共識節(jié)點.
共識節(jié)點包含區(qū)塊鏈分布式數(shù)據(jù)庫模塊,主要負責維護節(jié)點間的共識規(guī)則并驗證交易數(shù)據(jù)以及新區(qū)塊生成,區(qū)塊鏈分布式數(shù)據(jù)庫模塊通過維護身份證書區(qū)塊鏈和證書撤銷區(qū)塊鏈2條鏈實現(xiàn)身份認證.
圖5 基于長安鏈的認證模型
共識節(jié)點也包含證書簽發(fā)模塊等其他模塊.證書簽發(fā)模塊負責長安鏈數(shù)字證書的簽發(fā)、業(yè)務應用模塊負責業(yè)務調(diào)度、數(shù)據(jù)存儲模塊存儲本地數(shù)據(jù)、簽名驗簽模塊負責數(shù)據(jù)的簽名和簽名值驗證以及證書解析.
將某系統(tǒng)服務端接入長安鏈中,構成長安鏈普通全節(jié)點,只負責驗證某些業(yè)務數(shù)據(jù)和聯(lián)盟區(qū)塊鏈的新區(qū)塊以及同步新區(qū)塊數(shù)據(jù).普通全節(jié)點包含聯(lián)盟區(qū)塊鏈上所有區(qū)塊和數(shù)據(jù).
2.3.1 用戶注冊
如圖6所示,新用戶首先進行用戶注冊,申請長安鏈數(shù)字證書.
圖6 用戶注冊流程
1) 用戶通過客戶端訪問系統(tǒng)服務端,發(fā)出身份注冊請求,服務端(長安鏈普通全節(jié)點)返回用戶注冊響應.
2) 用戶提交申請長安鏈數(shù)字證書所需注冊信息,客戶端生成公私鑰對,私鑰通過USB-Key等介質(zhì)傳遞給用戶,公鑰和各項注冊信息上傳服務端.
圖7 用戶認證流程
3) 服務端對提交的信息進行審核,若審核通過,則將公鑰和各項注冊信息提交至長安鏈共識節(jié)點.
4) 長安鏈共識節(jié)點通過共識算法選出最終記賬節(jié)點,進行長安鏈數(shù)字證書生成,并將證書實體存入本地分布式數(shù)據(jù)庫,調(diào)用本地SM3算法計算證書哈希值,證書哈希值記入新區(qū)塊,形成證書區(qū)塊鏈.
5) 長安鏈共識節(jié)點將長安鏈數(shù)字證書通過服務端節(jié)點(長安鏈普通全節(jié)點)返回給客戶端,客戶端將證書寫入USB-Key等介質(zhì)提供給用戶.
2.3.2 用戶認證
注冊后的用戶擁有一張該系統(tǒng)內(nèi)代表唯一身份的長安鏈數(shù)字證書.持有證書的用戶通過客戶端訪問系統(tǒng)服務端,流程如圖7所示.
1) 用戶通過客戶端向服務端發(fā)出認證請求;
2) 服務端生成并返回真隨機數(shù);
3) 客戶端使用用戶私鑰對隨機數(shù)進行簽名形成簽名值,并將簽名值和證書發(fā)送至服務端;
4) 服務端解析證書,獲取公鑰作簽名值驗證,若簽名值驗證不通過則身份認證失敗,返回認證結果;若簽名值驗證通過,則進行長安鏈數(shù)字證書數(shù)據(jù)查詢;
5) 服務端調(diào)用SM3算法計算證書哈希,并調(diào)用智能合約在服務端本地同步的2條區(qū)塊鏈(證書區(qū)塊鏈和撤銷區(qū)塊鏈)上進行并發(fā)查詢,若證書區(qū)塊鏈查詢到對應的哈希值,撤銷區(qū)塊鏈沒有查詢到對應數(shù)據(jù),則認為該身份證書受信任,并返回給客戶端,身份認證通過響應;若證書區(qū)塊鏈查詢到對應的哈希值,撤銷區(qū)塊鏈也查詢到對應數(shù)據(jù),則認為該身份證書受信任且已被撤銷,并返回給客戶端,身份認證不通過響應;若證書區(qū)塊鏈沒有查詢到對應的哈希值,撤銷區(qū)塊鏈也沒有查詢到對應數(shù)據(jù),則認為該用戶證書不受信任并返回給客戶端,身份認證不通過響應.
表1為不同認證方案與本文方案的對比,可以看出4種方案全部解決了單點故障問題,在安全性方面,文獻[8-9,11]提出的方案都存在隱私泄露、假冒身份等安全隱患.在鏈上數(shù)據(jù)查詢效率方面,文獻[8]效率最低,文獻[9]和文獻[11]只維護一條區(qū)塊鏈,在證書撤銷場景下會導致鏈上數(shù)據(jù)過多,不具備并發(fā)查詢條件,效率較低.本文方案通過維護證書區(qū)塊鏈和證書撤銷區(qū)塊鏈2條區(qū)塊鏈來實現(xiàn)并發(fā)查詢功能,效率較高.
表1 不同方案與本文方案功能對比
本節(jié)計算開銷分析基于圖5長安鏈身份認證模型展開,對比對象為圖1傳統(tǒng)PKI身份認證模型.傳統(tǒng)PKI域內(nèi)認證包含4張證書,域間認證包含5張證書,對比方向為域內(nèi)身份認證和域間身份認證.
由表2可以得出,本文方案減少了證書鏈構建、證書解析等操作.對比傳統(tǒng)PKI身份認證,本文方案增加了鏈上數(shù)據(jù)查詢和返回等操作,整體上簡化了認證流程.
表2 本文方案計算開銷分析
本文實驗基于長安鏈和Java前后端來模仿客戶端訪問服務端的身份認證流程.并通過統(tǒng)計時耗達到分析性能的目的.分別模擬了包含根CA證書、二級CA證書、服務端CA證書、用戶證書的傳統(tǒng)PKI認證模型和基于長安鏈數(shù)字證書的認證模型.
首先反復模擬并測算出在單線程環(huán)境下完成1次認證的總時耗,如表3所示.
由表3反復模擬得出的結論可知,本文方案總時耗低于PKI認證模型.域內(nèi)認證仿真中,本文方案時耗約占PKI認證時耗的88%.域間認證仿真中,本文方案時耗約占PKI認證時耗的83%.
為讓實驗結果更接近于實際應用環(huán)境,實驗采用Java線程池技術實現(xiàn)200線程、300線程、400線程、500線程、600線程、700線程、800線程數(shù)并發(fā)條件下,平均單個線程完成身份認證時耗.
表3 單線程環(huán)境下實際計算開銷 ms
實驗仿真結果如表4所示:
表4 多線程并發(fā)環(huán)境下平均單線程身份認證計算時耗
由表4可知,隨著線程數(shù)增加單個線程完成任務時間增長,PKI身份認證模型在相同線程數(shù)條件下時耗明顯高于本文方案.隨線程數(shù)同幅度增加,PKI認證模型時耗增量也明顯高于本文方案,增量趨勢趨向于線性,達到800線程數(shù)時,本文方案時耗約占PKI認證時耗的55%.本文認證方案時耗增量顯著低于PKI認證模型,但增量趨勢趨向于非線性,表明隨著長安鏈上數(shù)據(jù)增多,查詢效率逐漸下降.因此,海量數(shù)據(jù)環(huán)境下,如何優(yōu)化長安鏈上數(shù)據(jù)查詢效率成為接下來研究的方向.
針對PKI身份認證中存在的單點故障、流程繁瑣等問題,本文提出一種基于長安鏈數(shù)字證書和公鑰基礎設施設的身份認證方案,在保證安全性并實現(xiàn)可溯源的前提下減少了證書解析、簽名驗簽等操作,簡化了認證流程,提高了認證效率.