一种把ipsec嵌入到ip协议栈的方法

文档序号:7550693阅读:269来源:国知局
专利名称:一种把ipsec嵌入到ip协议栈的方法
技术领域
本发明属于信息技术领域中的信息安全技术,涉及一种IPSEC实现方法,尤其涉及把IPSEC嵌入到IP协议栈的方法。
背景技术
下文中,IP指Internet的通信协议Internet Protocol,IPSEC指为IP提供安全性保护的协议IP Security。
一、IPSEC的基本功能IP协议本身是不安全的,IP包在传输过程中可能遭到窃听、篡改、重发等攻击。为了克服这些弱点,IETF(Internet标准组织)设计了IPSEC协议族,给IPv4和IPv6报文提供安全性保护,包括数据源认证、无连接数据完整性、抗重播、数据机密性和有限业务流机密性等等。
IPSec为IP层提供安全服务,它能让系统选择所需的安全协议,决定服务所用的算法和密钥。IPSec用来保护一条或多条主机之间、安全网关之间、安全网关与主机之间的路径(“安全网关”指执行IPSec协议的中间系统,例如路由器或实现了IPSec的防火墙等等)。
IPSec能提供的安全服务包括无连接的完整性、数据源认证、抗重播(anti-replay)保护、机密性和有限数据流机密性。因为这些服务都是在IP层提供的,所以任何高层协议都能使用它们,例如TCP、UDP、ICMP、BGP等等。
二、IPSec的工作原理IPSec使用两个协议来提供传输安全认证头协议(AH)、封装安全载荷协议(ESP)。这两个协议在各自的标准文档中都有详细的描述。
√IP认证头(AH)提供无连接的完整性验证、数据源认证、选择性抗重播服务。
√封装安全载荷(ESP)提供加密、有限数据流加密,它也提供无连接的完整性验证、数据源认证、抗重播服务。
√基于密钥发布的数据流管理,AH和ESP均可作为访问控制的载体。
AH协议或者ESP协议可以独立使用或者组合使用,以提供IPv4和IPv6环境下所需的安全服务集。它们都支持两种模式传输模式和隧道模式。在传输模式下,为高层协议提供安全保护;在隧道模式下,用于保护在隧道中传输IP包。两种模式的区别参见附图1。
IPSec允许用户(或系统管理员)控制安全服务的粒度(granularity)。例如,用户可以在两个安全网关之间使用单一加密隧道传输所有信息,也可以为通过网关的主机之间的每一个TCP连接创建一个独立的加密隧道。IPSec管理需要体现下列特性
√使用哪些安全服务以及在哪种组合中被使用;√指定安全保护应该使用的粒度;√安全保护使用的加密和认证算法。
因为这些安全服务使用共享密钥,IPSec依赖一组独立的机制来发布这些密钥。(这些密钥用作认证、完整性验证及加密服务。)IPSec支持手动、自动两种密钥分配方式。它为自动密钥管理定义了一个特殊的基于公共密钥的方法(IKE-Internet KeyExchange),但也可能用到其它自动密钥分配技术。例如,Kerberos系统(基于KDC)和其它的公共密钥系统(如SKIP)。
三、IPSec实现方式IPSec可以实现在主机上或路由器、防火墙(创建安全网关)的连接处。下面提供几个通常的实现方式√IPSec完全融合在IP层中实现。这需要获取IP源码。这种实现方法适用于主机和网关。
√“Bump-in-the-stack”(BITS)实现。IPSec实现于原来IP协议栈的下端,处于IP层和网络设备驱动层之间。在这种情况下并不需要获取IP协议栈的源码,所以该实现方法适于遗留系统,多用于主机。
√采用外接加密处理设备是军方、金融系统常用的网络安全系统设计方案。它有时被称为“Bump-in-the-wire”(BITW)实现。这种实现方式用于主机或网关(或两者兼有)。
实际中,往往不是完全按照这三种方式来实现,而是部分采取,或是混合使用多种方式。
四、现有嵌入方法的问题IPSEC嵌入方法必须支持下列功能√日常的封装、解封装。
包括对输出数据包做IPSEC封装,封装后如果超过网络接口的最大传输长度,则进行分段;对输入数据包做IPSEC解封装,如果数据包是分段,解封装前应进行重组,如果解封装后仍是分段,则在投递给上层协议前应先重组。
√对输入数据包做安全策略校验。
即比较安全策略数据库中为该数据包指定的安全策略和实际对该数据包实施的IPSEC保护是否一致。不仅对发往本机的已实施IPSEC保护的数据包需要做校验,发往本机的未实施IPSEC保护的数据包、从本机路过的转发数据包也需要做校验,以判断是否允许它们经过。
√支持高安全粒度。
即如前所述的为通过网关的主机之间的每一个TCP连接创建一个独立的加密隧道。这就需要在输入解封装后,做安全策略校验时,读取出数据包中的TCP端口,如果解封装后的新数据包是分段,应先进行重组。还需要在输出封装前,查询安全策略时,读取出数据包中的TCP端口,如果数据包是分段,也应进行重组。
√支持嵌套安全策略。
即对数据包实施多个IPSEC保护。数据包输出时,应能重复进行IPSEC封装;数据包输入时,应能重复进行IPSEC解封装。
由于IP协议栈本身就带有输入、转发、输出流程,中间还进行了重组、分段等处理,本身是一个很复杂的流程,所以把IPSEC嵌入到IP协议栈也是很复杂的问题。嵌入点的选择必须能够实现IPSEC的基本功能,而且不影响IP协议栈的正常流程。
这种复杂性使得有的IPSEC协议栈在设计时采用简单的嵌入方式,从而牺牲了一部分功能。比如FREESWAN协议栈采用了简单的BITS嵌入方式,采用把IPSEC输入嵌入在IP协议栈的上方、把IPSEC输出嵌入在IP协议栈的下方的简单方式,结果造成了一些缺陷,如√对转发的IP包无法进行安全策略校验。
√如果目的地是本机的IP包未应用IPSEC,则无法进行安全策略校验。
√无法处理IPSEC解封装后是IP分段的情况。
√不支持上层协议端口作为安全策略选择符,也就不能支持高安全粒度。
KAME协议栈采用完全融合在IP层的方式,虽然能实现IPSEC的功能,但是它有如下缺陷√如果目的地是本机的IP包,未应用IPSEC,则无法进行安全策略校验。
√不能使用上层协议端口作为安全策略选择符,也就不能支持高安全粒度。
KAME与IP协议栈一起设计的,其IPSEC处理和IP处理流程结合非常紧密,散布于IP协议栈的各个部分,因此难以进行维护。而通常情况下,设计人员面临的IP协议栈往往是现成的、既定的,无法对IP协议栈做这么大的修改。
本专利提出一种IPSEC嵌入到IP协议栈的方法,它不仅能解决上述复杂问题,并且只需要对IP协议栈做简单的改动,非常易于实现。

