浅谈加密算法以及加密系统架构

安全 应用安全 算法
随着信息互联网的高速发展,金融行业对信息安全的重视程度在不断增强。金融行业对信息安全的要求为信息系统的软硬件以及数据受到保护,不被破坏、泄露等,保证系统可以安全可靠地运行。

[[436278]]

背景

随着信息互联网的高速发展,金融行业对信息安全的重视程度在不断增强。金融行业对信息安全的要求为信息系统的软硬件以及数据受到保护,不被破坏、泄露等,保证系统可以安全可靠地运行。信息安全中的关键技术在于加密技术,面对互联网技术更新速度快的趋势,金融行业对加密系统也提出了新的挑战,为保证银行内部系统的安全运营,有效支持业务的向前发展,如何选择加密算法以及合理部署加密系统架构将是对银行业的一大挑战。

一、加密体制分类

加密体制可以分为对称加密体制和非对称加密体制。对称加密体制是指加密/解密的密钥是同一个密钥,信息接收双方都知道密钥以及加解密算法,该算法主要用来对敏感数据信息进行加密。非对称加密体制是指加密/解密使用不同的密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个配合使用才能打开加密文件。

1.1 对称加密算法

对称加密体制是假设通信双方能够通过一个安全信道协商一个会话密钥,双方通信时,发送者A利用加密密钥k及加密算法将原消息m加密成密文c;接收者B收到密文c后,利用解密算法及密钥k对密文解密得到原始消息m。

图1:对称加密模型

1.2 非对称加密算法

非对称加密体制又称公钥加密体制,非对称加密模型如图2所示。

图2:非对称加密模型

非对称加密体制的特点如下:

1)消息的接收者有一对公钥和私钥,公钥用于加密数据,私钥用于解密数据。在使用公钥加密算法前,需要一个初始化过程安全地生成用户的公钥和私钥,并将公钥发布出去。

2)公钥是公开的数据,可以通过一定的方法让任何用户可以得到,即公钥不对外保密。

3)利用公钥及密文,在不知道私钥的情况下,计算对应的明文非常困难。

二、常见的加密算法

加密算法分为对称加密算法、非对称加密算法以及散列算法。

对称加密算法

对称加密算法常见有:DES、3DES、AES。

DES(DataEncryption Standard):

算法中数据以64比特分组进行加密,有效密钥长度为56位,数据加密标准,速度较快,适用于加密大量数据的场合。

3DES(TripleDES):

是基于DES算法,用3个或2个DES密钥加密一串明文,密码长度最少为112位,最多168位,对一块数据用三个不同的密钥进行三次加密,相比于DES,其强度更高。

AES(AdvancedEncryption Standard):

是一种带有可变块长和可变密钥长度的迭代分组加密方法,分组长度为128位,密钥长度为128位、192位或256位,高级加密标准,其速度快,安全级别高。

非对称加密算法

非对称加密算法常见有RSA、DSA、ECC。

RSA:

是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。

DSA(DigitalSignature Algorithm):

数字签名算法,是一种标准的数字签名标准。它主要用于数字签名和认证,和RSA不同地方在于它不能用作加密、解密以及密钥交换,只用于签名。

ECC(EllipticCurves Cryptography):

椭圆曲线密码编码学。ECC和RSA相比,优势在于抗攻击性强、计算量小,处理速度快、存储空间占用小、带宽要求低。

散列算法

散列算法常见有MD5、SHA1、SHA256。

MD5(MessageDigest Algorithm 5):

其算法以任意长度的消息文件为输入,产生一个128比特的摘要作为输出,是一种单向散列算法,非可逆,相同的明文产生相同的密文。

SHA1(SecureHash Algorithm 1):

其算法以任意长度的消息文件作为输入,产生一个160比特的摘要作为输出。

SHA256(SecureHash Algorithm 256):

是SHA2的一种,对于任意长度的消息,SHA256都会产生一个256位的哈希值,内部状态大小为256位。

