IPSec协议在Linux平台上的实现技术综述报告.docx

上传人:b****4 文档编号:4889511 上传时间:2022-12-11 格式:DOCX 页数:23 大小:451.45KB
下载 相关 举报
IPSec协议在Linux平台上的实现技术综述报告.docx_第1页
第1页 / 共23页
IPSec协议在Linux平台上的实现技术综述报告.docx_第2页
第2页 / 共23页
IPSec协议在Linux平台上的实现技术综述报告.docx_第3页
第3页 / 共23页
IPSec协议在Linux平台上的实现技术综述报告.docx_第4页
第4页 / 共23页
IPSec协议在Linux平台上的实现技术综述报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

IPSec协议在Linux平台上的实现技术综述报告.docx

《IPSec协议在Linux平台上的实现技术综述报告.docx》由会员分享,可在线阅读,更多相关《IPSec协议在Linux平台上的实现技术综述报告.docx(23页珍藏版)》请在冰豆网上搜索。

IPSec协议在Linux平台上的实现技术综述报告.docx

IPSec协议在Linux平台上的实现技术综述报告

 

题目名称:

IPSec协议在Linux平台上的实现技术综述报告

 

目录

一、问题背景概述1

1.1背景1

1.2IPSec协议概述1

1.3基本工作原理1

二、协议分析说明分析2

2.1协议规范概述2

2.2需解决的问题3

2.3重点和难点3

三、实现条件及系统解决方案4

3.1系统实现条件/环境配置说明4

3.2系统解决方案5

3.3环境配置说明6

四、实验方案设计及实现6

4.1实验方案设计说明6

4.2实验步骤/实现过程说明7

五、方案分析评估14

5.1和其他备选方案的分析比较14

5.2方案评估分析14

六、课题结论15

6.1本课题的不足之处和可以改进之处15

6.2技术前景展望/下一步的工作15

七、总结和体会..........................................................................................................................................16

附录A  参考文献16

一、问题背景概述

1.1背景

Internet缺乏安全性是不争的事实,人们试图通过设计各种基于TCP/IP网络层次结构的安全协议来增强IP网络的安全性。

例如,基于应用层的PGPPEMS/MIME(多功能网际扩充协议),基于传输层的SSL(安全套接层)/TLS(传输层安全)。

IPSec是基于网络层的安全协议。

IPSec相对于其它协议的优点,在于它是在TCP/IP协议的关键,实现安全机制从而有效保障了高层各协议的安全性减少了在TCP/IP网络上部署安全的复杂性。

目前对于IPSec协议有多种实现,例如Windows2000以上的Windows系列操作系统都提供对IPSec的支持。

Linux的2.4版本本身虽不具备IPSec功能,但是Freeswan等开源项目使得Linux的2.4版本可以支持IPSecLinux的2.6版本,目前已经内嵌了IPSec的功能。

KAME(项目)等开源项目提供针对各种BSD(Unix的衍生系统)版本的IPSec实现方案,MotorolaCavium以及HifnAMCC都提供IPSec的ASIC/FPGA(数字芯片)实现方案。

OpenSWan是Linux下IPsec的最佳实现方式,其功能强大,最大程度地保证了数据传输中的安全性、完整性问题。

OpenSWan支持2.0、2.2、2.4以及2.6内核,可以运行在不同的系统平台下,包括X86、X86_64、IA64、MIPS(是衡量处理器的性能的)以及ARM(处理器)。

OpenSWan是开源项目FreeS/WAN停止开发后的后继分支项目,由三个主要组件构成:

1.配置工具(ipsec命令脚本)2.Key管理工具(pluto)3.内核组件(KLIPS/26sec)。

1.2IPSec协议概述

IPSec是一系列基于IP网络(包括Intranet、Extranet和Internet)的,由IETF(互联网工程任务组)正式定制的开放性IP安全标准,是虚拟专网的基础,已经相当成熟可靠。

IPSec可以保证局域网、专用或公用的广域网及Internet上信息传输的安全。

为了在IP网络上获得安全通信的保障,业界很早就有对Internet的安全协议进行标准化的想法,并提出了大量的方案。

