您当前的位置:   首页 > 新闻中心
银行业密钥体系概述
发布时间:2019-10-31 09:47:22   阅读次数:

银行业的密钥体系是个很庞大的体系,其覆盖不同的密码学算法及适应不同的业务场景。一方面保证银行的数据安全性,另一方面适应业务的变化且易于理解和使用。银行业的密钥体系与银行监管制度是紧密相关的,密钥体系保证银行内各个业务环节的安全性,而银行监管制度保证密钥体系能够有效地执行,最终依靠对操作人员进行监管使得密钥体系得到有效的实施。


提到密钥,一定要先了解下密码学的一些基础算法,银行主要使用的密码学算法有下面三大类:


对称算法


对称算法是指加密密钥和解密密钥相同的密码算法,我们常用的又为分两类:1、流式密码算法,常见的流式密码算法包括RC4;2、分组密码算法,常见的分组密码算法为DES、AES、IDEA、SM4等。在银行业中,主要使用这些算法加密用户密码(PIN: Personal Identification Number)保护传输与存储、交易中MAC(Message Authentication Code)生成与校验等。


非对称算法


非对称算法是指加密密钥和解密密钥不相同的密码算法,日常中亦称为公开密钥算法或公钥算法。此算法一般生成时就产生两个配对的密钥,一个密钥用于对数据加密,另一个用于数据解密。常见的非对称算法包括RSA、DSA、ECC、SM2等。在银行业中对此类密钥一般有两种用途:1、数据加密,将加密的密钥公开,解密的密钥进行保密,如网上银行PIN的加密传输;2、校验身份,将加密的算法保密,将解密的密钥公开,如网上银行USB-Key对用户身份的校验。


摘要算法


摘要算法主要是指任意长度的数据作为输入转化为固定长度的数据输出,并保证不同的数据输入的序列不同的一种密码算法,日常称散列算法或杂凑算法。常见的摘要算法包括MD4、MD5、SHA1、SHA256、SM3等。在银行业中此类算法主要是对用户数据作摘要输出,使用对称或非对称密码算法对摘要进行加密,并与原数据一同传输(原数据亦有可能加密,看应用场景),以保证数据的完整性及防篡改。


上面简单介绍银行业主要使用密码的算法,对密码学常用的算法有了初步的了解。为了保证用户信息的安全转变为对密钥的安全。


下面我们了解下银行业中如何设计密钥体系及如何保证整个体系的安全性。银行业的密钥体系按用法进行划分,可分三级:第一级为本地主密钥(简写LMK),第二级为区域主密钥或终端主密钥(简写ZMK\TMK),第三级为数据密钥(包括ZPK\TPK\ZAK\PVK等)。为了防止算法被破解,造成密钥泄漏,所有密钥都设置了生命周期,每一级密钥的生命周期都不一样,当然每个银行在国家政策下的定义自己密钥的生命周期。

银行业密钥体系概述

由上图看到整个密钥体系的结构,设计三级密钥体系有什么好处呢?那么在银行业中是如何使用的呢?下面我们由上而下一级级进行讨论。


本地主密钥(LMK)


本地主密钥最初是由一个多个分量(或叫成份)通过一定算法生成的,总共有50对,此密钥一般是双倍标准的DES密钥,这些密钥仅存在密码机(专用于作为加密或解密的设备,简写HSM)硬件设备内,无法直接从HSM中读取出来,仅可以通过特定的介质同步到其他的HSM上。LMK生命周期是从HSM初始化到HSM销毁,在整个体系中生命周期是最长的。

银行业密钥体系概述(图2)

LMK是在HSM初始化过程中生成的,而密码机初始化是通过银行严格的监管下进行。生成LMK的多个分量最初是由银行内部三个以上不同部门的特定人员分别随手写出来的一个指定长度的数字(一般是32个数字,这些数字在生成LMK运算过程中看作为16进制数值),然后按照随手写出的数字输入到HSM中,生成LMK后,随手写在纸上的32个数字直接进行密封处理,后面送到特定的保存处分别进行保存。这样做的目的是为了防止若发生了灾难性的事件(如自然灾害、战争等造成银行机房直接破坏),可以通过紧急启用密封起来恢复HSM内部的LMK。


