■ 文/公安部第一研究所 沈孝東
北京市微技術研究所 葛利軍
關鍵字:PACE 國密算法

隨著科學技術的進步和人們對安全需求的不斷增加,特別是“9·11”事件之后,全球出于國家安全和反恐需求,進一步提高旅行證件的安全性,國際民用航空組織(ICAO)提出電子機讀旅行證件(eMRTD)。我國順應ICAO的要求,從2004年開始了旅行證件的電子化工作。eMRTD的安全主要包括物理層安全、通信層安全和協議層安全三個層面。物理層安全主要指芯片本身的安全性,即不能通過芯片的物理特性獲取相關信息。通信層安全是指保護芯片與機具交換信息的安全,防止信息的破解和干擾。協議層安全是指通過相應的安全協議保證芯片內信息的完整性、真實性和機密性。
為了在eMRTD和查驗系統(PCD)之間建立一個安全的通信信道,目前主要采用基本訪問控制(BAC)來認證eMRTD和PCD的合法性,并且建立會話密鑰,用于兩者之間通信的加密,從而保證交互信息的機密性。由于BAC協議會話密鑰由隨機性非常有限的打印數據生成,為了解決BAC協議會話密鑰熵偏低的問題,2015年ICAO發布了第七版Doc 9303號文件,提出了PACE協議,與BAC協議相似,但采取非對稱密碼來建立會話密鑰,其強度與所使用的口令的熵無關,所以可以為eMRTD和PCD之間的通信建立了安全環境。
PACE協議主要包括派生密鑰、執行密鑰協商和相互認證。派生密鑰主要功能是根據口令派生出加解密所需要的密鑰,即PACE使用的KDFπ口令派生出來的,對于有全球互操作性的eMRTD,可以下列兩種口令:機讀區(MRZ)和卡訪問號(CAN)。MRZ由證件號碼、出生日期和截止日期串聯構成,并包括各自的校驗位。CAN是印在數據頁正面的數字,必須隨機或者偽隨機選擇。口令的16個字節SHA-1散列值用作密鑰種子,通過密鑰派生函數生成證件加解密所需密鑰。
PACE協議密鑰協商是整個協議重要的一部分,通常包括通用映射、合成映射和芯片認證映射,每種映射又包含基于ECDH密鑰交換協議和基于DH密鑰交換協議兩種。對于ECDH密鑰交換協議,選擇<G>中的H,使得logGH未知。H點應由匿名Diffie-Hellman密鑰協商進行計算,對于DH協議,函數被定義為選擇<g>中的h,使得未知。群元素h應按照由匿名Diffie-Hellman密鑰協商進行計算。
設PCD為發起方,eMRTD的芯片(IC)為響應方。PACE協議過程如下:
(1)PCD獲取eMRTD的MRZ,由密鑰派生函數KDFπ派生出加解密密鑰Kπ;
在生成會話密鑰時,因為KDF僅使用第一個坐標派生會話密鑰,所以僅需要共享秘密K的x坐標,認證算法MAC使用AES的CMAC模式。

圖1 PACE協議流程圖
從整個協議角度來看, PACE協議相對于BAC協議更為安全,但是PACE協議加解密密鑰由隨機性非常有限的打印字符的派生出來。由于PACE協議中隨機數s主要用于放大會話密鑰熵和防止重放攻擊,一旦攻擊者獲得密鑰,便獲得了隨機數s,就顯然地降低了會話密鑰熵,使整個協議安全性受到威脅。2017年,Marc Stevens等人在文獻 [2]中創造出第一個碰撞實例,這是長期以來在理論研究上證明SHA-1算法存在風險之后,在具有實際意義的攻擊實例SHA-1碰撞試驗也取得了成功,在碰撞攻擊的影響下攻擊者能夠構造出PACE協議的派生密鑰,SHA-1的碰撞試驗對基于這個算法的密鑰產生機制變得不再安全。
為此,本文提出了基于國產密碼算法的改進的PACE協議,國產密碼是指國家密碼局認定的國產商用密碼算法,簡稱國密,目前主要使用公開的SM2、SM3和SM4三類算法,分別對應非對稱密碼算法、哈希算法和對稱密碼算法。SM2算法全稱為橢圓曲線算法,該算法用三次方程來表示的,并且與計算橢圓周長的方程相似,所以稱為橢圓曲線算法。SM3密碼摘要算法是中國商用密碼雜湊算法標準,算法采用Merkle-Damgard結構,消息分組長度為512位,摘要值長度為256位,適用于商用密碼應用中的數字簽名和驗證。SM4為分組密碼算法,分組長度為128比特,密鑰長度為128比特,密文為128比特。在改進的協議中PCD和IC之間交換的隨機數不參與密鑰協商過程,有效保護了會話密鑰的熵,提高了攻擊難度增強了協議的安全性。
設PCD和IC協商獲得密鑰數據的長度為klen比特,PCD為發起方,IC為響應方。
PCD和IC為了獲得相同的密鑰,應實現如下運算步驟:
PCD:
IC:

圖2 改進的PACE協議流程圖
BAC協議所用的會話密鑰由隨機性非常有限的打印數據生成,即生成密鑰的數據包括證件號、出生日期和截止日期,因此所得的密鑰熵偏低,安全強度較低。PACE協議采用橢圓曲線算法,其安全性依賴于橢圓曲線上離散對數問題困難性,PACE協議通過引入隨機數s協商一個臨時參數來提高會話密鑰熵和防止重放攻擊,認證令牌用來防中間人攻擊。PACE協議解決了BAC協議中會話密鑰熵低的問題,但由于PACE協議的加解密密鑰是由有限打印字符的口令的SHA-1值派生出來的,加密密鑰也面臨密鑰熵偏低的問題,隨著對SHA-1算法研究發展,由SHA-1值派生出來的加密密鑰的安全機制受到威脅,進而用于協商密鑰的隨機數s也容易被攻擊,PACE協議的安全性受到威脅。
在改進的PACE協議中,加密密鑰是由SM3算法派生出來的,目前沒有對SM3算法有效的攻擊,并且密鑰協商過程中PCD和IC產生的隨機數不參與密鑰協商過程,第三方無法獲得用于密鑰協商的隨機數,這既保護了會話密鑰熵,又無法進行重放攻擊,所以改進的PACE協議是安全的。

本文介紹了PACE協議,并深入研究了PACE協議存在的一些安全問題,針對這些問題提出了改進的PACE協議方案。隨著技術的進步,目前的安全機制也逐漸暴露不足。本文提出改進的PACE協議方案,在兼容最新國際通用技術標準的基礎上支持了國密算法,在算法層面保證了協議的安全,豐富了安全算法體系內容,為提升eMRTD安全自主可控水平打下了基礎,對提高eMRTD的安全性有重要意義,對于其他證件安全機制的研究也有很好的借鑒意義。