周致成,李立新,郭 松,李作輝
(信息工程大學(xué),鄭州450001)
(*通信作者電子郵箱alphalilixin@163.com)
在分布式環(huán)境中,各個地區(qū)、行業(yè)、部門為了方便管理用戶,設(shè)置相應(yīng)的資源訪問控制系統(tǒng),形成相對獨立的域。然而單個獨立的域不能提供完整的應(yīng)用服務(wù),用戶訪問其他域的資源需要進(jìn)行跨域認(rèn)證。傳統(tǒng)的跨域認(rèn)證主要基于對稱密碼體制和公鑰密碼體制。而基于對稱密碼體制的跨域認(rèn)證主要指Kerberos提供的跨域認(rèn)證服務(wù),但Kerberos系統(tǒng)所有用戶的密鑰都存儲在中心服務(wù)器,危及服務(wù)器的安全的行為將危及所有密鑰的安全。而基于公鑰密鑰體制(Public Key Cryptography,PKC)的跨域認(rèn)證方案主要基于公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)和基于身份的公鑰密碼體制(IDentity-based Public Key Cryptography,ID-PKC)。基于 PKI的跨域認(rèn)證存在證書管理復(fù)雜、認(rèn)證路徑過長的問題;而ID-PKC存在密鑰托管的問題,且認(rèn)證效率不高,實際應(yīng)用困難。
生物特征具有唯一性和在一定時間內(nèi)不顯著改變的穩(wěn)定性[1],使用生物特征進(jìn)行認(rèn)證具有簡便、快捷、易用的特點,因此生物特征識別在身份認(rèn)證領(lǐng)域得到了廣泛的應(yīng)用。傳統(tǒng)的生物特征識別方案在識別匹配時要傳輸生物特征模板。生物特征模板是由采集到的生物特征圖像通過提取細(xì)節(jié)點的方式產(chǎn)生,所以生物特征模板存儲的是該生物特征細(xì)節(jié)點的相關(guān)信息,而不是該生物特征圖像。以指紋特征為例,指紋特征模板的數(shù)據(jù)結(jié)構(gòu)通常由指紋細(xì)節(jié)點的位置、方向等信息構(gòu)成。由于生物特征模板具有唯一性與隱私性,在開放的網(wǎng)絡(luò)上直接傳輸生物特征模板是不安全的,因此后來出現(xiàn)了借助智能卡的支持在客戶端上進(jìn)行生物識別。文獻(xiàn)[2]最早提出將生物特征引入智能卡認(rèn)證,通過識別階段重新采集的指紋特征模板與注冊階段采集并已經(jīng)存儲在智能卡中的指紋特征模板進(jìn)行識別匹配,然后借助于ElGamal公鑰加密系統(tǒng)和離散對數(shù)問題實現(xiàn)遠(yuǎn)程的用戶身份認(rèn)證。但當(dāng)智能卡受到攻擊甚至丟失時,遠(yuǎn)程身份認(rèn)證方案將受到嚴(yán)重的安全威脅,甚至方案不能實現(xiàn)。因此如何從兩個差別不大的生物特征中提取出相同的秘密值作為遠(yuǎn)程生物特征比對匹配的因子,是實現(xiàn)在分布式開放網(wǎng)絡(luò)中實現(xiàn)生物特征識別的關(guān)鍵。
2004年,Dodis等[3]提出了模糊提取技術(shù),實現(xiàn)了將兩個在誤差允許范圍內(nèi)的生物特征模板通過模糊提取產(chǎn)生一個相同且秘密的隨機字符作為用戶的隨機密鑰,不僅解決了同一個生物特征在噪聲等干擾因素下能夠提取出一個唯一的秘密值的問題,而且解決了因生物特征表征信息或生物模板泄露導(dǎo)致的生物特征永久不可用的問題。文獻(xiàn)[4]提出將模糊提取技術(shù)與口令放大技術(shù)結(jié)合,克服基于低熵口令認(rèn)證的低安全性問題,但其對模糊提取的安全性假設(shè)是基于被動攻擊的,不能應(yīng)對遭受主動攻擊面臨被篡改公開信息的威脅。文獻(xiàn)[5]提出了無線傳感器網(wǎng)絡(luò)下使用智能卡和模糊提取器的認(rèn)證與密鑰協(xié)商協(xié)議,但是用戶需要攜帶智能卡,如果智能卡丟失,用戶將不能登錄認(rèn)證服務(wù)器,必須重新注冊,所以使用智能卡在一定程度上對用戶帶來了不便。文獻(xiàn)[6]基于模糊提取技術(shù)和橢圓曲線性Diffie-Hellman假設(shè),提出生物特征和口令雙因子認(rèn)證與密鑰協(xié)商協(xié)議,實現(xiàn)了用戶無需智能卡的認(rèn)證。雖然,文獻(xiàn)[4]實現(xiàn)了遠(yuǎn)程認(rèn)證,文獻(xiàn)[5]的無線傳感器網(wǎng)絡(luò)環(huán)境是一種分布式的網(wǎng)絡(luò)環(huán)境,但文獻(xiàn)[4-6]均未實現(xiàn)基于生物特征與口令的跨域認(rèn)證。
區(qū)塊鏈技術(shù)最早由Nakamoto[7]提出,作為比特幣的底層技術(shù)。區(qū)塊鏈技術(shù)整合了分布式存儲、現(xiàn)代密碼學(xué)、點對點網(wǎng)絡(luò)、共識機制和智能合約這幾個關(guān)鍵技術(shù),對數(shù)據(jù)進(jìn)行交換、存儲和處理,是一個安全高效、共享智能的新技術(shù)。近幾年區(qū)塊鏈技術(shù)在各領(lǐng)域得到了廣泛的研究與應(yīng)用。文獻(xiàn)[8]提出使用區(qū)塊鏈技術(shù)保護個人數(shù)據(jù),將區(qū)塊鏈交易附上用戶的操作指令,使用戶在系統(tǒng)中維護數(shù)據(jù)、操作數(shù)據(jù),但未提及具體應(yīng)用;文獻(xiàn)[9-11]是基于區(qū)塊鏈技術(shù)在傳統(tǒng)PKI身份認(rèn)證領(lǐng)域應(yīng)用的研究,解決了傳統(tǒng) PKI領(lǐng)域存在單一 CA(Certifacate Authority)節(jié)點故障和使用 CRL(Certificate Revocation List)造成通信量過大的問題,但未提及跨PKI信任域的身份認(rèn)證問題的解決方案;文獻(xiàn)[12]提出將區(qū)塊鏈技術(shù)應(yīng)用于基于生物特征的身份認(rèn)證問題,使用區(qū)塊鏈技術(shù)存儲指紋形成一個基于區(qū)塊鏈的身份認(rèn)證系統(tǒng),但是該方案直接將未加密的指紋存儲在區(qū)塊鏈上,存在安全性與隱私性威脅。
針對傳統(tǒng)跨域認(rèn)證方式單一且方案復(fù)雜,以及生物特征認(rèn)證采用的模糊提取技術(shù)中公開信息值易遭受篡改等問題,本文提出了基于區(qū)塊鏈技術(shù)的生物特征和口令雙因子跨域認(rèn)證方案。基于不易篡改且分布式存儲的區(qū)塊鏈作為底層數(shù)據(jù)存儲架構(gòu),存儲生物特征公開信息,便于用戶恢復(fù)作為生物特征因子的隨機密鑰。基于離散對數(shù)問題把用戶在注冊與認(rèn)證階段輸入的靜態(tài)口令轉(zhuǎn)化為動態(tài)口令,作為口令因子。利用對稱加解密與生物特征隨機密鑰的識別匹配,實現(xiàn)了生物特征與口令的雙因子認(rèn)證。本文利用模糊提取技術(shù)解決了傳統(tǒng)的生物識別認(rèn)證方案存在的用戶生物特征泄露將永久不可用的問題;基于區(qū)塊鏈分布式賬本不易篡改的特點解決了文獻(xiàn)[4]存在的模糊提取器遭受主動攻擊的威脅,解決了文獻(xiàn)[5]中用戶攜帶智能卡不便且易丟失的問題,實現(xiàn)了用戶在不使用智能卡的條件下在任意客戶端進(jìn)行身份認(rèn)證。
Dodis等[3]提出的模糊提取技術(shù)存在兩個概念:
1)模糊提取器(Fuzzy Extractor)。從輸入的生物特征信號中提取出均勻分布的隨機字符串R。
2)安全梗概(Secure Sketch)。從輸入的生物特征信息ω中提取出公開信息P,當(dāng)再次輸入的ω'與ω非常相近時,可以由P和ω'恢復(fù)出ω。
模糊提取技術(shù)將輸入的生物特征信息ω分別使用模糊提取器和安全梗概以容錯的方式提取出一個均勻的隨機字符串R和一個公開信息P。當(dāng)再次輸入一個與首次輸入的生物特征信息ω偏差不大的生物特征信息ω'時,借助公開信息P,使用安全梗概恢復(fù)出ω,并作為輸入再次通過模糊提取器獲得隨機字符串R。為簡化模糊提取技術(shù)的流程,下面將模糊提取技術(shù)使用形式化表述:
1)隨機字符生成算法Gen(ω)→(R,P):輸入用戶的生物特征信息ω,通過隨機字符生成算法,輸出一個對應(yīng)于用戶生物特征的字符串R作為用戶的隨機密鑰和一個公開信息值P。
2)隨機字符恢復(fù)算法Rep(ω',P)→R:輸入用戶的生物特征ω',和對應(yīng)用戶的公開信息P,如果滿足兩次輸入的生物特征的誤差在給定容許的范圍ε內(nèi),即dis(ω,ω')≤ε,則輸出對應(yīng)于用戶生物特征的字符串R。
區(qū)塊鏈技術(shù)簡單來講主要包含以下三個概念:1)交易。在比特幣系統(tǒng)[7]中指以比特幣為貨幣的價值的交換,引申為系統(tǒng)中以某個關(guān)鍵數(shù)據(jù)為基礎(chǔ)的數(shù)據(jù)的交換。2)區(qū)塊。記錄一定時間內(nèi)系統(tǒng)的所有的交易和狀態(tài)。3)鏈。代表整個賬本,從以時間順序產(chǎn)生的區(qū)塊連接而成。
區(qū)塊鏈作為數(shù)據(jù)賬本存儲在點對點網(wǎng)絡(luò)中[13]。每一個區(qū)塊存儲網(wǎng)絡(luò)中一段時間產(chǎn)生的交易。交易由網(wǎng)絡(luò)節(jié)點經(jīng)廣播機制廣播到全網(wǎng)中,參與記賬的節(jié)點按照共識機制把交易記錄在區(qū)塊內(nèi),成為新的區(qū)塊。如圖1所示,后一個區(qū)塊記錄前一個區(qū)塊的哈希值,通過這種方式將每一個區(qū)塊連接成區(qū)塊鏈[14]。

