程三偉 盛鋼 馮翔 張寧 上海通用識別技術研究所
電子護照通用讀取流程設計
程三偉 盛鋼 馮翔 張寧 上海通用識別技術研究所
介紹并分析了電子護照當前和今后可能會出現的護照類型,在此基礎上設計了一種電子護照通用讀取流程,并針對第二代電子護照信息量大的特點,增加了加速讀取設計。
電子護照 被動認證 基本訪問控制 主動認證 擴展訪問控制 補充訪問控制
國際民航組織(ICAO)在ICAO9303文檔中規(guī)定了電子護照芯片應采取的安全機制[1],主要有用于證明芯片內容真實性的被動認證協議(PA)、用于防止不當讀取和濫用的基本訪問控制協議(BAC)、用于防止芯片被替換的主動認證協議(AA)和用于防止對敏感生物特征(指紋或虹膜)非授權訪問的擴展訪問控制協議(EAC)。其中EAC協議具體實現分為新加坡和歐盟兩種實現方式[2]。新加坡的EAC協議通過將指紋數據進行3DES加密,加密密鑰經過非對稱加密算法計算后存放在護照的DG13數據區(qū),授權方需獲得非對稱加密私鑰后通過私鑰解密獲取3DES密鑰,通過3DES密鑰解密加密后的指紋數據。歐盟的EAC協議主要通過類似于PA認證的PKI體系進行實現。該協議主要通過DVCA證書、DV證書和IS證書三級證書的逐級認證,并結合IS私鑰完成芯片認證(CA)和終端認證(TA)后,通過證書中被授予的讀取權限讀取敏感生物特征數據(指紋和虹膜)。當前已經被ICAO接受的EAC標準為版本1,版本2中針對BAC低熵值問題設計的密碼認證連接建立協議(PACE)于2010年11月被ICAO采用作為替代BAC協議的補充訪問控制協議(SAC)[3]。歐盟EAC主要采用了用于驗證芯片真實性的芯片認證協議(CA)和用于驗證終端合法授權的終端驗證協議(TA)。
結合當今已發(fā)行電子護照和未來的趨勢,根據電子護照采用安全協議上的不同,大致分為如表1所示的以下幾種類型。其中,1-1、1-2、1-3和1-4為目前已發(fā)行的電子護照。2-1、2-2、2-3和2-4為今后可能發(fā)行的電子護照。
?
1. 基本特征
如表1所示,目前已經發(fā)行的第一代電子護照為1-1(如早期美國和比利時)、1-2(如美國)、1-3(如荷蘭、澳大利亞),其特點是只有臉像生物特征數據,采用的安全機制包括BAC協議、PA協議、AA協議。有的國家簽發(fā)的電子護照沒有AA協議和BAC協議。
2. 讀取流程
第一代電子護照的讀取流程如圖1所示,首先將電子護照放在讀寫器上,電子護照讀寫器首先選擇電子護照芯片應用,然后直接選擇讀取EF.COM,若讀取EF.COM成功則說明此護照芯片不需要進行BAC協議認證,否則需要通過讀寫器OCR識別或手工輸入機讀碼(MRZ)信息,在讀寫器和電子護照芯片之間采用BAC協議建立安全通訊會話連接。隨后再讀取EF.COM,通過EF.COM可以獲得寫入電子護照的目錄信息,并按照目錄信息直接選擇并讀取護照其他各區(qū)域數據。護照各區(qū)域數據讀取完成后,進行PA驗證,驗證護照各區(qū)域數據的完整性和真實性。PA驗證完成后,需要判斷EF.DG15文件是否存在,如果存在還需要進行AA認證,以驗證芯片的真實性。
1. 基本特征
如表1所示,目前已經發(fā)行的第二代電子護照為1-4,其特點是采用了EAC協議對指紋敏感生物特征數據進行了保護。完整讀取該類型的電子護照需要簽發(fā)國家的私鑰或者簽名授權證書的支持。目前發(fā)行的護照包括新加坡EAC電子護照和歐盟EAC版本1電子護照。
新加坡EAC電子護照的主要特點是敏感指紋生物特征數據加密,且加密密鑰經過非對稱加密計算存放在DG13數據區(qū)。歐盟EAC版本1電子護照的特點是電子護照芯片本身增加了很多和數據安全相關的文件。這些數據文件包括EF.CVCA、EF.DG14、CA認證私鑰及算法參數等文件。
2. 新加坡EAC護照讀取流程
新加坡電子護照前期的讀取流程與第一代電子護照的讀取流程完全相同。AA認證結束后,如果系統(tǒng)具有被授予的讀取權限非對稱解密私鑰,則需將EF.DG13區(qū)域對應的EAC加密密鑰采用非對稱私鑰解密后,采用EAC加密密鑰進行EF.DG3區(qū)域的數據解密,獲取EF.DG3指紋敏感數據。
3. 歐盟EAC版本1電子護照讀取流程
和第一代電子護照讀取EF.COM的流程相同,讀取完成后通過EF.COM可以獲得寫入電子護照的目錄信息,根據EF.COM判斷是否有EF.DG14文件,如果DG14文件存在則首先讀取EF.DG14文件。因為EF.DG14文件是EAC版本1協議中規(guī)定存放芯片認證公鑰的文件,考慮到讀取的良好兼容性,首先進行協議中規(guī)定的芯片認證流程。有些國家的護照芯片在芯片認證不通過時,拒絕讀取其他非敏感數據區(qū)數據。芯片認證通過后,啟動新的增強會話密鑰,繼續(xù)讀取EF.COM中存在的EF.DG1、EF.DG2、EF.CVCA、EF.SOD等非敏感數據文件。讀取完成后,進行除敏感生物特征區(qū)域數據的PA認證。在終端證書鏈和終端私鑰完整的情況下,繼續(xù)進行證書鏈(DV證書、IS證書)的完整性和終端私鑰(IS私鑰)的驗證,終端驗證通過后,方可讀取指紋/虹膜等敏感指紋信息。
針對BAC協議低熵值的弱點,ICAO引入了PACE替代協議。PACE協議需要相應的配置文件支持,該配置文件存放在EF.CardAccess文件中。PACE協議支持CAN、PIN、PUK、MRZ等多種形式。將來的電子護照可能會發(fā)展成為PACE協議逐漸取代BAC協議的局面。為方便讀取流程上的分析,將表1中2-1、2-2定義為第一代電子護照PACE升級版、2-3為歐盟EAC版本1的PACE升級版,2-4定義為歐盟EAC版本2電子護照。
1. 第一代電子護照PACE升級版讀取流程
電子護照讀寫器首先讀取EF.CardAccess文件,隨后輸入相對應的CAN或MRZ等密碼通過PACE算法建立安全通訊會話連接。隨后再讀取EF.COM,通過EF.COM可以獲得寫入電子護照的目錄信息,并按照目錄信息直接選擇并讀取護照其他各區(qū)域數據。護照各區(qū)域數據讀取完成后,進行PA驗證,驗證護照各區(qū)域數據的完整性和真實性。PA驗證完成后,需要判斷EF.DG15文件是否存在,如果存在還需要進行AA認證。
2. 歐盟EAC版本1 PACE升級版電子護照讀取流程
電子護照讀寫器首先讀取EF.CardAccess文件,隨后輸入相對應的CAN或MRZ等密碼通過PACE算法建立安全通訊會話連接。 隨后讀取EF.COM,并按照EAC版本1電子護照一致的讀取流程完成EF.DG14文件的讀取、CA認證、其他區(qū)域非敏感數據讀取、TA認證和敏感指紋/虹膜生物特征的讀取。
3. 歐盟EAC版本2電子護照讀取流程
電子護照讀寫器首先讀取EF.CardAccess文件,隨后輸入相對應的密碼通過PACE算法建立安全通訊會話連接。接著選擇電子護照應用后進行EAC版本2的終端認證,終端認證同樣需要完整證書鏈(DV證書、IS證書)和終端私鑰(IS私鑰)的支持。終端認證完成后,讀取EF.CardSeucrity文件,進行EAC版本2的芯片認證,芯片認證完成后讀取EF.COM及電子護照其他各區(qū)域文件內容,并進行PA認證。
電子護照協議的不斷完善與發(fā)展給電子護照的兼容性讀取帶來了很大的挑戰(zhàn)。尤其是PACE協議的加入,使得未來的電子護照的芯片數據結構和安全通訊協議算法復雜度發(fā)生了很大的變化,讀取方法也要隨之作出相應的改變和調整。
通過對以上不同類型電子護照的分析,可以得出以下結論:
(1)由于PACE協議本身的復雜性和算法多樣性,必須有EF.CardAccess文件方可執(zhí)行。所以可以通過電子護照芯片中是否有EF.CardAccess文件來區(qū)分電子護照是否采用了PACE協議。
(2)由于采用BAC協議的電子護照不允許直接讀取EF.COM文件,所以可以通過直接讀EF.COM文件并通過該命令的執(zhí)行結果來判斷電子護照是否采用了BAC協議。
(3)EF.DG15文件存放的是主動認證公鑰,可以通過判斷該文件是否存在來判斷是否采用主動認證協議。
(4)新加坡電子護照典型特點是在EF.DG3文件為加密數據,且加密密鑰經非對稱加密后存放再EF.DG13中。所以,可以通過EF.DG3、EF.DG13文件是否存在來判斷是否為新加坡EAC護照。
(5)歐盟電子護照若采用PACE協議,則可以通過EF.CardAccess文件內的具體內容來區(qū)分是采用的EAC版本2、EAC版本1,還是未采用EAC協議。
(6)若歐盟電子護照采用BAC協議,則可以通過EF.DG14文件是否存在來判斷是否為EAC版本1電子護照。
綜合以上結論并充分考慮到通用性和兼容性,設計電子護照通用讀取流程如圖2所示,具體如下:
首先,讀取EF.CardAccess 文件,若讀取成功,則啟動PACE協議。并通過EF.CardAccess文件判斷采用的EAC版本類型。若為版本1,則采用文中EAC版本1PACE升級版后續(xù)讀取流程。若為版本2,則采用EAC版本2后續(xù)讀取流程。如果未采用擴展訪問控制協議,則采用第一代電子護照PACE版本后續(xù)讀取流程。
如果讀取EF.CardAccess 文件失敗,則直接選擇讀取EF.COM文件,如果讀取EF.COM文件成功,則說明該護照未采用BAC協議。如果采用BAC協議,則通過光學掃描或人工輸入MRZ,建立安全通訊會話。然后直接讀取EF.COM 文件。通過該文件目錄判斷是否有EF.DG3/EF.DG4 文件。如果沒有,則進入第一代電子護照后續(xù)讀取流程。如果有EF.DG3/EF.DG4文件,則再進行EF.DG13文件是否存在的判斷,如果文件存在,則進入新加坡EAC護照后續(xù)讀取流程。如果EF.DG13文件不存在,則再進行EF.DG14文件是否存在的判斷,如果EF.DG14文件存在則進入歐盟EAC版本1后續(xù)讀取流程,否則就嘗試直接進入第一代電子護照后續(xù)讀取流程。
在電子護照的通關過程中,電子護照的讀取速度是制約實際通關效率的重要因素。早期的電子護照芯片由于不支持擴展長度,每次加密傳送和返回命令的字節(jié)長度都不超過256,這就在一定程度上降低了電子護照的讀取速度。支持歐盟EAC協議的護照芯片由于加密計算的需要(如傳遞證書、公鑰和簽名),采用了擴展長度的APDU 命令。采用擴展長度的APDU 命令在每次讀取時讀取長度大大超過256字節(jié)的限制,提高了讀取電子護照芯片數據的速度[4]。
本讀取流程在讀取電子護照時,增加了加速讀取流程設計,讀取過程中首先主動嘗試采用擴展的APDU命令,在芯片支持該命令時,擴展的APDU命令會在讀取內容時采用芯片能夠支持的最大長度讀取數據,從而減少讀卡機和電子護照芯片的通訊次數以加速讀取電子護照生物特征數據,從而提高實際的通關效率。
電子護照通用讀取流程的設計基于對電子護照安全訪問控制協議進行較為全面的分析基礎之上,該流程為電子護照協議類型的自動判別和芯片數據內容的自動讀取提供了一定的借鑒參考。隨著電子護照各方面技術的不斷發(fā)展,電子護照安全性仍將得到不斷提高,新的安全訪問控制協議可能在不久的將來繼續(xù)推出,該流程仍需在今后的實際應用中不斷完善。
[1] ICAO. Machine Readable Travel Documents-Part 1: Machine Readable Passport,Volume 2: Specifications for Electronically Enabled Passports with Biometric Identification Capabilities[M]. ICAO Doc 9303,6th Edition,2006.
[2] NTWG. Extended Access Control[C].NTWG, Seventeenth Meeting,2007.
[3] ICAO. Supplemental Access Control for Machine Readable Travel Documents[R]. Technical Report, ICAO, 2010.
[4] ISO/IEC. Identification Cards Integrated Circuit Cards Part 4: Organization, Cecurity and Commands for Interchange[S], ISO/IEC 7816-4:2005,2005.