转自博客:金融行业密钥详解
以下是自己对上面的博客的小结:
- 无需对银行卡的所有信息加密,只需对“账号”和“密码”加密(也有只对“密码”加密的),其它信息直接明文。对账号和密码加密有个术语,叫“PinBlock”,即“Pin块”。
- 用DES算法对PinBlock加密,需要一个key来加密,这个专门用来加密账号和密码的key就被称作 PinKey(Pin秘钥)
- DES算法加解密时要求数据必须为8个字节(64bit)。
- 使用一个key,对报文进行DES加密,得到加密后的64bit数据,拼在报文后面,前置机收到报文后,同样用该key对报文(不包括拼接的64bit数据)进行加密得到 64bit 的数据,如果 两个64bit数据相等,就表示报文没有中途被更改过 , 该key 就被 MacKey(Mac密钥)。
- 报文使用PinKey和MacKey加密,报文基本上就安全了。但是PinKey和MacKey不能暴露,此时就需要再增加一个key来对PinKey和MacKey加密。该 key就称为 MasterKey(主密钥)。
- MasterKey也是不能暴露的,黑客程序只能窃取我软件上的东西,如果我把MasterKey放到硬件里面怎么样,黑客是没能力跑到我硬件里面把MasterKey取出来。所以,只要把MasterKey放到硬件里面(一般是键盘的加密模块里面)就好了。
- 之前,明文的密码是通过 键盘按键,等6位密码按完以后,再由PinKey加密,黑客程序如果直接获取 按键信息,就能知道密码了。现在,把获取按键的程序 直接一步进入 硬件处理,再把 硬加密后的按键信息 传给上层软件,这样黑客就没法破解按键信息了。这叫做 硬加密。
不禁产生疑惑:既然 有 MasterKey来加密PinKey和MacKey, 那还需要 传输密钥 做什么?
原来 主密钥 又划分为了两层:银行卡网络安全系统的三级密钥体系
这篇解释的更详细: 金融行业密钥基础知识
- 第一层(本地主密钥) Local Master Key 又称作 主机主密钥 Master Key,用来保护它的下一级 区域主密钥 Zone Master Key , 其中 ZMK 包括 银行主密钥BMK (Bank Master Key) 和 终端主密钥TMK (Terminal Master Key)
- 区域主密钥ZMK主要有两种:一种是 金卡中心 与 成员行 之间的传输密钥(称为银行主密钥), 另一种是 成员行 与 ATM或POS之间的传输密钥(称为 终端主密钥)
- 第二层(区域主密钥)又可以称为 密钥加密密钥 KEK (key-encrypting key) 或者 "密钥交换密钥" KEK (key-exchange key) ,也 即 传输密钥!!
- 第三层(工作密钥 WK) (working key),也叫 数据加密密钥(Date Encrypt Key) , 分为 PinKey 和 MacKey
- PIK即 PinKey
- ZPK zone pin key 区域Pin密钥,专指主机 与主机间的PIK
- TPK terminal pin key 终端Pin密钥,专指主机与终端间的PIK
- MAK 即 MacKey
- ZAK zone authenticate key 区域认证密钥,专指主机与主机间的MAK
- TAK termianl authenticate key 终端认证密钥,专指 主机与终端之间的MAK
- CVK card verification key 卡校验密钥,专用于校验卡真伪的工作密钥
- TAC transaction authentication code,交易认证码,在IC卡中用于验证交易正确性。
如有错误,请指正!!谢谢!!