电子护照eMRTDs的安全认证

电子护照eMRTDs定义在ICAO Doc9303号文件《机读旅行证件》(Machine Readable Travel Documents)的第11部分机读旅行证件安全机制(Security Mechanisms for MRTDS)中。

保护电子数据

访问电子护照包括以下步骤

  • 获得eMRTD的非接触访问权限
  • 数据认证
  • 芯片认证
  • 其他访问控制机制
  • 读取数据
    不同的步骤有可以使用的不同协议,eMRTD的具体配置有签发机构选定。ICAO给出了选择的建议。

BASELINE SECURITY METHOD

方法 非接触 查验系统 优点 说明
被动认证 M M 证明 SO_D 和LDS的内容真实且未被修改 不能防止完全复制或者芯片被替换;
不能防止未经授权的访问;
不能防止非法浏览

ADVANCED SECURITY METHODS

方法 非接触 查验系统 优点 说明
传统MRZ(OCR-B)和基于芯片的MRZ(LDS)的比较 n/a o 证明芯片内容和物理的eMRTD匹配 增加少许的复杂性
不能防止对芯片和传统证件的完全复制
主动认证
芯片认证
O o 防止拷贝SO_D,并证明他是从真实的芯片中读取的
证明非接触IC没有被替换
不能防止未经授权的访问
增加复杂度
基本访问控制
Basic Access Control
r/c m 防止非法浏览和误用
防止窃听eMRTD和查验系统之间的通信(用于建立加密会话的信道时)
不能防止完全复制或IC被替换(还需要复制传统证件)
增加复杂性
口令认证链接确立协议
Password Authenticated Connection Establishment
R r 同上 同上
扩展访问控制 o o 防止对其他生物特征进行非授权的访问
防止非法浏览其他生物特征
需要额外的密钥管理
不能防止完全复制或IC替换
增加复杂性
数据加密 o o 保护其他生物特征的安全
不需要芯片处理器
需要复杂的解密密钥管理
不能防止完全拷贝或IC替换
增加复杂性

m=Required,r=Recommended,o=Optional,c=Conditional,n/a=not applicable

访问非接触IC

MRTD增加非接触IC,如果没有访问控制会带来两种可能的攻击:

  • 在未经授权的情况下对存储在非接触IC中的数据进行阅读
  • 非接触IC和Reader之间的未加密通信会被窃听

签发机构应该选择实施一种芯片范文控制机制,即证件持有者知道存储在非接触IC中的数据在被安全读取的一种访问控制机制。

查验系统必须首先得到这方面的信息才能够阅读非接触IC,信息必须从eMRTD中以光学或者目视的方式获得。在不能进行机器阅读信息时,查验人员还可以以人工的方式将该信息输入到查验系统。
假定数据页上的信息不能从没有经过查验的证件上得到,可以认为eMRTD时在持证者之情的情况下交送查验的。
举个例子,比如必须知道MRZ才能获得护照非接触IC的访问权限,你护照的MRZ信息必须在你把护照交给查验人员后,查验人员可才能获得MRZ的数据,因此如果查验系统知道了你MRZ,那么就认为你知道要接受证件查验了

合规的设置

下面的配置符合ICAO的规范:

  • 不实施芯片访问控制的eMRTD芯片
  • 仅实施BAC的eMRTD芯片
  • 实施BAC和PACE的eMRTD芯片
  • 从2018年1月起,仅实施PACE的eMRTD芯片
    为了保证全球兼容,各国在2017年12月31日前不能在未实施BAC的情况下仅实施PACE。如果eMRTD芯片只支持PACE,查验系统应实施和使用PACE

芯片的访问过程

1 读取EF.CardAccess

如果eMRTD支持PACE,eMRTD芯片在文件EF.CardAcess中必须提供用于PACE的参数。
如果EF.CardAcess可用,查验系统应读取文件EF.CardAcess来确定eMRTD芯片支持的参数(对称密码、密钥协商算法、域参数和映射),查验系统可以选择这些参数中的任意一个。
如果文档EF.CardAcess不可用,或者不包括PACE参数,查验系统应该利用BAC读取eMRTD

2 PACE