圖1 區(qū)塊鏈結(jié)構(gòu)Fig.1 Blockchain architecture
本文方案的跨域認(rèn)證系統(tǒng)由多個分布式獨立域和區(qū)塊鏈網(wǎng)絡(luò)組成。系統(tǒng)架構(gòu)如圖2所示,系統(tǒng)由多個獨立的域和區(qū)塊鏈網(wǎng)絡(luò)組成,每個獨立的域的內(nèi)部由認(rèn)證服務(wù)器、客戶端和區(qū)塊鏈網(wǎng)絡(luò)節(jié)點組成。客戶端上連接生物特征采集器。區(qū)塊鏈網(wǎng)絡(luò)由眾多服務(wù)器和主機節(jié)點以點對點網(wǎng)絡(luò)的組網(wǎng)方式構(gòu)成,這些節(jié)點位于各分布式獨立的域內(nèi)。在實際應(yīng)用時節(jié)點可以建在認(rèn)證服務(wù)器內(nèi),也可以建在認(rèn)證服務(wù)器外。

圖2 系統(tǒng)架構(gòu)Fig.2 System architecture
由于聯(lián)盟鏈具有分布式多中心的特點,滿足多個獨立域存在的分布式網(wǎng)絡(luò)環(huán)境,因此本方案使用區(qū)塊鏈聯(lián)盟鏈技術(shù)設(shè)計針對生物特征識別的數(shù)據(jù)存儲區(qū)塊鏈網(wǎng)絡(luò),命名為生物公開信息聯(lián)盟鏈(Biometrics Public Information Consortium Blockchain,BPICB),BPICB架構(gòu)如圖3所示。

