EMV技术学习和研究(十三)CDA认证

转载请注明出处

作者:小旭

 

之前脱机数据认证,包括后面的GAC都忽略了CDA的存在,现在专门讨论一下CDA。

先从脱机数据认证开始,第一次遇到CDA。

CDA的前面三个步骤(获取ca公钥、恢复发卡行公钥、恢复IC卡公钥)和DDA一样,DDA是通过内部认证指令获取签名动态数据,CDA是通过GAC指令来获取的。

终端行为分析过程中正好有一次GAC,所以采用脱机数据认证的时候,前面只完成还原IC卡公钥就行了,CDA后续的部分放在终端行为分析GAC之后。

但是CDA的GAC和请求应用密文的GAC指令不一样,控制参数不一样,所以请求得到的结果也不一样。

CDA是用GAC指令请求,对于GAC指令请求,返回为格式2,也就是之前提到的77开头的格式,需要解析TLV,解析到9F4B签名动态应用数据。

这一步完成后,CDA比DDA多了一个步骤,终端首先将将恢复的密文数据和GAC返回的密文数据比较。

比较完成后终端需要将一些在GAC中返回的数据等一起组织起来,计算hash值,与恢复出的哈希值是否一致进行比较,如果一致则认为CDA到目前为止还是成功的。

然后还需要将GAC恢复数据得到的IC 卡动态数据在进行处理,IC卡动态数据中也有一个hash值,还需要终端再按要求计算一个hash值,然后再和IC卡动态数据中的HASH值比较。

可以看得出是两层数据套在了一起,先解析外层,再解析内层,一层一层还原,最终

如果这个时候卡片返回的是TC,那么脱机交易就OK了,如果返回是ARQC的话,就发起联机。

联机过程忽略不谈,联机处理过程CDA和DDA一样,没什么区别。

如果联机失败,这个时候又要进行卡片行为分析。而且由于第一次GAC指令要求执行CDA,那么第二次GAC指令也要执行CDA。

 

对比CDA和DDA,可以看得出CDA复杂了很多,首先CDA将应用密文也加入到签名数据,其次CDA在响应GAC指令的时候对于密文的数有进行了一次加密封装,进而更加增强了安全性。

CDA的卡现在太少了,除了专业测试的,其他几乎没有银行发行CDA卡的,所以这块没有办法取到数据,只能通过代码和文档进行理解和分析。

 

 

阅读更多

更多精彩内容