实现IPsec标准中不同安全终点的安全联盟嵌套方法

文档序号:7878786阅读:300来源:国知局
专利名称:实现IPsec标准中不同安全终点的安全联盟嵌套方法
技术领域
本发明涉及通信及信息安全领域,尤其涉及不同安全终点的IPsec(因特网协议安全)保护嵌套的解决方法。
背景技术
信息技术的快速发展带来了社会发展和生活方式的重大变革,计算机与通信技术已经日益渗入道越来越多的领域,成为最为主要的社会工具。与此同时,对于信息安全尤其是通信安全的保护,也成为日益受到关注的问题,在这样的情况下,各种安全标准也就应运而生。其中,IPsec就是一种IETF(Internet Engineering TaskForce,因特网工程任务组)组织提出的主要安全协议标准。该标准通过在IP(internet protocol,因特网协议)层对IP数据包进行加密和认证,实现访问控制、数据完整性、数据机密性、数据源认证、抗重播、有限数据流机密性等安全保护,从而在开放的INTERNET上实现安全通道,保护通过该通道的通信数据和通信双方交流的安全。事实上,IPsec正是由于具有相当多的优点,目前得到了越来越广泛的应用,例如在建立VPN(Virtual Private Network,虚拟专用网)、保护内部数据安全、移动用户保护内部网等情况下,都有着广泛的使用。在IPsec处理流程中,对于数据包的处理一般包含输出处理和输入处理两个流程。输出处理是指对一个数据包在SA(security association,安全联盟)起点使用IPsec封装的处理流程,而输入处理流程则是对一个经过IPsec处理的数据包在其SA的终点进行的IPsec解封装处理。
对于输出处理,其基本流程如下所述首先,系统接收到一个数据包,首先根据SP(security policy,安全策略)选择符(五元组源/目的IP地址、源/目的端口、上层协议)到SPD(security policydatabase,安全策略数据库)查询该数据包的SP。若SP表示为丢弃,则丢弃该包并做日志;若SP表示为绕过IPsec,则直接交给数据链路层处理;若SP为应用IPsec,则根据SP找到与该SP相对应的SA。使用该SA对输入的IP数据包进行IPsec封装处理。然后将经过IPsec封装处理的数据包交给数据链路层处理。而对于IPsec输入处理,其基本处理流程描述如下首先系统接收到一个数据包,首先判断该包是否是一个目的地为本地地IPsec处理过的包,若不是,则根据SP选择符找到对应该包的SP进行策略匹配,若不能通过策略匹配,则丢弃该包并做日志,若通过策略匹配,则交给传输层处理;若该包是一个目的地为本地的IPsec处理包,则根据该包的SAid(SA索引,三元组,包括spi、协议、目的地址)找到该包对应的SA。然后根据该SA进行IPsec解封装处理。最后再根据SP选择符找到对应的该包的SP和SA指向的SP进行策略匹配,若不能通过策略匹配,则对其该包并做日志,若通过匹配,则交给传输层处理。
然而,上述方法在很多应用环境中存在较大缺点,例如,当一个在应用环境外部的主机C需要和应用环境内部某一服务器B安全通信时,为了防止来源于应用环境外面的攻击者,需要和应用环境的网关RA,建立一个IPsec通道,同时为了防止应用环境的某些部门机密泄漏到应用环境其他部门,还必须在部门的网关RB,建立一个IPsec通道。即对应于起点相同而终点不同的IPsec通道嵌套的情形,特别若主机C和部门服务器RB间的IPsec处理为传输模式,对于主机C的输出处理将遇到如下麻烦进行完第一层IPsec处理后,若重新投入IP队列,由于传输模式不改变IP头,则对该该处理再查询得到的SP选择符仍然和第一次处理时相同,从而就循环处理而导致错误,同时重新投入IP队列需要排队等待下一次处理,效率将降低。而对于主机C的输入处理时,若处理完第一层IPsec后将其重新投入IP队列等待下一次处理,同样由于传输模式不处理IP头,在第二次IPsec解封装以后进行策略匹配时,由于SA指向的SP为第二次处理对应的SP,而根据SP选择符找到的SP仍然为第一次处理对应的SP,从而导致策略匹配失败而发生错误。而目前现有的IPsec实现方法并不支持这种情况,而实际上这种情况在实际应用中有着相当大的需求。

