脱机数据认证的目的是用于脱机验证卡片真伪和卡片上关键数据没被篡改。
一、执行条件
由AFL确定需要参与脱机数据认证的记录数据(参考前一篇EMV规范(四)——读应用数据),由终端能力和卡片(AIP)决定脱机数据认证的方式:SDA(静态脱机数据认证)、DDA(动态脱机数据认证)、CDA(复合脱机数据认证)。优先级是 CDA>DDA>SDA(即当终端能力和卡片均匹配到多种脱机数据认证的方式下,按照优先级选择其中的一种方式进行认证)。
AIP:是在GPO命令中由卡片返回给终端的信息,tag为'82',2个字节,见下图:
终端能力:由终端设置,tag为'9F33',3个字节(在EMV Book4中可找到),见下图:
• Byte 1: Card Data Input Capability
• Byte 2: CVM Capability
• Byte 3: Security Capability
Byte 1:
Byte 2:
Byte 3:
二、SDA、DDA、CDA
关于SDA、DDA、CDA的具体实现部分很难理解,在EMV Book2中有很详细的介绍。我这里只说大概的步骤。
1. SDA执行步骤:
1.1终端恢复认证中心公钥
1.2终端恢复发卡行公钥
1.3终端验证签名的静态应用数据
2.DDA、CDA执行步骤:
2.1终端恢复认证中心公钥
2.2终端恢复发卡行公钥
2.3终端恢复IC卡公钥
2.4.终端验证签名的动态应用数据
DDA验证数据过程中所用到的命令为内部认证命令:
终端发送的命令格式:
卡片回复的格式有两种:tag‘80’和tag‘77’开头。
例子:
若终端能力为:”\xD0\x68\xC8“ 卡片回复的AIP为:"\x7C\x00" 终端能力支持SDA,DDA,CDA;卡片支持SDA和DDA ,所以,根据上面的优先级,那么会执行DDA。