圖3 BPICB架構(gòu)Fig.3 BPICB architecture
BPICB網(wǎng)絡(luò)節(jié)點建立在不同的域內(nèi),通過網(wǎng)絡(luò)互相連接。每個域可以選擇節(jié)點部署的方式,可以部署在認(rèn)證服務(wù)器里,也可以獨立于認(rèn)證服務(wù)器之外部署。節(jié)點類型分為以下兩類:
1)記賬節(jié)點(Keep Account Peer,KAP)。由服務(wù)器充當(dāng),主要負(fù)責(zé)維護區(qū)塊鏈賬本。參與共識機制將交易記錄在區(qū)塊鏈內(nèi),保存有區(qū)塊鏈賬本。
2)服務(wù)節(jié)點(Service Peer,SP)。由主機充當(dāng),主要負(fù)責(zé)為客戶端提供區(qū)塊鏈數(shù)據(jù)存儲與查詢服務(wù)。通過接收客戶端的操作請求,組合交易并廣播至網(wǎng)絡(luò)中。通過與記賬節(jié)點的同步保存有區(qū)塊鏈賬本,提供客戶端對賬本的查詢功能。
在BPICB網(wǎng)絡(luò)中,記賬節(jié)點記錄區(qū)塊鏈數(shù)據(jù),服務(wù)節(jié)點提供區(qū)塊鏈服務(wù)。每一個獨立的域內(nèi)至少有一個記賬節(jié)點和服務(wù)節(jié)點,提供完整的區(qū)塊鏈數(shù)據(jù)存儲、查詢與審計的功能。記賬節(jié)點通常是運算效率較高的服務(wù)器,采用記賬節(jié)點記賬而不是由全網(wǎng)所有節(jié)點競爭記賬,可以有效提高區(qū)塊鏈記賬的效率。服務(wù)節(jié)點可以是主機也可以是服務(wù)器,連接客戶端,為客戶端提供區(qū)塊鏈數(shù)據(jù)存儲與查詢服務(wù)。將區(qū)塊鏈網(wǎng)絡(luò)中記錄數(shù)據(jù)和查詢數(shù)據(jù)的節(jié)點分離,各司其職,一方面提高區(qū)塊鏈記賬的效率,減少資源浪費;另一方面更好地提供區(qū)塊鏈賬本服務(wù)。
區(qū)塊鏈的交易對應(yīng)區(qū)塊鏈賬本內(nèi)的一條條數(shù)據(jù)。本方案使用BPICB網(wǎng)絡(luò)存儲模糊提取后的公開信息值P,所以區(qū)塊鏈的交易由公開信息P及其相關(guān)信息組成。交易的數(shù)據(jù)結(jié)構(gòu)如圖4所示。其中:Tx-id表示交易號;IDDomain-Number表示每個域的用戶的賬戶號,代表用戶的唯一標(biāo)識;Data表示模糊提取技術(shù)產(chǎn)生的公開信息P;Operation表示對公開信息P的操作,分為注冊(Register)、查詢(Query)、撤銷(Revoke),記錄對公開信息P的全部操作;Signature表示向服務(wù)節(jié)點發(fā)送關(guān)于公開信息P及其相關(guān)操作的認(rèn)證服務(wù)器或客戶端的簽名。

圖4 交易的數(shù)據(jù)結(jié)構(gòu)Fig.4 Data structure of the transaction
1)當(dāng)用戶注冊時,客戶端的生物特征采集器提取生物特征模板ωU,使用模糊提取技術(shù)的隨機字符生成算法產(chǎn)生公開信息 P,然后將用戶 IDDomain-Number、公開信息 P、注冊操作Register,以及簽名Signature發(fā)送給服務(wù)節(jié)點,服務(wù)節(jié)點組裝交易Transaction并附上交易號Tx-id廣播至區(qū)塊鏈網(wǎng)絡(luò),記賬節(jié)點把一定時間內(nèi)收到的區(qū)塊鏈網(wǎng)絡(luò)中的交易通過共識機制記錄在新的區(qū)塊中,形成最新的區(qū)塊鏈。用戶注冊時產(chǎn)生交易的具體流程如圖5所示。

