基于SSL和国密算法的安全传输系统设计

代 乾 坤

(公安部第三研究所 上海 201204)

没有网络安全就没有国家安全,就没有经济社会稳定运行,广大人民群众利益也难以得到保障。事实上,重大的网络安全事件对世界范围的网络安全威胁和风险日益突出。如Facebook泄露5 000万用户数据,一度造成该公司市值下跌1 000亿美元。2017年,WannaCry勒索病毒使得至少150个国家遭受了攻击,受害的电脑超过了30万台,造成损失达80亿美元。时至今日,勒索病毒一直威胁着网络信息安全。

目前的网络应用大部分基于TCP/IP协议设计开发,TCP/IP协议最初设计并非为安全通信设计,所以在用户认证授权、数据安全传输等许多安全机制方面存在大量的安全漏洞,恶意第三方可以通过侦听破译、截获、篡改等非法手段,对业务应用系统进行破坏[1]。因此政务系统的数据敏感性、网络的虚拟性和开放性决定了包括Web应用系统在内的安全需要强有力的身份认证和数据安全传输机制来保证。本文设计的安全传输系统作为某部数据备案系统的一部分,录入的数据较为敏感,因此数据的安全传输尤为重要。为了能够让备案数据在系统间进行安全传输,设计了本系统。

1.1 备案系统网络拓扑结构

备案系统采用“门店-市-省-部”四级部署模式,备案客户端部署在各企业门店,根据各省具体情况,可选择省级部署或者“市-省”两级部署,各门店通过备案客户端采集备案数据,完成数据备案,备案客户端采集到的数据备案到市级数据平台,各地市级数据平台通过专用安全传输系统,上报备案数据到省级数据平台,省级数据平台在接收到各地市上报的数据后,放入消息队列,完成解密、解析并向部级数据平台报送,系统部署架构见图1。本文针对“市-省”“省-部”之间的数据安全交换机制进行设计,并最终设计实现架构中的安全传输系统。

图1 数据交换网络拓扑图

1.2 系统实现框架

安全传输系统采用多层架构设计,使用TCP/IP交互协议。根据各级单位业务量可采用均衡负载部署,均衡负载使用Nginx做业务分发,底层多节点服务集群。为了有效提高数据传输效率,接收到的待传输数据采用ActiveMQ消息中间件临时存储数据。MyBatis作为数据库ORM框架,Durid作为数据库连接池,Redis缓存数据库资源。底层数据存储在磁盘阵列中,数据库采用MySQL主从模式部署,KeepAlived保证主从切换机制。系统架构见图2。

图2 系统架构

1.3 安全传输系统工作流程

各级数据平台配备本级安全传输系统,平台需要上报或接收的数据,通过安全传输系统完成。安全传输系统在接收到平台传送的数据后,按照给定的目的地址完成安全传送,到达指定目的地址后,由目的地址数据平台完成数据解密、解析、存储、转发工作。例如,图3有数据平台A、数据平台B,分别部署了安全传输系统A、安全传输系统B。数据平台A与数据平台B的数据交互流程如下:

图3 安全传输系统工作流程示意图

数据平台A上报数据到数据平台B:

1) 数据平台A把需要上报的数据通过图3中流程1,明文交给安全传输系统A,并指定要传送的目的地址数据平台B,安全传输系统A把要传输数据放入消息中间件。

2) 安全传输系统A在接收到数据平台A的传送指令后,根据目的地址,与安全传输系统B建立双向握手。

3) 握手完成后,通过生成的对称密钥,完成数据加密。

4) 加密后的数据通过图3中流程5,完成到安全传输系统B的发送。

5) 安全传输系统B在接收密文后,放入消息中间件,交给消息驱动Bean进行数据解密、解析。

6) 解密后的明文数据放入消息中间件,消息中间件的消息驱动Bean通过图3中的流程3完成到数据平台B的传输。

7) 数据平台B在接收到数据后,完成解析、入库,至此数据安全上报完成。

数据平台B下发数据到数据平台A:

1) 数据平台B把需要下发的数据通过图3中流程4,明文交给安全传输系统B,并指定要传送的目的地址数据平台A,安全传输系统B把要传输数据放入消息中间件。

2) 安全传输系统B在接收到数据平台B的传送指令后,根据目的地址,与安全传输系统A建立双向握手。

3) 握手完成后,通过生成的对称密钥,完成数据加密。