建议该步骤在eMRTD芯片支持PACE的情况下使用。

  • 查验系统根据MRZ分散密钥K_\pi,如果查验系统知道CAN(Card Acess Number),则可以使用CAN代替MRZ。
  • eMRTD应将MRZ作为PACE的口令,也可以用CAN作为口令。
  • 查验系统和eMRTD芯片使用K_\pi互相认证,并分散出会话密钥KS_{ENC}KS_{MAC},应使用PACE协议。
    如果成功,eMRTD应当执行以下操作:
  • 启动安全通信
  • 允许访问不敏感数据(例如DG1,DG2,DG14,DG15等,SO_D(Document Security Object)定义在敏感数据中)
  • 限制访问权限以要求安全通信

3 选择eMRTD应用

4 BAC

如果eMRTD实施芯片访问控制,但是没有使用PACE,那么必须要有这一步,如果芯片成功实施了PACE,这一步就可以跳过。

  • 查验系统从MRZ中分散基本访问密钥K_{ENC}和K_{MAC}
  • 查验系统和eMRTD芯片使用证件基本访问密钥相互认证,并传出会话密钥KS_{ENC}和KS_{MAC}
    如果成功,eMRTD应当执行以下操作:
  • 启动安全通信
  • 允许访问不敏感数据(例如DG1,DG2,DG14,DG15等,SO_D(Document Security Object)定义在敏感数据中)
  • 限制访问权限以要求安全通信
    查验系统必须使用DG14验证文件EF.CardAcess内容的真实性

4.3 BAC协议

4.3.1 协议规范

Authentication和Key Establishment是根据ISO/IEC 11770-2的Key Establishment机制6,使用3DES,通过三轮挑战应答协议实现的。A cryptographic checksum是根据ISO/IEC 9797-1的MAC算法3计算,并附加到加密数据上。必须使用4.3.3节中描述的运算方式。被交换的随机数必须为8个字节,被交换的密钥材料为16个字节。接口设备IFD(查验系统)和非接触式IC不得使用特异标识符作为随机数。
具体地讲,IFD和IC应实施下列步骤:

    1. IFD发送GET CHALLENGE命令,请求RND.IC,IC生成并返回随机数RND.IC
    1. IFD执行下列操作:
    • a) 生成一个随机数RND.IFD和密钥材料K.IFD
    • b) 生成S=RND.IFD||RND.IC||K.IFD
    • c) 计算密文E_{IFD}=E(K_{ENC},S)
    • d) 计算MAC M_{IFD}=MAC(K_{MAC},E_{IFD})
    • e) 发送EXTERNAL AUTHENTICATE命令,使用数据E_{IFD}||M_{IFD}实现外部认证功能
    1. IC执行下列操作:
    • a) 检验密文E_{IFD}的MAC M_{IFD}
    • b) 解密密文E_{IFD}
    • c) 从S中提取RND.IC,并检查IFD是否返回了正确的随机数
    • d) 生成密钥材料K.IC
    • e) 生成 R= RND.IC||RND.IFD||K.IC
    • f) 计算密文E_{IC}=E(K_{ENC},R)
    • g) 计算MAC M_{IC}=MAC(K_{MAC},E_{IC})
    • h) 返回响应数据E_{IC}||M_{IC}
    1. IFD执行下列操作:
    • a) 检查密文E_{IC}的MAC M_{IC}
    • b) 解密密文E_{IC}
    • c) 从R中提取RND.IFD,并检查IC是否返回了正确的随机数
    1. IFD和IC以K.IC和K.IFD作为密钥种子,使用9.7.4的密钥分散机制产生会话密钥KS_{ENC}和KS_{MAC}
4.3.2 查验过程

