具体实施方式
针对现有技术存在的上述问题,本发明实施例提供了一种设备间SA同步方案,用以解决资源浪费的问题,提高资源的利用率。
下面结合附图对本发明实施例进行详细描述。
IPsec对等体设备间的SA建立过程包括以下两个阶段:
第一阶段,设备间建立一个通信信道(IKE SA),并对该信道进行身份认证和安全保护,为双方进一步的IKE通信提供机密性、消息完整性以及消息源认证服务。在第一阶段中有两种IKE模式交换方式:对身份进行保护的主模式(Main Mode)交换方式以及根据基本ISAKMP(Internet Security Association and Key Management Protocol,Internet安全关联和密钥管理协议)文档制订的野蛮模式(Aggressive Mode)交换方式。
第二阶段,利用第一阶段建立的IKE SA,为IPsec协商具体的SA,建立用于最终的IP数据安全传输的IPsec SA。
由于IPsec对等体设备重启、IP连接中断、路由选择等问题,IPsec对等体设备之间已建立的IPsec SA会失效,需要在IPsec对等体设备之间进行SA同步,以保证会话的有效性。
本发明实施例提供的SA同步方案,对建立IKE SA 的过程(即IPsec协商并建立SA过程中的第一阶段)进行改进。
下面以网络设备A和网络设备B互为IPsec对等体为例,并分别以不同的实施例,对IPsec对等体采用主模式交换方式以及野蛮模式交换方式时,网络设备A和网络设备B之间的SA同步过程进行详细描述。
实施例一
本实施例描述了主模式交换方式下设备间SA同步方案的流程,如图1所示,该流程包括以下步骤:
步骤101,网络设备A向对端网络设备B发送第一条报文,用于请求SA参数交换,该报文中携带有待确认的SA安全策略。
步骤102,网络设备B根据接收到的第一条报文,向网络设备A返回第二条报文,以确认SA安全策略,该报文中携带有网络设备B已确认的SA安全策略。
上述步骤101-102实现了SA参数交换过程,用于协商确认有关安全策略。具体的,网络设备A将IKE策略发送给对端的网络设备B,网络设备B查找匹配的策略后返回给网络设备A,网络设备A接收由网络设备B确认的策略,完成SA参数交换。
步骤103,网络设备A向网络设备B发送第三报文,第三报文携带有网络设备A的密钥生成信息。
步骤104,网络设备B根据接收到的第三条报文,向网络设备A返回第四条报文,第四条报文携带有网络设备B的密钥生成信息。
上述步骤103-104实现了密钥交换过程,用于在网络设备A和B之间交换Diffie-Hellman公共值和辅助数据(例如:随机数),并生成密钥信息。具体的,网络设备A向网络设备B发送网络设备A的密钥生成信息,网络设备B生成本端密钥之后,向网络设备A返回本设备(网络设备B)的密钥生成信息,网络设备A生成本端密钥,从而完成密钥交换。
步骤105,网络设备A向网络设备B发送第五条报文,以进行身份认证和交换数据认证,第五条报文中携带有身份信息和SA数据,该身份信息为网络设备A的标识信息。
其中,第五报文的通告(Notification)载荷用于携带信息数据,第五报文的通告载荷结构如图2a所示,包括以下字段:下一个载荷(Next Payload)、保留(Reserved)、载荷长度(Payload Length)、解释域(Domain of Interpretation)、协议ID(Protocol-ID)、SIP大小(SPI Size)、通告报文类型(Notify Message Type)、安全参数索引(Security Parameter Index,SPI)以及通告数据(Notification Data)。其中,各字段代表的含义如下:
Next Payload(1个8位字节):报文中下一个载荷的载荷类型标识符,如果当前载荷处于报文的最后,此字段为0。
Reserved(1个8位字节):未用,置为0。
Payload Length(2个8位字节):以8位字节为单位,当前载荷的长度,包括普通载荷头。
Domain of Interpretation(4个8位字节):对于IPsec DOI,此字段值为1。
Protocol-ID (1个8位字节):用于表示当前通知报文的协议标识符。
SPI Size(1个8位字节):以8位字节为单位,由协议ID所定义的SPI长度。
Notify Message Type(2个8位字节):用于指定通知消息的类型,如果由DOI指定,附加文本将放在通知数据字段内。
SPI(可变长度):安全参数索引,此字段的长度将由SPI大小字段来决定。
Notification Data(可变长度):未用,置为0。
现有技术中,报文通告载荷的Notifycation Data字段未用,本发明实施例利用了该字段,在该字段携带为唯一标识网络设备A且固定配置的标识信息。优选的,网络设备A的标识信息可以为设备标识(ID)或者设备的MAC地址(Media Access Control,逻辑地址)。
Notification Data字段的格式如图2b所示,包括:下一个载荷(Next Payload)、保留(Reserved)、载荷长度(Payload Length)、ID类型(ID Type)、DOI 专用ID数据(DOI Specific ID Data)以及标识数据(Identification Data)字段,各字段代表的含义如下:
ID Type(1个8位字节):用于指定被用的标识类型;
DOI Specific ID Data(3个8位字节):包含DOI 专用标识数据;
Identification Data(可变长度):此字段的值是DOI专用的,而且,格式由ID类型字段来指定。
Next Payload、Reserved和Payload Length字段的含义如前所述,不再赘述。
在本发明实施例中,网络设备A将通告载荷的Notify Message Type字段值设置为INITIAL-CONTACT,用以表明该报文为网络设备A在新建立SA时发送的报文。网络设备A将ID Type字段设置为标识信息对应的ID类型,并在Identification Data字段携带网络设备A的标识信息。
步骤106,网络设备B接收网络设备A发送的第五条报文,并根据该报文的通告载荷获取网络设备A的标识信息。
具体的,网络设备B接收并解析IPsec SA对等体设备A发送的第五条报文,根据该报文的Notify Message Type字段,获取网络设备A的标识信息。即,若Notify Message Type字段值为INITIAL-CONTACT,说明该报文为网络设备A在重新建立SA过程中发送的,则网络设备B从Notification Data字段的Identification Data字段获取网络设备A的标识信息。其中,报文封装以及解析过程按照现有技术进行,在此不再赘述。
步骤107,网络设备B根据获取到的网络设备A的标识信息,查询本设备上的IKE SA和IPsec SA,并删除查询到的IKE SA和IPsec SA(该IPsec SA是本设备与网络设备A之间的IPsec SA)。
由于IPsec SA建立之后,IPsec SA对应的IPsec SA对等体设备之间会分别在本地存储IPsec SA,即,IPsec SA对等体设备分别依据对端IPsec SA对等体设备的标识信息为索引进行存储,例如,在网络设备设备A上,以网络设备B的标识信息为索引,存储有网络设备A和B之间的IPsec SA;在网络设备B上,以网络设备A的标识信息为索引,存储有网络设备A和B之间的IPsec SA。
此时,网络设备A和B之间的IPsec SA由于网络设备重启或IP连接中断等原因已失效,而网络设备A与B之间新的IPsec SA尚未建立,因此,查询出的IKE SA和IPsec SA即为2个网络设备之前建立的,目前已失效的IKE SA和IPsec SA,网络设备B删除无用的SA。
设备B将查询到的IKE SA和IPsec SA删除,避免了网络设备B继续通过失效的SA向网络设备A发送报文,节约了网络带宽资源以及CPU资源。
步骤108,网络设备B根据第五条报文,对网络设备A的身份和SA数据认证通过后,将本端设备的身份信息和SA数据携带于第六条报文中返回给设备A,以使网络设备A进行身份认证和SA数据认证。
步骤105和步骤108实现了是身份信息和认证数据交换过程,用于进行身份认证和对第一阶段SA交换数据的认证。至此,通过主模式交换方式完成了IKE SA的建立,IKE SA生效,SA建立过程中的第一阶段结束。在IKE SA建立过程中,是以对端IPsec SA对等体设备的标识信息为索引实现上述参数交换的。
当SA建立过程中的第一阶段结束后,网络设备A和B之间利用第一阶段建立的IKE SA,为IPsec协商安全服务,以对端网络设备的标识信息为索引,建立用于最终的IP数据安全传输的IPsec SA(执行第二阶段)。至此,在网络设备之间的IPsec SA失效之后,网络设备A与B之间的新的IPsec SA建立完成,从而实现设备间的SA的同步。
实施例二
本实施例描述了野蛮模式交换方式下设备间SA同步方案的流程,如图3所示,该流程包括以下步骤:
步骤301,网络设备A向网络设备B发送第一条报文,以请求确认SA安全策略和进行密钥交换,该第一条报文携带有待确认的SA安全策略和设备A的密钥生成信息。
步骤302,IPsec SA对等体B根据接收到的第一条报文,向网络设备A返回第二条报文,该第二条报文携带有网络设备B确认的SA安全策略和网络设备B的密钥生成信息。
上述步骤301-302实现了安全策略和密钥交换过程,用于安全策略协商以及交换Diffie-Hellman公开值和辅助数据。
步骤303,网络设备A向网络设备B发送第三条报文,用于进行身份认证和SA数据认证,该第三条报文中携带有网络设备A的身份信息和SA数据,用于为发起方提供在场的证据,该身份信息为Psec SA对等体设备A的标识信息。
在本实施例中,标识信息与实施例一中的标识信息相同,固定配置且唯一标识网络设备A。
步骤304,网络设备B接收网络设备A发送的第三条报文,并根据该第三条报文的通告载荷获取网络设备A的标识信息。
步骤305,网络设备B根据获取到的网络设备A的标识信息,查询本设备上的IKE SA和IPsec SA,并删除查询到的IKE SA和IPsec SA。
步骤303-305的实现过程如实施例一所述,在此不再赘述。
在上述步骤303结束之后,IKE SA不会立即生效,而是在步骤305结束之后(即,无用的IKE SA和IPsec SA已删除之后)的条件成立时(例如,时间戳的时间到达时),IKE SA才生效,从而按照野蛮模式交换方式完成IKE SA的建立,SA建立过程中的第一阶段结束。
当SA建立过程中的第一阶段结束后,网络设备A和B之间利用第一阶段建立的IKE SA,为IPsec协商安全服务,以对端网络设备的标识信息为索引,建立用于最终的IP数据安全传输的IPsec SA(执行第二阶段)。至此,在网络设备之间的IPsec SA失效之后,网络设备A与B之间的新的IPsec SA建立完成,从而实现设备间的SA的同步。
实施例一(主模式交换方式)与实施例二(野蛮模式交换方式)的主要差别在于,主模式交换方式交换6条报文,包括3个交换过程:SA参数交换、密钥交换以及身份信息和认证数据交换,适用于对身份保护要求较高的场景。在实际应用中,一般情况下,IKE的主模式交换方式适用于两设备的公网IP固定、且要实现设备之间点对点的环境。而野蛮模式交换方式只交换3条报文,只涉及SA参数交换和密钥交换过程,而身份认证信息通过明文传输,适用于对身份保护要求不高的场景。对于例如ADSL(Asymmetric Digital Subscriber Line,非对称数字用户环路)拨号用户,其获得的公网IP不是固定的,且可能存在NAT(Network Address Translation,网路地址转换)设备的情况下,采用野蛮模式交换方式作NAT穿越。
本发明实施例提供的设备间SA同步方案,网络设备与所述对端IPsec SA对等体设备进行IKE SA协商的过程中,接收所述对端IPsec SA对等体设备发送过来的该对端IPsec SA对等体设备的标识信息,根据该标识信息,查询到本设备上的IKE SA和IPsec SA后,进行删除,并以该标识信息为索引,建立与所述对端IPsec SA对等体设备间的IPsec SA,解决了设备间数据流丢失的问题,节约了CPU资源,提高CPU资源的利用率,而且,在IKE SA协商过程中,利用IKE SA协商报文通知IPsec SA对等体设备删除无用SA,不增加设备间额外的报文交互负担,节约带宽资源。
基于相同的技术构思,本发明实施例还提供了一种网络设备,如图4所示,该网络设备被配置为IPsec SA对等体设备,包括密钥交换协议IKE SA协商模块41和IPsec SA建立模块42,IKE SA协商模块41包括:
协商子模块411,用于根据对端IPsec SA对等体设备发起的IKE SA协商请求与对端IPsec SA对等体设备进行IKE SA协商。
获取子模块412,用于在IKE SA协商过程中接收对端IPsec SA对等体设备发送过来的该对端IPsec SA对等体设备的标识信息;其中,IPsec SA对等体设备的标识信息固定配置且唯一标识IPsec SA对等体设备。
查询子模块413,用于根据对端IPsec SA对等体设备的标识信息,查询本设备上的IKE SA和IPsec SA。
删除子模块414,用于删除所述查询子模块413查询到的IKE SA和IPsec SA。
IPsec SA建立模块42,用于在与所述对端设备协商的IKE SA生效之后,根据生效的IKE SA,以对端IPsec SA对等体设备的标识信息为索引,建立与对端IPsec SA对等体设备间的IPsec SA,其中,所述IKE SA以所述对端IPsec SA对等体设备的标识信息为索引。
获取子模块412具体用于,在协商子模块411根据对端IPsec SA对等体设备的请求完成SA参数交换以及密钥交换之后,接收对端IPsec SA对等体设备发送的用于请求进行身份认证和SA数据认证的请求报文,并获取该请求报文中携带的该对端IPsec SA对等体设备的标识信息。
协商子模块411具体用于,接收对端IPsec SA对等体设备发送的用于请求SA参数交换的第一条报文,第一条报文携带有SA安全策略,并根据第一条报文向对端IPsec SA对等体设备返回第二条报文,第二条报文携带有IPsec SA对等体设备已确认的SA安全策略;以及,接收对端IPsec SA对等体设备发送的用于请求密钥交换的第三条报文,第三条报文携带有对端IPsec SA对等体设备的密钥交换信息,并根据第三条报文,向对端IPsec SA对等体设备返回第四条报文,第四条报文携带有IPsec SA对等体设备的密钥交换信息;以及,接收对端IPsec SA对等体设备发送的用于请求进行身份认证和SA数据认证的第五条报文,第五条报文携带有对端IPsec SA对等体设备的标识信息和SA数据,并根据第五条报文,向对端IPsec SA对等体设备返回第六条报文,第六条报文携带有IPsec SA对等体设备的身份信息和SA数据。
获取子模块412具体用于,获取第五条报文中携带的该对端IPsec SA对等体设备的标识信息。
协商子模块411具体用于,接收对端IPsec SA对等体设备发送的用于请求SA参数和密钥交换的第一条报文,第一条报文携带有SA安全策略和对端IPsec SA对等体设备的密钥交换信息,并根据第一条报文,向对端IPsec SA对等体设备返回第二条报文,第二条报文携带有IPsec SA对等体设备已确认的SA安全策略和IPsec SA对等体设备的密钥交换信息;以及,接收对端IPsec SA对等体设备发送的用于请求进行身份认证和SA数据认证的第三条报文,第三条报文中携带有对端IPsec SA对等体设备的标识信息和SA数据。
获取子模块412具体用于,获取第三条报文中携带的对端IPsec SA对等体设备的标识信息。
具体的,标识信息携带于用于请求进行身份认证和SA数据认证的请求报文的通告载荷的数据字段,且该请求报文的通告载荷的通知消息类型字段的字段值为INITIAL-CONTACT。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。