一种抗密钥暴露属性加密的SDN跨域访问控制方法与流程

文档序号:17584832发布日期:2019-05-03 21:13阅读:217来源:国知局
一种抗密钥暴露属性加密的SDN跨域访问控制方法与流程

本发明涉及sdn跨域访问控制方法,尤其涉及一种抗密钥暴露属性加密的sdn跨域访问控制方法,用于sdn跨域信息分享,属于网络信息安全领域。



背景技术:

软件定义网络(softwaredefinednetwork,简称sdn)将网络的控制层与数据层分离,不仅有利于降低网络当中的硬件成本,还使得网络管理员能够方便地对来自不同厂商的设备进行集中化的调试和管理。但同时sdn的一系列安全问题却成为了阻碍其进一步广泛应用的难题。其中最严重的问题之一就是如何在远程控制环境下保证由sdn控制器掌控的用户和设备敏感信息不被攻击者窃取。然而现有的sdn访问控制机制不足以实现灵活、高效而又准确的用户信息管理,尤其在部署多控制器的大型sdn环境中难以实现有效的跨域信息访问控制。因此在sdn环境中部署安全、灵活、高效的访问控制管理机制显得尤为重要。



技术实现要素:

为提高sdn跨域信息分享的安全性和高效性,本发明提出了一种抗密钥暴露属性加密的sdn跨域访问控制方法,其核心思想是:利用预计算技术将必要的双线性对计算并存储起来,加密者在进行加密时无需进行任何复杂的双线性对运算,提高了属性加密的计算效率。同时我们基于拓展图技术减少了预计算产生的双线性配对数量,进一步降低了预计算产生的存储开销。除此之外,将用户或者设备的mac地址嵌入到私钥当中,如果私钥当中的地址信息与设备本身不符则无法完整解密。这保证即使将私钥有意或者无意地暴露给其他非法用户或者设备,他们也无法获取此私钥获取敏感信息。

为实现上述发明目的,本发明采用以下技术方案:一种抗密钥暴露属性加密的sdn跨域访问控制方法,其特征在于:基于属性权威、sdn控制器、加密者和解密者四部分构成的控制系统,属性权威和sdn控制器位于控制层,加密者和解密者位于数据层,属性权威是一个可信的权威机构,负责所有属性的认证以及公钥、私钥的发布;sdn控制器负责收集、存储和管理sdn流表、路由以及数据量信息,sdn采用多控制设置,将sdn划分为多个sdn域,每一个域内部署唯一的sdn控制器,每个sdn控制器管理各自域内的重要信息,同时负责与其他域的sdn控制器交互;加密者是数据的初始拥有者,包括路由器、服务器、pc机和交换机构成的用户或sdn设备,用户或sdn设备能够上传自己的数据并根据自己的意愿或需求自由制定相应的访问策略;解密者是试图获取sdn控制器内信息的用户或者设备,其身份用一个属性集合来表示,解密者拥有一个与其属性集合相对应的私钥,并通过私钥来解密密文,解密者包括路由器、lot传感器、手机和交换机;包括以下步骤:

第一步:启动访问控制系统,属性权威调用初始化算法,输入一个安全参数k,生成公钥pk和主密钥msk,公钥pk向全网公开,主密钥msk由属性权威秘密保存;

第二步:解密者向属性权威发起私钥生成请求,输入自己唯一的mac地址amac、属性集合s、公钥pk以及主密钥msk,获得属性权威验证,属性权威调用私钥生成算法生成私钥sk,并将解密者的属性集合s和mac地址amac嵌入到私钥sk当中,最终输出与解密者mac地址以及属性集合相对应的私钥sk;

第三步:属性权调用预计算算法中的预处理子算法,预处理子算法输入公钥pk,根据公钥pk产生n个群上的元素集合并存储在列表l当中,其中attj为全局属性集合ω当中任意的属性,j表示该属性的唯一索引号,e表示从加法循环群映射到乘法循环群的双线性映射,p为的一个生成元,h1为哈希函数将任意一串二进制数组映射为群中的元素,α为主密钥msk当中的一个元素,ri为一个随机的整数,其中i∈{1,2,...,n},然后基于拓展图技术产生一个常数c(ε),其中0<ε<1,利用常数c(ε)计算一个新的常数ne=c(ε)log2(p),其中p为群的大素数阶,然后生成另外ne个群上的元素集合并存储在列表l′当中,其中di为随机数,i∈{1,2,...,ne};