当实施BAC的eMRTD提供给查验系统查验时,使用光学或者视读的方式读取的信息分散得到证件的基本访问密钥(K_{ENC}和K_{MAC}),以便访问非接触IC,并且建立查验系统和非接触IC之间的安全通信信道。
建立安全信道后,支持BAC的eMRTD对任何未使用安全通信的APDU,做出没有满足安全状态(SW:6982)的响应。如果IC在安全信道建立之前或者安全信道终端之后发出普通指令SELECT,IC返回SW:6982或者9000,两种响应都符合ICAO的规定。
为了认证查验系统,必须实施以下步骤:

    1. 查验系统读取MRZ_information,MRZ_information由证件号码、出生日期和到期日期拼接构成,并包括他们各自的校验位(ICAO Doc9303第4部分、第5部分或者第6部分分别对TD3、TD1和TD2这三种尺寸的证件的校验位做了描述)。MRZ_information通过使用OCR-B阅读器从MRZ读取,或者通过手工输入。这种情况下,手工输入的信息必须与MRZ中显示的信息保持一致。MRZ_information的SHA-1散列值中最重要的16个字节比用作密钥种子,通过第9.7.2节描述的密钥分散机制产生证件基本范文密钥。
    1. 查验系统和eMRTD的非接触IC相互认证产生会话密钥,必须使用上文描述的认证和密钥建立协议。
    1. 在成功执行认证协议后IFD和IC以(K.IC xor K.IFD)作为密钥种子,通过使用9.7.40描述的机制产生会话密钥KS_{ENC}和KS_{MAC}。随后的通信必须通过第9.8节中描述的安全通信加以保护。
4.3.4 密码规范
4.3.4.1 Challenge和Response的加密

使用ISO/IEC 11568-2中的0初始化向量zero IV(0x00 00 00 00 00 00 00 00)的双密钥3DES CBC模式来计算E_{IFD}和E_{IC}。在执行EXTERNAL AUTHENTICATE命令时,禁止对输入数据进行填充。

4.3.4.2 Challenge和Response的认证

使用ISO/IEC 9797-1中的MAC算法3计算MAC MAC_{IFD}和M_{IC},其中用到了分组密码DES、0初始化向量zero IV(8字节)和ISO/IEC 9797-1中的填充方法2.MAC长度必须为8字节。

4.3.4 APDU

APDU使用ISO/IEC 7816-4中的规定编码

4.3.4.1 取随机数 Get Challenge
C-APDU
CLA
INS '84' Get Challenge
P1 '00'
P2 '00'
DATA
R-APDU
DATA 随机数
SW '9000' 成功
4.3.4.2 外部认证 External Authenticate
C-APDU
CLA
INS '82' External Authenticate
P1 '00'
P2 '00'
DATA E_{IFD}||M_{IFD}
R-APDU
DATA 随机数
SW '9000' 成功

4.4 PACE

PACE是口令认证的Diffie-Hellman密钥协商协议,提供eMRTD芯片和查验系统的安全通信和基于口令的认证(即eMRTD芯片和查验系统共享同一个口令\pi).
PACE在弱口令的基础上确立eMRTD芯片和查验系统之间的俺去那通信,在主文件中确立安全环境。协议使eMRTD芯片能够核验查验系统访问数据存储权限并具有下列特征:

  • 不受口令强度影响,提供强会话密钥
  • 用来认证查验系统的口令熵可能非常低(6位数足矣)
    PACE使用的密钥K_{\pi}是由密钥分散函数KDF_{\pi}( 参见Doc 9303 part 11 9.7.3)从口令分散得到。对于有全球操作性的eMRTD,可以使用下列两种口令和相应的密钥:
  • MRZ:由K_{\pi}=KDF_{\pi}(MRZ)定义的密钥K_{\pi}是必要的。类似于BAC,该密钥是从机读区(MRZ)分散而来,即由证件号码、生日、到期日分散而来。
  • CAN:由K_{\pi}=KDF_{\pi}(MRZ)定义的密钥K_{\pi}是可选的。该密钥是由CAN分散而来,CAN是因在数据页正面的数字,必须随机或者伪随机选择(比如使用加密型强PRF)。
    注意: 与MRZ(证件号、出生日期、到期日)相反,CAN的优点是便于人工键入。

作为协议执行的一部分,PACE支持不同的映射:

  • 基于Diffie-Hellman密钥协商的通用映射;
  • 基于域元素到密码群的嵌入映射的合成映射;
  • 芯片认证映射扩展通用映射,并将芯片认证纳入PACE协议
    如果芯片支持芯片认证映射,则芯片也必须支持通用映射或合成映射中的一种以及芯片认证。这意味着对于支持PACE的查验系统来说,仅支持通用映射和集成映射是必要的。支持芯片认证映射是可选的。