例如,作为安全数据网络系统(SDNS)la01的一部分,安全协议3号(SecurityProtocol3,SP3)就是美国国家安全局以及标准技术协会制定的安全标准:

网络层安全协议(NetworkLayerSecurityProtocol,NLSP)是由国际标准化组织为无连接网络协(ConnectionlessNetworkProtocol,CD心)制定的安全协议;集成化NLSP是美国国家科技研究所提出的包括口和CLNP在内的统一安全体制。

虽然这些提案的差异性较大,但本质上均采用了口封装技术,将加密的敏感信息通过Internet进行传输。

当数据包到达通信对端时,外层的IP报头被拆开,报文被解密,然后送达目的地。

IP安全(IPSec),是一个标准框架,它在两个对等体设备之间的网络层上提供了下面这些安全特性:

(1)数据的机密性;

(2)数据的完整性:

(3)数据验证;

(4)抗回放检测;

(5)对等体验证。

一种对IPSec常见的误解是,认为他只是为数据流提供安全服务的协议。

实际上,IPSec是IETFIPSec工作组定义的一套安全协议。

其基本架构和框架如下:

(1)安全协议:

认证报头(AH)和封装安全载荷(ESP);

(2)密钥管理:

ISAKMP、SKEME;

(3)算法:

用于加密和身份验证。

IPSec在设备和网络之间提供了网络层的保护,并且因为它是一个开放的标准,所以通常用于IPv4和IPv6的网络。

IPv4可选支持IPSec,IPv6必须支持IPSec(这也是所谓的“IPv6比IPv4更安全”的根本原因)。

1.3基本工作原理

IP协议本身不具备集成任何安全特性,在传输过程中很容易伪造口包的地址、修改,其内容、重播以前的包,以及拦截并查看包的内容。

因此,在Internet上传递IP数据包可能会遇到如身份欺骗、数据的完整性破坏、数据的隐私性破坏等安全威胁。

然而,IPSec可以有效地保护口数据包的安全,主要采取的保护形式为:

数据源验证、无连接数据的完整性验证、数据内容的机密性、抗重播保护等。

例如:

可以使用AH(认证报头)或ESP(封装安全载荷)协议进行身份认证的保护;可以使用AH或ESP协议进行数据完整性的保护:

可以使用ESP协议对数据进行加密,提供隐私保护。

使用IPSec协议133I中的AH协议和ESP协议,可以对P数据包或上层协议(如UDP和TCP)进行保护。

其中,AH可以认证数据的起源地、保障数据的完整性以及防止相同数据包的重播。

ESP除具有AH的所有能力之外,还可以选为数据流提供机密性保障。

IPSec采用安全关联SA的方案来将安全服务/密钥与要保护的通信数据联系起来,它还定义了用户能以多大的粒度来设置自己的安全策略。

SA驻留在安全关联数据库(SecurityAssociationDatabase,SAD)内。

具体安全策略由安全策略数据库(SecurityPolicyDatabase,SPD)加以维护。

结合SAD和SPDt341数据库信息,IPSec的工作流程如下。

(1)对于外出数据包

IPSec协议首先要查询SPD,确定为数据包应使用的安全策略。

如果检索到的数据策略是需要对该数据包应用IPSec,则再查询SAD,确定是否存在有效的SA。

若存在有效的SA,则取出相应的参数,将数据包进行加密、验证,添加IPSec头和IP头等,然后发送;若尚未建立SA,则启动IKE协商,协商成功后则将数据包Linux环境下于IPSec的VPN关键技术研究封包发送,不成功则丢弃数据包并记录出错信息;若存在SA但无效,则将信息通告IKE(互联网密钥交换协议),请求协商新的SA,协商成功后则将数据包封包发送,不成功则丢弃数据包并记录出错信息。

(2)对于进入数据包

IPSec协议首先查询SAD(安全关联数据库),如得到有效的SA,则对数据包进行还原,在查询SPD(安全策略数据库),验证为该数据包提供的安全保护是否与策略配置的相符。

若相符,则将数据包还原后交由上层协议或转发;若不相符,则将数据包丢弃并记录出错信息。