圖5 用戶注冊時產(chǎn)生交易的流程Fig.5 Process of generating a transaction when user registers
2)當(dāng)用戶查詢時,客戶端向區(qū)塊鏈網(wǎng)絡(luò)的服務(wù)節(jié)點發(fā)送用戶的唯一標(biāo)識符 ID、查詢操作Query和客戶端的簽名Signature,服務(wù)節(jié)點根據(jù)用戶的唯一標(biāo)識符IDDomain-Number查詢區(qū)塊鏈得到用戶對應(yīng)的公開信息P,返回給客戶端。然后服務(wù)節(jié)點組裝交易并附上交易號Tx-id廣播至區(qū)塊鏈網(wǎng)絡(luò),記賬節(jié)點把區(qū)塊鏈網(wǎng)絡(luò)中一定時間內(nèi)的交易通過共識機制記錄在新的區(qū)塊中,形成最新的區(qū)塊鏈。用戶查詢時產(chǎn)生交易的具體流程如圖6所示。
3)當(dāng)用戶注銷時,認(rèn)證服務(wù)器向區(qū)塊鏈網(wǎng)絡(luò)的服務(wù)節(jié)點發(fā)送用戶的唯一標(biāo)識符IDDomain-Number、公開信息值P、注銷操作Revoke和認(rèn)證服務(wù)器的簽名Signature,服務(wù)節(jié)點組裝交易Transaction并附上交易號Tx-id并發(fā)往記賬節(jié)點處理,記賬節(jié)點通過共識機制將交易存儲在新的區(qū)塊中,形成最新的區(qū)塊鏈。用戶注銷時產(chǎn)生交易的具體流程如圖7所示。

圖6 用戶查詢時產(chǎn)生交易的流程Fig.6 Process of generating a transaction when user queries

圖7 用戶注銷時產(chǎn)生交易的流程Fig.7 Process of generating a transaction when user revokes
在區(qū)塊鏈體系的高度自治去中心化的分布式環(huán)境中,如何讓區(qū)塊鏈節(jié)點記賬并使全網(wǎng)節(jié)點達(dá)成數(shù)據(jù)上的共識,是設(shè)計區(qū)塊鏈系統(tǒng)和應(yīng)用方案的關(guān)鍵。本方案選用適合于聯(lián)盟鏈環(huán)境的的Raft共識機制[15]使全網(wǎng)數(shù)據(jù)達(dá)成共識。根據(jù)Raft共識機制,將BPICB網(wǎng)絡(luò)中的節(jié)點分為以下3個角色:
1)領(lǐng)袖:記賬節(jié)點投票選舉一名擔(dān)任;
2)群眾:落選的記賬節(jié)點和服務(wù)節(jié)點擔(dān)任;
3)候選人:所有記賬節(jié)點擔(dān)任。
在BPICB網(wǎng)絡(luò)中,網(wǎng)絡(luò)中的記賬節(jié)點作為候選人投票表決選舉唯一的領(lǐng)袖,投票時參考記賬節(jié)點的計算速度以及吞吐量,獲得選票最多的記賬節(jié)點成為領(lǐng)袖。投票結(jié)束后候選人自動變?yōu)槿罕姟?dān)任領(lǐng)袖的記賬節(jié)點將一段時間內(nèi)的交易驗證后記錄在區(qū)塊中連接成為最新的區(qū)塊鏈賬本,作為群眾的節(jié)點同步區(qū)塊鏈賬本。
本章主要介紹基于區(qū)塊鏈技術(shù)的生物特征和口令雙因子跨域認(rèn)證協(xié)議。由于BPICB實現(xiàn)了生物特征公開信息的數(shù)據(jù)共享,用戶在任意客戶端通過查詢區(qū)塊鏈便可得到用戶對應(yīng)的公開信息,通過模糊提取器技術(shù)可在客戶端上恢復(fù)出隨機密鑰,因此能夠?qū)崿F(xiàn)用戶在本地與異地進(jìn)行跨域認(rèn)證。方案具體分為用戶注冊、本地認(rèn)證、本地跨域認(rèn)證、異地跨域認(rèn)證四個階段。方案中使用的參數(shù)如表1所示。
用戶在注冊階段的流程如圖8所示。
用戶在注冊階段的具體流程如下:
第1步 A域用戶在本地客戶端ClientA-t上輸入用戶名IDA-i和靜態(tài)口令PWA-i,通過生物特征采集器采集生物特征ωA-i。
第2步 客戶端使用模糊提取技術(shù)的隨機密鑰生成函數(shù)Gen(),對輸入的生物特征模板ωA-i進(jìn)行處理,產(chǎn)生隨機密鑰RA-i和公開信息 PA-i,將用戶的靜態(tài)口令 PWA-i作哈希運算H(PWA-i),記為 y,然后將生物特征模板 ωA-i和靜態(tài)口令PWA-i刪除。客戶端將 IDA-i、RA-i和 y 通過安全的信道發(fā)送到本地認(rèn)證服務(wù)器ASA。
第 3 步 本地認(rèn)證服務(wù)器 ASA收到包含有 IDA-i、RA-i和y的消息,檢查該用戶的身份標(biāo)識是否已經(jīng)存在,如果不存在則可以注冊,把 IDA-i、RA-i、y 存儲在數(shù)據(jù)庫內(nèi)。
第4步 客戶端ClientA-t將公開信息PA-i發(fā)送到服務(wù)節(jié)點組裝交易記錄在區(qū)塊鏈上。

表1 方案參數(shù)說明Tab.1 Description of scheme parameters