第四步:加密者产生一组消息明文m,同时制定了相应的访问树γ,调用预计算算法中的元组生成子算法生成与访问树γ相对应的两个元组tuple1和tuple2;

第五步:加密者调用快速加密算法,输入一个访问树γ、公钥pk以及消息明文m,然后调用预处理子算法,在不执行任何指数运算的情况下通过元组tuple1和tuple2快速的生成关于消息明文m以及访问树γ的密文ct,最后将密文ct上传至域内的sdn控制器;

第六步:解密者向当前域的sdn控制器发送关于消息明文m的跨域访问请求,sdn控制器通过sdn域间传输交互获取密文ct,然后转发给解密者;

第七步:解密者调用解密算法,输入私钥sk、自己的mac地址amac以及获取的密文ct,如果解密者的属性集合s满足密文ct当中的访问树γ,而且其mac地址amac与私钥sk当中嵌入的mac地址信息一致,才能获取消息明文m,反之则无法获取任何有用的信息。

所述初始化算法的流程为:输入全局的属性集合ω={att1,att2,att3,,attn}以及一个安全参数k,其中attj是本发明中的解密者的任意属性,j∈{1,2,...,n}是该属性的唯一索引号,假设加法循环群和乘法循环群是阶为大素数p的双线性群,其中大素数p的比特位数由参数k决定,令p是的一个生成元,是群到群的双线性映射,然后定义一个拉格朗日函数使得一个索引集合s当中的任意一个索引i满足

定义两个哈希函数和h2:{0,1}48→zp,其中h1将任意一串二进制数组映射为群中的元素,h1将48bit的mac地址映射为zp上的元素,选择两个随机数α,β∈zp,最后生成公钥:pk={p,p,e,ω,e(p,p)α,h=βp,t=(1β)p,h1,h2},同时保存主密钥:msk={αp,β};

预处理子算法输入公钥pk,根据公钥pk产生n个群上的元素集合并存储在列表l当中,其中其中attj为全局属性集合ω当中任意的属性,j表示该属性的唯一索引号,e表示从加法循环群映射到乘法循环群的双线性映射,p为的一个生成元,h1为哈希函数将任意一串二进制数组映射为群中的元素,α为主密钥msk当中的一个元素,ri为一个随机的整数,其中i∈{1,2,...,n},然后基于拓展图技术产生一个常数c(ε),其中0<ε<1,利用常数c(ε)计算一个新的常数ne=c(ε)log2(p),其中p为群的大素数阶,然后生成另外ne个群上的元素集合并存储在列表l′当中,其中di为随机数,i∈{1,2,...,ne}。

所述私钥生成算法的流程为:首先输入公钥pk、主密钥msk、一个属性集合s以及一个mac地址amac,其次选择一个随机数r∈zp,然后计算d=((α+rh2(amac))β)p,对于任意一个属性attj∈s选择一个随机数rj∈zp并计算dj=(rp)·(rjh1(attj))和dj′=rjp,最后输出关于属性集合s的私钥:

所述预处理子算法和元组生成子算法共同组成预计算算法;

变量定义:y代表访问树γ的叶节点集合,ux代表子树γx包含的属性的集合,sx代表节点x的子节点集合,sx′代表节点x的子节点索引集合,c(ε)代表ε拓展图常数;

4.1预处理子算法:

1)生成n个随机数r1,r2,,rn∈zp;

2)对于计算rip以及

3)生成一张空列表l,对于添加到列表l当中;

4)计算ne=c(ε)log2(p)并生成ne个随机数

5)对于计算dip以及

6)生成一张空列表l′,对于添加到列表l′当中;

7)随机选择di,初始化参数t=di、t2=dip以及

4.2元组生成子算法:

