基于加解密的SRv6路径认证方法、系统、设备及介质与流程

文档序号:24570466发布日期:2021-04-06 12:17阅读:136来源:国知局
基于加解密的SRv6路径认证方法、系统、设备及介质与流程

本发明属于网络通信领域,特别涉及一种基于加解密的srv6路径认证方法、系统、设备及介质。



背景技术:

segmentrouting(sr,分段路由)作为sdn关键技术之一,通过在报文中插入有顺序的段列表(segmentlist)来指导转发设备按照指定的转发路径进行报文转发。sr使网络更加简化,并具有良好的可扩展性。

sr在提供网络转发路径可控、取代路由最短路径优先的同时,也需要增加相应的srh扩展头存储各个sr节点,用于控制转发路径。但在不进行认证的情况下,无法确保实际报文的转发路径是按照指定的转发路径进行转发,无法满足流量安全可控的需求,为网络流量的正常调度引入了潜在的风险。因而需要对转发的各个sr节点进行认证,以确保网络通信流量的正确调度和转发路径的安全可控。



技术实现要素:

发明目的:针对现有技术中srv6报文中srh扩展头中sr节点的可认证问题,本发明公开了一种基于加解密的srv6路径认证方法、系统、设备及介质,在确保网络流量正常转发的同时提供了简单有效的路径认证。

技术方案:本发明采用如下技术方案:一种基于加解密的srv6路径认证方法,其特征在于,包括如下步骤:

s1、生成并向sr节点下发加密segmentlist,加密segmentlist中包括使用预设传输路径中当前sr节点的密钥对下一跳sr节点的sid的加密,预设传输路径中包括sr头节点、sr中间节点和sr尾节点;

s2、sr节点使用自身密钥对加密segmentlist中下一跳sr节点的加密sid进行解密,若解密得到合法的下一跳sr节点的sid,则对当前sr节点认证成功,转发到下一跳sr节点继续进行认证;若不能解密得到合法的下一跳sr节点的sid,则对当前sr节点认证失败,结束转发。

优选地,加密和解密均采用字节数值替换和字节位置移动的方式。

优选地,sr节点的sid加密前后的长度相同。

优选地,步骤s1包括:

s11、生成sr节点各自的密钥和sid,各sr节点的sid中包括该sr节点的位置标识,位置标识是分配给各sr节点的标识,可用于路由和转发数据包;

向sr节点下发其各自的密钥;

s12、生成初始segmentlist,初始segmentlist中顺序包括预设传输路径中的各sr中间节点和sr尾节点的sid;

s13、使用预设传输路径中当前sr节点的密钥,加密下一跳sr节点在初始segmentlist中的sid,生成加密segmentlist;

s14、将加密segmentlist下发给预设传输路径中的sr头节点;将加密segmentlist中的加密sid下发给预设传输路径中的对应的各sr中间节点和sr尾节点。

优选地,步骤s2包括:

s21、将加密segmentlist封装成ipv6报文,ipv6报文中包括ip头和srh扩展头,ip头中包括目的ip,srh扩展头中包括加密segmentlist;

s22、当前sr节点对接收的ipv6报文中的加密segmentlist中的下一跳sr节点的加密sid进行解密,若解密得到合法的下一跳sr节点的sid,则对当前sr节点认证成功;若不能解密得到合法的下一跳sr节点的sid,则对当前sr节点认证失败;

s23、认证成功后,将解密后的下一跳sr节点的sid替换到当前ipv6报文中的目的ip上,更新ipv6报文并将其转发到目的ip对应的sr节点,返回执行步骤s22;认证失败后,结束ipv6报文的转发。

优选地,预设传输路径中的sr头节点识别加密segmentlist的加密属性后,使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid;

在其他sr节点的加密sid上配置解密动作,当sr节点接收ipv6报文后,该解密动作指导当前sr节点使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid。

优选地,在ipv6报文的srh扩展头中添加标记,当sr节点接收到ipv6报文后,当前sr节点识别该标记后使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid。