圖8 注冊階段流程Fig.8 Flow chart of registration phase
用戶在本地認(rèn)證階段的流程如圖9所示。
用戶在本地認(rèn)證階段的具體流程如下:
第1步 用戶在客戶端ClientA-t輸入用戶名IDA-i和靜態(tài)口令PWA-i'并在生物特征采集器上采集得到生物特征模板ωA-i'。
第2步 客戶端ClientA-t向服務(wù)節(jié)點查詢區(qū)塊鏈數(shù)據(jù),得到公開信息PA-i(具體過程見2.3節(jié)),使用模糊提取技術(shù)的恢復(fù)算法Rev(ωA-i',PA-i),生成隨機密鑰RA-i'。將靜態(tài)口令作哈希運算H(PWA-i') 記為y',將生物特征模板 ωA-i'和靜態(tài)口令PWA-i'刪除。然后產(chǎn)生隨機數(shù)x,計算X=gx,使用y'生成 d'=gxy',d'作為密鑰對稱加密 Ed'(RA-i'),將消息(IDA-i,X,Ed'(RA-i'))通過安全的信道發(fā)送給認(rèn)證服務(wù)器ASA。
第3步 認(rèn)證服務(wù)器ASA接收到客戶端ClientA-t發(fā)來的消息(IDA-i,X,Ed'(RA-i')),根據(jù)IDA-i查找注冊時存儲在數(shù)據(jù)庫中的y,計算d=Xy。使用d對Ed'(RA-i')解密,有以下兩種情況:
a) 如果使用 d 能夠解密 Ed'(RA-i'),得到 RA-i',然后根據(jù)IDA-i查找注冊時存儲在數(shù)據(jù)庫中的 RA-i,執(zhí)行第4步;
b)如果使用d無法解密Ed'(RA-i'),則認(rèn)證失敗,原因為口令錯誤。
第4步 認(rèn)證服務(wù)器ASA驗證RA-i和RA-i'是否相等。有以下兩種情況:
a) 如果 RA-i=RA-i',認(rèn)證成功,向 B 域認(rèn)證服務(wù)器返回認(rèn)證成功的消息;
b) 如果 RA-i≠ RA-i',認(rèn)證失敗,向 B 域認(rèn)證服務(wù)器返回認(rèn)證失敗的消息,原因為生物特征錯誤。
用戶在本地跨域認(rèn)證階段的流程如圖10所示。
用戶在本地跨域認(rèn)證階段的具體流程如下:
第1步 用戶在客戶端ClientA-t輸入用戶名IDA-i和靜態(tài)口令PWA-i'并在生物特征采集器上采集得到生物特征模板ωA-i'。
第2步 客戶端ClientA-t向服務(wù)節(jié)點查詢區(qū)塊鏈數(shù)據(jù),得到用戶IDA-i的公開信息PA-i,使用模糊提取技術(shù)的恢復(fù)算法 Rev(ωA-i',PA-i) 恢復(fù)出隨機密鑰 RA-i'。計算靜態(tài)口令的哈希值 H(PWA-i'),記為 y',客戶端將生物特征模板ωA-i'和靜態(tài)口令 PWA-i'刪除。將用戶的 IDA-i、RA-i'、y'用 B 域的認(rèn)證服務(wù)器ASB的公鑰PKASB加密生成EPKASB(IDA-i,RA-i',y'),發(fā)送消息(IDA-i,EPKAS(IDA-i,RA-i',y')) 給 A 域認(rèn)證服務(wù)器 ASA。B
第3步 A域認(rèn)證服務(wù)器ASA根據(jù)IDA-i查找存儲在數(shù)據(jù)庫中的 y和RA-i。產(chǎn)生一個隨機數(shù)x,計算X=gx,使用y生成動態(tài)口令d=gxy,使用d作為密鑰進(jìn)行對稱加密Ed(RA-i),將消息(Ed(RA-i),X,EPKAS(IDA-i,RA-i',y')) 發(fā)給 B 域認(rèn)證服B務(wù)器ASB。

圖9 本地認(rèn)證階段流程Fig.9 Flow chart of local authentication phase

圖10 本地跨域認(rèn)證階段流程Fig.10 Flow chart of local cross domain authentication phase
第4步 B域認(rèn)證服務(wù)器ASB收到數(shù)據(jù)包后,使用私鑰對EPKASB
(IDA-i,RA-i',y') 解密得到 IDA-i、RA-i'和 y',使用 X 和y'計算動態(tài)口令 d'=Xy'。使用 d 對 Ed'(RA-i') 解密,有以下兩種情況:a) 如果使用d能夠解密Ed'(RA-i'),得到RA-i',執(zhí)行第5步;b)如果使用d無法解密Ed'(RA-i'),則認(rèn)證失敗,原因為口令錯誤。
第5 步 認(rèn)證服務(wù)器ASB驗證 RA-i和RA-i'是否相等。以下分兩種情況:
a) 如果 RA-i=RA-i',認(rèn)證成功;
b)如果 RA-i≠ RA-i',認(rèn)證失敗,原因為生物特征錯誤。
用戶在異地跨域認(rèn)證階段的流程如圖11所示。
用戶在異地跨域認(rèn)證階段的具體流程如下:
第1步 用戶輸入IDA-i和靜態(tài)口令PWA-i'并通過生物特征采集器采集生物特征模板ωA-i'。
第2步 客戶端向最近的服務(wù)節(jié)點查詢區(qū)塊鏈得到用戶IDA-i的公開信息 PA-i,使用模糊提取技術(shù) 的 恢 復(fù)算法Rev(ωA-i',PA-i) 恢復(fù)出生物特征隨機密鑰 RA-i',計算靜態(tài)口令的哈希值H(PWA-i'),記為y',將生物特征模板ωA-i'和靜態(tài)口令 PWA-i'刪除。發(fā)送消息(IDA-i,RA-i',y') 給 B 域的認(rèn)證服務(wù)器ASB。
第3步 B域認(rèn)證服務(wù)器ASB根據(jù)用戶的唯一標(biāo)識符IDA-i識別用戶的本地服務(wù)器,并向其本地服務(wù)器ASB發(fā)送用戶名IDA-i,請求該用戶的生物特征隨機密鑰RA-i和共享密鑰X。
第4步 A域認(rèn)證服務(wù)器ASA根據(jù)IDA-i查找注冊時存儲在數(shù)據(jù)庫中的 y和RA-i,產(chǎn)生一個隨機數(shù)x,計算X=gx,使用y生成動態(tài)口令d=gxy,并將d作為密鑰進(jìn)行對稱加密Ed(RA-i),A 域認(rèn)證服務(wù)器 ASA發(fā)送消息(IDA-i,X,Ed(RA-i))到B域認(rèn)證服務(wù)器ASB。
第5步 B域認(rèn)證服務(wù)器ASB計算d'=Xy',使用d'解密Ed(RA-i),分為以下兩種情況:
a) 如果使用 d'能夠解密 Ed(RA-i),得到 RA-i,執(zhí)行第 6步;
b)如果使用d'無法解密Ed(RA-i),則認(rèn)證失敗,原因為口令錯誤。
第6 步 認(rèn)證服務(wù)器ASB驗證 RA-i和RA-i'是否相等。以下分兩種情況:
a) 如果 RA-i=RA-i',認(rèn)證成功,向 B 域認(rèn)證服務(wù)器返回認(rèn)證成功的消息;
b) 如果 RA-i≠ RA-i',認(rèn)證失敗,向 B 域認(rèn)證服務(wù)器返回認(rèn)證失敗的消息,原因為生物特征錯誤。