IPSec对输入/输出数据包处理的流程如图所示。

上层下达

递交上层

 

图1IPSec处理流程图

二、协议分析说明分析

2.1协议规范概述

IPSec是IETF(互联网工程任务组)提出的IP安全标准,它在IP层上对数据包进行安全处理提供数据源验证无连接数据完整性、数据机密性、抗重播和有限的业务流机密性等安全服务。

各种应用程序完全可以享用IP层提供的安全服务和密钥管理,而不必设计和实现自己的安全机制。

因此减少了密钥协商的开销,也降低了产生安全漏洞的可能性。

IPSec可连续或递归应用在路由器防火墙主机和通信链路上,配置实现端到端、安全虚拟专用网络(VPN)RoadWarrior和安全隧道技术。

IPSec协议由核心协议和支撑模块组成。

核心协议包括AH(验证头)与ESP(封装安全载荷)。

支撑部分包括加密算法、HASH算法、安全策略、安全关联、IKE密钥交换机制。

从全局的角度理解和把握IPSec的作用、实施,这里首先简要介绍一下IPSec体系的概貌。

IPSec是一种协议套件。

主要包括以下组件:

(1)AH(认证头):

AH是一种IPSec协议,用于为IP提供无连接的完整性、数据源认证和可选的、有限的抗重放服务。

(2)ESP(封装安全载荷):

ESP也是一种IPSec协议,ESP除了具有AH的所有能力之外,还可选择保障数据的机密性,以及为数据源提供有限的流量保密性。

(3)IKE(Internet密钥交换):

因为IPSec协议中的这些安全服务需要使用共享密钥(在认证/完整性和加密服务中都使用了密钥)。

因此必须要有一种独立的机制来进行密钥管理。

标准要求实现人工和自动两种密钥管理方式,并指定了一种基于公钥体制的自动密钥管理方式IKE。

(4)管理配置应用:

一般来讲会根据通信对象的不同采取不同的安全保护措施这在IPSec中称为“安全策略”系统安全策略的配置和管理是IPSec实施中极其重要的,同样也是最基础的一环。

(5)转码方式:

转码方式定义了如何对数据进行转换以确保它的安全。

其中包括算法密钥太小、转码程序以及算法专用的任何信息。

对这些信息来说,确保它们的唯一性显得尤其重要。

只有这样才能使不同的实施方案实现彼此问的互操作。

其中,AH和ESP协议支持两种不同的应用模式:

传输模式和隧道模式。

而且这两个协议可以组合使用,从而满足不同用户对安全性的不同要求。

虽然IPSec是一个十分复杂的系统,但当这些机制被正确实现并进行布署时,它们不会对没有采取这些安全机制来保护通讯流量的用户主机和其它[memet]构件产生不良影响。

这些机制也被设计成独立于算法的机制,这种模块化的方法使得用户可选择不同的算法而不会影响其它部分的实现。

但应注意的是,AH或ESP所提供的安全保障完全依赖于它们采用的加密/认证算法。

为保证不同实施方案在整个Internet范围内的互操作性,标准定义了一系列需要强制实行的加密算法。

2.2需解决的问题

(1)建立统一的策略描述格式,让各类安全策略之间能够进行协商和交换;

(2)如何检测策略之间是否出现冲突;

(3)如何配置和集中管理策略。

2.3重点和难点

由于各种设备的多样性和复杂性,目前还没有一个统一的描述格式,导致策略的协商、交换、冲突检测都很难进行,并且现在的冲突检测、策略协商算法复杂,效率不高。

现在提出的策略管理方法,通常是对策略服务器模型的研究,为网络内部的所有资源提供不同级别的保护。

但在实际应用中,还存在着很多问题,比如基于策略的管理实体间的认证、以及采用安全策略系统的高成本问题等。

随着IP网络变得无处不在,人们将语音、视频和数据网融合到单个基础设施,即基于IP的网络,然而不同类型的数据流对网络的服务等级要求不同,为了能让IP网络根据不同数据流提供不同的服务,可以根据5种协议属性将分组分成流。

这5种协议属性也被称为5元组:

源IP地址、目的口地址、IP协议、源端口和目标端口。