一种基于加解密的srv6路径认证系统,其特征在于,包括:

控制器:生成并向sr节点下发加密segmentlist,加密segmentlist中包括使用预设传输路径中当前sr节点的密钥对下一跳sr节点的sid的加密,预设传输路径中包括sr头节点、sr中间节点和sr尾节点;

sr节点:使用自身密钥对加密segmentlist中下一跳sr节点的加密sid进行解密,若解密得到合法的下一跳sr节点的sid,则对当前sr节点认证成功,转发到下一跳sr节点继续进行认证;若不能解密得到合法的下一跳sr节点的sid,则对当前sr节点认证失败,结束转发。

优选地,控制器加密和sr节点解密均采用字节数值替换和字节位置移动的方式。

优选地,控制器对sr节点的sid加密前后的长度相同。

优选地,控制器中包括:

初始化模块:生成sr节点各自的密钥和sid,其中,每个sr节点的sid中包括该sr节点的位置标识,位置标识是分配给各sr节点的标识,可用于路由和转发数据包;

生成模块:生成初始segmentlist,初始segmentlist中顺序包括预设传输路径中的各sr中间节点和sr尾节点的sid;

加密模块:使用预设传输路径中当前sr节点的密钥,加密下一跳sr节点在初始segmentlist中的sid,生成加密segmentlist;

下发模块:将加密segmentlist下发给预设传输路径中的sr头节点,将加密segmentlist中的加密sid下发给预设传输路径中的对应的各sr中间节点和sr尾节点,将sr节点的密钥下发给对应的各sr节点。

优选地,sr节点中包括:

封装模块:接收到控制器下发的加密segmentlist后,将加密segmentlist封装成ipv6报文,ipv6报文中包括ip头和srh扩展头,ip头中包括目的ip,srh扩展头中包括加密segmentlist;

解密模块:对接收的ipv6报文中的加密segmentlist中的下一跳sr节点的加密sid进行解密,若解密得到合法的下一跳sr节点的sid,则对当前sr节点认证成功;若不能解密得到合法的下一跳sr节点的sid,则对当前sr节点认证失败;

转发模块:认证成功后,将解密后的下一跳sr节点的sid替换到当前ipv6报文中的目的ip上,更新ipv6报文并将其转发到目的ip对应的sr节点;认证失败后,结束ipv6报文的转发。

优选地,预设传输路径中的sr头节点识别加密segmentlist的加密属性后,解密模块使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid;

在其他sr节点的加密sid上配置解密动作,当sr节点接收ipv6报文后,该解密动作指导当前sr节点的解密模块使用自身密钥解密ipv6报文中的加密segmentlist中下一跳sr节点的sid。

优选地,在ipv6报文的srh扩展头中添加标记,当sr节点接收到ipv6报文后,当前sr节点的解密模块识别该标记后使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid。

一种基于加解密的srv6路径认证设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述任意一项所述基于加解密的srv6路径认证方法。

一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任意一项所述基于加解密的srv6路径认证方法。

有益效果:本发明具有如下有益效果:

本发明提出了一种操作性更强且简单易行的srh扩展头中sr节点的认证方法,通过加解密方法,所有sr节点看到的sid都是加密后的sid,即完整转发路径对所有sr节点不可见,提高了安全性,降低被攻击的可能;进而通过密钥解密下一跳sid,可以对sr传输路径进行认证,保证网络流量沿着预先规划的路径有序转发。

附图说明

图1为本发明的系统架构图;

图2为本发明的控制器加密segmentlist的时序图;

图3为本发明的segmentlist加密前后的对比图;

图4为本发明的ipv6报文中srh扩展头的结构(含srh扩展头)。

具体实施方式

下面结合附图对本发明作更进一步的说明。

ipv6分段路由(segmentroutingipv6,简称srv6)是基于源路由理念而设计的在网络上转发ipv6报文的一种协议。基于ipv6转发面的srv6,通过在ipv6报文中插入一个路由扩展头(segmentroutingheader,简称srh),即分段路由头,然后,在srh扩展头中压入一个显式的ipv6地址栈,即段列表(segmentlist),通过sr中间节点不断的更新ip头中的目的ip和偏移地址栈的操作来完成逐跳转发。

