Ipsec嵌套策略匹配校验方法

文档序号:7879156阅读:122来源:国知局
专利名称:Ipsec嵌套策略匹配校验方法
技术领域
本发明属于信息技术领域中的信息安全技术,涉及IPSEC(IP Security)系统,具体的说,涉及入栈数据包采用多重安全保护,这些安全保护与安全策略进行匹配校验的方法。
背景技术
随着技术的进步和成本的下降,Internet日益流行。从90年代至今,这个网络不断扩张。许多电信公司提供高速线路给客户接入Internet,而当地的Internet服务供应商(ISP)提供廉价的本地接入服务,吸引越来越多的用户上网。今天,互联网承载着各种各样的通信,用户只需要缴纳本地入网的费用,就可以访问全世界的资源。人们已经接受使用电子商务进行交易的方式,尝试进行一些网上的交易活动;企业用户也越来越多的使用Internet来传输一些重要信息;政府也开始实施一些网上办公流程。随着安全保密意识的加强,人们越来越关注互联网通信的信息安全。
IP协议是Internet的主要承载协议,由于IP协议的开放性,IP包本身并不提供任何安全特性。很容易便可伪造出IP包的地址、修改其内容、重播以前的数据包以及在传输途中拦截并查看数据包的内容。因此,我们不能保证我们接收到的数据包来自我们期望的发送方,不能保证数据包包含的是发送方提供的原始数据,也无法知道该数据包的内容是否被偷看过。
对IP数据包的安全而言,IPSEC是一个强健的、可扩展的机制。IPSEC提供了充分的安全保护——数据机密性、数据完整性、数据源身份验证、抗流量分析以及抗重播保护。通过在IP层应用IPSEC,任何一个上层应用均可以利用IPSEC提供的保护,而不必要求各个应用各自提供。由于IPSEC保护的是IP数据包本身,因此,IPSEC可以提供多重的保护,连续或者递归的IPSEC应用。
IPSEC需要区分输入的数据包和输出的数据包。当IPSEC向外部发送一个数据包的时候,它首先检查本地的安全策略,也就是查看IPSEC策略数据库SPD,由SPD决定是否允许这个数据包从本地发送出去。一般来说,对于一个数据包,其安全处理策略有三种直接通过(BYPASS)、丢弃(DROP)和应用IPSEC保护(IPSEC)。如果需要进行IPSEC的保护,策略还需要规定如何保护这个数据包。如果这个数据包被要求执行IPSEC保护,通常,该安全策略会包含一个或者多个安全关联SA,这些安全关联SA详细描述了保护的细节。具体说来,SA描述了使用什么安全协议(AH(认证头)或者ESP(安全隧道封装))保护这个数据包,该协议使用了什么密码算法,以及密码算法的密钥等。协议根据这些参数,对整个IP数据包进行保护,然后发送出去。根据需要,一个数据包可以执行多重的保护,增强其安全性。
对于接收到的IPSEC数据包,首先,利用IP数据包提供的参数,从安全关联数据库SADB中查找到对应的安全关联SA,利用SA中的参数,解开IP数据包的安全封装。在进行解封装的时候可能需要验证数据包的完整性等,防止欺骗和篡改等行为的发生。在还原得到原始的数据包后,协议还需要验证当前对这个数据包提供的保护是否是安全策略期望的保护。如果验证不通过,则证明正在受到攻击或者欺骗,需要丢弃该数据包,并且记录该审计事件。如果验证通过,则向上层协议发送该数据包或者根据需要转发该数据包。
对于一个进行移动办公的用户来说,为了保护在公共网络上传输的公司秘密,两个地点之间的数据传输需要加上一个安全隧道,防止公共网络上可能存在的威胁。公司内部通常分成多个部门,各个部门之间所需要的信息保护的等级是不一致的,有些内部数据,还需要防止公司内部的员工的窃听和攻击。这还需要与关键部门之间的通信建立一个内部隧道。如果要求与多个部门建立内部通道,这样,安全策略之间的关系会变得比较复杂。例如,外部主机与公司的安全网关之间通信的安全策略是PA,与部门D服务器之间安全策略为PB,与部门E服务器间的安全策略PC。与部门D之间的通信安全策略可以描述为PB->PA,与部门E之间的通信安全策略可以描述为PC->PA。如果部门内部还有细分,而且对防护还有不同的要求,就需要更加多重的安全策略。外部策略与内部策略是一对多的关系,这符合实际的组网结构,也符合需要安全应用的企业的管理需求。
由于IPSEC的输入输出流程涉及相当多的操作,并且加解密等操作都是相当耗费时间的。因此,对于一个应用了IPSEC的系统来说,IPSEC通信很可能成为系统性能的瓶颈。在不违背安全原则的情况下,尽可能减少和简化操作,提高IPSEC的处理效率,将是IPSEC系统设计和实现的一个重要内容。
在进行安全策略查找的时候,需要使用匹配许多的内容,通常包括源IP地址、目的IP地址、源端口号、目的端口号、上层协议等。每个被处理的数据包都需要进行一次或者多次的安全策略查找。在一个大网中,当安全策略比较多的时候,对安全策略的查找将对系统的性能产生比较大的影响。
目前,支持这种多重隧道嵌套的产品只有少数几家。从公开的资料看,其基本的处理办法是,每个数据包都需要进行多次的安全策略查找。