发明内容
本发明克服了现有的IPSEC实现技术中的嵌入方式导致无法实现IPSEC的完整功能和难以实现的问题,提出一种易于实现的IPSEC嵌入方法,可以实现IPSEC的完整功能。
本发明所述把IPSEC嵌入到IP协议栈的方法,包括以下处理步骤第一步,在IP协议栈的IP输入处理过程中IP基本处理已经完成之后插入IPSec输入处理流程;所述IPSec输入处理流程的插入点,位于IP报文基本处理过程完成之后,在转发处理(对于目的地址不是本机的情况)之前或重组IP分段并调用TCP、UDP等上层协议输入处理(对于目的地址是本机的情况)之前。
第二步,在IP协议栈的IP输出处理过程中IP基本处理已经完成后,插入IPSec输出处理流程。
所述IPSec输出处理流程的插入点,位于IP报文组装完毕并完成路由选择之后,在分段和调用接口层发送数据包之前。
所述IPSec输入处理流程包括以下处理过程1)判断IP包是否组播数据包,若是,直接退出;2)进行IPSEC解封装;IPSEC解封装包括以下步骤a.若不是本机的IPSEC包,跳转到步骤3);b.若是分段IP包,重组IP包;c.将长度、ID、偏移三个字段转化成网络字节序;d.从IP包中获取安全参数索引,并查询安全参数数据库,得到相应的安全参数;e.使用安全参数进行IPSEC输入验证、解密和解封装;f.将长度、ID、偏移三个字段转化成本机字节序;g.跳转到步骤a。
3)若是分段IP包,重组IP包;4)进行安全策略校验;5)结束。
所述IPSec输出处理流程包括以下处理过程1)判断IP包是否组播数据包,若是,直接退出;2)从IP包获取安全策略选择符,查询安全策略数据库,得到安全策略;3)若安全策略为PASS,直接退出;若是DROP,直接丢弃IP包;若安全策略为IPSEC,转步骤4);4)执行IPSEC封装;IPSEC封装包括以下处理步骤a.将长度、偏移字段转化成网络字节序;b.取安全策略指定的安全参数;c.利用安全参数进行IPSEC封装、加密和认证;d.若有下一个嵌套安全策略,跳转到步骤b;e.将长度、偏移字段转化成主机字节序;5)结束。
采用本发明所述嵌入方法,与现有技术相比,克服了FreeSWAN和KAME的嵌入方式的弱点,它能够实现IPSEC的完整功能,包括前两种嵌入方式所不能做到的
√对转发的IP包进行安全策略校验。
√对本机的非IPSEC包进行安全策略校验。
√处理IPSEC解封装后是IP分段的情况。
√支持嵌套安全策略。
√支持高安全粒度。