本发明公开了一种基于加解密的srv6路径认证方法,针对srv6报文srh扩展头中sr节点可认证的需求,提出了根据当前sr节点的密钥对srh扩展头中下一跳sr节点的sid进行加密的方法,计算加密后的sid后,下发加密后的segmentlist给sr头节点,在每个sr节点进行end操作前,使用当前sr节点的密钥进行解密,解密出的下一跳sr节点的sid替换到ip头的目的ip,更新ipv6报文完成解密过程。如果ipv6报文发到了错误的sr节点,ipv6报文无法被解密,更无法被正确转发,从而完成对sr节点的认证。

如图1和图2所示,本发明包括如下步骤:

步骤1、生成sr节点的密钥和安全标识符(sid),其中,每个sr节点的sid中包括该sr节点的位置标识,位置标识是分配给每一个sr节点的标识,可用于路由和转发数据包。

每个sr节点独立分配密钥,然后把sr节点各自的密钥下发给对应的sr节点。其中,如果是以sr节点为单位分配密钥,需要给控制范围内的所有sr节点下发密钥,且每个sr节点对应的密钥不相同;如果是以分段路由中的传输路径为单位分配密钥,只需要把密钥下发到传输路径上的sr节点,若同一个sr节点位于不同的传输路径上,该sr节点的不同的传输路径对应的密钥独立且不相同。

例如,a、b、c、f、k节点均为一条预设传输路径上的sr节点,分别其下发各自的密钥,即pa、pb、pc、pf、pk。

步骤2、生成初始segmentlist,初始segmentlist中顺序包括预设传输路径中各sr中间节点和sr尾节点的sid,其中,预设传输路径中包括sr头节点、sr中间节点和sr尾节点。

例如,生成的预设传输路径为a->b->c->f->k,其中a节点为sr头节点,b、c、f节点为sr中间节点,k节点为sr尾节点。

生成的初始segmentlist为sid_b->sid_c->sid_f->sid_k。

步骤3、使用加密算法对初始segmentlist进行计算得到加密segmentlist,计算过程为:使用预设传输路径中当前sr节点的密钥对下一跳sr节点在初始segmentlist中的sid进行加密,具体如下:

使用sr头节点的密钥对其下一跳sr节点即第一个sr中间节点的sid进行加密;

使用当前sr中间节点的密钥对其下一跳sr中间节点的sid进行加密;

使用最后一个sr中间节点的密钥对其下一跳sr节点即sr尾节点的sid进行加密。

例如,如图3所示,加密segmentlist为pa(sid_b)->pb(sid_c)->pc(sid_f)->pf(sid_k),其中px(sid_y)表示使用密钥px对sid_y进行加密,即用a节点的密钥给sid_b加密,用b节点的密钥给sid_c加密,以此类推。

这里的加密算法需要保证sr节点的sid加密前后的长度相同,即sid_b与pa(sid_b)的长度相同,sid_c与pb(sid_c)的长度相同,sid_f与pc(sid_f)的长度相同,sid_k与pf(sid_k)的长度相同。

加密算法使用字节数值替换和字节位置移动的方式完成,不对加密前的sid进行压缩,不在sr节点本地存储加密后的加密sid和sid的映射关系,示例如下:

密钥px为二元组(px1,px2),px1是uint类型数组,长度256;px2是uint类型数组,长度16,其中:

uintpx1[256]={a0,a1,a2,……a255},数组元素an∈[0,255]且各不相同;

uintpx2[16]={b0,b1,b2,……b15},数组元素bn∈[0,15]且各不相同。

对于sid的每个字节数值b,b∈[0,255],做如下变换得到新数值b´:b´=px1[b];

对于sid的每个字节的位置p,p∈[0,15],做如下变换得到字节新位置p´:p´=px2[p]。

