基于国密算法SM2的IPSecVPN技术

2016-05-16 01:33:54程凤伟
太原学院学报(自然科学版) 2016年1期
关键词:国密加解密公钥

程凤伟

(太原学院,山西 太原 030032)

1 引 言

计算机的飞速发展对社会产生了深远影响,并将长期持续下去,网络技术的发展也随之亦步亦趋。随之凸显的就是网络安全,其中安全隐患是制约公共网络发展的一个重要因素。在日常生活中,人们对网络的依赖性越来越强,但是网络遭到的恶意攻击也呈现出越来越频繁的态势,这种情况需要安全设备来保护网络内部的用户不被破坏,并能够及时发现主动抵御其攻击,为用户的正常网络访问提供一个安全隧道。近些年,VPN 技术在网络安全基础设施当中,起到了重要的作用。

考虑到算法的容错性,本文所提出的算法不仅要符合国际通信标准,实现国家密码局[5,6]发布的国家标准安全算法,更要实现安全IPSecVPN 的国产化。安全通信领域的常见安全算法有以下几种,根据其安全功能的不同可以分为对称算法、非对称的公钥算法、摘要算法、签名算法(公钥算法也能够作为签名算法使用),这几种都属于最基本的算法,在特殊的使用情形下,可能会衍生出新的算法。近几年,这些算法得到了广泛的应用,能够非常成熟地应用到各个领域。

2 IPSecVPN技术的系统结构

IPSecVPN 系统的结构根据安全功能分为几个大块:AH 通信、ESP 加密、IKE 密钥管理协商[6]以及应用客户端几个部分。其中除了应用客户端是部署在客户机上以外,其他的几个部分,都是部署在Struts 架构的JSP 服务器上,通过调用系统集成模块,为实际应用的提供服务。系统结构图如图1 IPSecVPN 系统结构所示:

图1 IPSecVPN 系统结构

IPSecVPN 加密算法的主要步骤总结如下:

Step1:IPSecVPN 通信模块在4043 端口监听访问请求。

Step2:用户通过客户端JApplet 发起IPSecVPN对应所在地址的服务请求之后,用户通过JSP 服务器用户名、密码认证,通过AH 建立和IPSecVPN 服务器的连接。

Step3:通过IKE 部分进行密钥协商,建立会话密钥。

Step4:建立IPSec 隧道,同时建立和制定IP 对应的服务器以上述同样的方式建立IPSec 隧道,实现双方的IPSec 隧道互联。

3 IPSecVPN加密技术的安全功能设计

基于国密算法IPSevVPN 技术的安全设计包括以下几个方面:签名设计、国密密匙交换设计和安全隧道设计。