发明内容
本发明提出了一种多重隧道嵌套的情况下,高效实现安全策略匹配的方法,对于任意多重隧道嵌套,查找安全策略数据库,完成安全策略的匹配校验。
本发明所述的安全策略匹配校验方法,步骤如下一、对于存在嵌套关系的安全策略,根据多对一的关系,从内层向外层链接起来;二、对于接收到的数据包,在进行剥离IPSEC封装的时候,记录使用的安全关联,并把这些安全关联形成双向链表或者数组,按照剥离的先后顺序关联起来;三、剥离了所有应该剥离的IPSEC封装后,根据数据包的内容,进行策略搜索,查找得到最内层的安全策略PR1,并且记录下最后一个解封装所使用的安全关联SA1,用SAi指向SA1,用PRi指向PR1(SAi为当前的安全关联指向,PRi为当前安全策略指向);四、每个安全策略对应一个安全关联,当前SAi对应的安全策略为PPi,检查PPi与PRi是否相等,如果相等,则该策略匹配,如果不等,表明安全策略校验出错,跳转到步骤七;五、查看SA链表或者数组是否已经处理完毕,如果是,则跳转到步骤六;否则,根据形成的双向链表或者数组,SAi指向回退,SAi指向外一层IPSEC处理使用的SA,安全策略PRi指向外一层的IPSEC安全策略,跳转到步骤四;六、所有的安全策略已经验证通过,策略校验完成;七、策略校验发现不匹配,安全校验返回失败。
对于第一个步骤,需要在进行安全策略配置的时候,定义出对应的内层和外层关系,可以使用指针或者其他的方式描述这种指向关系。
对于第二个步骤,简单的处理办法是使用一个双向链表进行描述。当使用一个安全关联对数据包解封装正确后,把这个安全关联添加到双向链表的后面。当所有的安全关联处理完毕,整个安全关联链表就建立完成。
对于第四个步骤,匹配校验准则为通过数据包内容搜索得到的策略,如果与安全关联指向的策略相同,表明数据包应用的IPSEC保护与安全策略规定一致,策略校验通过,否则,安全策略校验出错。对于搜索得到的安全策略,它指向的外层策略也看作是通过外层数据包搜索得到的安全策略,这在逻辑上是合理的。
本发明综合考虑多种应用情况,在不降低安全性的前提下,解决了IPSEC多重隧道嵌套应用的策略匹配校验问题,对于多重嵌套的情况,只需要查找一次安全策略数据库,然后,利用策略之间的关联关系,完成所有策略的匹配工作,提高安全策略校验的效率,提高了系统的性能。


