PBOC/EMV之脱机明文PIN和脱机密文PIN

PBOC/EMV之脱机明文PIN和脱机密文PIN

 

1.      EMV与PBOC在脱机PIN的区别:

EMV和PBOC都支持脱机明文PIN和联机密文PIN。区别在于EMV还支持脱机密文PIN,而在PBOC中,EMV标识支持脱机密文PIN的位置都成了保留位。


PBOC/EMV之脱机明文PIN和脱机密文PIN

图1PBOC中CVM的字节9位6-1


PBOC/EMV之脱机明文PIN和脱机密文PIN

图2EMV中CVM的字节9位6-1

 

2.      脱机明文PIN的验证

当终端获取到卡片的CVM表明卡片可以通过脱机明文验证,而且终端也支持此方式。则终端输入个人密码,然后通过verify指令验证个人密码。

因为PBOC和EMV都支持脱机明文的验证,所以这块是一样的,可以对比下图:


PBOC/EMV之脱机明文PIN和脱机密文PIN

图3. PBOC的验证指令描述


PBOC/EMV之脱机明文PIN和脱机密文PIN

图4. EMV的验证指令描述

数据块,图5,图6 两者是一致的:

PBOC/EMV之脱机明文PIN和脱机密文PIN

    图5. EMV的脱机明文PIN组包方式

PBOC/EMV之脱机明文PIN和脱机密文PIN

图6. PBOC的脱机明文PIN组包方式

 

卡片在收到verify指令后,会检查data域,判断里面的控制域是否为0010(二进制),便于确定后面的数据格式。

 

3.      脱机密文PIN的验证

这点,PBOC是不支持的。从卡片返回的CVM可以得知卡片是否支持,如果终端根据CVM结合自身能力可以进行脱机密文PIN的验证,则执行以下步骤:

a).获取卡片随机数8个字节;

b).终端产生随机数,随机数的长度为:卡片公钥模长度减17(发给卡片的verify命令中data域需要与IC卡模长度一样,减17的原因是要其余数据已经用了17位);

c). 然后根据下面的表组包:(PINBlock的组包方式与明文PIN一致)

PBOC/EMV之脱机明文PIN和脱机密文PIN

图7. 脱机密文PIN的组包用于加密

d). 经过组包后,得到的数据与IC卡公钥模长度一致,这个时候使用IC卡公钥对得到的数据包进行加密,加密后,填入verify指令发送给卡片。

 

卡片收到脱机密文的验证指令后,会恢复data域数据,检查data header是否为0X7F.

 

至此,脱机密文的验证已经结束,里面比较复杂的一块,应该是IC卡公钥的获取以及使用公钥进行加密的过程。

PBOC/EMV之脱机明文PIN和脱机密文PIN

上一篇:基于ViewFlipper实现图片浏览组件


下一篇:求无向无权图起点到终点的所有路径