高原 肖培森 肖輝遠 馮濟橋 公安部第一研究所
在國際民航組織(International Civil Aviation Organization,ICAO)的主導(dǎo)下,已有多個國家發(fā)放了電子機讀旅行證件,通過在傳統(tǒng)證件中嵌入電子芯片,提升了證件的安全性和便利性。電子機讀旅行證件的制作和使用遵循ICAO 9303標準要求,證件的國際通用區(qū)采用統(tǒng)一的邏輯數(shù)據(jù)結(jié)構(gòu)(Logical Data Structure,LDS),支持基本訪問控制(Basic Access Control,BAC)等多種安全機制。
近年來,ICAO 9303標準進行了多次更新,證件訪問機制更安全,數(shù)據(jù)存儲更豐富。ICAO 9303 V8標準是目前最新且可預(yù)見將廣泛使用的新標準,本文面向新標準的相關(guān)要求,首先對標準中涉及的新邏輯數(shù)據(jù)結(jié)構(gòu)LDS2及其相關(guān)的安全機制進行了介紹,其次重點對LDS2必須實施的口令認證連接確立協(xié)議(Password Authenticated Connection Establishment,PACE)進行了深入研究,并在電子機讀旅行證件上進行了PACE技術(shù)的實現(xiàn)和驗證。
2021年,國際民航組織發(fā)布ICAO 9303標準第八版,標準中涉及到證件芯片的變化主要集中在邏輯數(shù)據(jù)結(jié)構(gòu)和安全機制兩方面。新標準在電子機讀旅行證件原有邏輯數(shù)據(jù)結(jié)構(gòu)LDS1的基礎(chǔ)上,增加了邏輯數(shù)據(jù)結(jié)構(gòu)LDS2相關(guān)內(nèi)容,并規(guī)定對LDS2應(yīng)用的訪問需實施芯片認證和終端認證,對LDS2應(yīng)用數(shù)據(jù)的安全讀寫需實施PACE協(xié)議。
根據(jù)ICAO 9303 V8標準規(guī)定,電子機讀旅行證件邏輯數(shù)據(jù)結(jié)構(gòu)在原有LDS1應(yīng)用的基礎(chǔ)上,可以選擇性的增加旅行記錄應(yīng)用、電子簽證記錄應(yīng)用以及附加生物特征應(yīng)用。證件簽發(fā)后在特定的安全環(huán)境下可以進行二次擦寫,從而更新或添加持證人應(yīng)用過程中的附加數(shù)據(jù),更好的發(fā)揮證件作用。ICAO 9303 V8標準中規(guī)定的邏輯數(shù)據(jù)結(jié)構(gòu)如圖1所示,其中邏輯數(shù)據(jù)結(jié)構(gòu)LDS1為強制性數(shù)據(jù)結(jié)構(gòu),也是當(dāng)前電子機讀旅行證件普遍支持的應(yīng)用,邏輯數(shù)據(jù)結(jié)構(gòu)LDS2為新增加的可選的數(shù)據(jù)結(jié)構(gòu),其中旅行記錄和簽證記錄采用線性變長記錄文件格式存儲,附加生物特征采用二進制文件格式存儲[1]。
訪問電子機讀旅行證件的步驟主要包括獲得電子機讀旅行證件非接觸式集成電路的訪問權(quán)限、數(shù)據(jù)認證、芯片認證和數(shù)據(jù)讀取等,不同步驟采用不同的安全機制來保護電子數(shù)據(jù)的安全。在ICAO 9303V8標準中,對LDS2應(yīng)用數(shù)據(jù)的安全訪問方式進行了特別的規(guī)定:在芯片的防克隆、防替換方面,需實施芯片認證;在防掠讀、防竊聽方面,需實施PACE;在防止敏感數(shù)據(jù)非授權(quán)訪問方面,需實施終端認證。關(guān)于上述安全機制的說明詳見表1。
?
芯片認證是臨時靜態(tài)的Diffie-Hellman密鑰協(xié)商協(xié)議,提供電子機讀旅行證件芯片的安全通信和單向認證。芯片認證執(zhí)行成功,證明證件芯片的真實性,并可以使用派生的會話密鑰重啟安全通訊。PACE協(xié)議是口令認證的Diffie-Hellman密鑰協(xié)商協(xié)議,提供電子機讀旅行證件芯片和查驗系統(tǒng)的安全通信和基于口令的認證。PACE執(zhí)行成功,證明了查驗系統(tǒng)的合法瀏覽,并建立了信息交互的安全通道。終端認證協(xié)議是一個兩步質(zhì)詢-響應(yīng)協(xié)議,提供終端的明確單邊認證。終端認證執(zhí)行成功后,芯片會根據(jù)授權(quán)規(guī)則,授予對LDS2應(yīng)用數(shù)據(jù)的訪問權(quán)限。
在芯片訪問控制機制方面,國際民航組織在早期的ICAO 9303標準中推薦采用BAC協(xié)議,后在第七版標準中首次提出了PACE協(xié)議,并在第八版標準中對PACE協(xié)議的實施尤其是在訪問邏輯數(shù)據(jù)結(jié)構(gòu)LDS2時提出了強制性要求。
PACE協(xié)議的功能與BAC協(xié)議類似,均是在芯片訪問的階段利用電子機讀旅行證件信息頁的機讀碼(MachineReadable Zone,MRZ)等信息協(xié)商出共享的會話密鑰,防止非法瀏覽并在芯片與查驗系統(tǒng)之間建立信息的安全通道。與使用對稱密碼的BAC協(xié)議相比,PACE協(xié)議使用非對稱密碼在弱口令基礎(chǔ)上提供強會話密鑰,解決了BAC協(xié)議MRZ的低熵性問題,并且在抗字典攻擊和密鑰確認方面明顯優(yōu)于BAC協(xié)議[2]。
PACE協(xié)議可以分為協(xié)商、點映射和密鑰生成三個部分,協(xié)商是指通信雙方協(xié)商出一個只有雙方知道的秘密;點映射是將橢圓曲線上的一個點映射到曲線上的另一個點;密鑰生成是利用雙方交換的消息,導(dǎo)出加密密鑰和MAC密鑰,加密密鑰用于加密后續(xù)的通信消息,MAC密鑰用于計算消息MAC值[3]。點映射是PACE協(xié)議的一大特點,它的主要思想是從一個隨機數(shù)導(dǎo)出一個橢圓曲線上隨機的生成元。
執(zhí)行PACE協(xié)議時,芯片(IC)與查驗系統(tǒng)(IFD)的基本交互流程如圖2所示,主要包括PACE初始化、秘密傳遞隨機數(shù)、交換隨機數(shù)映射必需的其他數(shù)據(jù)、執(zhí)行密鑰協(xié)商、導(dǎo)出會話密鑰、交換并核驗認證令牌等步驟。通過上述流程,芯片和查驗系統(tǒng)擁有了相同的會話密鑰,后續(xù)可對證件進行安全訪問。
根據(jù)密鑰交換協(xié)議、映射方式和和對稱密碼算法的不同,PACE的實現(xiàn)共有19種算法組合,芯片需要至少支持其中一種。PACE的算法和格式如圖3所示,密鑰交換協(xié)議可采用DH或ECDH,映射方式可采用通用映射、合成映射或芯片認證映射,對稱密碼算法可選擇3DES或AES,其中AES的密鑰長度可選擇128比特、192比特或256比特。
本文在電子機讀旅行證件芯片上進行了PACE協(xié)議的設(shè)計和實現(xiàn)。在算法選擇上,本文選用第9種算法組合,即id-PACE-ECDH-GM-3DES-CBC-CBC,其中密鑰協(xié)商采用ECDH算法,映射方式為通用映射,對稱密碼算法為3DES,密鑰長度為112比特,安全通訊采用3DES CBC 加密及MAC運算。在標準化域參數(shù)的選擇上,本文選擇NIST P-256(secp256r1)作為靜態(tài)域參數(shù)。
根據(jù)選定的PACE實現(xiàn)方案,在證件主文件下新增EF.CardAccess文件,用來表明證件支持的PACE協(xié)議情況。本方案對應(yīng)的EF.CardAccess文件中PACEInfo的數(shù)據(jù)結(jié)構(gòu)如表2所示。
?
PACE協(xié)議通過MSE:Set AT命令和一連串的GENERAL AUTHENTICATE命令執(zhí)行來實現(xiàn),其中命令MSE:Set AT用于選擇并初始化PACE協(xié)議,命令GENERAL AUTHENTICATE 用于協(xié)議數(shù)據(jù)的交換和認證。在開發(fā)時增加MSE:Set AT和GENERAL AUTHENTICATE命令,根據(jù)命令的具體要求調(diào)用相應(yīng)的安全算法接口來實現(xiàn)命令的處理和協(xié)議數(shù)據(jù)交互,在進行協(xié)議實現(xiàn)時需進行兩次ECDH密鑰協(xié)商[4]。
本方案中證件芯片執(zhí)行PACE協(xié)議的具體流程如下:
(1)PACE初始化。接收到查驗系統(tǒng)發(fā)送的MSE:AT 命令后,根據(jù)查驗系統(tǒng)選定的PACE類型,準備靜態(tài)域參數(shù)DIC=(p,a,b,G,n,f)。
(2)秘密傳遞隨機數(shù)。接收到詢問加密隨機數(shù)命令后,生成八字節(jié)隨機數(shù)s,將該隨機數(shù)加密為z=E(Kπ,s)后返回查驗系統(tǒng)。其中Kπ是通過密鑰派生函數(shù)KDF(π)從電子證件的MRZ碼中派生而來。
(3)利用隨機數(shù)生成臨時生成元。在域參數(shù)DIC下產(chǎn)生公 私 鑰 對SKMap←Z*P和PKMap,IC=SKMap,IC*G,通 過General Authenticate命令交換公鑰,并計算共享秘密H=SKMap,IC *PKMap,IFD,根據(jù)共享秘密和隨機數(shù)計算臨時生成元G=S*G+H。
(4)協(xié)商會話密鑰。在臨時域參數(shù)DIC=(p,a,b,G,n,f) 下產(chǎn)生公私鑰對SKDH,IC和PKDH,IC,交換臨時公鑰并計算共享秘密K=SKDH,IC*PKDH,IFD。通過密鑰派生函數(shù)導(dǎo)出會話密鑰,KSEnc=KDFEnc(k)=KDF(k,1)為加密密鑰派生函數(shù),KSMAC=KDFMAC(k)=KDF(k,2)為MAC密鑰派生函數(shù)[5]。
(5)通過認證令牌確認會話密鑰。利用KSMAC計算認證令牌TIFD= MAC(KSMAC,PKDH,IC) ,并與接收到的查驗系統(tǒng)的認證令牌進行比較,驗證成功后計算認證令牌TIC=MAC(KSMAC,PKDH,IFD)并將數(shù)據(jù)返回查驗系統(tǒng)進行驗證。
PACE通過后,芯片和查驗系統(tǒng)具備了相同的會話密鑰KSEnc和KSMAC,后續(xù)的信息交互將使用該會話密鑰按照安全命令的封裝格式進行數(shù)據(jù)的安全加密和MAC計算,從而實現(xiàn)對證件數(shù)據(jù)的安全訪問。
本方案實現(xiàn)的電子機讀旅行證件支持PACE協(xié)議,并兼容BAC協(xié)議。采用電子證件閱讀機具Regula和官方配套軟件,分別通過PACE和BAC方式進行安全訪問,均可完成芯片的安全訪問控制和證件信息的正確讀取。PACE方式讀取證件信息的軟件截圖如圖4所示,通過軟件界面可以看出證件完成了PACE協(xié)議,并正確讀出了EF.DG1、EF.DG2和EF.COM等基本文件信息。
隨著集成電路技術(shù)的高速發(fā)展,電子機讀旅行證件芯片的存儲容量和處理性能不斷提升、安全協(xié)處理器不斷豐富,在ICAO 9303V8標準的指導(dǎo)下,電子機讀旅行證件將實現(xiàn)更豐富的數(shù)據(jù)存儲和更安全的數(shù)據(jù)訪問。本文介紹了國際民航組織ICAO 9303 V8標準中邏輯數(shù)據(jù)結(jié)構(gòu)和安全機制相關(guān)內(nèi)容,對安全訪問控制方式PACE進行了技術(shù)研究和實現(xiàn),提升了證件應(yīng)用的安全性,也為ICAO 9303 V8標準尤其是LDS2的實施奠定了基礎(chǔ)。