4) 加密后的数据通过图3中流程5,完成到安全传输系统A的发送。

5) 安全传输系统A在接收密文后,放入消息中间件,交给消息驱动Bean进行数据解密、解析。

6) 解密后的明文数据放入消息中间件,消息中间件的消息驱动Bean通过图3中的流程2完成到数据平台A的传输。

7) 数据平台A在接收到数据后,完成解析、入库,至此数据安全下发完成。

2.1 防中间人攻击设计

中间人攻击又称“MITM攻击”(Man-in-the-Middle Attack),是一种间接的入侵式攻击,通过如ARP欺骗的方式收到客户端原应发给服务器的连接请求,再通过对服务器证书篡改,获得客户端的信任,同时采取一系列技术手段最终得到被加密的通信数据。显然,这是在通信双方毫不知情的情况下秘密进行的[2-3]。

在实施中间人攻击时,攻击者拦截客户端发送给服务器的请求,然后伪装成客户端与服务器进行通信,将服务器返回给客户端的内容发送给客户端,伪装成服务器与客户端进行通信。通过这个中间位置,便可以获取到客户端与服务器之间通信的所有内容。

防止中间人劫持的有效措施是能够校验客户端与服务器端的真实性。安全传输系统为了能够在两个安全传输系统间完成身份的真实性验证,增加了预分配密钥作为间接凭证。在双向握手过程中,随机数通过密文方式传输,传输时增加消息鉴别码,对随机数预分配密钥加密后进行SM3杂凑值计算得到消息鉴别码,因为随机数密文传输,保证了消息鉴别码的不可伪造,从而保证了中间人获取通信明文的可能,达到防止中间人攻击的目的。

2.2 防重放攻击设计

重放攻击(Replay Attacks)也称为回放攻击,即攻击者把以前窃听到消息或消息片段原封不动地重新发送给接收方达到对主体进行欺骗的攻击行为,其主要用于破坏认证正确性。重放攻击是攻击行为中危害较为严重的一种[4-5]。假如网络账户中的资金转出操作,一条消息表示用户发送了一个转账请求,攻击者在窃听到消息体后,可以通过多次发送这条消息而偷窃账户余额,从而使客户账户遭受损失。

安全传输系统中为了防止重放攻击进行了设计,增加了数据新鲜性检查机制。数据传输发起方在双向握手及发送数据过程中,增加了时间戳请求参数,且时间戳以密文方式传输,只有取得预分配密钥才能对密钥进行解析。接收方在接收到数据后,进行解密,并判断数据是否为新鲜发送的数据。

3.1 基于SSL及SM4的双向握手

TCP/IP协议组是目前使用最广泛的网络互联协议,作为Internet使用的标准协议集,是黑客实施网络攻击的重点目标。SSL安全传输协议能够认证客户端与服务器,在客户端服务器间建立加密通道;
加密数据以防止数据中途被窃取;
维护数据的完整性,确保数据在传输过程中不被篡改。SSL协议可分为三层:SSL记录协议(SSL Record Protoco1),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protoco1),它建立在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥。SSL警报协议,客户机和服务器发现错误时,向对方发送一个警报消息,如果是致命错误,则算法会立即关闭SSL连接,删除中间数据[6]。SSL保证TCP/IP的通信应用程序间的隐私保护与完整性,Internet的超文本传输协议HTTP可以使用SSL来实现安全的通信,即HTTPS。

超文本传输安全协议(Hypertext Transfer Protocol Secure,HTTPS)是以安全为目标的HTTP通道,即HTTP下加入SSL层,HTTPS的安全基础是SSL。数据安全传输系统采用HTTPS协议,建立会话后,采用SM4国密算法进行数据加解密。

根据SSL协议的优点,本文设计基于RSA服务器证书通过HTTPS请求建立SSL通道,通过SSL通道交换系统随机数密文,利用系统预分配密钥解密密文得到随机数,由双方随机数生成SM4加密密钥。至此基于SSL通道的双向会话连接过程结束,系统间建立了采用国密算法的数据加密机制。