4.4.1 协议规范

查验系统从文件EF.CardAcess读取eMRTD芯片支持的PACE参数,选取要使用的参数,随后执行协议。
应使用下列命令:

  • Doc 9303第10部分规定的READ BINARY
  • 4.4.4.1中规定的MSE:SET AT(具有设定认证模板功能的MANAGE SECURITY ENVIRONMENT命令)
  • 查验系统和eMRTD芯片使用第4.4.4.2中规定的一系列通用认证命令实施下列步骤:
      1. eMRTD芯片选择随机数s,将该随机数加密为z= E(K_{\pi},s),其中K_{\pi}=KDF_{\pi}({\pi})是从共享口令\pi中分散的来,并将密文z发送给查验系统
      1. 查验系统在共享口令\pi的帮助下,恢复出明文s=D(K_{\pi},z)
      1. eMRTD芯片和查验系统两者都执行下列步骤:
      • a) 交换随机数映射必须的其他数据:
        • i) 对于通用映射,eMRTD芯片和查验系统交换临时密钥公钥
        • ii) 对于合成映射, 查验系统向eMRTD芯片发送另一个随机数
      • b) 按照4.4.3.3的描述,计算临时域参数D=Map(D_{IC},s,\cdots)
      • c) 在临时域参数的基础上进行匿名Diffie_Hellman密钥协商,生成共享密钥K=KA(SK_{DK,IC},PK_{DH,PCD},D)=KA(SK_{DC,PCD},PK_{DH,IC},D)
      • d) 在Diffie-Hellman密钥协商的过程中,继承电路和查验系统应验证两个公钥PK_{DH,IC}和PK_{DH,PCD}是不同的
      • e) 按照Doc 9303 Part.11 9.7.1的描述,产生会话密钥KS_{MAC}=KDF_{MAC}(K)和KS_{ENC}=KDF_{ENC}(K)
      • f) 按照4.4.3.4的描述,交换并核验认证令牌(authentication token)T_{PCD}=MAC(KS_{MAC,PK_{DH,IC}})和T_{IC}=MAC(KS_{MAC},PK_{DH,PCD})
      1. 在一定条件下,eMRTD芯片计算芯片认证数据CA_{IC},将数据加密A_{IC}=E(KS_{ENC},CA_{IC}),并将加密数据发送给终端,终端解密A_{IC},通过使用经恢复的芯片认证数据CA_{IC}来证实芯片的真实性。
4.4.2 安全状态

支持PACE的eMRTD芯片对应非授权的阅读企图(包括对逻辑数据结构中的被保护文件的选择)做出“没有满足安全状态”(SW:6982)的响应。
注意:该规范比仅支持BAC的eMRTD的相应规范更具限制性。
如果成功进行了PACE,eMRTD便核验了所使用的口令。使用分散得到的会话密钥KS_{MAC}和KS_{ENC}启动安全通信。

4.4.3 密码规范

eMRTD的签发者选择特定算法。查验系统必须支持下列所有算法的组合,eMRTD芯片可支持一种以上算法组合。
注意:一些算法不可用于芯片认证映射:鉴于安全原因,不再建议使用3DES。DH-variants are not available to reduce the number of variants to be implemented by Terminals.。

4.4.3.1 DH

关于DH的PACE,必须使用Doc 9303 part.11 9.6中和下表的响应算法和格式。

DH的算法和格式

OID Mapping Sym.Cipher Key-length Secure Messaging Auth.Token
id-PACE-DH-GM-3DES-CBC-CBC Generic 3DES 112 CBC / CBC CBC
id-PACE-DH-GM-AES-CBC-CMAC-128 Generic AES 128 CBC / CMAC CMAC
id-PACE-DH-GM-AES-CBC-CMAC-192 Generic AES 192 CBC / CMAC CMAC
id-PACE-DH-GM-AES-CBC-CMAC-256 Generic AES 256 CBC / CMAC CMAC
id-PACE-DH-IM-3DES-CBC-CBC Integrated 3DES 112 CBC / CBC CBC
id-PACE-DH-IM-AES-CBC-CMAC-128 Integrated AES 128 CBC / CMAC CMAC
id-PACE-DH-IM-AES-CBC-CMAC-192 Integrated AES 192 CBC / CMAC CMAC
id-PACE-DH-IM-AES-CBC-CMAC-256 Integrated AES 256 CBC / CMAC CMAC
4.4.3.2 ECDH

