一般来讲ATMC用到的密钥有MasterKey、PinKey和MacKey,其中MasterKey(主密钥)主要用来解密后台下发的密钥,PinKey用来加密用户密码,MacKey用来计算报文Mac的。所有这些密钥当中尤以MasterKey最为重要,它主要负责解密后台下发的Pinkey和MacKey,解密使用的算法为3DES,MasterKey一般在ATM安装时手工输入(也有部分银行通过后台下发的)。PinKey和MacKey均由后台下发,且每天至少需要更新一次这两个密钥。
由于ATM与后台主要通过TCP\IP报文进行通信,传输的报文有可能被截取,因此后台下发的报文中Pinkey和MacKey都已经使用MasterKey进行3DES加密,ATMC接收到Pinkey和Mackey后需要使用本地的MasterKey分别进行3DES解密后才能得到真正参与加密运算的PinKey和MacKey。实际上不管是MasterKey还是PinKey和MacKey,ATMC软件都是不允许记录和保存的(较早之前默认是由软件保存的,后来央行发文明令禁止该做法),在获取到这些密钥后首要的事情就将其是写到ATM的密码键盘里面,所有的加解密工作其实都由密码键盘完成的,这也就是传说中的硬加密,密码键盘其实就相当于一个小型的加密机。
客户在插卡输密码后密码键盘会根据ATMC软件送入的账号信息对输入的密码进行加密,生成PinBlock并返回给ATMC,生成PinBlock算法网上到处都是,我就不再累述了,ATMC会将这个PinBlock放置于交易报文中供后台校验密码。
MacKey的作用主要用于生成MAC校验值,这玩意其实与MD5差不多,主要用于防止报文在传输过程中被恶意篡改。ATMC在组装好一条交易报文后将整条报文(全报文加密)或关键域(关键域加密)传入密码键盘计算MAC,ATMC将密码键盘加密完毕后的MAC校验值添加到报文的特定位置(一般位于报文末尾),这样一条完整的报文就组好,可以发送到后台了。后台可以根据报文中的PINBLOCK和MAC校验值来确认用户密码是否正确和报文是否被篡改,后台接收到ATMC发送的报文后也会使用加密机计算一遍MAC校验值,如果计算出来的校验值与ATMC上送的校验值一致,则说明报文未被篡改,否则就会直接拒绝该笔交易。
金融安全规范
- ANSI X9.8 PIN的管理与安全
- ANSI X9.9 信息鉴别
- ANSI X9.17 密钥管理
- ANSI X9.19 零售金融信息的鉴别
密钥种类
密钥缩写 | 密钥名称(英) | 密钥名称(中) | 密钥类别 | 说明 |
---|---|---|---|---|
LMK | Local Master Key | 本地主密钥 | 主密钥 |
|
ZMK | Zone Master Key | 区域主密钥 | 主密钥, 通讯主密钥 | 区域主密钥ZMK是指主机与主机(银行与银行)间的通信主密钥,用于加密保护主机与主机间交换工作密钥。 |
ZPK | Zone PIN Key |
| 工作密钥 |
|
ZAK | Zone Authentication Key |
| 工作密钥 |
|
TMK | Terminal Master Key | 终端主密钥 | 主密钥, 通讯主密钥 | 终端主密钥TMK是指主机与终端(包括ATM、POS等)间的通信主密钥,用于加密保护主机与终端间交换工作密钥。 |
TPK | Terminal PIN Key |
| 工作密钥 |
|
TAK | Terminal Authentication Key |
| 工作密钥 |
|
PVK | PIN Verification Key |
|
|
|
CVK | Card Verification Key |
|
|
|
其他名词
安全体系
- 密钥的建立,存储及分发
- 系统初始化
- LMK建立,保存
- TMK建立,保护,分发,保存
- TPK/TAK建立,保护,分发,保存
- 收单环节中的密钥使用
- POS
- 收单系统
- 发卡系统
- 发卡环节中的密钥使用
- PIN
- PVV
- CVV