安全传输系统间通过SSL交换随机数,随机数通过系统预分配密钥加密传输。以安全传输系统A(简称系统A)与安全传输系统B(简称系统B)的双向握手过程为例,获取A系统发送的随机数密文ARM,用预分配密钥SM4解密后得到A系统随机数AR,同时B系统生成随机数BR,AR与BR异或后得到加密密文SKB,同时返回B系统生成的随机数密文BRM。A系统收到B系统响应后,获取B系统响应的随机数密文BRM,用预分配密钥SM4解密后得到B系统随机数BR,AR与BR异或后得到加密密文SKA,SKA与SKB一样,至此双向握手建立完成,A系统和B系统之间的安全传输通道建立完成。A系统与B系统的双向握手过程(详见图4)如下:

图4 安全传输系统双向握手流程

1) 系统A生成随机数AR=Random(),并对随机数AR用预分配密钥加密得到ARM。

ARM=SM4ENC(KEY1,AR)

2) 计算请求MAC值AHmac,获取时间戳AT。

AHmac=SM3(AR)

AT=new NOW()

3) HTTPS发送请求到系统B。

4) 系统B完成接收,解析得到ARM、AHmac、AT。

5) 预分配密钥解密ARM,得到系统A的生成的随机数ARL。

ARL=SM4DEC(KEY1,ARM)

6) 计算AR的MAC值AHmacL,判断AHmac与AHmacL是否一致,不一致返回完整性校验失败,握手失败。

AHmacL=SM3(ARL)

7) 获取服务器时间NT,计算时间戳AT与服务器时间的差值是否大于60 s,大于60 s返回请求超时。

NT=new NOW()

AT-NT>60 s

8) 获取系统B随机数BR=Random(),分别计算BR密文BRM、BR的MAC值BHmac。

BRM=SM4ENC(KEY1,BR)

BHmac=SM3(BR)

9) 计算会话密钥SKB并放入内存。

SKB=SM4ENC(KEY2,ARLXORBR)

10) 响应并返回BRM、BHmac。

11) 系统A获取响应参数BRM、BHmac,解密BRM得到BRL。

BRL=SM4DEC(KEY1,BRM)

12) 计算BR的MAC值BHmacL。

BHmacL=SM3(BRL)

13) 计算BRL的MAC值BHmacL,判断BHmac与BHmacL是否一致,不一致返回完整性校验失败,握手失败。

BHmacL=SM3(BRL)

14) 计算会话密钥SKA放入内存,至此双向握手结束。

SKA=SM4ENC(KEY2,ARXORBRL)

3.2 SM4加密算法保护数据安全

SM4是我国商用分组密码算法。在商用密码体系中,SM4是一种对称加密算法,其算法公开,分组长度与密钥长度均为128 bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,S盒为固定的8 bit输入8 bit输出[7-8]。

安全传输系统采用HTTPS进行随机数交换,交换后的随机数异或后采用SM4加密后得到会话密钥,系统采用ECB模式进行传输数据的SM4加密。

针对某政务系统数据上报、下发的需求,采用多层架构设计及TCP/IP交互协议,设计开发了基于SSL及国密算法的数据安全传输系统。通过研究SSL、SM3、SM4、防中间人攻击、防重放攻击等关键技术,设计一套通过SSL通道交换预分配密钥加密的随机数,完成系统间双向握手,建立会话过程的系统实现机制。采用ActiveMQ、MyBatis、Durid、Redis、业务集群等技术,有效保证了系统的稳定高效传输。系统采用国密算法SM4,既保证数据的安全,又因为采用对称加密算法,保证了数据加解密传输效率。通过时间戳有效防止应用数据重放攻击,通过杂凑值有效防止应用数据中间人攻击,增强了系统的安全性,达到了数据安全传输的设计目的。

猜你喜欢密文解密密钥一种支持动态更新的可排名密文搜索方案黑龙江大学自然科学学报(2022年1期)2022-03-29基于模糊数学的通信网络密文信息差错恢复计算机仿真(2021年10期)2021-11-19炫词解密阅读(快乐英语高年级)(2021年4期)2021-07-11解密“一包三改”少先队活动(2020年9期)2020-12-17密码系统中密钥的状态与保护*北京电子科技学院学报(2020年2期)2020-11-20炫词解密阅读(快乐英语高年级)(2020年10期)2020-01-08一种对称密钥的密钥管理方法及系统信息安全研究(2018年1期)2018-02-07基于ECC的智能家居密钥管理机制的实现电信科学(2017年6期)2017-07-01一种基于密文分析的密码识别技术*信息安全与通信保密(2016年10期)2016-11-11云存储中支持词频和用户喜好的密文模糊检索深圳大学学报(理工版)(2015年5期)2015-02-28