发明内容
本发明所要解决的技术问题是当IPsec标准应用于具有起点相同而终点不同的IPsec通道嵌套应用环境时,容易引起的因为策略匹配和SP查询失败而带来的错误,以期提供一种保证准确进行策略匹配和SP查询的IPsec实现中不同安全终点的安全联盟嵌套方法。
为实现上述目的,本发明提出一种实现Ipsec标准中不同安全终点的安全联盟嵌套方法,其特征在于,包括输入和输出两个过程对于输出处理流程在确认输入数据包的网络接口应用Ipsec标准,且不为组播数据包时,进行SP查询,在SP表示为应用Ipsec标准时继续进行SA查询,在SA不为空的情况下,按照该SA对该数据包进行IPsec封装处理,最后将数据包IP头的off、len转成本地字节序,释放安全策略数据库和安全联盟数据库的信号量,正确结束处理;对于输入处理流程在确认接收数据包的网络接口应用Ipsec标准,且不为组播数据包时,判断数据包是否是目的为本机的IPsec封装包,并根据不同的情况进行相应处理,如果是分段包则进行重组,如果不是分段包则进行匹配和解封装处理,最后将数据包IP头的off、len转成本地字节序,释放安全策略数据库和安全联盟数据库信号量,正确结束处理。
具体的说,输出处理流程进一步包括以下步骤(1)判断输入数据包的网络接口是否应用Ipsec标准,若不应用则释放SPD和SADB(security association database,安全联盟数据库)信号量,结束处理过程;若需要应用Ipsec标准,则继续;(2)判断该包是否为组播数据包,若是则释放SPD和SADB的信号量,结束处理过程;若不是则继续;(3)申请SPD信号量和SADB信号量,为SP和SA查询提供接口;(4)从数据包中找到该数据包的SP选择符spidx,使用该选择符在SPD中查询相应的SP,如查不到则将默认的值设为SP;(5)若该SP表示为绕过,则释放SPD和SADB的信号量,结束处理过程;若该SP表示为丢弃,则丢弃该包,释放SADB和SPD(安全策略数据库)信号量,返回ERROR信息,结束处理过程;若SP为应用Ipsec标准,则继续;(6)将该数据包IP头的off、len转成网络字节序;(7)通过SP指向SA束的指针找到该SP对应的第一个SA;(8)判断若该SA为空,则通知IKE发起新的协商,丢弃该包并释放SPD和SADB信号量,返回ERROR信息;若SA不为空,则按照该SA对该数据包进行IPsec封装处理;(9)判断SA束指向下一个SA的指针是否为空,若不为空,则表明该SP对应的SA束还没有处理完,转入(8)处理;若为空,则表明当前SP对应的SA已经处理完成,转入(10);(10)判断当前SP指向下一个SP的指针是否为空,若不为空,则表明还有不同终点的IPsec通道嵌套没有处理完,将SP指向下一个SP,转入(7)处理;若为空,则表明SP链的SP已经处理完,将该数据包IP头的off、len转成本地字节序,转入(11);(11)释放SPD和SADB信号量,正确结束处理;输入处理流程进一步包括以下步骤(1)判断接收数据包的网络接口是否应用Ipsec标准,若不应用,则释放SPD和SADB信号量,返回正确信息,结束处理过程;若需要应用Ipsec标准,则继续;(2)判断该数据包是否为组播数据包,若是则释放SPD和SADB信号量,返回正确信息,结束处理过程;若不是则继续;(3)判断该包是否是目的为本机的IPsec封装包;(3-1)若不是,则对该包进行分段判断;(3-1-1)若为分段包,则进行重组处理;(3-1-1-1)若重组失败则释放SPD和SADB信号量,返回ERROR信息,结束处理过程;(3-1-1-2)若重组成功则根据SP选择符找到该包的SP链和存储的SA数组对应的SP进行逐次策略匹配,若匹配成功则释放SPD和SADB信号量,正确结束处理过程;若有一个匹配不成功,则释放SPD和SADB信号量,返回ERROR信息,结束处理过程;(3-1-2)若不是分段包,则根据SP选择符找到该包的SP链和存储的SA数组进行策略匹配,若有一个匹配不成功则释放SPD和SADB信号量,正确结束处理过程;若匹配不成功,则释放SPD和SADB信号量,返回ERROR信息,结束处理过程;
(3-2)若是目的为本机的IPsec封装包,则转入4);(4)判断该包是否为分段包;(4-1)若为分段包,则进行重组处理,若重组失败,则释放SPD和SADB信号量,返回ERROR信息,结束处理过程;若重组成功转入5);(4-2)若该包不是分段包,则转5)处理;(5)将IP头的id、off、len转换为网络字节序;(6)根据该包得到相应的SAid,用该SAid找到相应的SA,将该SA存储到一个数组中;(7)用找到的SA对该包进行相应的IPsec解封装处理,将该SA存储下来,再判断该SA指向下一个SA的指针是否为空,若不为空则将SA赋值为下一个SA,转入6);若为空则继续;(8)将IP头的off、len转换为本机序,释放SPD和SADB的信号量,结束输出处理过程。
本发明所述方法通过将属于同一起点而不同的终点的IPsec嵌套保护的SP用一个链表链接起来,按照链表的先后顺序一次性完成对所有嵌套的IPsec保护的处理,不但成功地实现起点相同终点不同的多重IPsec通道嵌套IPsec应用场合的正确处理,而且由于所有嵌套的情况都是一次性完成封装,不需要重新投入IP队列排队等待,因此大大提高了处理效率,进一步提高了IPsec整体效率。


