PBOC/EMV之SDA(静态数据认证)
文章出处:http://www.nexussmartsolutions.com 作者: 人气: 发表时间:2012年05月27日
SDA的意思是静态数据认证,首先如何理解这个静态。参与认证的都是静态的卡片数据,这些数据在卡片个人化后就不会在改变,比如卡号. 它的目的是确认存放在IC卡中的由应用文件定位器(AFL)和可选的静态数据认证标签列表所标识的,关键的静态数据的合法性,从而保证IC卡中的发卡行数据在个人化以后没有被非法篡改.
既然是认证,必然涉及算法,SDA(包括之后的DDA,CDA)用的是RSA算法,这是一种典型的以非对称加密为理论基础的算法.
废话不多讲, 详细的步骤如下:
第一步,
CA(认证中心)公钥+发卡行公钥证书+RSA算法 = 发卡行公钥
CA公钥可以手动下装到终端,也可以联机从后台下载. 具体的内容通常包括公钥模,模长度,公钥指数,指数长度以及有效期等信息. 这些信息牵扯到算法本身的用途,不细说.
发卡行公钥证书是签了名的发卡行公钥,是终端在读数据阶段从卡片中读出来的, 其实是一串密文数据, 比如下面这样:
CA公钥从发卡行公钥证书中恢复发卡行公钥用的算法是RSA算法.
第二步,
发卡行公钥+签名的静态应用数据+RSA算法 = 数据A
数据A主要包括两部分重要的数据, 一部分我把它叫做数据A1, 另外一部分叫哈希结果A.
第三步,
A1+终端在读数据阶段读到的需要参与认证的静态数据+Hash算法 = 哈希结果B
A1和终端在读数据阶段读到的需要参与认证的静态数据一起, 调用哈希算法,最终计算出一个哈希结果B. 数据阶段读到的需要参与认证的静态数据,是AFL中的字节4:该字节指明从第1 个记录开始的用于脱机数据认证的连续记录数.
AFL的结构如下:
字节1:短文件标识符
字节2:文件中要读取的第1个记录的记录号
字节3:文件中要读取的最后一个记录的记录号
字节4:从字节中的记录号开始,存放认证用静态数据记录的个数(值从到字节-字节+1的值)
举例:
每四字节为一部分, 10 01 03 01表示在SFI为10的文件中, 在01到03这些记录中, 有一个记录是用于数据认证的.
第四步,
判断哈希结果A和哈希结果B是否相等,如果相等,SDA成功,否则SDA失败.
上述步骤其实省略了一些数据拼接以及数据起始字节的合法性判断等操作,但SDA的核心已非常明确.