EMV交易中的SDA/DDA/CDA——CDA部分

CDA在接触和非接当中的规则略有不同,本篇以接触的Gen 1stAC中的CDA验证来说明

1.CDA的计算

1.1.CDA 的GPO部分处理

与DDA一致(参看EMV交易中的SDA/DDA/CDA——DDA部分)

 

1.2.CDA 的读应用记录的处理

大体与CDA 一致(参看EMV交易中的SDA/DDA/CDA——DDA部分)

只有个别几个需要单独处理的tag值

8c——CDOL1

8d——CDOL2

 

1.3.CDA 校验流程

a.根据CDOL1来拼组Gen 1st数据,并且在Gen 1stAC 的第二字节(ins字节)需要|0x10,表示申请CDA)

EMV交易中的SDA/DDA/CDA——CDA部分

note:如果存在随机数,一定要单独记录下来, 因为CDA解密后的校验需要用到

 

b.从Gen 1st中分离出tlvs,并单独提取9F4B

c.还原ISSUR公钥(参看EMV交易中的SDA/DDA/CDA——DDA部分

d.还原ICC公钥(参看EMV交易中的SDA/DDA/CDA——DDA部分

e.对9F4B数据进行ICC公钥解密

然后按照以下规则进行校验

EMV交易中的SDA/DDA/CDA——CDA部分

1)先得到解密数据

2)对解密数据进行hash校验

EMV交易中的SDA/DDA/CDA——CDA部分

重点是要用到 a步骤记录的随机数,否则校验会失败

3)对其中的 ICC Dynamic Data 做二次校验

其中数据是按照以下方式组织的

EMV交易中的SDA/DDA/CDA——CDA部分

校验的流程如下:

EMV交易中的SDA/DDA/CDA——CDA部分

其中需要特别注意,TLV数据均需要重新组织,否则在 Gen 1st返回数据里面

可能会包含 无用数据 0x00,这种情况下,直接套用 Gen 1st返回数据,会导致hash失败