APP下载

一种混合数据加密方案在企业管理系统中的应用

2019-04-18◆智

网络安全技术与应用 2019年4期
关键词:私钥公钥加密技术

◆智 勇

(方正宽带网络服务有限公司 北京 100011)

0 引言

随着企业信息化的发展与应用,管理信息系统在企业经营管理活动中扮演着重要的角色,多数企业单位建立了局域网(Intranet)和广域网(Internet)管理信息系统[1]。在技术层面,基于浏览器/客户端(Browser/Server,简称B/S结构)的系统架构是当前实现企业管理信息系统的主流框架。在这种模型下,用户工作界面是通过浏览器来实现的,能实现不同的人员,在不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据。该结构在TCP/IP的支持下,以HTTP为传输协议,客户端通过Browser访问Web服务器以及与之相连的后台数据库的技术及体系结构[2]。

在一个标准的客户端/服务器模型中,浏览器的主要功能就是向服务器发出请求,并在浏览器窗口中展示用户期望的数据资源。Web服务器的主要作用就是接收用户请求,并计算、检索数据资源,再通过网络链路将数据结果发送给客户端。这是一个标准的客户端/服务器模型,其中的传输协议便是HTTP。但在数据传输过程中,浏览器与 Web服务器之间的数据传输是明文的,HTTP协议是无状态的,通信安全性比较差。针对企业系统管理的实际情况而言,Web服务器一般集中部署于企业内网或者是安全管理域中,有明确的管理方法与制度。而客户端的浏览器实际处于一种“自由”使用的状态。一般情况下,服务器无法确认和确信客户端程序的身份,系统无法保证通信数据的完整性、可靠性和机密性。因此,如何防止信息被篡改、伪造、假冒和监听,以达到B/S结构管理系统安全通信的目的是十分值得关注的。

1 数据加密技术简介

从方法论的角度来讲,针对B/S结构的企业管理系统在数据通信中存在潜在的安全问题。数据加密技术是保障网络系统信息数据安全的基本方法,它一般是在密码学的基础上,对数据传输中的明显信息以函数加密或者密钥加密等方式进行加密处理,使该部分信息数据只能被特定人群破解和使用[3]。在当今主流的应用加密技术中,大体上可分为对称式加密和非对称式加密技术两类,在B/S结构程序的数据通信场景中各自有其自身的优势与不足。

1.1 对称加密技术

加密的本质就是将人或者系统能理解的信息(明文)与一串数字(密钥)相结合,生成不可理解的数据(密文)的过程。解密是加密运算的逆变换,是通过密钥将密文再还原为明文的过程。回顾密码学发展的历程,对称加密技术是被最早研究并且应用于数据安全领域的技术之一,比较经典的有 DES、3DES、IDEA、RC5以及AES等算法。其主要特点就是加密与解密过程使用同一套密钥,依靠算法自身的逻辑策略逐步提升数据安全性,安全指标主要包括密钥长度、运算速度、破解时间等几个方面的综合影响。从早期的DES到目前主流使用的AES算法,从理论到应用均已经发展得非常成熟。尤其是 AES(Advanced Encryption Standard)算法,是目前最安全的加密算法,密钥长度有128、192、256位可选,其优势是运算速度快,并且至今还没有被破解过,因此被业界广泛使用。但对于B/S结构的系统应用场景而言,如果浏览器和 Web服务器想使用相同的密钥,如何做到在数据通信前,密钥分发的过程保密;如何保障已经分发至浏览器与Web服务器端的密钥安全存放而不被窃取,这是对称加密技术应用于B/S结构数据通信首先要解决的问题。

1.2 非对称加密技术

不同于对称加密技术,非对称加密技术使用两个密钥:公开密钥(简称:公钥)和私有密钥(简称:私钥),并且公钥与私钥是配对使用。用公钥加密的数据只有配对的私钥才能解密,相应地用私钥加密的数据也只能由配对的公钥才能解密。最著名的非对称加密算法要属RSA算法,这是一种高强度的非对称加密技术,密钥长度少则512位,多则2048位,非常难破解,至今尚未有人能破解密钥长度超过1024位以上的RSA加密数据,可以说非常安全,并且在当今电子商务领域有着广泛地使用。鉴于RSA算法中密钥的非对称性,可应用于B/S结构的数据通信以及密钥分发过程。可以说,某种程度上非对称加密算法也是一种密钥的保密方法,但由于是采用非对称加密,加、解密耗费时间很长,是DES加密时间的1000倍以上。因此在B/S结构的系统中,如果直接将 RSA算法应用于数据通信,当遇到查询大量数据,批量上传数据或者长表单数据提交的场景中,浏览器与 Web服务器的响应时间会显著增长,影响交互的效果与业务的执行。

1.3 数字签名技术