LMK设计成50对密钥对是有其原因,每个密钥对对存储在数据库或者文件的区域主密钥或者数据密钥进行加密保护。因为LMK生命周期是很长,防止内部技术人员通过技术手段对LMK进行暴力破解,对每类数据密钥使用不同的LMK进行加密,保证即使某一对LMK密钥被破解了,那亦仅是拿到一部分的密钥明文,使风险尽量降低。在强监管情况下,LMK被破解的可能性非常低。


区域主密钥或终端主密钥(ZMK\TMK,下统一以ZMK表示)


ZMK一般情况下是由HSM随机生成,或者通过两个或两个以上的分量进行合成。ZMK主要加密的数据对象是数据密钥,保护数据密钥从密钥系统传输到终端或者银行与银行之间数据密钥的更新。


终端或者机构之间的ZMK最初是如何初始化的呢?

银行业密钥体系概述(图3)

如果银行需要增加一台ATM,需要往ATM终端灌输ZMK,那需要将随机生成的ZMK密钥在特定可监管的终端以密码信封的形式拆分成多个分量打印出来(类似日常开特定的金融功能的银行卡时,会将用户的初始密码打印到信封中),然后由不同的业务部门的人员持信封进行输入到ATM内部合成,分量输入ATM后立刻进行销毁处理,整个环节都进行严格监管,防止终端的ZMK泄漏。


如果是金融机构之间约定的ZMK,例如银行与银联之间,两个机构因为HSM中的LMK是完全不一样的,那么银行与银联需要更新数据密钥同样需要ZMK加密进行保护,那么初始的ZMK是如何在两个机构之间保持一致的呢?在机构互联之前,每个机构各出一个密钥分量,各自指派特定的业务人员到双方的HSM进行合成并保存,后面各个机构各位对自持有的密钥分量进行密封保存。


ZMK的生命周期一般也是比较长的,一般是几个月到几年不等,根据业务场景不一样,设置的生命周期亦不一样。


数据密钥


数据密钥的类型很多,不同类型的数据密钥加密的数据对象一般不一样。如果接触过银行安全相关业务的同学,可能遇到最多的是PinKey或MacKey,PinKey一般定义密钥类型为为ZPK或TPK,而MacKey一般定义密钥类型为ZAK或TAK。PinKey用于终端加密用户PIN生成PinBlock(ansi x9.8)传输,而MacKey用于生成和验证MAC。


每个类型的数据密钥生命周期各不相同。PinKey和MacKey一般生命周期一般为一天,每天由HSM随机生成并由ZMK加密输出并更新终端原有的PinKey和MacKey。PVK或者CVK生命周期一般情况是永久性的,很少银行会改变PVK或CVK,这分别用于生成用户PIN的密文和卡的CVV。


在强监管制度下,配合整个密钥体系的设计,银行能够有效地保证整个数据链路上所有的数据在生命周期内的安全性。整个密钥体系在银行业的规范下,兼顾各类业务场景,兼容各种密码学算法,是个综合性且严谨的安全体系。在短短的篇幅中,对银行业密钥体系作个简单的介绍,本文中带有很多专有名词,想有更多了解的同学可以问下google或百度。

————————————————

版权声明:本文为CSDN博主「冷风冷雨」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/goodstudy168/article/details/83513545


参考:DES密钥分散代码



揽阁信息可提供的部分安全产品和解决方案信息

联系揽阁信息,您可以获取到更多满足全球合规性要求的信息安全产品资料,以及相关的整体解决方案的相关资料。如:


您还可以得到揽阁信息所提供的优质服务。

揽阁信息 · 值得您信赖的信息安全顾问!


相关阅读

购买咨询电话
021-54410609