关于ECDH下的PACE,必须使用Doc 9303 Part.11 9.6和下表的算法和格式。
应仅使用带有未压缩点的素数曲线。应该使用Doc 9303 Part.11 9。5.1中描述的标准化域参数。
ECDH的算法和格式

OID Mapping Sym.Cipher Key-length Secure Messaging Auth.Token
id-PACE-ECDH-GM-3DES-CBC-CBC Generic 3DES 112 CBC / CBC CBC
id-PACE-ECDH-GM-AES-CBC-CMAC-128 Generic AES 128 CBC / CMAC CMAC
id-PACE-ECDH-GM-AES-CBC-CMAC-192 Generic AES 192 CBC / CMAC CMAC
id-PACE-ECDH-GM-AES-CBC-CMAC-256 Generic AES 256 CBC / CMAC CMAC
id-PACE-ECDH-IM-3DES-CBC-CBC Integrated 3DES 112 CBC / CBC CBC
id-PACE-ECDH-IM-AES-CBC-CMAC-128 Integrated AES 128 CBC / CMAC CMAC
id-PACE-ECDH-IM-AES-CBC-CMAC-192 Integrated AES 192 CBC / CMAC CMAC
id-PACE-ECDH-IM-AES-CBC-CMAC-256 Integrated AES 256 CBC / CMAC CMAC
id-PACE-ECDH-CAM-AES-CBC-CMAC-128 Chip Authentication AES 128 CBC / CMAC CMAC
id-PACE-ECDH-CAM-AES-CBC-CMAC-192 同上 AES 192 CBC / CMAC CMAC
id-PACE-ECDH-CAM-AES-CBC-CMAC-256 同上 AES 256 CBC / CMAC CMAC
4.4.3.3 加密和映射随机数 Encrypting and Mapping Nonces

eMRTD芯片应选择随机数s,该随机数是长度为l的二进制比特串,l是eMRTD新派你选择的相应分组密码E()分组长度的倍数。

  • 随机数(nonce)s应使用从口令\pi分散的密钥K_{\pi}=KDF_{\pi}(\pi)和设为全0的初始化向量,按照ISO/IEC 10116以CBC模式进行加密。
  • 使用特定映射函数Map,将随机数(nonce)s转换为随机数发生器(random generator)
  • 对应合成映射(ingegrated Mapping),应该额外再选取一个随机数(nonce)t作为长度为k的二进制比特串,并以明文发送。在这种情况下,k是相应分组密码E()的密钥长度,l是使得l\ge k的分组密码E()分组长度的最小倍数。
    将随机数s或者随机数s,t映射入密码群,应采用下列映射的一种:
  • 通用映射
  • 合成映射
  • 芯片认证映射
4.4.3.3.1 通用映射 Generic Mapping

ECDH
函数Map:G\to \hat{G}被定义为\hat{G}=s\times G+H,其中选择<G>中的H,使得log_{G}H未知。H点应由匿名Diffie-Hellman密钥协商进行计算,即H=KA(SK_{Map,IC},PK_{Map,PCD},D_{IC}=KA(SK_{Map,PCD},D_{IC})
注意:密钥协商算法ECKA通过使用兼容余因子乘法来避免小子群攻击。
DH
函数Map:g\to \hat{g}被定义为\hat{g}=g^s \times h,其中,选择<g>中的h,使得log_g h未知。群元素h应按照h=KA(SK_{Map,IC},PK_{Map,PCD},D_{IC})=KA(SK_{Map,PCD},PK_{Map,IC},D_{IC})
注意:必须使用RFC2631*描述的公钥验证方法来避免小子群攻击。 *

4.4.3.3.2 合成映射 Integrated Mapping
4.4.3.3.3 芯片认证映射 Chip Authentication Mapping
4.4.3.4 认证令牌 AUthencation Token
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容