除了需要考虑对数据进行加密外,如何保证数据传输过程中的完整性、发送者的身份认证、防止数据发生篡改同样是在B/S结构系统数据通信中需要考虑的问题。数字签名技术是解决这类问题的有效手段。在非对称加密的体制中,发送方用一个哈希函数从原始数据中生成数字摘要,并用自己的私钥对这个摘要进行加密,这个加密后的摘要将作为原始数据的数字签名和原始数据一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的数据中计算出报文摘要,接着再用发送方的公钥来对数据附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。哈希函数不同于加密,其过程是不可逆的,无法通过数字摘要再反算出原数据。在B/S结构的数据通信过程中,主要是依靠这种手段来保证数据的完整性。

通过上述分析,在保障信息安全各种功能特性的诸多技术中,密码技术是信息安全的核心和关键技术,通过数据加密技术,可以在一定程度上提高数据传输的安全性,保证传输数据的完整性[4]。当然,在不同的应用场景、网络结构对安全性的需求各有不同,通过对主流的数据加密技术进行考察,并结合B/S结构系统在通信技术、系统部署以及管理的实际情况,本文设计并实现了一种基于RSA非对称加密与AES对称加密相结合的数据通信加密方案。

2 混合加密方案设计与应用

2.1 混合加密模型

目前密码系统大多采用混合密码体系,即用公钥密码体制实现密码管理和数字签名,用传统密码体制实现大量信息的加解密。这样既增强了密码系统的安全性,又可以比较快速地进行加解密[5]。这里所说的传统密码体制就是对称加密技术。考虑B/S数据通信场景,系统的拓扑结构是分布式的,物理设备是分散的,数据通信基于请求-响应机制。除此之外,尽管HTTP协议是无状态的,但可以利用Web服务器的Session(会话)技术,保存浏览器与Web服务器会话状态与数据。针对这样的特点,混合加密的整体思路是用RSA算法分发密钥,保障AES密钥安全传输并实现数字签名,再用AES算法加密数据,提高计算效率;整个密钥生成的过程是动态的、基于Session回话的。整体模型与具体步骤如图1所示。

图1 混合加密的密钥生成与传输

第一阶段,在浏览器与Web服务器建立会话的初期,用RSA算法动态生成私钥、公钥对,并相互交换公钥。当浏览器向第一次访问Web服务器地址时,Web服务器端程序为该客户端请求创建会话变量并保存至Session中,同时生成服务器端的会话私钥Sks与公钥Sps,私钥Sks保存在Session中,公钥Sps返回给请求客户端。客户端确认接收Web服务器返回的会话公钥Sps,同样生成客户端浏览器的会话私钥Cks与公钥Cps,并用服务器会话公钥Sps加密客户端会话公钥Cps发送给Web服务器,Web服务器接收浏览器数据,用Session中的会话私钥Sks解密数据,取得客户端的会话公钥Cps并保存至 Session,整个会话公钥交换过程完成。浏览器与Web服务器建立了Session会话,各自持有自身动态生成的私钥,相互交换的会话公钥。

第二阶段,在Web服务器端动态生成AES会话密钥Rs,并用客户端公钥Cps对Rs进行加密生成Rs’,将Rs’返回至客户端浏览器,浏览器用客户端会话私钥Cks对Rs’进行解密得到AES会话密钥。浏览器与Web服务器通过公钥加密并验证了AES密钥传递过程。第二阶段完成后,Web服务器与客户端浏览器持有相同的对称AES密钥。

第三阶段,数据通信阶段,无论浏览器向Web服务器发送请求,还是 Web服务器向浏览器返回应答数据,都通过会话密钥Rs对业务数据D进行加、解密操作,并通过公钥体制进行签名验证。数据签名与验证过程如图2所示,签名过程是用MD5算法对业务数据D生成数字摘要d,在Web服务器端用会话私钥Sks对摘要d进行加密,并附加于数据D尾部再用AES算法加密形成加密数据 D’返回至浏览器端。浏览器端的签名验证过程如下,用AES密钥解密数据D’取得加密摘要并用服务器会话公钥Sps解密得到原始摘要。最后,在浏览器端用相同的MD5算法计算数据D的数字摘要与原始摘要对比,从而完成数据一致性校验过程。服务器端的签名验证过程相似,不同的是签名时使用的是浏览器端的会话私钥Cks,而验证过程使用 Session中保存的浏览器会话公钥Cps。

图2 数据签名与验证过程

2.2 混合加密模型特点分析

该模型基于B/S系统应用场景,综合了AES加解密速度快,RSA非对称密钥机制便于密钥分发的优势,具有以下一些优势:

(1)利用Web服务器Session会话机制,私钥、公钥以及AES密钥均动态生成,无须预先设置以及持久化存储,随着一次会话过程的结束,密钥会自动销毁。例如,用户关闭浏览器或者服务器端闲置时长超过Session设置的最大时长则私钥、公钥变量自行销毁。

(2)浏览器与Web服务器均生成各自的私钥、公钥,并相互交换,不同会话进程中的AES密钥、RSA公、私钥均不相同,并与数字签名结合使用,这种双向交叉验证的策略进一步能降低在公钥交换过程中,被不合法截取与滥用的风险,从而提升系统的安全性。