签名设计是通过前面k 倍点的运算得知公钥加密算法的基本原理,G 点是生成元,dA 是用户持有的私钥,PA 是dA 倍点下计算得出的公钥。将ZA 的公共信息以及公钥等其他标识一起构成M0`,通过散列计算得出e,在通过生产的k 随机数计算k 倍点(x1,y1)。通过e 和x1 的相加操作得出r,以及(1+dA)的逆和k-r*dA 的乘积,作为s 部分。两个作为最终输出校验发送给用户B,当然M 也发送给用户B。用户同样通过公共信息ZA 和M`构成M1`。在同样的方式计算e`,而x1`,和y1` 通过s` 倍点和t 倍的PA 公钥计算得出。同样的方式计算得出R,然后和传送的r 进行比对,完成验证签名工作。下面的过程中,r 为:BCDCC3FB2,B976F821,012ABDC0,6B6 D4D60,87E9B71B,7E2D9A60,DD3F6463,39E2522C。国密签名运算方式如下表1 国密签名所示:

表1 国密签名

国密密匙交换设计是通过两个用户之间建立会话以后协商会话密钥的具体取值,它们通过一方发起,另外一方被动响应,最终一致决定采取密钥Key。这里假设A 发起、B 响应。变量w 为n 的以2为底的对数取值折半求顶部函数减一。n 为随机数的值域上限也是G 生成元的阶,rA 的整体取值是[1,n-1]。用户A:完成如下事件,产生随机数rA,计算椭圆曲线的rA 倍点RA,并求得x,y 坐标;将椭圆曲线随机数RA 发送给对方用户B。用户B:并行完成如下事件,同样的方式产生随机数rB,RB。并将x2 坐标对应bit 位进行取反操作,即0 变1,1 变0。得出x2`。结合用户私钥导出随机运算后的tB。然后验证RA 的椭圆曲线域合法性,同样方式计算法x1`,以及椭圆曲线点V,验证V 的椭圆曲线域合法性。通过密钥派生函数KDF 将V 以及A、B 的标识特征、还有密钥长度作为参数生成派生密钥KB。将这些信心进行连接以及摘要生成记作SB,把RB,SB发送给用户A。用户A:计算x1`,计算tA,验证RB,计算x2`。(注:这里的计算方式同用户B 的过程完全相同)计算对应的椭圆点U,将U 作为参数同样生产派生密钥KA,并计算S1,并和用户B 传送过来的SB 比较,不同则失败。同样计算SA,并发送给用户B。B:计算摘要结果S2,并检验S2 和SA 的相同性,不同则失败。详情见表2 密钥交换协议数据实例所示:

表2 密钥交换协议数据实例

密钥交换协议通过用户A,B 的相互协商,共同产生了会话密钥:D417B800,6C48CE08,FEB57500,74FC56E8,4FBB20F4,A90B2A34,DCFCF150,1A48 7D1F,292BA942,0E30F3C3,BB78AEE3,5A14534D。

安全隧道设计包括应用层设计和内核设计,本系统在Linux 平台下集成实现IPSecVPN 技术的VPN 服务器,最终使得服务器能够进行IKE 密钥协商交换,运用已实现的加密模块实现VPN 连接后的数据报加密解密功能。通过在Linux 系统下结合已有的OpenSwan 软件系统完成系统调用级别的设计;在应用层次使用pluto 进程,实现服务的提供和模块嵌入;系统内核层的IPSec 实现,采用NETKEY。在该内核部分,将国密算法的实现作为模块加入,使系统能够载入该模块,并能够在合适的时机和其他应用请求程序交互,完成VPN 服务。其应用层和内核部分各自完成自身的任务,其中应用层包括基本的系统配置、IKE 协商功能以及身份的验证等应用功能。内核层面完成IP 数据包VPN 封装以及拆封功能、数据的安全功能。内核设计又包括策略配置和IP 数据包封装和接封装。策略配置:NETKEY 在数据包发送和接收的时候,都要对其包进行检查和判别。在这个过程当中,通过SP 和SA数据库检索实现隧道通信转发。对于数据库的配置策略以及资源分配,需要在conf.xml 文件当中对应实现配置,结合实际部署运行需求配置最佳的分配策略使得服务器性能能够得到最大化的发挥,取得良好的VPN 服务效果。IP 数据包封装以及解封装:在该部分,通过对PF_KEY 密钥管理套接字接口的实现来完成具体的国密加密和通信解密。IP 头后面的数据在转发的时候完成对应数据报部分的加密,在接受数据的时候,按照会话密钥协定信息,完成对应数据信息的解密。在数据的完整性保证方面,还要附加一段签名信息,在签名信息实现的过程当中也需要用到摘要和公钥,数据完整性保证在前面的算法协议中已经做了充分的叙述,这里不再具体展开说明。

4 IPSecVPN加密技术的注册和数据完整性验证

IPSec 数据包可以通过SA 数据库进行查找自动获取管理信息,找到对应的加密算法,从而把协商密钥提取出来。对该数据进行加解密操作,通过SP数据库的相关链接信息判断该数据包该采取何种算法加密解密,引导系统采取正群的算法库进行加解密操作。内核的密码算法库需要在其根目录crypto下面提供新加入国密算法的注册信息,这样才能让系统在调用系统加密模块阶段正确找到模块位置执行代码调入操作。

Linux 内核提供加解密核心调用框架,该部分既包括了算法模块的注册机制,也提供数据分组加密机制的提供,常见的直接支持的有CBC 与CCM,但是我们这里采用了CTR 高效并发运作的机制,因此也需要在这个部分添加这种分组机制,提供加解密效率。

算法的注册机制通过内核全局链表来反应这种注册情况,通过定义该加解密数据结构并将调用注册函数实现算法的注册和注销。注册算法名称为Crypto_register_alg(),注销算法名称为Crypto_unregi ster_alg()。要想进一步了解加解密算法的具体结构细节,要到include/crypto 下面看其头文件。

分组模式和加解密函数的联合调用是系统内部可以自动完成的工作,只需要在配置文件完成配置即可,因此在函数实现的部分,采用了直接的一个分组下的数据数组进行加解密操作,作为加解密引擎模块嵌入系统。例如SM2 的256 位实现,只需要完成256 位数组的加密引擎算法即可。

在算法配置部分,对通信分组模式进行设定,OTR 通信模式设计,将消息按照OTR 方式分组传送OTR 模式运行方式如图2 所示:

图2 通信OTR 分组数据加密

在ESP 协议对其数据进行加密处理之后,数据包尾部加入签名信息,确保数据信息的完整性,能够抵御敌手在篡改密文的情况下不被发现。这对应予接受端用户首先要根据IPSecSA 头部信息规定的协议要求进行完整性验证,即把签名先提取出来,然后进行完整性匹配,只有通过该验证的才执行下面的操作,否则丢弃数据包并要求对方重新发送。验证算法同样和加密算法在crypto 根目录下面添加注册信息,将国密验证签名算法加载到算法模块当中,使得在数据插入签名段和验证完整性签名之前能够正确找到该算法。

5 整体组网设计和测试

用同样的方式部署两台Linux 服务器,并能够互相之间建立网络连接,它们下面都有自己的子网,Linux 上面部署了IPSec 工具箱,部署编译好的国密算法模块,并添加系统加密库注册,以及安装Tcpdump 检测工具,能够实时抓包,发现其报文数据内容的变化。签发证书通过创建证书界面完成证书的创建工作。

创建证书之后,在命令行完成签署证书的工作,然后配置系统的网关、子网配置、证书路径、证书的名称、IKE 配置、信息通信模式、加密算法、签名算法、摘要算法、DH 随机算法、以及ESP 协议配置、AH 配置等。完成IPSec 基本连接和加解密参数的相关配置,实现可连接。

子网设备通过通信聊天工具和对方的通信聊天工具进行数据通信,通过Tcpdump 进行抓包,分析其数据的格式,查看器VPN 工作状态。

6 结束语

本文主要对基于国密算法的IPSecVPN 进行了设计,从国密算法以及安全隧道应用层以及内核层进行了研究和设计,该方案对于IPSecVPN 的国产化提供了一个安全解决方案,对安全产品生产企业[7]有重要的应用价值。

猜你喜欢
国密加解密公钥
国密技术在智能燃气表系统的应用与分析
煤气与热力(2021年7期)2021-08-23 01:11:14
Hyperledger Fabric平台的国密算法嵌入研究
一种基于混沌的公钥加密方案
自助终端设备国密改造方法探究
基于国密算法的银行移动营销终端安全系统研究
电子测试(2018年9期)2018-06-26 06:45:40
HES:一种更小公钥的同态加密算法
电子取证中常见数据加解密理论与方法研究
基于FPGA的LFSR异步加解密系统
SM2椭圆曲线公钥密码算法综述
网络数据传输的加解密系统研究
软件工程(2014年11期)2014-11-15 20:02:46