图1是本发明多重隧道安全策略校验方法流程图。
图2是本发明多重安全隧道嵌套实施例示意图。
具体实施例方式
以下结合实施例具体说明本发明的IPSEC嵌套策略匹配校验方法。首先定义安全关联SA和安全策略SP的相关的数据结构安全关联SA包括以下字段目的IP地址(dest_ipaddr)、安全协议(proto)、安全参数索引(spi)、密码算法等参数(crypto)、归属安全策略(sp)。
安全策略SP包括以下字段源IP地址(source_ipaddr)、目的IP地址(dest_ipaddr)、隧道源IP地址(tunnel_source_ipaddr)、隧道目的IP地址(tunnel_dest_ipaddr)、上层协议(proto)、对应的安全关联(sa)、外层安全策略(out_sp)。
使用一个安全关联数组,存放对一个数据包操作的SA,这个数组为SAG[]。
N表示已经记录的SA的个数。SP表示从策略库搜索得到的安全策略。
如图1所示的流程,可以按如下步骤实现1)当安全策略不等于NULL(即不为空),且N不等于0时,执行步骤2),否则执行步骤3);2)如果数据包A[N-1]的安全策略不等于SP,则表示安全策略校验发现某个安全策略不匹配,安全策略校验失败,否则,重新设置参数,安全策略为当前安全策略指向的下一个策略,且安全关联的个数减1;3)如果安全策略不等于NULL,或N不等于0时,则表示安全策略校验发现某个安全策略不匹配,安全策略校验失败,否则,表示所有的安全策略校验通过,安全校验成功。
以附图2所示的多重安全隧道为例,详细说明主机C与部门的内部服务器D之间通信,使用二重ESP的IPSEC保护,在数据包到达主机C后,执行安全策略校验的完整过程。
主机C穿透外部网络和路由器A,到达路由器B的安全隧道,使用ESP安全协议进行保护;主机C穿透外部网络,到达路由器A的安全隧道,使用ESP安全协议进行保护。定义主机C的IP地址是192.168.1.1;安全路由器A的IP地址是192.168.2.1;安全路由器B的IP地址是192.168.3.1;部门内部服务器D的IP地址是192.168.4.1。内层是从192.168.1.1到192.168.3.1的ESP隧道,使用的安全参数索引(用于查找安全关联)是100;外层是从192.168.1.1到192.168.2.1的ESP隧道,使用的安全参数索引是200。
在主机C上,主机C与服务器D通信的安全策略有两条,这两条安全策略的含义是从外部访问安全路由器B后的主机使用Sain进行保护;从外部访问安全路由器A后的机器,使用Saout进行保护。这样,从主机C访问服务器D,就需要执行两重保护。
内层策略Spin中,source_ipaddr=192.168.1.1,dest_ipaddr=192.168.4.1,tunnel_source_ipaddr=192.168.1.1,tunnel_dest_ipaddr=192.168.3.1,proto=any(任意协议),SA=Sain,Out_sp=Spout。
外层策略Spout中,source_ipaddr=192.168.1.1,dest_ipaddr=192.168.3.1,tunnel_source_ipaddr=192.168.1.1,tunnel_dest_ipaddr=192.168.2.1,proto=any(任意协议),SA=Saout,Out_sp=NULL(没有更外层的安全策略)。
对应有两个安全关联内层SAdest_ipaddr=192.168.1.1,spi=100,proto=esp,crypto=aes+md5,sp=Spin。
外层SAdest_ipaddr=192.168.1.1,spi=200,proto=esp,crypto=des+md5,sp=Spout。
当主机C接收到一个从服务器D发送过来的数据包,最外层的IP封装是源IP是192.168.2.1、目的IP是192.168.1.1,上层协议是ESP,查看ESP头部的参数,得到安全参数索引为200,通过192.168.1.1、esp、200这三个参数,可以查找得到Saout,使用这个SA解开IPSEC封装,可以得到内层的IP包。记录SAG
=Saout,并且记录已经使用的SA的个数N=1。这时候,内层的IP包是源IP是192.168.3.1、目的IP是192.168.1.1,上层协议是ESP,再次查看ESP头部的参数,得到安全参数索引100,通过192.168.1.1、ESP、100这三个参数,查找得到Sain,使用这个SA解开IPSEC封装,可以得到内层的IP包。记录SAG[1]=Sain,并且记录已经使用的SA的个数N=2。再次查看解开IPSEC封装,源IP地址是192.168.4.1、目的IP地址是192.168.1.1,上层协议不是安全协议(AH或者ESP),需要对这个数据包进行安全策略校验,查看提供的保护,是否满足安全策略的要求。
首先,使用最后得到的IP数据包,查找安全策略库中的策略,查找的参数是源IP地址192.168.4.1、目的IP地址192.168.1.1、上层协议假设为TCP(因为策略是ANY,所以并不影响策略的查找),查找得到策略为Spin。然后进入循环。根据记录的SA,SAG[N-1]=SAG[1]=Sain,Sain->sp=Spin,发现查找得到的策略与SA对应的策略一致。根据当前搜索得到的SP,查找外层策略Sp=Spin->out_sp=Spout。N=N-1=1。SAG[N-1]=SAG
=Saout,Saout->sp=Spout,比较Sp与SA对应的策略,发现一致。调整参数,N=N-1=0,根据当前搜索得到的SP,查找外层策略Sp=Spout->out_sp=NULL。这个条件满足循环结束的条件。
循环结束后,发现Sp=NULL,并且N=0,策略校验成功。
以上是策略校验成功的例子。下面再举例说明安全策略校验失败的例子。发生这种事件,系统可能正在受到攻击。假设公司内有一个计算机E,它位于安全路由器A、B之间,截断了主机C与服务器D之间的通信,并且冒充服务器D,欺骗主机C,企图获得机密资料。
当主机C接收到一个从服务器D发送过来的数据包,最外层的IP封装是源IP是192.168.2.1、目的IP是192.168.1.1,上层协议是ESP,查看ESP头部的参数,得到安全参数索引为200,通过192.168.1.1、esp、200这三个参赛,可以查找得到Saout,使用这个SA解开IPSEC封装,可以得到内层的IP包。记录SAG
=Saout,并且记录已经使用的SA的个数N=1。查看解开IPSEC封装,源IP地址是192.168.4.1、目的IP地址是192.168.1.1,上层协议不是安全协议(AH或者ESP),需要对这个数据包进行安全策略校验,查看提供的保护,是否满足安全策略的要求。
首先,使用最后得到的IP数据包,查找安全策略库中的策略,查找的参数是源IP地址192.168.4.1、目的IP地址192.168.1.1、上层协议假设为TCP(因为策略是ANY,所以并不影响策略的查找),查找得到策略为Spin。然后进入循环。根据记录的SA,SAG[N-1]=SAG
=Saout,Saout->sp=Spout,发现查找得到的策略与SA对应的策略不一致。策略校验失败。
权利要求
1.一种IPSEC嵌套策略匹配校验方法,其特征在于,所述方法包括以下步骤1)对于存在嵌套关系的安全策略,根据多对一的关系,从内层向外层链接起来;2)对于接收到的数据包,在进行剥离IPSEC封装的时候,记录使用的安全关联,并把这些安全关联形成双向链表或者数组,按照剥离的先后顺序关联起来;3)剥离了所有应该剥离的IPSEC封装后,根据数据包的内容,进行策略搜索,查找得到最内层的安全策略PR1,并且记录下最后一个解封装所使用的安全关联SA1,用SAi指向SA1,用PRi指向PR1,SAi为当前的安全关联指向,PRi为当前安全策略指向;4)每个安全策略对应一个安全关联,当前SAi对应的安全策略为PPi,检查PPi与PRi是否相等,如果相等,则该策略匹配,如果不等,表明安全策略校验出错,跳转到步骤7);5)查看SA链表或者数组是否已经处理完毕,如果是,则跳转到步骤6);否则,根据形成的双向链表或者数组,SAi指向回退,SAi指向外一层IPSEC处理使用的SA,安全策略PRi指向外一层的IPSEC安全策略,跳转到步骤4);6)所有的安全策略已经验证通过,策略校验完成;7)策略校验发现不匹配,安全校验返回失败。
2.根据权利要求1所述的IPSEC嵌套策略匹配校验方法,其特征在于,所述步骤1)中当需要在进行安全策略配置的时候,定义出对应的内层和外层关系,可以使用指针或者其他的方式描述这种指向关系。
3.根据权利要求1或2所述的IPSEC嵌套策略匹配校验方法,其特征在于,所述步骤2)中双向链表的形成可以是当使用一个安全关联对数据包解封装正确后,把这个安全关联添加到双向链表的后面,当所有的安全关联处理完毕,整个安全关联链表就建立完成。
4.根据权利要求1或2所述的IPSEC嵌套策略匹配校验方法,其特征在于,所述步骤4)中匹配校验准则为通过数据包内容搜索得到的策略,如果与安全关联指向的策略相同,表明数据包应用的IPSEC保护与安全策略规定一致,策略校验通过,否则,安全策略校验出错。
5.根据权利要求4所述的IPSEC嵌套策略匹配校验方法,其特征在于,对于所述搜索得到的安全策略,它指向的外层策略也看作是通过外层数据包搜索得到的安全策略进行处理。
全文摘要
本发明公开了一种IPSEC嵌套策略匹配校验方法,对于多重隧道嵌套的情况,将使用的安全关联以双向链表或者数组的形式按照剥离的先后顺序关联起来,根据数据包的内容,进行策略搜索,每个安全策略对应一个安全关联,进行策略匹配校验。本发明解决了IPSEC多重隧道嵌套应用的策略匹配校验问题,对于多重嵌套的情况,只需要查找一次安全策略数据库,然后,利用策略之间的关联关系,完成所有策略的匹配工作,提高安全策略校验的效率,提高了系统的性能。
文档编号H04L12/56GK1529485SQ200310101968
公开日2004年9月15日 申请日期2003年10月20日 优先权日2003年10月20日
发明者陈海彬, 陈开渠, 丁勇, 赵洁, 李亚晖, 彭志威 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1