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

圖1 區塊鏈結構Fig.1 Blockchain architecture
本文方案的跨域認證系統由多個分布式獨立域和區塊鏈網絡組成。系統架構如圖2所示,系統由多個獨立的域和區塊鏈網絡組成,每個獨立的域的內部由認證服務器、客戶端和區塊鏈網絡節點組成??蛻舳松线B接生物特征采集器。區塊鏈網絡由眾多服務器和主機節點以點對點網絡的組網方式構成,這些節點位于各分布式獨立的域內。在實際應用時節點可以建在認證服務器內,也可以建在認證服務器外。

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

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

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

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

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

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

表1 方案參數說明Tab.1 Description of scheme parameters

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

圖9 本地認證階段流程Fig.9 Flow chart of local authentication phase

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

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

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