(3)尽管https和数字签名技术是目前登录方案中常用的技术,但其在应用的过程中会涉及证书及公证中心,对企业内部管理系统来说成本过大[6]。不同于数字证书技术,该方法的实现基于代码级别,在服务器端与客户端程序中封装为工具类、函数,实现简单且便于复用。

(4)RSA、AES算法以及数字签名技术是业界成熟与通用的算法体系,是经过缜密研究与实践检验的方法体系。从通信安全的角度来讲,RSA更适合密钥分发,因为AES加、解密的效率高。

2.3 混合加密模型的程序实现

上述混合数据加密模型在本企业内部人事管理系统中得以实现与应用。系统基于B/S结构,前、后端分离的方式实现。后端程序基于JDK1.7版本,使用Apache Tomcat Web服务器,程序开发使用 Spring Boot框架,通过注解方式简化组件配置,提升开发效率。前端页面全部使用Html5实现,通过JQuery的AJAX调用封装的方法,向后端 Web服务器程序发送请求并接收应答数据。核心逻辑涉及 Web服务器后端数据的加解密以及浏览器前端数据的加解密封装。

2.3.1 Web服务器后端数据加解密

Web服务器后端数据加、解密关键模块如图3所示。

SecUtils安全模块封装了常用的RSA、AES、MD5等加密、解密以及哈希算法工具包。主要功能包括MD5数据摘要生成,RSA公钥加密,RSA私钥解密,数字签名与签名校验;AES密钥生成,AES数据加密,AES数据解密。

WebFilter类是后端系统的自定义过滤器,该模块位于 Web容器的最前端,除SecController模块之外,所有浏览器请求数据、业务模块返回数据都要经过该模块的解密与加密处理。基本流程如下,当过滤器接收到浏览器提交的加密数据后,先用 AES密钥解密并执行签名验证,数据解密后再分发至相应控制器模块执行处理。同理,当控制器返回应答数据时,也需要经过过滤器对数据进行客户端会话公钥签名、AES加密处理后再发送至客户端浏览器。这样无须在各控制器模块对数据做转换,实现了在Web服务器端对收、发数据的统一的处理。

图3 Web服务器后端加、解密程序模块

SecController控制器类主要任务是负责创建 Web服务器与浏览器 RSA会话密钥对,执行 AES密钥交换。其中,getServerPublicKey方法创建Web服务器端RSA会话公钥、私钥对,保存RSA私钥至Session中,并将RSA公钥返回至客户端浏览器;putClientPublicKey方法接收客户端RSA公钥,动态生成AES密钥,在保存至Session变量同时,通过客户端RSA公钥加密AES密钥返回至客户端浏览器。

2.3.2 浏览器前端数据加解密

浏览器前端程序同样需要实现对发送与接收数据的加、解密操作。在前、后端分离模式的程序中,前端数据的发送与接收是通过JQuery的AJAX方法实现的。为简化每个交互页面中的数据加、解密操作,程序对AJAX原生方法又进行了一次封装,代码封装在request-common.js文件中。前端程序向后端Web服务器发送请求时,引用request-common.js文件,调用Request.Update方法,在Request.Update方法中的data参数统一对发送数据进行客户端加密、签名操作,对服务器成功返回数据进行统一解密和签名验证操作。

与后台程序结构类似,前端程序同样需要实现加、解密算法库管理、进行客户端公钥、私钥初始化以及与Web服务器公钥交换操作。如图4所示,secutil目录包含了加、解密相关的全部js算法文件,secinit.js文件实现了发起会话请求,接收服务器公钥,生成客户端公钥、私钥,发送客户端公钥以及接收并保存AES密钥的功能。

图4 浏览器前端加、解密程序模块

3 结束语

本文重点介绍了在B/S结构的管理系统在浏览器与Web服务器数据通信场景中,主流的加密与数字签名各自的特点与不足。通过综合分析,提出了一种结合对称加密、非对称加密以及数字签名技术的混合加密方案,并在本企业内的人事管理信息系统中得以实现与应用。实践证明,该方法具有一定的通用性,适用于大多数中、小企业B/S结构的管理信息系统中前后端的通信数据安全。除此之外,该方法也具有一定的扩展性,可通过结合单点登录机制以及内存数据库redis的session共享方案扩展到多应用系统,进一步可以通过统一安全网关接口程序对WebFilter封装,从SOA(面向服务的架构)的角度为多个系统应用提供数据加、密服务。

猜你喜欢

私钥公钥加密技术
运用数据加密技术维护网络安全的可靠性研究
比特币的安全性到底有多高
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
程序员把7500枚比特币扔掉损失巨大
神奇的公钥密码
数据加密技术在计算机网络安全中应用研究
一种基于虚拟私钥的OpenSSL与CSP交互方案
日本开发新型加密技术 号称量子计算机也难破解
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究