元组生成算法输入一个访问树γ,输出与访问树γ相关的两个元组tuple1和tuple2;该算法由a1和a2两个算法组成,算法执行流程如下:

(1)对于访问树γ的根节点,执行a1算法:

1)在列表l′当中随机选择一组元素

2)重新赋值t2=t2+dip以及

3)随机提取一个集合使得|s|=k;

4)从列表l当中随机地抽取一组元素

5)声明并初始化变量如果e(p,p)αs是群的单位元则立即返回流程(1)当中的1)重新计算;

6)声明并初始化变量sp=t2+∑i∈srip以及最终返回元组:

(2)对于访问树中的任意节点x,继续执行a2算法:

1)声明并初始化常量d=kx-2;

2)从列表l′中随机选择一组元素

3)重新赋值变量t2=t2+dip以及

4)随机提取一个集合使得|sd|=k;

5)从列表l中随机选择一组元素

6)声明并初始化变量若cdp是群中的单位元则立即返回流程(2)当中的1)重新计算;

7)从列表l′当中随机选择一组元素

8)对于重新赋值变量t2=t2+dip;

9)对于重新赋值变量

10)随机选择一个集合使得|su|=k;

11)在列表l当中随机选择一组元素

12)对于声明并赋值变量

13)对于声明并赋值变量返回元组:

所述快速加密算法流程如下:

为了生成消息明文m与访问树γ相对应的密文,快速加密算法需要对访问树γ当中任意一个节点x产生一个次数为kx-1的随机多项式,为了减小加密的计算负担,利用预计算算法来生成每个节点的随机多项式,根据访问树γ的结构,采用一种自上而下的迭代方式:

对于访问树的根节点r,快速加密算法调用a1算法获取元组tuple1:

如果kr-1≠0,则继续调用a2算法获取元组tuple2:

利用获取的以上两个元组,同时声明并初始化常量dr=kr-2,然后定义一个次数为dr的多项式:

随后,关于根节点r的完整多项式为:

qr(x)=r(x)·x+s

对于计算:

对于访问树γ当中的任意节点x,调用a2算法获取元组tuple2:

声明并初始化常量dx=kx-2,利用上式中的系数ci定义一个次数为dx的多项式:

然后生成关于节点x的完整多项式:

qx(x)=r(x)·x+qparent(x)(index(x))

对于计算:

因此对于任意的叶节点x,快速加密算法通过迭代得到了qx(0)p和qx(0)h1(att(x)),最终生成如下的密文:

所述解密算法流程如下:

(1)首先定义一个迭代函数decryptnode,该函数的输入为密文私钥以及访问树γ当中的一个节点x,该算法的迭代过程如下:

如果x是叶节点,则令atti=att(x)并进行如下的判断与计算:

1)若atti∈s则计算并输出以下结果:

2)若则输出以下结果表示放弃该节点的计算:

decryptnode(ct,sk,x)=⊥

如果x是非叶节点,那么对于其任意子节点z调用函数decryptnode并记其返回结果为fz,然后进行如下的判断与计算:

3)判断是否存在关于节点x的包含kx子节点的集合sx,使得成立,若不存在,那么输出以下结果表示放弃该节点的计算:

4)若存在集合sx,计算并输出以下结果:

(2)进一步定义解密算法,分为两步:

1)首先从访问树γ的叶节点开始调用函数decyrptnode,如果属性集合s满足访问树γ,就能够通过层层迭代获取隐藏在根节点r当中的秘密,记为:

2)通过如下计算就可以得到消息明文m:

如果属性集合s不能满足访问树γ,那么将无法在多项式时间内恢复出根节点r当中的秘密,并且如果当前的mac地址信息与私钥sk当中的mac地址信息不吻合,即使恢复出根节点r当中的秘密也无法通过进一步的计算得到消息明文m,因此1)和2))只要任何一步不满足条件,都将导致解密算法退出执行。

本发明的优点及显著效果:

1、功能优势:将本发明与现有方法kkb方法、jra方法及hlm方法的功能进行了分析比较。其中kkb方法与jra方法无法对数据进行加密,只能制定固定的粗粒度访问策略,而且不支持快速加密与抗密钥暴露;hlm方法无法对数据进行加密,支持制定灵活的细粒度访问策略,但是不支持快速加密与抗密钥暴露;本发明不仅可以对数据进行加密,还支持制定灵活的细粒度访问策略,此外利用预计算技术实现了快速加密,而且可以有效防止私钥暴露。因此在访问控制的功能上,本发明具有显著的优势。比较结果如图2所示。

2、计算效率提升:为了说明本发明的加密效率,与现有bsw方法、lhs方法进行了加解密仿真实验。仿真硬件为intel(r)core(tm)i7-5600u@2.6ghz,内存为8g,系统为centos6.7,使用代码库为jpbc1.2.1,实验基于256位的椭圆曲线,曲线阶为120bit的大素数。实验在不同的属性数量条件下记录了20次加密所需的平均时间。

基于以上三种(bsw方法、lhs方法以及本发明)算法构建的sdn跨域访问控制模型在不同属性数量情况下的平均加密时间如图3所示。可以看出,在相同属性数量条件下,本发明的平均加密时间是最少的,约为bsw方法的50%,即只需要一半的算力就可以完成相同的加密计算。

附图说明

图1是本发明系统结构图;

图2是本发明功能增益效果示例图;

图3是本发明加密效率增益对比;

图4是本发明方法流程示意图。

具体实施方式

下面结合附图及实例来详细描述本发明。

参看图1,给出了基于抗密钥暴露快速属性加密的sdn跨域访问控制方法的系统组成结构图。包括属性权威、sdn控制器、加密者和解密者四种角色构成的控制系统。

属性权威:是一个可信的权威机构,负责所有属性的认证以及公钥私钥的发布。

sdn控制器:负责收集、存储和管理sdn流表、路由以及数据量等重要信息,其中包含各类用户或者设备的敏感信息。本发明针对大型sdn采用多控制设置,将sdn划分为多个sdn域,每一个域内部署唯一的sdn控制器。每个sdn控制器管理各自域内的重要信息,同时负责与其他域的sdn控制器交互。

加密者:是数据的初始拥有者(可以是用户,也可以是sdn设备),能够上传自己的数据并根据自己的意愿或需求自由制定相应的访问策略。

解密者:是试图获取sdn控制器内信息的用户或者设备,其身份用一个属性集合来表示。解密者拥有一个与其属性集合相对应的私钥,并通过私钥来解密密文。

参看图4,本发明的方法流程如下:

第一步:启动访问控制系统,利用属性权威注册sdn所有用户以及设备属性,构建全局属性集合ω={att1,att2,att3,,attn},调用初始化算法生成如下的公钥pk和主密钥msk:

pk={p,p,e,ω,e(p,p)α,h=βp,t=(1/β)p,h1,h2}

msk={αp,β}

第二步:sdn某域中的用户或设备请求属性权威发布私钥,该用户或设备向属性权威验证自己的属性集合s和mac地址amac。属性权威调用私钥生成算法生成其私钥sk,将其属性集合s和mac地址amac嵌入到私钥sk当中,私钥sk如下:

第三步:属性权威利用预计算技术,调用预计算算法中的预处理算法,根据公钥pk产生n个群上的元素集合并存储在列表l当中。同时利用拓展图技术,产生一个基于拓展图参数c(ε)的常数ne=c(ε)log2(p),然后产生另外ne个群上的元素集合并存储在列表l′当中。

第四步:sdn某域中的用户或者设备产生一组关键信息m并根据该信息制定了相应的访问树γ,调用预计算算法中的元组生成算法生成与访问树γ相对应的如下两个元组tuple1和tuple2:

第五步:该用户或设备调用快速加密算法,在不执行任何指数运算的情况下通过元组tuple1和tuple2快速的生成关于信息m以及访问树γ的密文ct:

第六步:sdn某域当中的用户或设备向当前域的sdn控制器请求访问关于某用户或设备的关键信息m,如果该信息属于当前sdn域,则控制直接将关于该信息的密文ct直接发送给这个用户或设备。否则当前域sdn控制器与其sdn域交互查询关键信息m所属的sdn域,找到后通过sdn控制器之间的交互获取关于该信息的密文ct,然后发送给请求获取信息的用户或设备。