图1是不同终点的安全联盟嵌套实际应用示意图。
图2是IPsec输出处理基本流程图。
图3是IPsec输入处理基本流程图。(同上)图4是本发明所述方法中IPsec输入处理流程图。
图5是本发明所述方法中IPsec输出处理流程图。
具体实施例方式下面结合具体实施方式
对本发明所述方法作进一步说明本发明的方法实际是在解决在信息安全领域的IPsec实现时,如何高效的解决不同安全终点的IPsec保护嵌套问题。该方法主要涉及到两种嵌套,一种是同一SP对应的SA束嵌套,此时对应的情况为嵌套的IPsec通道起点和终点完全相同;而另一种情况为SP链对应的嵌套,此时嵌套的IPsec通道起点相同而终点不同。在本发明所述二类嵌套的情况,所对应的SP将以SP链的形式存储在SPD(安全策略数据库)中,在进行IPsec处理时,以SP链中的每个SP为依据逐次将所有SP对应的SA处理完,然后再交给传输层协议处理而不必投入IP队列重新排队处理。需要注意的是,每个SP对应的SA可以为嵌套的SA束,此时的SA嵌套的起点和终点都一样。
下面以附图1所示的应用场景来详细描述本发明方法的实施方式。图2是一个IPsec保护输出的基本流程,是一个通用的简单的通用的流程,是一个相对原理性的流程;而图5是应用本发明方法后的详细的处理流程,是一个可工程实现的流程,图3和图4的关系相类似。图1中包含两个应用IPsec网关RA和RB,一个在外网的主机C以及处于内网的部门服务器D以及其他部门的主机通过因特网和内部局域网相互连接。在企业网外部的主机C要和企业内某部门的服务器主机D安全通信,首先为防止来自企业外部的攻击,需要在主机C和企业网关RA之间使用IPsec保护,同时为防止企业内部门外的攻击,需要在主机C和部门网关RB之间建立IPsec保护。其中,SP结构定义如下(1)SP相关信息本身;(2)指向SP结构的指针。
在配置主机C到主机D的安全策略时,首先配置主机C和部门服务器RB之间的IPsec保护的安全策略SP1,SP1除包含自己本身的相关信息外(设置SP1指向的SA束为两个SA嵌套SA1SA2),还包含一个指向SP2的指针,其中SP2为主机C和企业网关RA之间的IPsec保护的安全策略(SP2指向的SA束只有一个SASA3)。而SP2除包含策略本身的相关信息外,指向SP结构的指针为NULL。由于把嵌套的IPsec保护的安全策略SP通过指针链接成一个链表,所以把这种方法叫做SP链方法。对于主机C,由于存在两个安全终点不同的IPsec嵌套保护(RA和RB),使用SP链方法对其需要IPsec嵌套保护的数据包输出处理详细描述如下1、申请SPD信号量和SADB信号量为SP和SA查询提供接口。
2、从数据包中找到该数据包的SP选择符spidx,然后使用该选择符在SPD中查询找到SP链的其实元素SP1。
3、将该数据包IP头的off、len转成网络字节序。
4、通过SP1指向SA束的指针找到该SP1对应的第一个安全联盟SA1。
5、判断若该SA1为空,则通知IKE发起新的协商,丢弃该包并释放SPD和SADB信号量,返回一个ERROR。若SA1不为空,则按照SA1对该数据包进行IPsec封装处理。
6、再根据SA1找到SA2,然后按照SA2对已经被SA1封装后的数据包再进行IPsec封装。由于SA2为SP1指向的SA束的最后一个,对SP1处理完成,转入7处理SP2。
7、根据SP1的指向下一个SP的指针找到SP2,再更具SP2找到对应的SA3,使用SA3对数据包进行IPsec封装。
8、由于SP2指向下一个SP的指针为NULL,表明嵌套的IPsec保护已经处理完成,将该数据包IP头的off、len转成主机序,释放SPD和SADB信号量,正确结束处理。
而对源地址为主机D的经过IPsec嵌套保护的数据包,主机C调用输入处理其具体处理流程如下1、申请查询SPD和SADB的信号量。
2、判断该包是否为分段包,2-1若为分段包,则进行重组处理,若重组失败,则释放SPD和SADB信号量,返回ERROR,结束;若重组成功转入3;2-2若该包不是分段包,则转3处理。
3、将IP头的id、off、len转换为网络字节序。
4、根据该包得到相应的SAid找到最后一次进行IPsec封装的SA3,并将SA3压入一个堆栈中。
5、用SA3对该数据包进行IPsec解封装处理,由于SA3的指向下一个SA的指针为空,因此转6处理。
6、判断由于用SA3解封装后仍然是一个目的为本机的IPsec,再根据该包的SAid找到对应的SA2,然后将SA2压入堆栈。
7、使用SA2对数据包进行IPsec解封装处理,再由SA2找到同属一个SA束的SA1。
8、使用SA1对数据包进行IPsec解封装处理。由于SA1和SA2同属一个SA束,因此不再将SA1压入堆栈。
9、经过SA1解封装的数据包不再是一个IPsec包,因此转入11进行策略匹配处理。
10、根据解封装后的数据包的SP选择符找到该包的SP链,首先比较SP链的第一个SP1和堆栈弹出的第一个元素SA2指向的SP1是相同的。然后比较SP链的第二个SP2和堆栈弹出的的第二个元素SA1指向的SP2是相同的。最后由于SP链已经为空而堆栈也已经为空,所以策略匹配通过。
11、将IP头的id、off、len转换为本机序,释放SPD和SADB的信号量,正确结束处理。
权利要求
1.一种实现Ipsec标准中不同安全终点的安全联盟嵌套方法,其特征在于,包括输入和输出两个过程对于输出处理流程在确认输入数据包的网络接口应用Ipsec标准,且不为组播数据包时,进行SP查询,在SP表示为应用Ipsec标准时继续进行SA查询,在SA不为空的情况下,按照该SA对该数据包进行IPsec封装处理,最后将数据包IP头的off、len转成本地字节序,释放安全策略数据库和安全联盟数据库的信号量,正确结束处理;对于输入处理流程在确认接收数据包的网络接口应用Ipsec标准,且不为组播数据包时,判断数据包是否是目的为本机的IPsec封装包,并根据不同的情况进行相应处理,如果是分段包则进行重组,如果不是分段包则进行匹配和解封装处理,最后将数据包IP头的off、len转成本地字节序,释放安全策略数据库和安全联盟数据库信号量,正确结束处理。
2.根据权利要求1所述的实现Ipsec标准中不同安全终点的安全联盟嵌套方法,其特征在于,所述输出处理流程进一步包括以下步骤(1)判断输入数据包的网络接口是否应用Ipsec标准,若不应用则释放安全策略数据库和安全联盟数据库信号量,结束处理过程;若需要应用Ipsec标准,则继续;(2)判断该包是否为组播数据包,若是则释放安全策略数据库和安全联盟数据库的信号量,结束处理过程;若不是则继续;(3)申请安全策略数据库信号量和安全联盟数据库信号量,为SP和SA查询提供接口;(4)从数据包中找到该数据包的SP选择符spidx,使用该选择符在安全策略数据库中查询相应的SP,如查不到则将默认的值设为SP;(5)若该SP表示为绕过,则释放安全策略数据库和安全联盟数据库的信号量,结束处理过程;若该SP表示为丢弃,则丢弃该包,释放安全联盟数据库和安全策略数据库信号量,返回ERROR信息,结束处理过程;若SP为应用Ipsec标准,则继续;(6)将该数据包IP头的off、len转成网络字节序;(7)通过SP指向SA束的指针找到该SP对应的第一个SA;(8)判断若该SA为空,则通知IKE发起新的协商,丢弃该包并释放安全策略数据库和安全联盟数据库信号量,返回ERROR信息;若SA不为空,则按照该SA对该数据包进行IPsec封装处理;(9)判断SA束指向下一个SA的指针是否为空,若不为空,则表明该SP对应的SA束还没有处理完,转入(8)处理;若为空,则表明当前SP对应的SA已经处理完成,转入(10);(10)判断当前SP指向下一个SP的指针是否为空,若不为空,则表明还有不同终点的IPsec通道嵌套没有处理完,将SP指向下一个SP,转入(7)处理;若为空,则表明SP链的SP已经处理完,将该数据包IP头的off、len转成本地字节序,转入(11);(11)释放安全策略数据库和安全联盟数据库信号量,正确结束处理。
3.根据权利要求1所述的实现Ipsec标准中不同安全终点的安全联盟嵌套方法,其特征在于,所述输入处理流程进一步包括以下步骤(1)判断接收数据包的网络接口是否应用Ipsec标准,若不应用,则释放安全策略数据库和安全联盟数据库信号量,返回正确信息,结束处理过程;若需要应用IPsec标准,则继续;(2)判断该数据包是否为组播数据包,若是则释放安全策略数据库和安全联盟数据库信号量,返回正确信息,结束处理过程;若不是则继续;(3)判断该包是否是目的为本机的IPsec封装包,并进行相应处理;(4)判断该包是否为分段包,并进行相应处理;(5)将IP头的id、off、len转换为网络字节序;(6)根据该包得到相应的SAid,用该SAid找到相应的SA,将该SA存储到一个数组中;(7)用找到的SA对该包进行相应的IPsec解封装处理,将该SA存储下来,再判断该SA指向下一个SA的指针是否为空,若不为空则将SA赋值为下一个SA,转入(6);若为空则继续;(8)将IP头的off、len转换为本机字节序,释放安全策略数据库和安全联盟数据库的信号量,结束输出处理过程。
4.根据权利要求3所述的实现Ipsec标准中不同安全终点的安全联盟嵌套方法,其特征在于,所述步骤(3)进一步包括以下步骤(3-1)若不是,则对该包进行分段判断;(3-1-1)若为分段包,则进行重组处理;(3-1-1-1)若重组失败则释放安全策略数据库和安全联盟数据库信号量,返回ERROR信息,结束处理过程;(3-1-1-2)若重组成功则根据SP选择符找到该包的SP链和存储的SA数组对应的SP进行逐次策略匹配,若匹配成功则释放安全策略数据库和安全联盟数据库信号量,正确结束处理过程;若有一个匹配不成功,则释放安全策略数据库和安全联盟数据库信号量,返回ERROR信息,结束处理过程;(3-1-2)若不是分段包,则根据SP选择符找到该包的SP链和存储的SA数组进行策略匹配,若有一个匹配不成功则释放安全策略数据库和安全联盟数据库信号量,正确结束处理过程;若匹配不成功,则释放安全策略数据库和安全联盟数据库信号量,返回ERROR信息,结束处理过程;(3-2)若是目的为本机的IPsec封装包,则转入步骤(4)。
5.根据权利要求3所述的实现Ipsec标准中不同安全终点的安全联盟嵌套方法,其特征在于,所述步骤(4)进一步包括以下步骤(4-1)若为分段包,则进行重组处理,若重组失败,则释放安全策略数据库和安全联盟数据库信号量,返回ERROR信息,结束处理过程;若重组成功转入步骤(5);(4-2)若该包不是分段包,则转步骤(5)处理。
全文摘要
本发明公开了一种计算机领域中的实现Ipsec标准中不同安全终点的安全联盟嵌套方法,包括输入和输出两个过程对于输出处理流程在确认输入数据包的网络接口应用Ipsec标准,且不为组播数据包时,进行SP查询,在SP表示为应用Ipsec标准时继续进行SA查询,在SA不为空的情况下,按照该SA对该数据包进行IPsec封装处理,最后将数据包IP头的off、len转成本地字节序,释放安全策略数据库和安全联盟数据库的信号量。本发明能够解决现有技术中存在的具有起点相同而终点不同的IPsec通道嵌套应用环境下,容易引起的因为策略匹配和SP查询失败而带来的错误,能够保证准确进行策略匹配和SP查询的IPsec实现中不同安全终点的安全联盟嵌套,提高了处理效率,进一步提高了IPsec整体效率。
文档编号H04L29/06GK1529473SQ20031010180
公开日2004年9月15日 申请日期2003年10月17日 优先权日2003年10月17日
发明者丁勇, 丁 勇 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1