虽然对于未加密的数据流,前面描述的5元组对m分类很容易,但IPSec报头会隐藏原始P分组报头的信息,给分组带了了挑战。

另外,构建IPSecVPN来提供语音服务对企业来说日益重要。

VOIP带来了独特的挑战,使IPSec更为复杂。

目前,对很多企业来说,使用IP多播的应用也变得很重要,多播应用通常依赖于单播路由选择协议和多播路由选择协议。

然而当前的IPSec标准不支持IPSec隧道上的多播,这也影响了IPSec的应用。

除了以上提到的问题,IPSec在实际应用中还存在着其他局限,如IPSec对负载均衡的支持、动态口下IPSecVPN的实现等。

这些问题还有待于进一步的研究和解决。

三、实现条件及系统解决方案

3.1系统实现条件/环境配置说明

3.1.1IPSec实现地点

IPSec在主机上实施可以提供端到端的安全性,实现所有的IPSec安全模式(传输模式和隧道模式)。

IPSec模块的主要功能是对进出VS的数据包提供安全服务。

可细化为以下几个方面:

当IPSec实现于路由器/防火墙时,能够对其保护的子网之间流动的所有数据提供安全保护。

而且通过身份认证。

可以禁止非授权用户进入私用网络。

许多公司都利用这一点允许员工在互联网上通过远程通信建立VPN或内联网。

而在此之前.能通过拨号方式来实现(直接通过调制解调器拨号进入公司内网)。

3.1.2IPSec实现组件

无论IPSec在“哪里”实现,在具体实施时一般都会实现下几个组件:

(1)IPSec基本协议:

这些组件实施了ESP和AH,它用于处理IP头与SPD和SADB进行交互,以便决定为数据包提供哪些安全保障,并解决分段和PMTU(路径最大传输单元)之类的网络层问题。

(2)SPDB:

SPDB(安全策略数据库)是一个重要组件,因为它对数据包采用的安全保障起决定作用。

外出包和进入包的处理都要查阅这个SPDB。

对外出包处理来说,IPSec通过检索SPDB来判断这个包是否需要安全保护。

对进入包来说,IPSec通过检索SPDB来判断为这些包提供的安全保护是否策略配置的安全保护相符。

(3)SADB:

SADB(安全关联数据库)为进入和外出包处理维持一十活动的SA(安全关联)列表外出SA用来保障外出包的安全,进入SA用来处理带有IPSec头的进入包。

(4)IKE:

一般说来,Internet密钥交换(IKE)是一个用户级的处理,除了在嵌入式操作系统以外。

典型情况下,对于运行嵌入式操作系统的路由器来说,用户空间和内核空间没有什么区别IKE负责建立安全通信的节点之间的SA。

(5)策略和管理:

这些是对策略和SA进行管理的应用。

3.2系统解决方案

本文中的IPSec实现是以模块的形式实现的,在配置IPSecVPN之前首先需要加载IPSec内核模块。

当完成IPSec模块的加载后,接着进行IPSec系统的初始化,然后再根据网络的实际需要制定安全策略,系统开始自动协商安全关联,从而配置有IPSec的主机或其他设备间可以进行安全通信。

IPSec系统初始化主要是向内核登记几个proc文件(proc文件系统是一种在用户态检测内核状态的机制,不仅可以获得内核状态而且可以修改),以便于向内核空间查询安全联盟和虚接口的状况等。

初始化主要包括以下几个部分:

安全策略数据库和安全关联数据库初始化,虚接口注册,加密算法和认证算法的初始化等。

添加IPSec安全策略一般由管理员完成,策略主要包括地址、目的地址、安全协议等参数。

由于SA具有方向性,因此对于通信的设备之间需要建立进出两个方向的SA。

IPSec系统在发送数据包和接收数据包的处理上是不同的,以下两小节分别介绍数据包发送流程和数据包接收流程。

3.2.1数据包发送流程

