一种软件定义网络中网络设备群组认证方法
技术领域
本发明涉及一种软件定义网络中网络设备群组认证方法,具体涉及一种基于聚合签名技 术的群组认证方法,属于通讯领域。
背景技术
随着互联网技术的快速发展,软件定义网络(Software Defined Network,SDN)由于其 通过使用控制器将网络控制平面与数据平面分离开来,提高了网络安全、可管理和控制的能 力,在很多行业都有良好的应用空间,而目前SDN存在首要的问题就是安全问题。对于SDN 中的控制器来说,获得真实数据平面的参数是实施控制和管理的必要操作。因此,对SDN中 网络设备实施身份认证,保证控制器收集网络设备参数的真实性,从而及时发现网络设备问 题尤为关键。SDN的正常工作是由多个网络设备组成多条数据链路完成。因此,对SDN每 条数据链路上的网络设备实施认证,从而保证数据链路中网络设备的真实性是重要的工作。
SDN中网络设备群组认证指的是控制器对一条数据链路中网络设备统一实施的认证。目 前,该类认证可以使用传统一对一认证的方法,即控制器逐一认证该数据链路中每一个网络 设备,毫无疑问这种认证方法是可行的。但是,由于每认证一个网络设备,控制器都需要同 控制器进行多次通讯,这种认证方法会过多占用控制器和网络设备之间的带宽资源,同时增 加控制器的资源消耗,降低控制器的安全阈值。随着SDN的逐步应用,控制器管理网络设备 的数量逐渐增多,网络设备的认证效率也在逐步提高,传统认证方式已经不能满足SDN对一 条网络设备链路上网络设备实施认证的需求。因此,本发明提出一种SDN中网络设备群组认 证方法,对SDN应用和推广有十分重要的理论价值和现实意义。
发明内容
本发明的目的在于克服现有技术解决SDN中网络设备群组认证的不足,提出一种软件定 义网络中网络设备群组认证方法,它是一种通过聚合签名组合各个网络设备的签名,最终由 控制器统一实施认证的方法,不但能够有效解决网络设备群组认证问题,同时避免传输过多 冗余签名信息,降低了网络设备群组认证的对带宽资源的消耗。
为了达到上述目的,本发明综合运用SDN网络结构和聚合签名技术,其技术方案如下。
主要的数学符号及算法解释:
1)双线性映射
G1×G1→G2,本发明方案的初始化模块中,通过输入安全参数λ,然 后运行算法g(1λ)可获得两个阶数为素数q的循环群G1和G2。
双线性映射满足下述三个特性:
①双线性特性:对于所有的g,h∈G1,a,b∈ZN有
成立;
②非退化性:G1群中至少存在一个元素g,使得计算后的
在G2群中有阶数q;
③可计算性:存在有效的算法,使得所有的g,h∈G1可以有效计算出
的值;
2)杂凑算法:本发明中使用的抗碰撞杂凑函数H1,H2:{0,1}*→G1具备两个基本特性: 单向性和抗碰撞性;单向性是指只能从杂凑函数输入推导出输出,而不能从杂凑函数输出计 算出输入;抗碰撞性是指不能同时找到两个不同的输入使杂凑函数输出结果完全相同。
本发明公开一种实现SDN中网络设备群组认证方法,它包含两大类实体:控制器和网络 设备。其中,网络设备可按照在网络设备链路中的位置细分三种实体:起始网络设备、中间 网络设备和末端网络设备。综上所述,本发明所涉共计4种实体:1)控制器:根据系统安全 参数产生公钥和主密钥,计算发放网络设备秘密值和签名挑战,并最终实施网络设备群组认 证的设备;2)起始网络设备:待认证网络设备链路中第一个网络设备,其接收控制器下发的 签名指令和挑战,完成签名和数据转发至后一个中间网络设备;3)末端网络设备:待认证网 络设备链路中最后一个网络设备,其接收最后一个中间网络设备发送的数据和签名,并将签 名和聚合后的签名发送给控制器;4)中间网络设备:待认证网络设备链路中除起始网络设备 和末端网络设备外的网络设备,其顺序接收前一个网络设备发送的数据和签名,待完成签名 和签名聚合后将聚合后的签名发送至后一个网络设备,其中第一个中间网络设备接收起始网 络设备的数据,最后一个中间网络设备向末端网络设备发送数据。
本发明分三个模块顺序执行,即初始化模块、签名模块和验证模块,共有7个步骤。本 发明一种软件定义网络中网络设备群组认证方法,该方法具体实施步骤如下:
模块一:初始化模块。控制器根据系统安全参数λ作为输入,输出公钥PK和主密钥MSK。 公钥PK对外公开,主密钥MSK则由控制器保管。同时控制器设置网络设备的秘密值sPi,待 后期实施认证使用。该模块功能的具体实现分为四步:
步骤1:控制器首先输入系统安全参数λ,输出两个阶数为素数q的群G1、G2和一个双 线性映射运算
G1×G1→G2。控制器随机选择群G1中的一个生成元P,同时选择数域Z/qZ 中的一个随机元素s,并计算Q=sP。控制器选择两个杂凑函数H1,H2:{0,1}*→G1。
至此,控制器可以得到:公钥
主密钥MSK=(s)。其中,PK 作为公共参数对外公开,MSK作为秘密值由控制器保管,并保证不被泄露。
步骤2:控制器根据网络设备的身份IDi,计算秘密值sPi,并通过安全的通道将此秘密值 分发给相应的用户。身份为IDi的网络设备获得秘密值sPi,自己秘密保存。
模块二:签名模块。控制器发出签名挑战m,起始网络设备收到签名挑战后形成签名挑 战数据包进入待认证链路,数据包依次在链路中的网络设备传递、签名和聚合,直至末端网 络设备完成签名后并由其将签名(Pm,Sn,Tn)返回控制器。
步骤3:控制器选择随机值m∈{0,1}*作为签名挑战,并和待认证网络设备链路起始网络 设备IP地址Addressstart和末端网络设备IP地址Addressfinal形成数据包Data。控制器通过南 向接口向起始网络设备发送数据包Data。
步骤4:起始网络设备ID1接到控制器下发的Data,计算签名(S1,T1)和相邻网络设备认证 秘密值
然后将签名挑战杂凑值、签名值和相邻网络设备认证秘密值 Data1=(Pm,S1,T1,P1')组合发送到下一个中间网络设备ID2。
步骤5:中间网络设备IDi,i∈(2,3,…,n-1)接收到与其相连的网络设备IDi-1发来的数据 (Pm,Si-1,Ti-1,P′i-1),首先进行上一网络设备认证,如果失败发出认证失败消息“Fail”,如果成 功则继续运行模块。中间网络设备IDi计算自己的签名(S′i,T′i)和计算相邻网络设备认证秘密值
然后将签名挑战杂凑值、签名值和相邻网络设备认证秘密值 Datai=(Pm,Si,Ti,P′i)组合发送下一个网络设备IDi+1。重复运行步骤7直至所有的中间网络设 备全部运行完毕,即IDn-1发出(Pm,Sn-1,Tn-1,P′n-1)。
步骤6:末端网络设备IDn接收到签名挑战杂凑值、签名值和相邻网络设备认证秘密值 (Pm,Sn-1,Tn-1,P′n-1),首先进行上一网络设备认证,如果失败发出认证失败消息“Fail”,如果 成功则继续运行模块。末端网络设备IDn计算自己的签名(S'n,T′n),并将签名和签名挑战 Datan=(Pm,Sn,Tn)通过南向接口转发到控制器。
模块三:验证模块。控制器输入签名和签名挑战(Pm,Sn,Tn),输出认证失败消息“Fail” 或认证成功消息“Success”。
步骤7:控制器验证挑战值的正确性,如果失败则发出认证失败消息“Fail”,如果成功 则继续运行模块。控制器验证签名(Sn,Tn),如果成功输出认证成功消息“Success”,否则发 出认证失败消息“Fail”。
本发明与现有方法相比的积极效果和优点在于:
提出了SDN中网络设备群组认证方法,充分利用网络设备和控制器间的南向接口和网络 设备间的数据链路,控制器仅需一次认证就可以完成一条网络设备链路上的全部网络设备认 证,减少了传统认证方法对控制器带宽的消耗;SDN网络设备签名模块中包含上一网络设备 认证步骤,能够及时发现上一网络设备的身份问题;采用聚合签名的技术,可以有效节约网 络设备间传输签名数据带来的带宽消耗。
附图说明
图1是本发明一种软件定义网络中网络设备群组认证方法总体流程。
图中符号说明如下:
步骤1,步骤2,步骤3,步骤4,步骤5,步骤6代表本发明方法的各个步骤和序号; PK代表控制器生成并公开的公钥;Data代表控制器通过南向接口向起始网络设备发送的数 据包;ID1代表初始网络设备的身份;sP1代表控制器计算并分发给ID1的秘密值;Data1代表 初始网络设备ID1向与其相连的下一个网络设备发送的数据包;ID2代表第一个中间网络设备 的身份;sP2代表控制器计算并分发给ID2的秘密值;Data2代表中间网络设备ID2向与其相连 的下一个网络设备发送的数据包;IDi,i∈(2,…,n-1)代表某一个中间网络设备的身份;sPi代 表控制器计算并分发给IDi的秘密值;Datai代表中间网络设备IDi向与其相连的下一个网络设 备发送的数据包;Datan-1代表网络设备IDn-1向与其相连的末端网络设备发送的数据包;IDn代表末端网络设备的身份;sPn代表控制器计算并分发给IDn的秘密值;Datan代表末端网络 设备IDn向控制器发送的数据包;认证失败“Fail”代表网络设备发出认证失败指令给控制器; (Pm,Sn,Tn)代表代表末端网络设备IDn向控制器发送的数据包具体内容,其中Pm为签名挑战, Sn和Tn为对签名挑战Pm的签名;“Fail”或“Success”代表控制器输出认证失败消息“Fail” 或认证成功消息“Success”。
具体实施方式
下面将结合附图1和实施例对本发明作进一步的详细说明。
在本实施例中,SDN包含控制器和n∈(3,4,5,…)个网络设备,网络设备的身份为 IDi,i∈(1,…,n),即ID1为初始网络设备身份,ID2~IDn-1为中间网络设备身份,IDn为末端网 络设备身份。
模块一:初始化模块。控制器根据系统安全参数λ作为输入,输出公钥PK和主密钥MSK。 公钥PK对外公开,主密钥MSK则由控制器保管。同时控制器设置网络设备的秘密值sPi,待 后期实施认证使用。该模块功能的具体实现分为四步:
步骤1:控制器首先输入系统安全参数λ,然后运行算法g(1λ),输出两个阶数为素数q的 群G1、G2和一个双线性映射运算
G1×G1→G2。其中,所述的“运行算法g(1λ)”,其做法 如下:控制器根据输入的安全参数λ的大小,选择合适的椭圆曲线:y2=x3+ax+b(其中 a和b是系数)。根据所选椭圆曲线上的点构成群G1和G2选择一种函数映射
将群G1中的 元素映射到群G2中去;安全参数λ数值越大,所选择椭圆曲线上的点也越多,群也越大。
然后,控制器运行随机数生成算法,随机选择群G1中的一个生成元P,同时选择数域 Z/qZ中的一个随机元素s,并计算Q=sP。其中,所述的“运行随机数生成算法”,其做法 如下:根据步骤1中所选的椭圆曲线:y2=x3+ax+b,随机选择自变量x的一个值x1,计算 对应变量y的值y1;若点(x1,y1)在我们想要映射的群中,则成功生成了随机元素。若点(x1,y1) 不在群中,则继续选择x的值,直到找到出现在群G1中的点。下文中的运行随机数生成算法 相同。
接着,控制器选择两个杂凑函数H1,H2:{0,1}*→G1。其中,所述的“杂凑函数 H1,H2:{0,1}*→G1”表示:将由二进制数0和1组成的字符串通过杂凑函数H1,H2映射到群
中。
至此,控制器可以得到:公钥
主密钥MSK=(s)。其中,PK 作为公共参数对外公开,MSK作为秘密值由控制器保管,并保证不被泄露。
步骤2:网络设备拥有身份IDi∈{0,1}*,网络设备自身的IDi对外公开。控制器根据网络 设备的身份IDi,计算秘密值sPi=sH1(IDi)。之后,控制器通过安全的通道将此秘密值分发给 相应的用户。身份为IDi的网络设备获得秘密值sPi,自己秘密保存。其中,所述的“网络设 备选择身份IDi∈{0,1}*”表示:网络设备身份是由二进制数0和1组成的字符串。
模块二:签名模块。控制器发出签名挑战m,起始网络设备收到签名挑战后形成签名挑 战数据包进入待认证链路,数据包依次在链路中的网络设备传递、签名和聚合,直至末端网 络设备完成签名后并由其将签名(Pm,Sn,Tn)返回控制器。
步骤3:控制器运行随机数生成算法,选择随机值m∈{0,1}*作为签名挑战,并和待认证 链路起始网络设备IP地址Addressstart和末端网络设备IP地址Addressfinal形成数据包 Data=(m,Addressstart,Addressfinal)。控制器通过南向接口向起始网络设备发送数据包Data。
步骤4:起始网络设备ID1接到控制器下发的Data,计算Pm=H2(m)∈G1,运行随机数生 成算法产生随机值r1∈Z/qZ,计算签名(S1,T1),其中S1=r1Pm+sP1和T1=r1P。起始网络 设备根据与其相连的中间网络设备ID2,计算P2=H2(ID2),并以此计算相邻网络设备认证秘 密值
然后将签名挑战杂凑值、签名值和相邻网络设备认证秘密值 Data1=(Pm,S1,T1,P′1)组合发送到下一个中间网络设备ID2。
步骤5:中间网络设备IDi,i∈(2,3,…,n-1)接收到上一个网络设备IDi-1发来的数据 (Pm,Si-1,Ti-1,P′i-1),首先计算Pi-1=H2(IDi-1),并用其和自己的秘密值sPi计算相邻网络设备认 证秘密值
比对
是否同上一个设备发来P′i-1相等,如果不相等则发出认证失 败消息“Fail”,如果相等则继续运行模块。中间网络设备IDi产生随机值ri∈Z/qZ,计算自 己的签名(S′i,T′i),其中S′i=riPm+sPi和T′i=riP。然后计算签名Si=Si-1+S′i和Ti=Ti-1+T′i。 中间网络设备IDi根据与其相连的网络设备IDi+1,计算Pi+1=H2(IDi+1),并以此计算相邻网络 设备认证秘密值
然后将签名挑战杂凑值、签名值和相邻网络设备认证秘密值 Datai=(Pm,Si,Ti,P′i)组合发送下一个网络设备IDi+1。重复运行步骤7直至所有的中间网络设 备全部运行完毕,即IDn-1发出(Pm,Sn-1,Tn-1,P′n-1)。
步骤6:末端网络设备IDn接收到签名挑战杂凑值、签名值和相邻网络设备认证秘密值 (Pm,Sn-1,Tn-1,P′n-1),首先计算Pn-1=H2(IDn-1),并用其和自己的秘密值sPn计算相邻网络设备 认证秘密值
比对
是否同上一个网络设备发来P′n-1相等,如果不相等则发 出认证失败消息“Fail”,如果相等则继续运行模块。末端网络设备IDn产生随机值rn∈Z/qZ, 计算自己的签名(S'n,T′n),其中S'n=rnPm+sPn和T′n=rnP。然后计算Sn=Sn-1+S'n和 Tn=Tn-1+T′n并将签名和签名挑战Datan=(Pm,Sn,Tn)通过南向接口转发到控制器。
模块三:验证模块。控制器输入签名和签名挑战(Pm,Sn,Tn),输出认证失败消息“Fail” 或认证成功消息“Success”。
步骤7:控制器利用签名挑战m计算Pm=H2(m),并比对Pm是否同末端网络设备发来的 Pm相等,如果不相等则发出认证失败消息“Fail”,如果相等则继续运行模块。控制器分别 计算
和
判断二者是否相等,如果相等输出认证成功消息 “Success”,否则发出认证失败消息“Fail”。
通过上述模块和步骤,我们实现了SDN中网络设备群组认证的方案。