第七步:该用户或设备调用解密算法,输入私钥sk、自己的mac地址amac以及刚刚获取的密文ct。如果私钥sk当中嵌入的属性集合s满足密文ct当中的访问树γ,而且其mac地址amac与私钥sk当中嵌入的mac地址信息一致,才能获取该信息的访问权限从而恢复出信息m。反之则无法获取任何有用的信息。

上述七个步骤中,涉及的初始化算法、私钥生成算法、预计算算法、快速加密算法和解密算法共五个算法的具体实施方式如下:

1、初始化算法:由属性权威执行。算法输入一个安全参数k,输出公钥pk和主密钥msk,其中公钥pk向全网公开,而主密钥msk由属性权威秘密保存。首先初始化算法输入全局的属性集合ω={att1,att2,att3,,attn}以及一个安全参数k。假设是阶为大素数p的双线性群,其中大素数p的比特位数由参数k决定。令p是的一个生成元,是群到群的双线性映射。然后定义拉格朗日函数δi,s(x),使得集合s当中的任意一个元素i都有:

此外定义两个哈希函数和h2:{0,1}48→zp。其中h1将任意一串二进制数组映射为群中的元素,h1将48bit的mac地址映射为zp上的元素。选择两个随机数α,β∈zp。最后生成如下公钥:

pk={p,p,e,ω,e(p,p)α,h=βp,t=(1/β)p,h1,h2}

同时保存如下的主密钥:

msk={αp,β}

2、私钥生成算法:由属性权威执行。解密者发起密钥生成请求时输入其唯一的mac地址amac、属性集合s、公钥pk以及主密钥msk,最终输出与其mac地址以及属性集合相对应的私钥sk。私钥生成算法首先输入公钥pk、主密钥msk、一个属性集合s以及一个mac地址amac。其次选择一个随机数r∈zp,然后计算d=((α+rh2(amac))/β)p。对于任意一个属性attj∈s选择一个随机数rj∈zp并计算dj=(rp)·(rjh1(attj))和dj′=rjp。最后输出关于属性集合s的私钥:

3、预计算算法:由属性权威执行。算法由两个子算法组成,分别是预处理子算法以及元组生成算法。预处理子算法输入公钥pk,输出两组列表l和l′。元组生成算法输入一个访问树γ,输出与访问树γ相对应的元组tuple1和tuple2。

预计算算法由两个子算法组成,分别为预处理子算法和元组生成子算法。变量定义如表1所示。

表1变量定义说明

3.1、预处理子算法

1)生成n个随机数r1,r2,,rn∈zp;

2)对于计算rip以及

3)生成一张空列表l,对于添加到列表l当中;

4)计算ne=c(ε)log2(p)并生成ne个随机数

5)对于计算dip以及

6)生成一张空列表l′,对于添加到列表l′当中;

7)随机选择di,初始化参数t=di、t2=dip以及

3.2、元组生成子算法

元组生成算法输入一个访问树γ,输出与访问树γ相关的两个元组。该算法由a1和a2两个算法组成,对于访问树γ的根节点,执行a1算法:

1)在列表l′当中随机选择一组元素

2)重新赋值t2=t2+dip以及

3)随机提取一个集合使得|s|=k;

4)从列表l当中随机地抽取一组元素

5)声明并初始化变量如果e(p,p)αs是群的单位元则立即返回步骤1重新计算;

6)声明并初始化变量sp=t2+∑i∈srip以及最终返回元组:

对于访问树中的任意节点x,继续执行a2算法:

1)声明并初始化常量d=kx-2;

2)从列表l′中随机选择一组元素

3)重新赋值变量t2=t2+dip以及

4)随机提取一个集合使得|sd|=k;

5)从列表l中随机选择一组元素

6)声明并初始化变量若cdp是群中的单位元则立即返回步骤1重新计算;

7)从列表l′当中随机选择一组元素

8)对于重新赋值变量t2=t2+dip;