应用层发送的数据,经过TCP/IP处理后加上TCP头和IP头,然后经过IP层的发送队列,发送到IPSec虚接口,对数据包的安全策略和安全关联的查询,判断是否需要进行安全处理,如果需要则转发给AH(认证报头)/ESP(封装安全载荷)处理模块进行认证和加密,然后发送到IP发送队列,如果不需要则直接发送到IP发送队列。

3.2.2数据包接收流程

数据包接收处理流程如下图所示。

物理层网络接口接收到的数据,经过链路层处理后去掉以太网帧头,然后经过P协议栈处理完后,判断出下一个协议头是AH/ESP还是TCP(传输控制协议)/UDP(用户数据包协议),如果是AH/ESP,则由AH/ES模块进行加密和认证处理。

然后发送到虚接口,再由虚接口发送给IP层的接收队列,如果是TCP/UDP协议头,则直接发送给TCP/UDP协议栈处理,最后发送给应用层接收数据。

3.3环境配置说明

Linux下的IPSecVPN实验的网络拓扑如图:

具体配置说明如下:

主机名

网卡eth0

网卡eth1

用途

ServerA

172.20.3.X

172.22.3.X

实验台A,网关

ServerB

172.21.3.Y

172.22.3.Y

实验台B,网关

ClientA

172.20.1.X

A客户机

ClientB

172.21.1.Y

B客户机

四、实验方案设计及实现

4.1实验方案设计说明

4.1.1方案简述

该文讨论的IPSec实现在网关上,实现后系统作为安全周关运行。

在此,着重IPSec实现部分内容的讨论采用Linux作为网关的操作系统平台。

在设计方案中,利用开放源码的Linux操作系统,对其内核主要是TCP/IP协议栈部分,进行部分重构和安全扩充,使其支持基本的IPSec协议,对协议中要求的一些计算量较大的部分加密解密处理部分交给高速DSP处理器实现,以提高整个网关的性能,同时,对于密钥交换部分,将采用IKE手工配置两种方式。

4.2IPSec模块

IPSec模块的主要功能是对进出VS的数据包提供安全服务.可细化为以下几个方面:

(1)查询安全策略数据库:

通过配置每十VS上的SPD,可对不同流量采取不同的安全措施。

所以VS在每次收到一个外出/进人数据包时,都必须要查询系统的SPD数据库,然后根据查询结果采取相应的处理措施。

(2)IKE模块交换信息:

IPSec模块与IKE模块关系紧密。

IKE模块的主要功能是为IPSec模块协商用于保护通信流量的SAIPSec模块可据SPD的查询结果主动向IKE模块提出建立SA的请求,当IKE完成协商后将协商好的SA传递给IPSec模块;或者IKE模块接受来自其他VS的建立SA的请求并将协商好的SA传递给IPSec模块。

(3)管理SAD和SPD:

所谓管理SAD、SPD主要是指SAD、SPD数据库的初始化。

建立和维护SA与SPD条目之间的对应关系,及检测SA是否仍然有效。

(4)实现IP安全协议AH、ESP:

依照AH、ESP相关RFC文档实现AH、ESP协议,对需要进行IPSec处理的lP包,根据SA实现AH、ESP头的构造处理。

(5)管理密码函数库:

提供的可选加密算法数量比较多而无法全部写入DSP板时,可能需要将一些不太常用的加密实现写在硬盘上.在系统初时存入主机内存.当需要时再由主机内存调入DSP内存执行。

(6)DSP硬件交换信息:

IPSec模块直接负责与DSP硬件的交互。

这包括IPSec通知DSP加密/解密数据及从DSP接收加密/解密的数据。

(7)资源保留模块:

是对系统资源的直接管理,它保留特定的系统资源为VS专用,而不让操作系统进行动态管理。

如固定内存区域保留给DSP以及多任务调度等处理,在系统中以模块形式加载。

4.2.1功能模块之间的关系

安全网关的总体框架及各功能模块之间的关系:

(1)安全策略库存放了由用户或系统管理员所制定的策略,策略将决定通信的双方是否采用IPSec处理,以及决定采用何种IPSec协议、模式、算法和嵌套需求。

    

(2)安全关联库由一系列安全关联项组成。

安全关联是两个通信实体经过协商建立起来的一种协定。

它们决定了用来保护数据包安全所需的各种参数:

序号计数器;抗重放窗口;AH验证算法及其密钥:

ESP加密、认证算法、密钥;安全关联的生存期:

IPSec协议模式。

    

(3)算法库存放了多种可选的认证和加密算法,这些算法包括IPSec本身所支持的通用算法和经国家主管部门批准的专用密码算法。

在处理时可以通过安全关联中的算法项来指明所需要使用的算法。

    

(4)面向应用的接口提供了管理安全策略库,以及配置网关,处理日志、统计、审计信息的接口。

用户或系统管理员可通过配置服务器配置安全关联数据库(SAD)和安全策略库(SPD),还可以进行手工注入安全关联或者启动IKE动态协商安全关联。

以及对日志、统计、配置、审计信息的提取和处理。

4.2.2IP报文的接收、转发和发送处理

IPSec安全网关对IP报文的接收、转发和发送处理的整个过程:

当安全网关的网卡接收到数据报时,通过中断触发内核的中断处理程序,将网卡接收的数据报传送到内核空间,然后再通过IP层,预处理程序将数据报转换为IP包。

此时,将利用内核的Netfilter机制提供的HOOK点PRE_ROUTING,将IP包传送到IPSec进入策略处理模块。

该模块将决定哪些包可以进入安全网关,哪些包需要丢弃。

对于允许进入网关的IP包,将送到路由处理模块。

路由处理根据IP头决定IP包是发送到本机还是继续转发。

对于发送到本机的IP包,首先经过内核对IP包的处理,如:

分片重组、选项处理等等。

然后,利用HOOK点LOCAL_IN,将重组的IP包传送到IPSec进入处理模块。

IPSec进入处理模块将对IPSec包和非IPSec包进行区分,对于发往本机的非IPSec包将直接传送到传输层处理模块;对于IPSec包将进行认证或解密等IPSec处理,并剥去IPSec头。

处理完后,将重新组装成IP包发回到IP层预处理模块中。

这样该IP包将重新通过路由来决定发往何处。

对于转发的IP包,首先进行转发处理,如:

决定下一跳、减少TTL,对某些特殊情况发送ICMP包。

然后,利用HOOK点IP_FORWARD,将IP包传送到外出IPSec外出处理模块。

IPSec处理将根据策略区分IPSec包、非IPSec包以及包发往何处。

对于IPSec包将丢弃。

对于发往内部网的非IPSec包,直接将包传送给发送处理模块,发往内部网。

对于发往外部网的IP包,将根据策略进行认证或加密等IPSec处理,最后将处理过的IP包传送到发送处理模块。

对于从安全网关传输层发送的报文,首先进行本地的IP包处理,生成IP包。

然后对IP包进行路由,决定IP包的出口。

路由之后将利用HOOK点LOCAL_OUTPUT,将IP包传送到IPSec外出处理模块。

IPSec外出处理将根据策略决定哪些包需要进行IPSec处理。

对于不需要处理的IP包,直接传送到发送处理模块。

对于需要进行IPSec处理的IP包,将根据策略进行认证或加密等IPSec处理,然后将IPSec包重新发回到路由处理模块,再决定IPSec包将发往何处。

当再次经过HOOK点时,IPSec外出处理将通过策略将处理过的IP包直接传送到发送处理模块。

发送处理模块将进行分片等处理,最后将包发送到网卡。

4.3实验步骤/实现过程说明

4.3.1实验原理

IPSec是一种加密的标准。

IPSec通过使用基于密码学的保护服务、安全协议和动态密钥管理。

OpenSwan是Linux下IPSec的最佳实现方式,其功能强大,最大程度地保证了数据传输中的安全性、完整性问题。

OpenSwan支持2.0、2.2、2.4以及2.6内核,可以运行在不同的系统平台下,包括X86、X86_64、IA64、MIPS以及ARM。

OpenSwan是开源项目Frees/WAN停止开发后的后继分支项目,由三个主要组件构成:

配置工具(IPSec命令脚本);Key管理工具(Pluto);内核组件(KLIPS/26sec)。

4.3.2实验步骤

一、环境配置

根据实验环境配置客户端和

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1