三种算法的比较

对称加密算法使用同一个密钥加密和解密,速度快,适合给大量数据加密。对称加密的客户端与服务端使用的密钥一样,容易被破解,安全性不高。

非对称加密算法使用公钥加密,私钥解密,私钥签名公钥验签,安全性比对称加密高,但是速度比较慢。非对称加密的客户端与服务端使用的密钥不一样,不易被破解,安全性高。

散列算法主要做防篡改签名,它可以输入任意长度的串都会得到一个固定长度的串。

国密算法

国密即国家密码局认定的国产密码算法,其中包括对称加密算法、椭圆曲线非对称加密算法及杂凑算法,具体有SM2、SM3、SM4等。因其国密算法的安全性高以及国产密码算法等特点,现阶段,G行的加密系统所采用的算法即为国密算法。

SM2

椭圆曲线非对称加密算法,密码强度为256位。该算法基于ECC,256位的SM2密码强度高于2048位的RSA密码强度,安全性较高,主要用于实现数字签名和数据加密等功能。

SM3

杂凑算法,也称为哈希算法,输出的哈希值长度为256比特,其安全性要高于MD5算法以及SHA1算法,主要用于计算消息的摘要,检验消息的完整性。

SM4

分组对称加密算法,数据分组长度为128比特,密钥分组长度也为128比特,在安全性上面要高于3DES算法,主要用于实现数据的加密/解密运算,保证数据和信息的机密性。

三、加密的常见功能

1)防止机密数据被泄露或篡改;

2)防止特权用户查看私人数据文件;

3)防止不速之客查看机密的数据文件;

4)使入侵者不能轻易地查找一个系统的文件。

数据加密可在网络OSI七层协议(OSI是Open System Interconnect的缩写,意为开放式系统互联)的多层上实现、所以从加密技术应用的逻辑位置看,有三种方式:

链路加密:

通常把网络层以下的加密叫链路加密,主要用于保护通信节点间传输的数据,加解密由置于线路上的密码设备实现。

节点加密:

是对链路加密的改进。在协议传输层上进行加密,主要是对源节点和目标节点之间传输数据进行加密保护,克服了链路加密在节点处易遭非法存取的缺点。

端对端加密

网络层以上的加密称为端对端加密。对应用层的数据信息进行加密,易于用软件实现,且成本低,但密钥管理问题困难,主要适合大型网络系统中信息在多个发方和收方之间传输的情况。

四、密钥管理体系

4.1 密钥的生命周期

在任何安全系统中,密钥的安全管理都是一个关键的环节,如果密钥得不到有效的保护,那么设计再好的密码体系又有什么用呢。所谓密钥管理是指在参与通信的各方中建立密钥并保护密钥的一整套过程和机制。如果密钥是一成不变的,那么密钥管理就会非常简单了,但是安全策略要求用户要定期或者不定期的对密钥进行更换。在一个健全的密钥管理体系中,密钥是有其自身的产生、使用和消亡的过程,这些过程就构成了子密钥的生命周期。

密钥的生命周期有4种主要状态:

4.2 密钥管理生命周期

密钥管理中系统所处的一系列不同的状态被称为密钥管理生命周期,在密钥生命周期的4种状态下,密钥管理生命周期的状态如图3所示。

图3:密钥管理生命周期

4.3 密钥的层次结构

把密钥组织成层次结构是一种有效保护密钥的方法,除了在层次结构底层的密钥外,其他层次的密钥的目的都是为了保护其下层的密钥,而最底层的密钥则是用来保护数据通信的安全。按照层次结构划分,将密钥分为以下三类:

1)主密钥:处于密钥层次结构的最高层,没有其他密钥保护主密钥,所以主密钥只能用人工建立的方式。

2)加密密钥的密钥:在密钥传输协议中加密其他密钥,可以保护其下层的密钥安全传输。

3)数据密钥:处于密钥层次结构的最下层,用于加密用户的数据,以使数据能够安全传输。