圖11 異地跨域認(rèn)證階段流程Fig.11 Flow chart of remote cross domain authentication phase
4.1.1 抗中間人攻擊
本方案在用戶注冊與登錄認(rèn)證時,客戶端將隨機密鑰R和靜態(tài)口令的哈希值y通過安全的信道或者直接通過內(nèi)部局域網(wǎng)發(fā)送給認(rèn)證服務(wù)器,保證認(rèn)證信息不被篡改。在本地跨域認(rèn)證和異地跨域認(rèn)證階段,需要進(jìn)行兩個域的認(rèn)證服務(wù)器間的通信,在這種多域間的公共網(wǎng)絡(luò)下發(fā)送消息,采用對稱與非對稱加密技術(shù),并基于離散對數(shù)問題,可以不使用安全的信道在公開的信道傳輸。以下是各個階段關(guān)于中間人BPICB攻擊的安全性分析:
1)注冊階段。客戶端ClientA-t與本地認(rèn)證服務(wù)器ASA通信,客戶端通過安全的信道發(fā)送消息(IDA-i,RA-i,y) 到本地認(rèn)證服務(wù)器,攻擊者無法竊取和篡改。客戶端與BPICB服務(wù)節(jié)點SP通信,通過安全的信道傳輸PA-i及相關(guān)信息,攻擊者無法篡改。
2)本地認(rèn)證階段。客戶端ClientA-t與本地認(rèn)證服務(wù)器ASA通信,客戶端通過安全的信道發(fā)送消息(IDA-i,X,Ed'(RA-i'))到本地認(rèn)證服務(wù)器。由于X=gx基于離散對數(shù)問題,攻擊者即使竊取到X也無法計算出隨機數(shù)x,并且攻擊者沒有靜態(tài)口令的哈希值,也無法根據(jù)X計算出動態(tài)口令。客戶端使用與服務(wù)器協(xié)商的動態(tài)口令d'作對稱加密Ed'(RA-i'),攻擊者無法篡改和竊取RA-i'。
3)本地跨域認(rèn)證階段。首先客戶端ClientA-t與本地認(rèn)證服務(wù)器ASA通信,客戶端通過安全的信道發(fā)送消息(IDA-i,EPKAS(IDA-i,RA-i',y')) 給本地認(rèn)證服務(wù)器,由于本地認(rèn)證服B務(wù)器沒有B域認(rèn)證服務(wù)器ASB的私鑰,只對其進(jìn)行轉(zhuǎn)發(fā),無法解密,因此不存在本地認(rèn)證服務(wù)器修改消息的可能。然后本地認(rèn)證服務(wù)器ASA和B域認(rèn)證服務(wù)器ASB通信,發(fā)送消息(E(R),X,E(ID,R',y')),由于 X=gx基于離散dA-iPKASBA-iA-i對數(shù)問題,攻擊者即使竊取到X也無法計算出隨機數(shù)x,并且攻擊者沒有靜態(tài)口令的哈希值,也無法根據(jù)X計算出動態(tài)口令。兩認(rèn)證服務(wù)器間采用對稱加密和非對稱加密通信,攻擊者沒有相關(guān)密鑰無法獲取有用的信息。
4)異地跨域認(rèn)證階段。首先客戶端ClientB-i與B域的認(rèn)證服務(wù)器ASB通信,客戶端通過安全的信道發(fā)送消息(IDA-i,RA-i',y')給認(rèn)證服務(wù)器ASB,攻擊者無法竊取和篡改消息。A域認(rèn)證服務(wù)器ASA與B域認(rèn)證服務(wù)器ASB通信,發(fā)送消息(IDA-i,X,Ed(RA-i)),由于 X=gx基于離散對數(shù)問題,攻擊者即使竊取到X也無法計算出隨機數(shù)x,并且攻擊者沒有靜態(tài)口令的哈希值,也無法根據(jù)X計算出動態(tài)口令。兩認(rèn)證服務(wù)器間采用對稱加密和非對稱加密,攻擊者沒有相關(guān)密鑰無法獲取有用的信息。
4.1.2 抗重放攻擊
1)本地認(rèn)證階段。客戶端產(chǎn)生隨機數(shù)x,計算X=gx發(fā)給A域認(rèn)證服務(wù)器ASA。客戶端與認(rèn)證服務(wù)器兩方分別擁有登錄與注冊階段兩次輸入的靜態(tài)口令y'和y,根據(jù)隨機數(shù)x和X可以分別計算出動態(tài)口令d'=gxy'和d=Xy。動態(tài)口令在認(rèn)證時只使用一次,攻擊者即使截取了消息也無法進(jìn)行重放攻擊。
2)本地跨域認(rèn)證階段。A域認(rèn)證服務(wù)器產(chǎn)生隨機數(shù)x,計算X=gx發(fā)給B域認(rèn)證服務(wù)器。A域認(rèn)證服務(wù)器與B域認(rèn)證服務(wù)器分別擁有注冊與登錄階段兩次輸入的靜態(tài)口令y和y',根據(jù)隨機數(shù)x和X可以分別計算出動態(tài)口令d=gxy和d'=Xy'。動態(tài)口令在認(rèn)證時只使用一次,攻擊者即使截取了消息也無法進(jìn)行重放攻擊。
3)異地跨域認(rèn)證階段。A域認(rèn)證服務(wù)器產(chǎn)生隨機數(shù)x,計算X=gx發(fā)給B域認(rèn)證服務(wù)器。A域認(rèn)證服務(wù)器與B域認(rèn)證服務(wù)器分別擁有注冊與登錄階段兩次輸入的靜態(tài)口令y和y',根據(jù)隨機數(shù)x和X可以分別計算出動態(tài)口令d=gxy和d'=Xy'。動態(tài)口令在認(rèn)證時只使用一次,攻擊者即使截取了消息也無法進(jìn)行重放攻擊。
4.1.3 抗口令猜測攻擊
用戶在客戶端上輸入靜態(tài)口令后,客戶端便直接將靜態(tài)口令作哈希運算把靜態(tài)口令的哈希值發(fā)送出去,并將靜態(tài)口令的緩存刪除,動態(tài)口令由靜態(tài)口令的哈希值和隨機數(shù)生成。所以用戶輸入靜態(tài)口令由客戶端作哈希運算后系統(tǒng)中不再出現(xiàn)靜態(tài)口令,攻擊者無法對靜態(tài)口令進(jìn)行竊取。將靜態(tài)口令通過哈希算法變成隨機散列值,可以有效避免遭受口令猜測攻擊;同時由于哈希函數(shù)具有單向性,也無法將靜態(tài)口令的哈希值還原回靜態(tài)口令。
4.1.4 防止隨機密鑰與靜態(tài)口令的哈希值雙因子泄露
如果攻擊者攻擊本地認(rèn)證服務(wù)器的數(shù)據(jù)庫,存儲隨機密鑰和靜態(tài)口令的哈希值出現(xiàn)泄露的情況:
1)如果用戶隨機密鑰泄露,本地認(rèn)證服務(wù)器對該用戶重新注冊,使用不同與以往的模糊提取算法重新生成新的隨機密鑰保存在認(rèn)證服務(wù)器的數(shù)據(jù)庫中,同時將區(qū)塊鏈上舊的公開信息值添加注銷指令,將生成的新的公開信息值記錄在區(qū)塊鏈上。用戶登錄認(rèn)證時客戶端使用與重新注冊時使用的模糊提取技術(shù)配套的恢復(fù)算法恢復(fù)隨機密鑰,然后進(jìn)行匹配識別。
2)如果用戶的靜態(tài)口令的哈希值泄露,本地服務(wù)器對該用戶進(jìn)行重新注冊,用戶輸入新的靜態(tài)口令進(jìn)行哈希運算并保存到本地認(rèn)證服務(wù)器的數(shù)據(jù)庫內(nèi)。
4.1.5 公開信息一致性
在注冊階段,客戶端將用戶生物特征對應(yīng)的公開信息值發(fā)送到區(qū)塊鏈服務(wù)節(jié)點組裝交易,由區(qū)塊鏈網(wǎng)絡(luò)的共識節(jié)點通過共識算法將交易數(shù)據(jù)記錄在區(qū)塊鏈分布式賬本中。由于共識算法實現(xiàn)了全網(wǎng)的區(qū)塊鏈節(jié)點對賬本的共識,因此保證了記錄在區(qū)塊鏈賬本中的數(shù)據(jù)的一致性。另外,區(qū)塊鏈具有分布式存儲的高冗余特性,任何一個節(jié)點的任意一個數(shù)據(jù)被篡改將在下一次共識的時候被檢測到。所以公開信息一旦記錄在區(qū)塊鏈上,用戶在進(jìn)行認(rèn)證時使用的其本人對應(yīng)的公開信息與注冊時提取的公開信息是一致的。
本節(jié)對方案的計算開銷進(jìn)行分析,并與同類型的基于生物特征與口令的身份認(rèn)證方案如文獻(xiàn)[4-5]方案作比較,計算開銷對比如表2所示。

