1、加密体系介绍(LMK、ZMK、ZAK、ZPK)

银行卡网络安全系统采用了三级密钥管理体制,从上而下依次是主密钥、密钥交换密钥、数据密钥。上级密钥用于加密下级密钥,具体如下:

1. 主密钥用于加密密钥交换密钥和数据密钥作本地存储;

2. 密钥交换密钥用于加密数据密钥作网络传输;

3. 数据密钥用于对数据进行加解密。

 

相关术语:
HSM:硬件加密机;
PIN:客户个人密码
MAC: 信息认证代码*(YL叫做报文鉴别码,128域)
note:图中,箭头向下可以暂且认为加解密的关系。**

2、三级密钥体制说明

  第一层,LMK(LOCAL MAIN KEY)为本地主密钥,共有50对不同的LMK,它是采用双倍标准的DES密钥(长达112位),它是存放在HSM机内的,它的作用是对所有在本地存放的其它密钥和加密数据进行加密,不同对的LMK用于加密不同的数据或密钥。由于本地存放的其它密钥和加密数据,都是在LMK加密之下。因此,LMK是最重要的密钥。

   第二层,通常称为密钥加密密钥传输密钥(Key-encrypting key),包括TMK、ZMK等密钥。它的作用是加密在通讯线上需要传递的数据密钥。从而实现数据密钥的自动分配。在本地或共享网络中。不同的两个通讯网点使用不同的密钥加密密钥(KEK),从而实现密钥的分工管理,它在本地存放时,处于本地LMK的加密之下。

   第三层,通常称为数据加密密钥工作密钥。包括TPK、TAK、ZPK、ZAK、PVK、CVK等密钥,它的作用是加密各种不同的数据。从而实现数据的保密,信息的认证,以及数字签名的功能,这些数据密钥在本地存放时,处于本地LMK的加密之下。

 

  在细讲下ZPK,英文意思为ZONE PIN KEY,也就是区域PIN密钥(也就是YL说的PIK密文)。即我平时YL重置PIK密钥交易中48域的报文域内容。对应的ZPK存在一个PIN校验密钥(PVK),用于生成和校验PIN数据,同时校验一个PIN的可靠性传送时,PVK通过ZMK加密。存放本地时,用一对LMK加密。

  非管理类交易报文中PIN密码域,大致如下:MK解密PIK密文,获得PIK明文,PIK明文与PIN BLOCK获得最终值(报文52/63域)。

note:在YL重置PIK交易中的128域,是通过本交易传递中的48域(PIK密文),用MK解密PIK密文,获得PIK明文,PIK明文与MAC BLOCK全报文加密(排除48,128域)生成128域。

  ZAK,即区域MAC密钥是一个数据加密密钥(也就是YL说的MAK密文),用于两个通讯网点(银行与YL)之间传递信息时,生成和校验一个信息认证代码(MAC,128域),从而达到信息认证的目的。此即平时YL重置MAK密钥交易中的48域的报文域内容。

  在非管理类交易中,MAC的生成就是通过MK解密MAK密文,得到MAK明文,MAK明文在与MAC BLOCK加密获得的最终值(MAC).

3、什么是主密钥?

主秘钥,即(Terminal Master Key) TMK,主要作用是用来验证工作秘钥是否合法,以及加密TPK(终端PIN密钥),保证TPK在传输线路上的安全性。一般情况下是人工在POS设置或者通过IC卡导入,TMK被写入密钥保护芯片,也就是我们说的SE,其具有开机程序自毁功能,能很好的保护TMK的安全性,主秘钥是和每一台POS相关联的,即主秘钥和Pos设备是一一对应的,如我们现在使用的主密钥为一个32位的字符串:086a2338252c4e6935b3702327407380,生产中应保持POS的TMK与POS中心的主密钥的一致性。另外,主密钥分为明文和密文,由服务提供商提供。若提供的是密文,则需要先解密后校验,校验通过后,才能保存。

例如:如果是密文,服务商会额外提供一个解密用24个字节48位的交易主密钥:E51D9047310F731798CF74AF483931B3712C8C734B2E669E(密文),如果将交易主密钥密文解密,需用服务商提供的解密密钥“31313131313131313131313131313131”对交易主密钥的前32位进行解密,得到16个字节32位的明文1CF88AB5D64F314F9EF237FBD99E29CD。对明文再用8个字节的0x00做3DES加密,得到的是712C8C734B2E669E。若是交易主密钥的后16位,则验证成功,反之,验证失败。

密文验证逻辑:若是密文,则需要先使用已经提供的解密密钥对主密钥的前32位进行解密,得到其明文,再对明文前8个字节16位字符串,做3DES加密,得到一个16位的字符串,若与主密钥的后16位一致,则验证成功,反之失败。

4、什么是工作秘钥?

工作秘钥也称为数据密钥,包含PIN秘钥,MAC秘钥以及磁道秘钥。在POS每次做签到交易时,由POS中心下发给POS。需要经常性地定期更换,通常每天更换一次。在联机更新的报文中对工作密钥必须用主密钥加密,形成密文后进行传输。

例如:PIN密钥——对PIN密钥密文用密钥(交易主密钥明文)做解密,得到明文C7D50808A7DFFE62B9943B45A4C77FC7。再对明文用8字节0x00做3DES加密,得到AE103AE98D332DCB。与checkvalue相等。与checkvalue相等,则验证通过,可正常加载到POS机上,如果不等,则验证不通过,报错。

工作密钥的加载逻辑:对工作密钥密文使用主密钥进行解密,得到其明文,再对其做3DES加密得到密文,然后对比checvalue,若一致,则验证通过,不一致,则报错,验证失败。

5、什么是会话密钥?

会话密钥(session key)也称为数据加密密钥,或者工作密钥,是保证用户跟设备或者两台设备之间安全通信会话而随机产生的加密和解密密钥,它可由通信用户之间进行协商得到。一般是动态地、仅在需要进行会话数据加密时产生。会话密钥一般也是对称密钥,因为加密和解密使用同一密钥。

6、什么是PIN密钥?

PIN秘钥,即(Terminal PIN encryption Key)TPK,用于计算加密PIN(个人银行卡的6位数密码)。在签到时,以密文的形式下发到POS终端,POS接收到密文后,需要使用主秘钥去解密,然后校验,通过后将TPK存储在专用的密钥保护芯片里,也就是SE中。TPK需要经常性地定期更换,通常每天更换一次,并且,TPK具有开机自毁功能。

安全性体现:当用户在密码键盘上输入银行卡密码时,输出的是加密后的密文(通过TPK加密PIN后的密文),所以在网络传输中,即使被截获也是密文,能够最大限度的保护用户密码的安全。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