图1是IPSEC工作原理示意图。
图2是本发明IPSEC输入处理流程图。
图3是本发明IPSEC输出处理流程图。
具体实施例方式
从附图1可以看出,IP包经过IPSEC封装后仍然是IP包,仍是作为IP包在网络上被IP处理流程所处理。所以,IPSEC处理是IP处理的一部分。要完成IPSEC的处理,必须在IP输出处理流程中嵌入IPSEC输出处理流程,在IP输入处理流程中嵌入IPSEC输入处理流程。嵌入后,IP输出处理流程会调用IPSEC输出处理流程,IP输入处理流程会调用IPSEC输入处理流程。因此,一个IPSEC嵌入方法包括四个方面√IPSEC输入的嵌入点;√IPSEC输入的处理流程;√IPSEC输出的嵌入点;√IPSEC输出的处理流程;下面介绍本发明IPSEC嵌入方法一、IPSEC输入的嵌入点IPSec输入处理嵌入在IP输入处理的较开头,即在IP已经完成√数据包长度和校验和(checksum)检查;√长度、ID、偏移三个字段转化成本机字节序;之后,在执行√IP选项处理;√判断是投给本机、或是需转发;√若需转发,调用ip_forward();√若投给本机,则重组IP分段,调用TCP、UDP等上层协议的输入处理函数。
之前,插入IPSec输入处理流程。
二、参考图2所示的IPSEC输入的处理流程第一步,判断IP包是否组播数据包,若是,直接退出。
第二步,进行IPSEC解封装。
本步骤又分为以下步骤
1若不是本机的IPSEC包,跳转到第三步。
2若是分段IP包,重组IP包。
3将长度、ID、偏移三个字段转化成网络字节序。
4从IP包中获取安全参数索引,并查询安全参数数据库,得到相应的安全参数。
5使用安全参数进行IPSEC输入验证、解密和解封装。
6将长度、ID、偏移三个字段转化成本机字节序7跳转到1。
第三步,若是分段IP包,重组IP包。
第四步,进行安全策略校验。
第五步,结束。
三、IPSEC输出的嵌入点IPSec输出处理嵌入在IP输出处理的较后面,即在IP已经完成√报头初始化;√选择路由;√设置源地址;之后,在√分段;√调用接口层发送数据包。
之前,插入IPSec输出处理流程。
四、参考图3所示的IPSEC输出的处理流程第一步,判断IP包是否组播数据包,若是,直接退出。
第二步,从IP包获取安全策略选择符,查询安全策略数据库,得到安全策略。
第三步,若安全策略为PASS,直接退出;若是DROP,直接丢弃IP包,。
第四步,否则,安全策略为IPSEC,则执行IPSEC输出封装。
1将长度、偏移字段转化成网络字节序。
2取安全策略指定的安全参数。
3利用安全参数进行IPSEC封装、加密和认证。
4若有下一个嵌套安全策略,跳转到2。
5将长度、偏移字段转化成主机字节序。
第五步,结束。
以下再通过几个具体实施例详细介绍本发明把IPSEC嵌入到IP协议栈的方法。
一、对本机非IPSEC包的策略校验假设现收到一个目的地是本机的非IPSEC包,IP输入流程对其进行一定处理后,调用IPSEC输入处理流程第一步,它不是组播数据包,所以继续处理。
第二步,IPSEC解封装,由于不是本机的IPSEC包,所以跳转到第三步。
第三步,若是分段,重组该IP包。
第四步,进行入站安全策略校验。第三步已重组了IP分段,因此这里可以包含端口作为安全策略选择符进行校验,能支持端口级的高安全粒度。
第五步,结束。
二、对本机IPSEC包的解封装和策略校验假设现收到一个目的地是本机的IPSEC包,IP输入流程对其进行一定处理后,调用IPSEC输入处理流程第一步,它不是组播数据包,所以继续处理。
第二步,IPSEC解封装1由于是本机的IPSEC包,所以继续第二步的其他步骤。
2若是分段IP包,重组IP包。
3将长度、ID、偏移三个字段转化成网络字节序。
4从IP包中获取安全参数索引,并查询安全参数数据库,得到相应的安全参数。
5使用安全参数进行IPSEC输入验证、解密和解封装。
6将长度、ID、偏移三个字段转化成本机字节序7跳转到1。
因为经过IPSEC验证和解封装,得到的已经是非IPSEC包,所以,跳转到第三步。
第三步,若是分段,重组该IP包。
第四步,进行入栈安全策略校验。
第五步,结束。
第二步的步骤2重组了IP分段,所以即使解封装前是IP分段,仍可以进行正确的IPSEC解封装。第三步也重组了IP分段,所以即使解封装后是IP分段,这里仍然可以包含端口作为安全策略选择符进行校验,所以能支持端口级的高安全粒度。
三、对转发IP包的策略校验假设现收到一个目的地是转发的IP包,IP输入流程对其进行一定处理后,调用IPSEC输入处理流程第一步,它不是组播数据包,所以继续处理。
第二步,IPSEC解封装,由于不是本机的IPSEC包,所以跳转到第三步。
第三步,若是分段,重组该IP包。
第四步,进行入站安全策略校验。第三步已重组了IP分段,所以这里可以包含端口作为安全策略选择符进行校验,所以可以支持端口级的高安全粒度。
第五步,结束。
四、对输出数据包的封装和分段假设现要输出一个数据包,IP输出流出对其进行一定处理后,调用IPSEC输出处理流出第一步,它不是组播包,所以继续其他步骤。
第二步,从IP包获取安全策略选择符,查询安全策略数据库。如果它是本机发出的数据包,则它尚未被分段,本步骤能获取包含端口在内的安全策略选择符。如果它是从其他网络接口上接收到的转发IP包,它肯定经过了IP输入和IPSEC输入的处理,在图3所示的IPSEC输出处理流程中的第三步,已经对它做了重组,所以也能获取包含端口在内的安全策略选择符。
第三步,因为要对其做IPSEC封装,所以查询到的安全策略应为IPSEC。
第四步,执行IPSEC输出封装;1将长度、偏移字段转化成网络字节序。
2取安全策略指定的安全参数。
3利用安全参数进行IPSEC封装、加密和认证。
4若有下一个嵌套安全策略,跳转到2。
5将长度、偏移字段转化成主机字节序。
第五步结束。
第二步说明无论是转发的IP包,或是本机往外发的IP包,都能够获取包含端口在内的安全策略选择符,所以可以支持端口级的高安全粒度。
IPSEC输出处理结束后,IP输出流出继续余下的处理,即√分段;√调用接口层发送数据包。
所以如果IPSEC封装后数据包长度超过网络接口的最大传输长度,在IP输出流程中将对其做分段。
五、支持高安全粒度例子二可看到,IPSEC输入解封装后对新数据包做了重组,所以可以获取包含端口在内的安全策略选择符,从而可支持高安全粒度。
例子四可看到,IPSEC输出封装也可以获取包含端口在内的安全策略选择符,也可以支持高安全粒度。
六、支持嵌套安全策略假设现要对一个输出IP包实施两层嵌套安全策略,IP输出流程对其进行一定处理后,调用IPSEC输出处理流程第一步,它不是组播包,所以继续其他步骤。
第二步,从IP包获取安全策略选择符,查询安全策略数据库。如果它是本机发出的数据包,尚未被分段,则本步骤能获取包含端口在内的安全策略选择符。如果它是从其他网络接口上接收到的,它肯定经过了IP输入和IPSEC输入的处理,在例子四的第三步,已经对它做了重组,所以也能获取包含端口在内的安全策略选择符。
第三步,因为是嵌套的安全策略,所以查询到的安全策略应为IPSEC。
第四步,执行IPSEC输出封装;1将长度、偏移字段转化成网络字节序。
2取安全策略指定的安全参数。
3利用安全参数进行IPSEC封装、加密和认证。
4因是嵌套安全策略的第一个策略,所以此安全策略应有下一个嵌套安全策略,跳转到2。
2取安全策略指定的安全参数。
3利用安全参数进行IPSEC封装、加密和认证。
4因是嵌套安全策略的第二个策略,所以此安全策略应没有下一个嵌套安全策略,继续下面的步骤。
5将长度、偏移字段转化成主机字节序。
第五步结束。
假设现收到一个经两层嵌套安全策略封装过的数据包,IP输入流程对其进行一定处理后,调用IPSEC输入处理流程第一步,它不是组播数据包,所以继续处理。
第二步,IPSEC解封装1它是本机的IPSEC包,所以继续第二步的其他步骤。
2若是分段IP包,重组IP包。
3将长度、ID、偏移三个字段转化成网络字节序。
4从IP包中获取安全参数索引,并查询安全参数数据库,得到相应的安全参数。
5使用安全参数进行IPSEC输入验证、解密和解封装。
6将长度、ID、偏移三个字段转化成本机字节序7跳转到1。
1因为此数据包经过嵌套安全策略的封装,所以经过一次解封装,得到的仍是IPSEC包,所以继续第二步的其他步骤。
2若是分段IP包,重组IP包。
3将长度、ID、偏移三个字段转化成网络字节序。
4从IP包中获取安全参数索引,并查询安全参数数据库,得到相应的安全参数。
5使用安全参数进行IPSEC输入验证、解密和解封装。
6将长度、ID、偏移三个字段转化成本机字节序7跳转到1。
1因为已经过两层安全策略的解封装,新数据包已经是非IPSEC数据包,所以,跳转到第三步。
第三步,若是分段,重组该IP包。
第四步,进行入站安全策略校验。
第五步,结束。
如果要实施多于两层的嵌套安全策略,其封装、解封装过程是类似的。所以,本发明IPSEC嵌入方式可以支持嵌套安全策略。
权利要求
1.一种把IPSEC嵌入到IP协议栈的方法,其特征在于,所述方法包括以下处理步骤第一步,在IP协议栈的IP输入处理过程中IP基本处理已经完成之后插入IPSec输入处理流程;第二步,在IP协议栈的IP输出处理过程中IP基本处理已经完成后,插入IPSec输出处理流程。
2.根据权利要求1所述的把IPSEC嵌入到IP协议栈的方法,其特征在于,所述IPSec输入处理流程的插入点,位于IP报文基本处理过程完成之后,对于目的地址不是本机的情况,在转发处理之前;对于目的地址是本机的情况,在重组IP分段并调用TCP、UDP等上层协议输入处理之前。
3.根据权利要求1所述的把IPSEC嵌入到IP协议栈的方法,其特征在于,所述IPSec输出处理流程的插入点,位于IP报文组装完毕并完成路由选择之后,在分段和调用接口层发送数据包之前。
4.根据权利要求1或2所述的把IPSEC嵌入到IP协议栈的方法,其特征在于,IPSec输入处理流程包括以下处理过程1)判断IP包是否组播数据包,若是,直接退出;2)进行IPSEC解封装;3)若是分段IP包,重组IP包;4)进行安全策略校验;5)结束。
5.根据权利要求4所述的把IPSEC嵌入到IP协议栈的方法,其特征在于,所述IPSEC解封装包括以下步骤a.若不是本机的IPSEC包,跳转到步骤3);b.若是分段IP包,重组IP包;c.将长度、ID、偏移三个字段转化成网络字节序;d.从IP包中获取安全参数索引,并查询安全参数数据库,得到相应的安全参数;e.使用安全参数进行IPSEC输入验证、解密和解封装;f.将长度、ID、偏移三个字段转化成本机字节序;g.跳转到步骤a。
6.根据权利要求1或3所述的把IPSEC嵌入到IP协议栈的方法,其特征在于,所述IPSec输出处理流程包括以下处理过程1)判断IP包是否组播数据包,若是,直接退出;2)从IP包获取安全策略选择符,查询安全策略数据库,得到安全策略;3)若安全策略为PASS,直接退出;若是DROP,直接丢弃IP包;若安全策略为IPSEC,转步骤4);4)执行IPSEC解封装;5)结束。
7.根据权利要求6所述的把IPSEC嵌入到IP协议栈的方法,其特征在于,所述IPSEC解封装包括以下处理步骤a.将长度、偏移字段转化成网络字节序;b.取安全策略指定的安全参数;c.利用安全参数进行IPSEC封装、加密和认证;d.若有下一个嵌套安全策略,跳转到步骤b;e.将长度、偏移字段转化成主机字节序。
全文摘要
本发明公开了一种把IPSEC嵌入到IP协议栈的方法,所述方法包括以下步骤第一步,在IP协议栈的IP输入处理过程中IP基本处理已经完成之后插入IPSec输入处理流程;第二步,在IP协议栈的IP输出处理过程中IP基本处理已经完成后,插入IPSec输出处理流程。采用本发明所述方法,与现有技术相比,克服了Free SWAN和KAME的嵌入方式的弱点,它能够实现IPSEC的完整功能,比如对转发的IP包进行安全策略校验;对本机的非IPSEC包进行安全策略校验;支持嵌套安全策略;支持高安全粒度;处理IPSEC解封装后是IP分段的情况等。
文档编号H04L29/06GK1545292SQ20031011360
公开日2004年11月10日 申请日期2003年11月13日 优先权日2003年11月13日
发明者陈开渠, 李卓明, 赵洁, 陈海彬, 李亚晖, 丁勇, 彭志威 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1