PBOC/EMV之CDA(复合数据认证)

来源:互联网 发布:java金字塔图形的代码 编辑:程序博客网 时间:2024/05/21 14:43

出处:http://blog.csdn.net/pony_maggie/article/details/7436084


CDA其实是DDA的衍生方法. 所以它和DDA有很多相同的地方. 先简要说明一下CDA的几个要点:

1 它也执行SDA,这个和DDA是一致的.

 

2 它也执行DDA,更先进的技术总是向下兼容的.

 

3 它也用到签名的动态应用数据, 不过这个数据不是内部认证请求的,而是在GAC时终端请求的. 而且这个数据的组成除了一些和DDA相似的组成(DOL数据),还包括密文数据(TC或ARQC).

 

4 既然签名的动态数据多了卡片的密文数据,那最后的验证阶段也比DDA多了一些步骤,CDA还需要比较应用密文.


下面是详细的步骤:

第一步,取IC卡公钥
这个和DDA的方法是一样的,不再说明.

 

第二步,取签名的动态数据

通过GAC返回,当IC卡返回非AAC类型的密文时, 如果终端请求CDA,IC卡会返回这个签名的数据.


这个签名数据的产生也比DDA稍复杂一些,其实是原理是一样的,只不过需要参与签名的数据项增加了,也即用于产生哈希结果的数据项增加了. 如果是在第一次GAC产生CDA签名,那么参与运算的数据项包括PDOL中的数据,CDOL1的数据以及其它(比如数据头,长度等), 如果是在第二次GAC产生CDA签名,那么还要加上CDOL2中指定的数据项.

第三步,验证数据
前面说到了,最后一步数据的验证较DDA是多了一个应用密文的比较, 终端首先将将恢复的密文数据和GAC返回的密文数据比较. 如果不等,CDA就失败.

剩下的步骤和DDA是一样的.


既然CDA和DDA有很多机同的地方,那么它存在的意义在哪呢? 我说说自己的理解.

CDA和DDA的区别, 核心就在于CDA对卡片行为分析产生的应用密文做了一层加密保护,确保密文是来自于合法的卡片. 这个有点像我们在ATM上取钱时,输入的密码,经过加密后再传到银行的服务器. 银行的服务器解密后再验证密码的正确性.这样更安全了.


另外一点,CDA参与哈希运算的数据项增加了, 就表示这种认证机制更加严格了, 比如我就遇到过因为终端国家代码的值设置错误导致CDA失败的情况.


根据信息安全行业发展的规律来推测, CDA应该会慢慢淘汰SDA和DDA成为主流甚至是强制要求. 当然以后也可能会产生新的更加安全的数据认证机制.


原创粉丝点击