表2 不同方案計算開銷對比Tab.2 Comparison of computation overhead for different schemes
本文方案與文獻(xiàn)[4]方案比較,使用模糊提取操作次數(shù)相同,比文獻(xiàn)[4]方案少1次指數(shù)運算,少2次哈希運算,多1次對稱加密與解密運算,多2次簽名驗證操作。本文方案與文獻(xiàn)[4]方案整體上除了最后一項指標(biāo)外,前四項指標(biāo)的計算開銷基本相同。但是文獻(xiàn)[4]方案提到使用模糊提取器不能抵抗主動攻擊,所以本文方案使用區(qū)塊鏈技術(shù)存儲公開信息值,在用戶注冊與認(rèn)證階段使用了注冊與查詢操作生成2個交易,并附上2個簽名,因此本文方案多使用2個簽名的計算開銷解決文獻(xiàn)[4]方案模糊提取器易受主動攻擊的威脅。
本文方案與文獻(xiàn)[5]方案比較,使用模糊提取操作的次數(shù)相同,比文獻(xiàn)[5]方案多2次指數(shù)運算,少10次哈希運算,多1次對稱加密與解密運算,多2次簽名驗證操作。本文方案與文獻(xiàn)[5]方案相比計算開銷較高,原因是本方案客戶端與服務(wù)器使用指數(shù)運算將靜態(tài)口令協(xié)商并轉(zhuǎn)化為動態(tài)口令,將隨機密鑰通過對稱加密在網(wǎng)絡(luò)中傳輸,代替文獻(xiàn)[5]方案中使用智能卡存儲大多數(shù)據(jù)的哈希值參與生物特征和動態(tài)口令的雙因子認(rèn)證。文獻(xiàn)[5]方案的認(rèn)證方案完全依賴智能卡存儲相關(guān)數(shù)據(jù),任何過程中智能卡丟失將造成整個方案失敗。本文方案雖然增加了系統(tǒng)計算開銷,在保證安全的基礎(chǔ)上為用戶提供了便捷的服務(wù),避免智能卡丟失造成的安全威脅。
1)雙因子的雙向認(rèn)證。
在本地認(rèn)證、本地跨域認(rèn)證、本地異地認(rèn)證三個場景中,在客戶端上使用模糊提取技術(shù)的隨機字符生成與恢復(fù)算法,注冊階段與認(rèn)證階段分別進(jìn)行隨機字符的提取與恢復(fù),隨機字符作為生物特征因子參與生物識別。方案將認(rèn)證服務(wù)器上在注冊階段保存的靜態(tài)口令的哈希值與客戶端上用戶認(rèn)證時輸入的靜態(tài)口令的哈希值轉(zhuǎn)化為動態(tài)口令,作為口令因子和對稱密鑰,對隨機字符加密,通過對稱加解密和生物因子識別認(rèn)證,實現(xiàn)客戶端與認(rèn)證服務(wù)器的雙向認(rèn)證。
2)保護生物特征不易失效。
生物特征具有唯一性和穩(wěn)定性,假如生物特征或生物特征模板丟失會導(dǎo)致用戶特定的生物特征永久的不可使用。比如一個用戶的一個指紋特征或模板泄露,將導(dǎo)致使用該指紋存在永久性的不安全,攻擊者可以根據(jù)泄露的生物特征對用戶的活動進(jìn)行追蹤,還可能偽裝成用戶進(jìn)行重放攻擊。本方案將生物特征模糊提取得到的隨機密鑰作為生物因子,而不直接使用生物特征或生物模板作為生物因子在系統(tǒng)內(nèi)傳輸和認(rèn)證,對生物特征及模板起到了良好的保護作用,避免用戶生物特征泄露造成的永久無法使用。如果隨機密鑰出現(xiàn)泄露,添加密碼算法對隨機密鑰進(jìn)行保護,或使用新的模糊提取算法提取新的隨機密鑰,不會造成生物特征泄露造成的永久不可用問題。
3)用戶無需使用智能卡在多域間任意客戶端登錄。
利用區(qū)塊鏈技術(shù)的分布式賬本功能,每個域的區(qū)塊鏈節(jié)點都存儲了經(jīng)模糊提取技術(shù)密鑰生成階段產(chǎn)生的生物特征公開信息值。BPICP網(wǎng)絡(luò)中的服務(wù)節(jié)點可以為客戶端提供查詢服務(wù),客戶端上連接有生物特征采集器。用戶可以在任何客戶端查詢區(qū)塊鏈分布式賬本,也可以在任何連接有生物特征采集器的客戶端作生物特征的模糊提取。方案不需要用戶簽名所以不需要將私鑰提前保存到特定的客戶端中,也不需要使用智能卡存儲私鑰和公開信息值,因而用戶可以在多域間任意客戶端上進(jìn)行登錄。
4)生物特征公開信息的全生命周期記錄。
基于區(qū)塊鏈不可篡改與分布式存儲的特點,建立生物公開信息聯(lián)盟鏈,對生物特征模糊提取得到的公開信息值進(jìn)行全生命周期的記錄。通過記錄用戶生物公開信息及其相關(guān)操作,實現(xiàn)了對公開信息的全周期與全面的記錄。通過記錄生物公開信息的區(qū)塊鏈賬本,實現(xiàn)對用戶及客戶端的監(jiān)控與審計。
針對傳統(tǒng)的跨域認(rèn)證方式較少、方案復(fù)雜,以及生物特征認(rèn)證采用的模糊提取技術(shù)中公開信息值易遭受篡改等問題,本文提出了基于區(qū)塊鏈技術(shù)的生物特征和口令雙因子跨域認(rèn)證方案。該方案將模糊提取技術(shù)產(chǎn)生的生物特征公開信息值保存在不易篡改且去中心化的區(qū)塊鏈賬本中,并分別設(shè)計了用戶本地認(rèn)證、本地跨域認(rèn)證、異地跨域認(rèn)證協(xié)議,在保證安全的基礎(chǔ)上,實現(xiàn)了多域間的互聯(lián)互通,避免了傳統(tǒng)模糊提取技術(shù)易遭受主動攻擊的威脅,解決了用戶攜帶智能卡存在的易丟失和易受攻擊的便攜性與安全性問題。下一步將采用形式化的方法對本文方案進(jìn)行邏輯驗證,并改進(jìn)區(qū)塊鏈共識算法,提升區(qū)塊鏈網(wǎng)絡(luò)對數(shù)據(jù)達(dá)成共識的效率。