- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IKE框架实现和功能扩充研究
IKE框架实现和功能扩充研究
摘要:随着Internet的快速扩张,信息安全问题也日趋成为商家关注的焦点,VPN作为解决网络通信安全问题的工具被越来越多的网络安全厂商研发和生产。通过利用成熟的开源框架可以有效的减少开发成本,但同时也由于得不到好的技术支持会增加添加自己个性化元素的难度。添加自定义载荷是一种常用的VPN研发中的应用。该文利用IKEv1协议下的开源框架strongswan介绍了IKE的实现模型,并介绍了在strongswan中添加自定义载荷以及在配置文件中添加开关控制是否启用该载荷的方法。
关键词: 信息安全;VPN;strongswan;IKE;自定义载荷
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)02-0278-03
随着internet的快速扩张,人们对网络的依赖程度越来越高了。所以不管是军队、国家机关,还是企业,甚至是个体之间的通信,对网络信息安全的要求也越来越高。而TCP/IP协议的最初设计没有考虑到安全性,因此IETF(Internet Engineering Task Force)开发了Internet Protocal Security(IPSEC)协议套件来实现通信的安全。IPSEC协议在下一代Internet中,将作为协议的一部分被加入IPV6中去。
在进行IPSEC通信之前,要求通信双方协商起一套安全联盟(SA),来决定保护数据包的加密算法、认证算法、密钥及密钥生存周期等。Internet Key Exchange(IKE)作为一种成熟的协商机制,具有安全、健壮的特点,在信息安全领域中常被用来进行动态的SA建立。该文使用IKEv1的开源框架strongswan 4.4.1讨论IKE在linux操作系统上的实现并介绍了在strongswan上进行代码改造实现添加新的功能载荷的方法。
1 IKE实现
1.1 IKE模型
1.2 模块功能及运行过程分析
1.2.1 ipsec启动脚本
ipsec启动脚本是用户控制程序行为的直接入口,对strongswan的所有控制都是通过ipsec脚本及其传递的参数实现的,基本功能包括:显示当前所用的strongswan版本,开启、关闭和重启strongswan,重新解析并加载配置文件,控制全部或部分隧道的链接建立和断开,显示当前所有或部分隧道的状态信息等。
启动脚本并不实现具体的功能,其控制方式主要通过向starter进程发送信号量或直接调用whack程序给pluto发送whack消息,由starter和pluto来实现具体的功能。
1.2.2 starter进程
starter的主要功能是控制pluto的开关,以及解析配置文件ipsec.conf。starter是一个后台进程,从启动ipsec开始后starter就一直存在,到关闭ipsec之后结束。进程开始执行时,starter会设置一组专用的信号量,用来接收ipsec启动脚本传来的开、关、重启、重新加载配置文件以及pluto进程因为异常原因退出返回的通知消息。之后starter读取ipsec.conf配置文件,加载证书及隧道conn,并根据配置文件指定的动作启动pluto后台进程。starter结束时同样要发送消息通知pluto结束。
starter是通过构造whack消息,并将whack消息发送给pluto来进行和pluto间的通信的。
1.2.3 whack程序
whack程序提供了ipsec启动脚本和pluto进程之间交互的功能,由ipsec启动脚本直接调用,根据参数构造相应的whack消息并发送给pluto。
1.2.4 pluto进程
strongswan中最复杂的程序,也是整个框架的核心进程。pluto主要负责整个协商过程中消息的交互,并把协商得到的SA发送给内核,同时也要接收由ipsec启动脚本和starter进程发来的whack控制消息。pluto受到starter解析配置文件后生成的conn结构后,会把他们加入到pluto的connections全局链表,之后会安排所有的connections发起协商。pluto的协商是以有限状态机实现的,每一个connections都会有对应的state结构记录当前的状态。状态机规定了pluto在某一个特定状态到下一状态转换时超时处理,消息中应该包含的载荷以及该状态下应该发出的与对端通信设备交互的消息。经过多次消息的交互(IKEV1规定了两个阶段共9条消息的交互,主模式6条,快速模式3条),最终通信双方能协商起一套通信中可以使用的通过验证的密钥以及建立在双方同意基础上的安全服务(即安全联盟SA)。pluto把S
文档评论(0)