PinBlock/PinBuffer的计算方法
什么是PinBlock?
我们在使用ATM进行交易的过程中需要输入个人密码PIN,而PIN是非常重要的用户数据,因此PIN并不直接存储在应用层,而是通过加密键盘进行存储,应用无法直接获取明文密码,加密键盘也会进行特殊处理,一旦被拆解会进行密钥销毁。那么ATM的控制端ATMC如何与银行主机验密呢?答案就是通过PIN与账号PAN进行运算得出明文PinBlock,然后再用银行主机下发的密钥进行加密。
PinBlock涉及哪几种密钥?(三级密钥管理体系)
- 主密钥MasterKey:一般也称为A Key,TMK(Terminal Master Key), LMK(Local Master Key),顾名思义,是终端主密钥,用来加密其它密钥,例如PinKey。通常为银行手动输入或RKL远程下发。
- 工作密钥PinKey:持卡人密码的加密传输,主机会下发密钥报文,需要使用MasterKey解密得到原始的PinKey。
MasterKey和PinKey都会存储在加密键盘中,通过XFS工具获取KCV(Key Check Value,也叫KVV,CVV)来判断是否输入正确。
如何计算PinBlock
计算PinBlock分为三部分:1.计算MasterKey 2.计算PinKey 3.计算PinBlock
计算MasterKey
MasterKey分为A B两部分,每部分由32位HEX组成。如:
Part A:D045A1431AB0D35D1C8FC8FBA1DCFB10
Part B:5B155E08A8208CD5852C259D49D95E0D
1. 通过异或得到MasterKey D045A1431AB0D35D1C8FC8FBA1DCFB10 XOR 5B155E08A8208CD5852C259D49D95E0D => 8B50FF4BB2905F8899A3ED66E805A51D 2. MasterKey与32位0的3DES加密得到MasterKey的KVV,与银行给的KVV进行对比看是否有无 8B50FF4BB2905F8899A3ED66E805A51D TriDES加密 00000000000000000000000000000000 => FB1FFEF37FA41991FB1FFEF37FA41991
计算PinKey
假设银行主机下发的PinKey密文为 7696F26BB074F23FB4E164ED74CF2C4B
1. 使用MasterKey对PinKey密文进行3DES解密 8B50FF4BB2905F8899A3ED66E805A51D TriDES解密 7696F26BB074F23FB4E164ED74CF2C4B => 7AFB38EADFABA7139B13A43E616DC8E3 2. 解密后的PinKey与32位0进行3DES加密得到PinKey的KCV 7AFB38EADFABA7139B13A43E616DC8E3 TriDES加密 00000000000000000000000000000000 => 7F509DBD79C030607F509DBD79C03060
计算PinBlock(ANSI标准)
假设PIN为 ,账号PAN为00022
按照ANSI X9.8/ISO9564-1 Format0标准填充:
PIN: 0FFFFFFFF (0+长度+PIN+填充F,共16位)
PAN: 00002 (0000+去除最后一位校验位的最右12位PAN)
1. 明文PinBlock通过PAN异或PAN获得 0FFFFFFFF XOR 00002 => 0FFFFFFFD 2. 密文PinBlock通过使用PinKey对明文3DES加密得到 7AFB38EADFABA7139B13A43E616DC8E3 TriDES加密 0FFFFFFFD => D78DF98 3. 应用层中若使用到PinBuffer,则进行转换,规则简单总结就是 +30找对应的ASCII码 D78DF98 => =78=?98
那么以上就是计算PinBlock的方法了,本人从事ATM金融电子行业,希望大家多多交流,感谢阅读。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mkjdt/605.html