一种将国密算法添加至Openswan的方法
2015-05-15张朕荣
张朕荣
(四川大学计算机学院,成都 610065)
一种将国密算法添加至Openswan的方法
张朕荣
(四川大学计算机学院,成都 610065)
随着网络安全产品对国家安全的影响与日俱增,使用国密标准ECC算法对于网络安全产品十分必要,但是目前IPSec VPN产品只支持DES、3DES等国际标准加密算法,所以有必要使用加密卡将国密算法ECC-SM1添加到IPSec VPN产品当中。主要通过修改Openswan的算法库和策略库来将国密算法ECC-SM1注册到Openswan当中,完成Openswan对国密算法的支持,并提高Openswan的安全性。
IPSec;国密算法;加密卡;SM1;Openswan
0 引言
随着互联网的发展,网络安全的问题日益凸显。为了保证公共网络上信息传输的安全,人们使用了一系列解决方案,包括了代理技术、防火墙技术、VPN技术,等等。IPSec VPN就是当下应用最广泛的VPN解决方案之一。
在关注VPN的解决方案同时,就可以意识到,加密算法、密钥长度以及密钥管理是VPN安全程度评判的标准。在网络迅速发展的现在,利用网络薄弱环节攻击、破解加密算法不仅仅会对正常网络造成巨大的威胁,还上升到了国家的安全战略层次[1~2]。所以使用国密标准ECC系列算法不仅仅是解决民生安全的威胁,还是为国家安全提供保障[3]。在这样的大环境下,研究基于国密算法的VPN网络产品就具有十分重要的意义。
1 相关技术简介
1.1 国密标准算法
中国国家标准的IPSec VPN则建立在以ECC私钥加密的安全认证和以ECC私钥加密来共享加密密钥的基础上[3]。标准规范了IPSec使用的算法,主要包括:对称加密算法、非对称加密算法和杂凑算法。
标准中IPSec VPN需要实现以ECC-SM1为核心的加密算法的套组:
●IKE阶段:加密使用128位ECC-SM1-CBC算法,公钥加密使用ECC-SM2算法,数据验证使用256位HMAC-ECC-SM3杂凑算法。
●IPSec阶段:采用嵌套AH+ESP或单独的ESP协议封包,加密使用128位ECC-SM1-CBC算法,数据验证使用256位HMAC-ECC-SM3杂凑算法。
标准允许IPSec兼容国际主流加密算法以保证其通用性。
1.2 加密卡介绍
所谓加密卡就是将加密算法通过硬件来实现,这样将所有涉及加解密和验证的过程全部交给加密卡,可以极大地提升加解密的效率和产品整体的性能。
国家加密卡就是遵循了国家相关技术规范实现的支持国密标准算法、国际标准算法的高速密码处理设备[6]。在研究过程中,主要使用的加密卡是渔翁国密加密卡SJK0809-B v2.0。
图1 加密卡架构
加密卡的主要架构如图1所示[7]。其中PCI模块主要是负责加密卡挂载到PCI总线上,配置和管理之间的通信;加密卡控制模块主要完成加密卡内部模块之间的控制和调度;加解密模块就是通过硬件来加解密,例如SM1加密;验证模块也是通过硬件方式进行验证;存储模块则是储存配置信息,以及加解密产生的数据包。
加密卡和IPSec进程并行工作流程如图2所示[8]:
图2 数据加密处理流程
(1)IPSec协议调用驱动的加/解密接口函数将数据包送往加密卡的缓冲队列等待处理;
(2)加密卡驱动的核心线程检查等待加密队列,取出队首数据,根据包描述符和SA的包含信息启动加/解密操作;
(3)完成上述操作后,将数据包送回描述符指定的目的地址,同时设置控制端口,通知操作以及完成;
(4)核心线程检测到数据加/解密完成以后,唤醒IPSec进程,通知其在指定目的地址进行数据读取。
2 系统设计与分析
2.1 Openswan修改设计
目前,在开源IPSec VPN中,Openswan是最成熟的实现。Openswan是Linux下的开源项目,对IPSec支持完整,兼容性好,适合二次开发和研究工作。
本文所主要关注的点在于如何使Openswan不仅支持国际标准算法,也支持国密办发布的国家标准安全算法,并且实现对端到站(Client-to-Network)和站到站(Network-to-Network)的安全通信的基本要求。
VPN模块主要包含了两个部分,一个是IKE协议子模块,一个是IPSec数据包处理子模块。它们共同完成Openswan的主要功能,如图3所示。
IKE协议子模块主要负责协商、建立连接以及维护的工作。通过IKE协议子模块的协商后,可以建立一条数据隧道来提供安全传输,并持续更新和维护这条数据隧道直到服务意外断开或者正常关闭。
IPSec数据包子模块则主要负责对数据隧道中的包进行加密、解密以及认证的工作。作为系统内核的模块,该模块能在网络协议栈中高效地处理数据包,为上层应用提供IPSec的安全保护和认证。
图3 VPN功能模块结构
2.2 IKE处理模块
本模块主要通过修改开源项目Openswan的算法库与策略库来进行实现,重点在于实现国密标准的协议和算法。在实现流程上,协议分为两个阶段:第一阶段(ISAKMPSA阶段)和第二阶段(IPSec SA阶段)。国际主流标准基于RSA签名(RSA_SIG)进行身份验证,并以Diffie-Hellman算法(DH算法)为基础进行身份验证;国密标准则基于公钥数字信封认证方式(DE_SIG)进行身份验证,并以SM2算法(ECC算法)为基础进行密钥交换。
国密标准的IPSec VPN在IKE协议阶段使用到的国密算法有三个:
(1)对称加密算法——SM1(即SCB2);
(2)非对称加密算法(公钥算法)——SM2;
(3)杂凑算法——SM3。
其中,国密算法的SM 1对称加密算法、非对称加密算法都是通过加密卡来实现。这是为了提高加密的效率,并且加密模块封装也能很好地保证安全性。
IKE协议处理模块以IKE协议处理引擎为中心,作为用户态守护进程,主要是监听网络中IKE数据包,以及对IKE协议进行认证和协商。IKE模块的主要结构如图4所示。
图4 IKE协议处理子模块结构图
2.3 IPSec数据包处理子模块
IPSec数据包处理子模块围绕IPSec协议处理引擎展开,运行在系统的内核态,监听网络中的IPSec数据包,对其进行加解密以及认证的操作。
图5 IPSec协议处理子模块算法实现框架
IPSec协议处理引擎通过一个算法库来支持所有的算法及其相关的信息。国际主流算法主要应用内核中的相关实现来在本模块中完成,可以直接用Crypto接口进行静态加载;ECC算法的实现需要访问密码卡内核驱动接口,因此在具体实现上较前者更为复杂,基于加密卡内核驱动、遵循接口规范的算法框架如图5所示:
国密标准ECC算法遵循内核CryptoAPI接口标准所实现的函数原型举例如下:
static int_sm1_set_key(struct IPSec_alg_enc*alg,_u8 *key_e,const_u8*key,size_t keysize);
功能:设置SM1算法对称加密密钥。
参数:alg:算法描述结构体,key_e:算法上下文描述结构体,key:对称加密密钥,keysize:密钥长度。
返回值:0为成功,非零为失败。
static int_sm1_cbc_encrytp(struct IPSec_alg_enc*alg, _u8*key_e,_u8*in,int ilen,_u8*iv,intencrypt);
功能:进行CBC模式SM1算法加密。
参数:alg:算法描述结构体,key_e:算法上下文描述结构体,in:待加密数据,ilen:数据长度,encrypt:是加密还是解密。
返回值:0为成功,非零为失败。
3 结语
随着互联网技术的继续前行,越来越多的部门、企业对于安全、快速和稳定的数据链路产生需求。本文提出一种在加密卡的基础上,将国密算法嵌入到IPSec VPN中去,使其能够很好地完成企业高效和安全的要求。如何更好、更高效地完成这一目标将会是接下来研究和实践的目标。
参考文献:
[1] 熊都.美国网络战司令部成立评析[J].国防科技工业,2009,8:016
[2] 熊玉祥.网络战:新一代战争[J].发现,2009,10:022
[3] 国家密码管理局.IPSec VPN技术规范(S),2010
[4] 刘婷.虚拟专用网(VPN)技术综述[J].科技广场,2010,1:022
[5] S.Frankel,S.Krishnan.RFC 6071:IPSecurity(IPSec)and Internet Key Exchange(IKE)Document Roadmap[J].IETF,February 2011
[6] GB/T 20518-2006.信息安全技术公钥基础设施数字证书格式[S],2006
[7] 胡月振.IPSec VPN中硬件加密卡的应用研究[J].信息技术,2011,9:153
[8] 杨黎斌.基于硬件加密的嵌入式VPN网关实现[J].计算机工程与应用,2007.4:122
A Method for Adding the Cryptographic Algorithm in Openswan
ZHANG Zhen-rong
(College of Computer Science,Sichuan University,Chengdu 610065)
As the impactof network security products for national security increases,it is necessary to use ECC algorithm in network security products.But currently IPSec VPN products only supports DES,3DESand other international standards eccryption algorithm.It is useful to add the ECC-SM1 cryptographic algorithm into IPSec with encryption card.Modifies SPDB and cryptos to register ECC-SM 1 into Openwan whicn improves security of Openswan.
IPSec;Cryptographic Algorithm;Encryption Card;SM1;Openswan
1007-1423(2015)06-0011-04
10.3969/j.issn.1007-1423.2015.06.003
张朕荣(1993-),男,陕西延安人,硕士研究生,研究方向为信息安全
2014-12-30
2015-02-01