这种层次结构的方法限制了密钥的使用,从而减少密钥暴露的可能,使密钥被攻击的风险大大降低。

五、加密平台系统部署架构

金融机构通常会采购硬件加密机来完成数据的加解密算法需求,由于加密机设备的特殊安全设计,可以保证密钥信息的高度安全:一、加密机通过逻辑设计保证密钥明文不会暴露到加密机外部,所有涉密数据均在加密机内部完成运算;二、加密机具有自毁装置,密钥不可能通过物理方式非法获取。另外,加密机采用高性能国产算法处理芯片,保证一台加密机可以在一秒钟内处理几十万次的加密运算。

以G行的加密系统部署为例,G行为提高密钥统一安全管控水平,降低密钥管理成本和运行成本,建立了加密机综合管理系统,通过该系统为全行所有系统提供统一的安全加密运算请求。加密机综合管理系统的主要功能包括两方面,其一为由密钥管理平台承载的密钥管理功能,实现全行各类密钥的集中产生、存储、下发等密钥管理功能;其二为加密平台承载的加密算法服务,为全行业务应用系统提供集中统一的数据加解密服务,主要包括报文MAC生成与验证,用户密码转换与校验,涉密数据的加密与解密,数据报文的签名与验签。由于加密平台是加密机综合管理系统的核心业务功能,主要介绍一下加密平台的应用逻辑架构,如图4所示。

图4:加密系统应用逻辑架构图

为保障加密请求的交易成功率,加密平台整体采用了三层负载均衡的逻辑架构,分别为:API端的负载均衡、接入服务的负载均衡、加密机接入的负载均衡。在这三层负载均衡框架下,可以保证交易系统成功率达到100%。

5.1 主要功能模块

加密平台的主要应用功能模块主要包括:

加密API:

部署在各个应用系统,由各个应用系统直接调用发起加密算法请求。API在设计上采用了轮询、超时、重发、故障探测与自动恢复等机制来保证成功率。

加密平台一般x台一组形成一个集群,加密API轮流将加密请求发送到后面的n个加密平台,超时设置一般小于z毫秒,当请求超时时自动重发到下一台加密平台,如果加密平台返回码为系统错误(非业务错误)时,API也会再次将请求自动发送到下一个平台;当请求某个加密平台连续失败次数达到设定次数时,会将该加密平台置为异常,不再向该平台发送请求,然后在固定时间间隔发起探测交易,如果探测成功再加入正常处理队列。

Server1:

接收加密API的服务请求,对报文进行格式校验,根据密钥名称、交易码确认需要路由到的后台加密机,将交易请求放到对应的共享内存。为保障交易处理效率,加密平台会预先将密钥加载到内存,并进行排序。当server1需要获取密钥属性时,可以快速使用二分法查找算法找到对应的密钥。由于加密平台需要面向全行数百个系统提供服务,server1会面临连结数过高的问题,server1采用多端口以及链路汇聚的方式解决。server1同时启动十几个侦听端口对外提供服务,使交易均衡分布在各个端口,同时预留一些端口作为容灾备份。另外,借鉴nginx链路汇聚的方式,采用epoll技术,使得一个服务进程可以最大承载数万的连接请求。

Server2:

负责接收共享内存中的请求报文,将请求报文转换为加密机识别格式的请求报文,发送到对应的加密机。该模块实现主要的业务处理功能,通过基础的加密机指令,形成近百个通用报文数据加解密请求,为上游提供服务。由于对称密钥、非对称密钥在处理效率上存在数十倍的差距,为避免互相干扰需要将加密机分为对称密钥加密机组、非对称密钥加密机组。每个server2进程仅连接其中一个加密机,同时启动多个server2进程并发处理共享内存的加密请求。server2由加密机异常探测功能,当发现加密机异常时,server2会将加密机设置为异常状态,然后server2自动退出处理,再由专门的服务程序进行异常加密机的恢复探测。

密钥管理功能:

由于通常加密请求仅是各种算法运行,不会涉及数据的更新,因此加密平台单独将密钥跟新相关的功能独立出来。密钥更新操作主要为密钥的新增和同步密钥。涉及的模块主要包括server3和server4,server3用于处理密钥管理交易,server4负责与数据库进行直接交互。

Server5:

负责将密钥的更新操作同步到同组的其他加密服务器。

由于每一笔金融业务处理会涉及多支交易,每支交易在多个系统流转中又会多次调用加密请求,因此加密平台的处理效率对业务的整体处理效率有很大影响,在系统部署和程序设计时必须特别关注处理效率。目前加密平台在部署上采用贴近调用系统分机房、分网络域多集群分布式部署的方式。在这种部署模式下,加密平台可以达到每笔加密请求响应时间在ams左右,并能在高并发用户下,提供极高的TPS的处理性能。

5.2 问题与挑战

随着银行系统的发展,接入系统快速增长,分布式部署的加密平台服务器数量也快速增长,带来的首要问题是管理问题,包括:客户端API的管理、加密平台的管理、密钥的管理。

API的管理问题主要是:加密系统不能完全掌握和控制各系统的API配置方式、使用方式及运行状态,存在配置信息不规范,使用方式不标准,运行异常不能及时发现的问题。

加密平台的管理问题主要是:加密平台服务器多,集中维护管理困难,操作复杂,应急处置效率不高的问题。

密钥管理的问题主要是:加密平台分布式部署后缺乏集中的密钥管理中心,密钥同步操作复杂,操作风险高,容易出现多服务器间密钥同步遗漏错误的问题。另外,还存在一个加密请求涉及多个密钥但这些密钥跨加密机不允许直接操作的问题。

随着互联网、大数据、云计算、人工智能、区块链等技术创新与传统金融服务的融合,未来的银行信息系统也将朝着全面云化等技术体系演进。当越来越多的组件融合在一起,基于云的加密和密钥管理广泛应用趋势将逐渐加速,云技术能提供更灵活的安全服务,在数据访问、密钥管理和数据保留策略方面取得更长远进步;未来为建设集中的加密管控系统,可以将加密系统与云技术结合,在云上更加高效集中的配置管理加密系统,银行系统建设的架构将进一步丰富银行的基础服务能力。

六、总结与展望

信息加密技术作为金融行业的安全运营的重要一环,其重要性不可忽略。随着加密算法的公开化和解密技术的发展,加密算法的种类越来越丰富,其应用场景涉及到用户登录、身份验证及交易等,不同的应用场景会使用到不同的加密算法来达到目标。

伴随着社会数字化的趋势,未来加密算法将会持续深入地运用到银行业的系统中,技术方向也将朝着分布式架构的路线更加深入演进;加密系统的应用运维管理工作将会更加合理,应急工具与监控的不断完善与丰富也将促进系统运维的效率进一步提高,增强运维中心安全运营的保障能力。

 

责任编辑:武晓燕 来源: 匠心独运维妙维效
相关推荐

2023-10-16 19:05:20

2010-09-09 10:06:56

Zigbee协议栈加密算法

2009-08-13 18:12:11

C#数据加密

2023-08-02 07:27:53

2009-08-04 11:08:33

ASP.NET数据加密

2012-09-13 09:58:38

2023-07-30 17:44:24

CryptoJS加密字符串

2020-12-16 05:46:58

算法加密算法MD5

2009-08-21 15:02:31

C#加密算法

2011-08-18 12:12:29

2018-07-10 10:29:27

2012-11-15 13:52:07

系统密码加密加密系统安全

2021-04-15 09:02:33

Python加密解密

2013-10-17 13:20:34

2020-05-08 11:13:28

Python数据技术

2018-12-18 09:06:07

2020-05-09 14:20:11

信息安全加密

2015-06-23 11:11:55

2015-05-11 10:40:08

加密数字图像加密加密算法

2016-11-16 15:23:09

点赞
收藏

51CTO技术栈公众号