对sid中所有字节通过字节数值替换和字节位置移动可以获得加密后的加密sid。

下一跳sr节点的加密sid通过当前sr节点的密钥可以直接解密计算出下一跳sr节点的sid,解密算法为加密算法的反向操作,解密算法如下:

根据sr节点自身密钥px即(px1,px2)计算出反向操作数组(dx1,dx2):

uintdx1[256]={c0,c1,c2,……c255},对于任意px1[n]=an,有dx1[an]=n;

uintdx2[16]={d0,d1,d2,……d15},对于任意px2[n]=bn,有dx2[bn]=n。

进而可以通过(dx1,dx2)对加密sid进行解密:

对于加密sid的每个字节数值b´,做如下变换得到原数值b:b=dx1[b´];

对于加密sid的每个字节的位置p´,做如下变换得到原位置p=dx2[p´]。

对加密sid中所有字节通过字节数值替换和字节位置移动可以获得加密前的sid。

步骤4、将加密后的加密sid下发到各自对应的sr节点上。

例如,分别为a、b、c、f、k节点下发各自的加密sid,即:空(头节点不需要下发)、pa(sid_b)、pb(sid_c)、pc(sid_f)、pf(sid_k)。

步骤5、将加密segmentlist下发给预设传输路径中的sr头节点。

例如,将pa(sid_b)->pb(sid_c)->pc(sid_f)->pf(sid_k)下发给a节点。

步骤6、sr头节点收到加密segmentlist后,封装加密segmentlist生成ipv6报文,ipv6报文中包括ip头和srh扩展头,ip头中包括目的ip,srh扩展头中包括加密segmentlist。

sr头节点利用自身密钥对ipv6报文中的加密segmentlist中下一跳sr节点的加密sid进行解密,若解密得到合法的下一跳sr节点的sid,则对该sr节点认证成功,将下一跳sr节点的sid替换到当前ipv6报文中ip头中的目的ip上,更新ipv6报文并将其转发到目的ip对应的sr节点;若不能解密得到合法的下一跳sr节点的sid,则对当前sr节点认证失败,不转发ipv6报文。合法的sid指的是合法的ipv6地址。

sr中间节点接收ipv6报文后,利用自身密钥对ipv6报文中的加密segmentlist中下一跳sr节点的加密sid进行解密,若解密得到合法的下一跳sr节点的sid,则对该sr节点认证成功,将下一跳sr节点的sid替换到当前ipv6报文中ip头中的目的ip上,更新ipv6报文并将其转发到目的ip对应的sr节点;若不能解密得到合法的下一跳sr节点的sid,则对当前sr节点认证失败,不转发ipv6报文。

sr尾节点接收ipv6报文后,完成对ipv6报文传输路径的认证。

各sr节点对加密segmentlist中的下一跳sr节点的加密sid进行解密动作的触发方式有如下两种。

方法一:预设传输路径中的sr头节点识别加密segmentlist的加密属性后,使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid;

各其他sr节点无法识别加密segmentlist的加密属性,通过对其加密sid配置解密动作(decryptnextsid)来指导该sr节点完成解密,再通过end动作将解密后的下一跳sr节点的sid替换到ipv6报文中的目的ip上去。

各sr节点配置的具体动作如下表1所示:

表1

例如:对于a节点:

encap/insert:将流量引入sr隧道,封装加密segmentlist;

distinguish:识别加密segmentlist的加密属性,使用自己的密钥pa解密pa(sid_b)得到sid_b;

end:使用sid_b替换ip头中的目的ip。

对于b节点:

decryptnextsid:使用自己的密钥pb解密pb(sid_c)得到sid_c;

end:使用sid_c替换ip头中的目的ip。

对于c节点:

decryptnextsid:使用自己的密钥pc解密pc(sid_f)得到sid_f;

end:使用sid_f替换ip头中的目的ip。

对于f节点:

decryptnextsid:使用自己的密钥pf解密pf(sid_k)得到sid_k;

end:使用sid_k替换ip头中的目的ip。

对于k节点:

decap/psp:剥掉sr隧道封装,根据sid_k的指定动作转发ipv6报文。

方法二:不在sr节点的sid上配置动作,通过在ipv6报文的srh扩展头中携带decryptsidflag标记,在所有sr节点上识别此标记,并在end操作前进行解密。

如图4所示,将srh扩展头中flags字段的bit[0]定义为decryptsidflag标记,此标记表示srh扩展头中所有sid都是经过加密的,需要解密后才可以替换到ip头的目的ip上。

sr节点收到此ipv6报文后,根据decryptsidflag标记,使用自己的密钥对下一跳sr节点的sid进行解密,然后再通过end操作,把下一跳sr节点的sid更新到ipv6报文的目的ip上去。

sr尾节点接收到的srv6报文由于已不含有srh扩展头,因此sr尾节点无法识别decryptsidflag标记,不再执行解密操作,剥掉sr封装,按照内层报文转发。

本发明公开了一种基于加解密的srv6路径认证系统,包括:控制器和sr节点。

控制器:生成并向sr节点下发加密segmentlist,加密segmentlist中包括使用预设传输路径中当前sr节点的密钥对下一跳sr节点的sid的加密,预设传输路径中包括sr头节点、sr中间节点和sr尾节点。其中,控制器中包括:

初始化模块:生成sr节点的密钥,生成sr节点的sid。其中,每个sr节点的sid中包括该sr节点的位置标识,位置标识是分配给每一个sr节点的标识,可用于路由和转发数据包;

生成模块:生成初始segmentlist,初始segmentlist中顺序包括预设传输路径中的各sr中间节点和sr尾节点的sid;

加密模块:使用预设传输路径中当前sr节点的密钥,加密下一跳sr节点在初始segmentlist中的sid,生成加密segmentlist,加密采用字节数值替换和字节位置移动的方式;

下发模块:将加密segmentlist下发给预设传输路径中的sr头节点,将加密segmentlist中的加密sid下发给预设传输路径中的对应的各sr中间节点和sr尾节点,将sr节点的密钥下发给对应的各sr节点。

其中,生成模块生成的初始segmentlist中的sid和加密模块生成的加密segmentlist中对应的加密后的加密sid长度相同。

sr节点:使用自身密钥对加密segmentlist中下一跳sr节点的加密sid进行解密,若解密得到合法的下一跳sr节点的sid,则对当前sr节点认证成功,转发到下一跳sr节点继续进行认证;若不能解密得到合法的下一跳sr节点的sid,则对当前sr节点认证失败,结束转发。其中,sr节点中包括:

封装模块:接收到控制器下发的加密segmentlist后,将加密segmentlist封装成ipv6报文,ipv6报文中包括ip头和srh扩展头,ip头中包括目的ip,srh扩展头中包括加密segmentlist;

解密模块:对接收的ipv6报文中的加密segmentlist中的下一跳sr节点的加密sid进行解密,若解密得到合法的下一跳sr节点的sid,则对当前sr节点认证成功;若不能解密得到合法的下一跳sr节点的sid,则对当前sr节点认证失败,解密采用字节数值替换和字节位置移动的方式;

转发模块:认证成功后,将解密后的下一跳sr节点的sid替换到当前ipv6报文中的目的ip上,更新ipv6报文并将其转发到目的ip对应的sr节点;认证失败后,结束ipv6报文的转发。

对加密segmentlist进行解密时,预设传输路径中的sr头节点识别加密segmentlist的加密属性后,解密模块使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid;在其他sr节点的sid上配置解密动作,当sr节点接收ipv6报文后,该解密动作指导当前sr节点的解密模块使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid;

还可以在ipv6报文的srh扩展头中添加标记,当sr节点接收到ipv6报文后,当前sr节点的解密模块识别该标记后使用自身密钥解密ipv6报文中的加密segmentlist得到下一跳sr节点的sid。

本发明公开了一种基于加解密的srv6路径认证设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于加解密的srv6路径认证方法。

本发明公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述基于加解密的srv6路径认证方法。

以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1