基于时间周期的SRv6传输路径认证方法、系统及存储介质与流程

专利2022-05-09  95


本发明涉及网络通信领域,尤其是基于时间周期的srv6传输路径认证方法、系统及存储介质。



背景技术:

segmentrouting(sr)作为sdn(softwaredefinednetwork,软件定义网络)关键技术之一,通过在报文中插入有顺序的段列表(segmentlist)来指导转发设备按照指定的转发路径进行报文转发,sr使网络更加简化,并具有良好的可扩展性;srv6即sr技术在ipv6网络平面的应用。srv6技术在ipv6报文中新增srh(segmentroutingheader)报头,用于存储128bitipv6地址格式的srv6sid(segmentid)列表。

sr在提供网络转发路径可控,取代路由最短路径优先的同时,也需要增加相应的segmentroutingheader(srh)存储各个sr节点,用于控制转发路径,在不进行认证的情况下,无法确保实际报文的转发路径是按照sr指定的转发路径进行转发,无法防止报文被非法篡改,无法满足流量安全可控的需求,为网络流量的正常调度引入了潜在的风险,因而需要对各个sr节点进行认证,以确保网络通信流量的正确调度和转发路径安全可控,为此,本发明提出了基于时间周期的srv6传输路径认证方法、系统及存储介质。



技术实现要素:

为解决现有技术中的问题,本发明提出了基于时间周期的srv6传输路径认证方法、系统及存储介质。

本发明针对srv6报文srh头部的可认证要求,提出一种srh头部完整性认证方法,用于对报文转发路径进行认证,并通过引入周期性变化的隐藏式认证sid(不在报文中可见,对预置传输路径上所有sr节点可见)参与计算认证码来防止重放攻击。

为了实现上述目的,本发明采用了如下技术方案:

一种基于时间周期的srv6传输路径认证方法,包括如下步骤:

控制器按照指定的周期向预置路径上的所有sr节点下发专属于此预置路径的authen-sid并向sr头节点下发用于控制报文转发路径的segmentlist,所述segmentlist能够携带在报文中并随着报文转发;

所述sr头节点在发送报文时,利用所述segmentlist和所述预置路径的authen-sid进行计算并生成报文srh的第一认证码;

sr中间节点和sr尾节点在转发所述报文时需要对第一认证码进行认证。

在一些实施例中,所述认证的过程包括sr中间节点和sr尾节点利用所述segmentlist和所述预置路径的authen-sid进行计算并得到第二认证码;

若第二认证码和第一认证码一致,则所述sr中间节点或sr尾节点转发所述报文;

若第二认证码和第一认证码不一致,则所述sr中间节点或sr尾节点丢弃所述报文。

在一些实施例中,所述步骤还包括控制器向预置路径上的所有sr节点均下发pathid和sequence,并将所述pathid和sequence携带到报文中,所述sequence为每个周期产生的authen-sid对应的编号;

所述pathid唯一对应所述预置路径,所述pathid是segmentlist的唯一编号;

authen-sid只对所述预置路径上的所有sr节点可见,报文不携带所述authen-sid,同一个时间周期内,控制器下发给指定预置路径上所有sr节点的(pathid,sequence,authen-sid)三元组相同。

在一些实施例中,所述步骤还包括在最新sequence的authen-sid下发经过半个周期后,sr头节点才开始使用最新的sequence对应的authen-sid计算报文srh的认证码。

在一些实施例中,所述认证的过程还包括:所述sr中间节点和sr尾节点的local-sid关联认证动作,触发所述报文进行认证;

sr中间节点和尾节点根据报文中携带的pathid和sequence取出对应的authen-sid。

在一些实施例中,所述segmentlist能够下发认证算法(hash算法类型)携带在报文中,用于指导预置路径上的sr节点使用正确的hash算法对报文中的认证码进行认证。

在一些实施例中,所述认证码的计算方式如下:

authenticatecode=crc32(h(sl#authen-sid)),

authenticatecode:认证码;

sl#authen-sid:表示对srh(除认证扩展头外)和本路径的authen-sid进行串联拼接;

h():表示进行哈希值计算;

crc32:使用单位长度为32bit的crc算法进行循环校验和计算。

一种基于时间周期的srv6传输路径认证系统,所述系统包括控制器和多个sr节点模块,所述控制器能够按照指定的周期向预置路径上的所有sr节点模块下发专属于此预置路径的authen-sid并向预置路径上sr头节点模块下发用于控制报文转发路径的segmentlist;

所述sr头节点模块在发送报文时,利用所述segmentlist和预置路径对应sequence的authen-sid进行计算并生成报文srh的第一认证码;

sr中间节点模块和sr尾节点模块在转发所述报文时需要利用所述segmentlist和预置路径对应sequence的authen-sid进行计算对第一认证码进行认证。

在一些实施例中,所述认证的过程包括sr中间节点模块和sr尾节点模块利用所述segmentlist和所述预置路径的authen-sid进行计算并得到第二认证码;

若第二认证码和第一认证码一致,则所述sr中间节点模块或sr尾节点模块转发所述报文;

若第二认证码和第一认证码不一致,则所述sr中间节点模块或sr尾节点模块丢弃所述报文。

一种存储介质,所述存储介质上储存有计算机程序,所述计算机程序被处理器执行时实现上述的方法。

本发明的有益效果:

本发明提出了一种以时间周期t进行变化的认证sid(authen-sid)和segmentlist共同计算认证码的方法对sr头部路径进行完整性校验,通过变化的认证sid,既校验了segmentlist的完整性(防止被非法篡改),又能防止重放攻击,保证报文沿着控制器预定的转发路径转发,降低被非法攻击的风险。

附图说明

图1为本发明架构图;

图2为srh携带选项头格式;

图3为完整srh头报文格式。

图4为计算认证码需要的所有字段,其中authen-sid不在报文中携带。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

在本发明中,algorithm为算法类型,描述认证码计算使用的哈希算法;

segmentlist为段列表;

sr为segmentrouting;

pathid:控制器为预置路径(对应一个段列表)分配的具有唯一性标识的id;

srh为segmentroutingheader;

authen-sid为认证sid,对预置路径上的所有sr节点可见,用于计算srh头的认证码;

sequence为控制器分配的认证sid的序列号,即sequence为每个周期产生的authen-sid对应的编号;

authenticatecode为认证码;

local-sid作为srh段列表的sid之一,是分配给当前sr节点使用的sid,并且此sid会指定一个执行动作。

参照图示,一种基于时间周期的srv6传输路径认证方法,包括如下步骤:

控制器按照指定的时间周期向预置路径上所有的sr节点下发此预置路径的authen-sid并向预置路径上的sr头节点下发用于控制报文转发路径的segmentlist,所述segmentlist能够携带在报文中并随着报文转发,segmentlist能够下发认证算法(hash算法类型)携带在报文中,用于指导预置路径上的sr节点使用正确的hash算法对报文中的认证码进行认证;

所述预置路径上的sr节点按照功能分为sr头节点、sr中间节点和sr尾节点,本发明中sr中间节点可包含多个sr节点,并不经局限于单个sr节点;

控制器对预置路径上所有的sr节点均下发sequence和pathid,所述sequence用于对特定预置路径在不同时间周期对应的authen-sid进行编号,并携带到报文中,编号的方式可以为对指定时间周期t进行变化生成的每个authen-sid按照先后顺序以递增的方式编号;

每个所述sr节点的pathid均唯一对应一个预置路径,所述pathid是segmentlist的唯一编号;

每个预置路径的pathid和sequence对应一个唯一的authen-sid,authen-sid只对预置路径上所有的sr节点可见,报文不携带此字段;

预置路径上sr头节点在发送报文时,利用所述segmentlist和所述预置路径对应的authen-sid进行计算并生成报文srh的第一认证码;

sr中间节点和sr尾节点在转发所述报文时需要对第一认证码进行认证;

sr中间节点和sr尾节点的local-sid关联认证动作,触发所述报文进行认证;

sr中间节点和sr尾节点根据报文中携带的pathid和sequence取出对应的authen-sid,sr节点在更新authen-sid时,保留最近两次sequence对应的authen-sid,用于和sr头节点之间保持切换同步;

其它sr节点利用所述segmentlist和所述预置路径对应的authen-sid进行计算并得到第二认证码;

所述认证码的计算方式如下:

authenticatecode=crc32(h(sl#authen-sid)),

authenticatecode:认证码;

sl#authen-sid:表示对srh(除认证扩展头外)和本路径的authen-sid进行串联拼接;

h():表示进行哈希值计算;

crc32:使用单位长度为32bit的crc算法进行循环校验和计算;

若第二认证码和第一验证码一致,则所述sr中间节点或sr尾节点转发所述报文;

若第二认证码和第一验证码不一致,则所述sr中间节点或sr尾节点丢弃所述报文。

由于控制器更新authen-sid给各个sr节点并不能完全同步,本发明规定由预置路径上的sr头节点负责,在控制器下发最新的authen-sid之后经过半个时间周期t/2,切换成最新序列号(sequence)的authen-sid;此时头节点使用最新的authen-sid计算第一认证码,并把此预置路径的pathid和最新序列号(sequence)写入报文。预置路径上的中间节点和尾节点根据报文中的pathid和sequence在本sr节点上获取对应的authen-sid,计算报文的第二认证码,对报文中的第一认证码进行认证。

本发明还提出一种基于时间周期的srv6传输路径认证系统,所述系统包括控制器和多个sr节点模块,所述控制器能够按照指定的周期向预置路径上所有的sr节点模块下发专属于此预置路径的authen-sid并向预置路径上的sr头节点模块下发用于控制报文转发路径的segmentlist;

所述sr头节点模块在发送报文时,利用所述segmentlist和所述预置路径对应的authen-sid进行计算并生成报文srh的第一认证码;

sr中间节点模块和sr尾节点模块在转发所述报文时需要利用所述segmentlist和此预置路径对应的authen-sid进行计算对第一认证码进行认证,认证的方式可以按照上述认证的方法进行;

所述认证的过程包括sr中间节点模块和sr尾节点模块利用所述segmentlist和所述预置路径的authen-sid进行计算并得到第二认证码;

若第二认证码和第一认证码一致,则所述sr中间节点模块或sr尾节点模块转发所述报文;

若第二认证码和第一认证码不一致,则所述sr中间节点模块或sr尾节点模块丢弃所述报文

所述预置路径上的sr节点模块按照功能分为sr头节点模块、sr中间节点模块和sr尾节点模块;

本系统中,sr中间节点节点模块可包含多个sr节点模块,并不经局限于单个sr节点模块。

一种存储介质,所述存储介质上储存有计算机程序,所述计算机程序被处理器执行时实现上述的方法。

下面将对本发明的方法做出举例

在一个实施例中,例如,第一步,控制器可以通过加密信道向预置路径上的sr头节点(图1所示a处节点)下发segmentlist,并设置认证算法;向预置路径上的sr中间节点(图1所示c节点,f节点)和sr尾节点(图1所示k节点)下发sid,并将sid设置认证属性;

segmentlist用于控制报文转发路径,同时下发认证算法(hash算法类型)携带在报文中,用于指导预置路径上的sr节点使用正确的hash算法对报文中的认证码进行认证。

第二步,控制器向预置路径上所有节点(如图1所示a、c、f、k处节点)下发三元组<pathid,sequence,authen-sid>,其中pathid唯一对应一个预置路径,是segmentlist的唯一编号;authen-sid用于和srh(不含认证扩展头)一起进行hash计算,计算认证码;sequence用于对指定时间周期t生成的authen-sid进行编号,并携带到报文中。pathid和sequence对应一个唯一的authen-sid,authen-sid只对本预置路径上的sr节点可见,报文不携带此字段。

第三步,sr头节点(a处节点)在发送报文时,对报文计算认证码,并以选项的方式放入srh头中;

认证码计算方式如下:

authenticatecode=crc32(h(sl#authen-sid))

sl#authen-sid:表示对srh头部的所有字段(除认证选项头外)和本路径的authen-sid进行串联拼接;

h():表示进行哈希值计算,常用的hash算法包括md5,sha-1等;

crc32:使用单位长度为32bit的crc算法,进行循环校验和计算;

第四步,sr中间节点(c、f处节点)在接收报文时,对报文中的认证码进行认证,认证方法如下:

当前sr节点的localsid(控制器为一个预置路径分配的,只属于某一个sr节点上的sid)关联认证动作,触发此报文进行认证

根据报文srh头option中的算法类型,选择hash算法h;根据报文中的pathid sequence取出本路径对应的认证sid(authen-sid);

通过crc32(h(sl#authen-sid))计算最终的认证码,比对计算出的认证码和报文中的认证码,认证码相同,认证通过,否则认证失败,丢弃报文;

在对srh头中的第一认证码认证通过后,更新srh头(segmentsleft字段需要更新)并对srh头重新计算认证码。认证码计算方式如下:

authenticatecode=crc32(h(sl#authen-sid));

第五步,sr尾节点(k处节点)在接收报文时,对报文中的认证码进行认证,认证方法如下:

当前sr节点的localsid(控制器为一个预置路径分配的,只属于某一个sr节点上的sid)关联认证动作,触发此报文进行认证

根据报文srh头option中的算法类型,选择hash算法h;根据报文中的pathid sequence取出本路径对应的认证sid(authen-sid);

通过crc32(h(sl#authen-sid))计算最终的认证码,比对计算出的认证码和报文中的认证码,认证码相同,认证通过,否则认证失败,丢弃报文。

在本发明中,通过利用隐藏式(不在报文中可见,对预置传输路径上所有sr节点可见)的认证sid(authen-sid)和segmentlist一起计算sr认证码的方法,对sr头部路径进行完整性校验,且认证sid(authen-sid)可变,基于时间周期t,周期性变化,利用报文srh头携带pathid和sequence用于在sr节点上查找认证sid(authen-sid),由于控制器更新authen-sid给各个sr节点并不完全同步,在预置路径最新sequence的authen-sid下发后,经过半个指定时间周期t,头节点开始启用最新authen-sid来完成头节点和其余sr节点切换authen-sid的同步,认证码哈希计算后,再通过crc算法对串联的哈希值进行压缩,以减少网络负载,sr节点的local-sid只关联认证动作,不关联具体参数使得认证动作和参数独立,既校验了segmentlist的完整性(防止被非法篡改),又能防止重放攻击,保证报文沿着控制器预定的转发路径转发,降低被非法攻击的风险。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。


技术特征:

1.一种基于时间周期的srv6传输路径认证方法,其特征在于:包括如下步骤:

控制器按照指定的周期向预置路径上的所有sr节点下发专属于此预置路径的authen-sid并向sr头节点下发用于控制报文转发路径的segmentlist,所述segmentlist能够携带在报文中并随着报文转发,所述authen-sid为认证sid,对预置路径上的所有sr节点可见;

所述sr头节点在发送报文时,利用所述segmentlist和所述预置路径的authen-sid进行计算并生成报文srh的第一认证码;

sr中间节点和sr尾节点在转发所述报文时需要对第一认证码进行认证。

2.根据权利要求1所述的一种基于时间周期的srv6传输路径认证方法,其特征在于,所述认证的过程包括sr中间节点和sr尾节点利用所述segmentlist和所述预置路径的authen-sid进行计算并得到第二认证码;

若第二认证码和第一认证码一致,则所述sr中间节点或sr尾节点转发所述报文;

若第二认证码和第一认证码不一致,则所述sr中间节点或sr尾节点丢弃所述报文。

3.根据权利要求2所述的一种基于时间周期的srv6传输路径认证方法,其特征在于,所述步骤还包括控制器向预置路径上的所有sr节点均下发pathid和sequence,并将所述pathid和sequence携带到报文中,所述sequence为每个周期产生的authen-sid对应的编号;

所述pathid唯一对应所述预置路径,所述pathid是segmentlist的唯一编号;

authen-sid只对所述预置路径上的所有sr节点可见,报文不携带所述authen-sid。

4.根据权利要求3所述的一种基于时间周期的srv6传输路径认证方法,其特征在于,所述认证的过程还包括:所述sr中间节点和sr尾节点关联认证动作,触发所述报文进行认证;

sr中间节点和sr尾节点根据报文中携带的pathid和sequence取出对应的authen-sid。

5.根据权利要求4所述的一种基于时间周期的srv6传输路径认证方法,其特征在于,所述segmentlist能够下发认证算法并将所述认证算法携带在报文中,所述认证算法用于指导预置路径上的sr节点使用hash算法对报文中的认证码进行认证。

6.根据权利要求5所述的一种基于时间周期的srv6传输路径认证方法,其特征在于,所述步骤还包括在最新sequence的authen-sid下发经过半个周期后,sr头节点才开始使用最新的sequence对应的authen-sid计算报文srh的认证码,中间sr节点和sr尾节点至少需要保存所述预置路径最新下发的两个sequence对应的authen-sid。

7.根据权利要求6所述的一种基于时间周期的srv6传输路径认证方法,其特征在于,所述认证码的计算方式如下:

authenticatecode=crc32(h(sl#authen-sid));

authenticatecode:认证码;

sl#authen-sid:表示对srh头部(除认证扩展头外)和本路径的authen-sid进行串联拼接;

h():表示进行哈希值计算;

crc32:使用单位长度为32bit的crc算法进行循环校验和计算。

8.一种基于时间周期的srv6传输路径认证系统,其特征在于,所述系统包括控制器和多个sr节点模块,所述控制器能够按照指定的周期向预置路径上的所有sr节点模块下发专属于此预置路径的authen-sid并向预置路径上sr头节点模块下发用于控制报文转发路径的segmentlist;

所述sr头节点模块在发送报文时,利用所述segmentlist和预置路径对应sequence的authen-sid进行计算并生成报文srh的第一认证码;

sr中间节点模块和sr尾节点模块在转发所述报文时需要利用所述segmentlist和预置路径对应sequence的authen-sid进行计算对第一认证码进行认证。

9.根据权利要求8所述的一种基于时间周期的srv6传输路径认证系统,其特征在于,所述认证的过程包括sr中间节点模块和sr尾节点模块利用所述segmentlist和所述预置路径的authen-sid进行计算并得到第二认证码;

若第二认证码和第一认证码一致,则所述sr中间节点模块或sr尾节点模块转发所述报文;

若第二认证码和第一认证码不一致,则所述sr中间节点模块或sr尾节点模块丢弃所述报文。

10.一种存储介质,其特征在于,所述存储介质上储存有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7任一权利要求所述的方法。

技术总结
本发明涉及网络通信技术领域,尤其是基于时间周期的SRv6传输路径认证方法、系统及存储介质,现提出如下方案,认证方法,包括如下步骤:控制器按照指定的时间周期向预置路径上的所有SR节点下发专属于此预置路径的Authen‑SID并向预置路径SR头节点下发用于控制报文转发路径的SegmentList,SegmentList能够携带在报文中并随着报文转发,所述SR头节点在发送报文时,利用所述SegmentList和所述预置路径对应的Authen‑SID进行计算并生成报文SRH的第一认证码,SR中间节点和SR尾节点在转发所述报文时需要对第一认证码进行认证。本发明通过周期性变化的认证SID,既校验了SegmentList的完整性(防止被非法篡改),又能防止重放攻击,保证报文沿着控制器预定的转发路径转发,降低被非法攻击的风险。

技术研发人员:王磊;邢业平;张晨;汪硕;黄韬
受保护的技术使用者:网络通信与安全紫金山实验室
技术研发日:2021.04.30
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-2394.html

最新回复(0)