9)对于重新赋值变量

10)随机选择一个集合使得|su|=k;

11)在列表l当中随机选择一组元素

12)对于声明并赋值变量

13)对于声明并赋值变量返回元组:

4、快速加密算法:由加密者执行,算法首先输入一个访问树γ、公钥pk以及消息明文m,然后通过调用预处理算法输出与访问树γ对应的密文ct,最后将密文ct上传至域内的sdn控制器。为了生成于明文m与访问树γ相对应的密文,快速加密算法需要对访问树γ当中任意一个节点x产生一个次数为kx-1的随机多项式。为了减小加密的计算负担,我们利用预计算算法来生成每个节点的随机多项式。根据访问树γ的结构,这种方法采用一种自上而下的迭代方式:

对于访问树的根节点r,快速加密算法调用a1算法获取元组:

如果kr-1≠0,则继续调用a2算法获取元组:

利用获取的以上两个元组,同时声明并初始化常量dr=kr-2,然后定义一个次数为dr的多项式:

随后,关于根节点r的完整多项式为:

qr(x)=r(x)·x+s

对于计算:

对于访问树γ当中的任意节点x,调用a2算法获取元组:

声明并初始化常量dx=kx-2,利用上式中的系数ci定义一个次数为dx的多项式:

然后生成关于节点x的完整多项式:

qx(x)=r(x)·x+qparent(x)(index(x))

对于计算:

因此对于任意的叶节点x,快速加密算法通过迭代得到了qx(0)p和qx(0)h1(att(x))。最终生成如下的密文:

5、解密算法:由解密者执行,输入其mac地址amac、密文ct以及私钥sk,当解密者的属性集合满足访问策略,同时其mac地址与隐藏在私钥sk当中的mac地址信息相吻合时,才会输出消息明文m,否则退出执行。首先定义一个迭代函数decryptnode,该函数的输入为密文私钥以及访问树γ当中的一个节点x。该算法的迭代过程如下:

如果x是叶节点,则令atti=att(x)并进行如下的判断与计算:

1)若atti∈s则计算并输出以下结果:

2)若则输出以下结果表示放弃该节点的计算:

decryptnode(ct,sk,x)=⊥

如果x是非叶节点,那么对于其任意子节点z调用函数decryptnode并记其返回结果为fz。然后进行如下的判断与计算:

3)判断是否存在关于节点x的包含kx子节点的集合sx,使得成立。若不存在,那么输出以下结果表示放弃该节点的计算:

4)若存在集合sx,计算并输出以下结果:

到目前为止,我们定义了函数decyrptnode,现在进一步定义解密算法。算法首先从访问树γ的叶节点开始调用函数decyrptnode。如果属性集合s满足访问树,那么就可以通过层层迭代获取隐藏在根节点r当中的秘密,记为:

随后通过如下计算就可以得到明文:

反之,如果属性集合s不能满足访问树γ,那么将无法在多项式时间内恢复出根节点r当中的秘密。与此同时,如果当前的mac地址信息与私钥sk当中的mac地址信息不吻合,即使恢复出根节点r当中的秘密也无法通过进一步的计算得到消息明文。以上两步中只要任何一步不满足条件,都将导致解密算法退出执行。

如图2所示,本发明与现有方法kkb方法、jra方法及hlm方法的功能进行了分析比较,其中kkb方法与jra方法无法对数据进行加密,只能制定固定的粗粒度访问策略,而且不支持快速加密与抗密钥暴露;hlm方法无法对数据进行加密,支持制定灵活的细粒度访问策略,但是不支持快速加密与抗密钥暴露;本发明不仅可以对数据进行加密,还支持制定灵活的细粒度访问策略,此外利用预计算技术实现了快速加密,而且可以有效防止私钥暴露。因此在访问控制的功能上,本发明具有显著的优势。

如图3所示,本发明构建的sdn跨域访问控制模型在不同属性数量情况下的平均加密时间,可以看出,在相同属性数量条件下,本发明的平均加密时间是最少的,约为bsw方法的50%,即只需要一半的算力就可以完成相同的加密计算。

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