一种格上支持细粒度属性撤销的分布式属性基加密方法与流程

文档序号:16060817发布日期:2018-11-24 12:09阅读:274来源:国知局

本发明涉及一种格上支持细粒度属性撤销的分布式属性基加密方法。

背景技术

21世纪是信息时代,随着电子医疗、即时通信、网上购物、在线视频等互联网技术的飞速发展,信息正在以一种前所未有的方式改变人类的日常生活。据中国互联网络信息中心(cnnic)发布的《第41次中国互联网统计报告》显示,截止2017年底,我国网民规模已达7.72亿,互联网普及率达到55.8%,比全球平均水平高4.1个百分点。庞大的网民群体产生了规模超乎想象的信息和数据,因此,如何实现海量信息和数据的安全存储,成为了当今社会亟待解决的难题。基于属性的加密方法利用属性对人群进行细粒度划分,能够实现一对多的数据共享过程,具有表达能力强、实用灵活、易于保护用户隐私的特点,为匿名性要求极高的云计算、电子医疗等网络的认证和数据机密性保护提供了有力的算法支撑。分析表明,现有基于属性的加密方法仍然存在以下不足:首先,现有基于属性的加密方法大多使用双线性对构造,其安全性均基于已被证明难以抵抗量子密码分析的diffie-hellman困难问题,因此,这些方法在“量子时代”难以保证存储数据的机密性;此外,这些方法在加解密过程需要进行大量耗时的双线性对运算,效率低下。其次,现有大多基于属性的加密方法并未考虑属性权限撤销的问题,而现实生活中,用户属性权限更新、密钥泄露是比较常见的情况,因此,如何在不影响系统其他用户的前提下,对特定用户的属性权限进行撤销,使其不能利用原有密钥解密密文是属性基加密方法需要重点研究的问题。再次,现有属性基加密方法大多由单个属性授权机构负责系统中所有属性密钥的分发和管理,若该属性授权机构被攻击者攻破,攻击者可以利用其密钥产生系统任意用户的属性密钥,因此,系统存在属性密钥托管问题。最后,现有基于属性的加密方法大多只能实现门限和and访问策略,访问策略不够灵活,难以实现支持任意布尔表达的访问策略。综上,设计一种格上支持细粒度属性撤销的分布式属性基加密方法具有重要的学术意义和广泛的应用价值。

shi等人“shiyf,zhengqj,liujq,zhenh.directlyrevocablekey-policyattribute-basedencryptionwithverifiableciphertextdelegation[j].informationsciences,2015,295:221-231.”基于多线性映射和二叉树思想,提出了一个支持直接撤销的kp-abe方案,该方案将用户身份嵌入用户属性更新密钥,通过更新撤销列表和密文的方式,直接撤销用户的全部访问权限。其属性权限撤销粒度粗,不能对多个属性权限逐一分别地进行细粒度属性权限撤销;同时,该方法在加密、重加密、解密过程需要进行大量多线性对运算,因此并不适用于计算资源受限的环境;此外,解密策略与用户密钥绑定,属性与密文绑定的方式限制了该方法的灵活性和实用性。

张欣威等人“张欣威,张串绒,尚福特.可撤销属性的格基属性加密方案[j].空军工程大学学报,2015,16(3):87-91.”于2015年提出了一种支持属性权限撤销的格基属性加密方法。该方法包括初始化、属性私钥生成、密钥更新、用户解密密钥生成、加密和解密六个阶段。该方法将格理论与基于属性的加密方案结合,引入属性撤销列表和二叉撤销树的思想,使得系统能够抵抗量子密码分析,同时支持细粒度的用户权限撤销。但是,该方法利用shamir秘密共享方法只能实现门限访问策略,使用不够灵活。此外,系统由单个属性授权机构负责系统中所有属性密钥的分发和管理,因此,存在属性密钥托管问题,安全性不高。



技术实现要素:

本发明的目的是提供一种格上支持细粒度属性撤销的分布式属性基加密方法,该方法安全性高,访问策略灵活,支持细粒度的属性权限撤销。

本发明实现其发明目的所采用的技术方案是,一种格上支持细粒度属性撤销的分布式属性基加密方法,其步骤是:

a、系统初始化

a1、系统公钥、私钥的生成

系统中心首先根据设定的安全参数λ,随机选取λ位的素数q,再随机选取位数小于λ的维数n和高斯参数α;随后选出满足关系式m≥5n·log2q的随机数m,作为列数m;

然后,系统中心随机生成一个n维目标向量u、并随机生成η+1个n行m列的撤销矩阵bj,j∈[0,η];其中,目标向量u和撤销矩阵bj中的元素均为小于素数q的随机数,j为撤销矩阵的的序号,η为用户属性撤销时间的位数;

系统中心对目标向量u进行线性秘密共享,并将子秘密分享值u发送给相应的属性授权机构,作为该属性授权机构的私钥;

a2、属性公钥、私钥的生成

属性授权机构拥有系统属性子空间w,w={w1,…,wi,…,w|w|}的密钥分发、管理权限;其中,wi为系统属性子空间w中的第i个系统属性,|w|为系统属性子空间w中系统属性wi的总数;

属性授权机构为其管理的第i个系统属性wi建立对应的二叉撤销树bti,即第i个系统属性wi的二叉撤销树bti;属性授权机构根据素数q和维数n利用陷门生成算法,算出系统属性子空间w中的第i个系统属性wi的公钥矩阵ai和私钥矩阵ti;其中,公钥矩阵ai为元素均小于素数q的n行m列矩阵,私钥矩阵ti为元素均小于素数q的m行m列矩阵;

b、用户属性密钥生成

b1、用户属性集合的构成

用户id的身份标识为id,用户id拥有的用户属性子集其中,用户属性子集为系统属性子空间w的子集,即表示用户属性子集中的第k个用户属性;为用户属性子集中用户属性的数目;且用户属性子集中的第k个用户属性是系统属性子空间w中的第i个系统属性wi,即将用户属性子集中的第k个用户属性命名为用户id的第i个系统属性wi,id,

b2、用户属性密钥生成

属性授权机构对子秘密分享值u进行二次线性秘密共享,得到用户id的第i个系统属性wi,id的二次子秘密分享值ui,id;并计算用户id的第i个系统属性wi,id在二叉撤销树bti中的节点密钥ski,id,θ,具体过程如下:

属性授权机构将用户id的身份标识id,存放于第i个系统属性wi的二叉撤销树bti中的空叶子节点;针对该叶子节点至二叉撤销树bti根节点的路径上的节点vi,θ,属性授权机构随机选择一个n维向量,作为用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的密钥向量其中,密钥向量中的元素均为小于素数q的随机数;θ为节点vi,θ在二叉撤销树bti中的编号;

然后,属性授权机构计算出用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的撤销密钥向量并将用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的密钥向量和撤销密钥向量存放于节点vi,θ中;

最后,属性授权机构根据高斯参数α,第i个系统属性wi的公钥矩阵ai、第i个系统属性wi的私钥矩阵ti和用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的密钥向量利用原象抽取算法生成用户id的第i个系统属性wi,id在节点vi,θ上的属性密钥

c、用户属性更新密钥生成

c1、二叉撤销树节点的选取

当用户id的第i个系统属性wi,id被撤销时,将该用户id命名为已撤销用户其身份标识记为同时将已撤销用户的身份标识记记入用户撤销列表rl;属性授权机构根据已撤销用户的第i个系统属性的二叉撤销树bti和用户撤销列表rl,得出已撤销用户的属性权限撤销时,二叉撤销树bti需要更新的节点的最小集合,即节点更新最小集合y;

c2、密钥向量和撤销密钥向量的更新

对于节点更新最小集合y中的任一节点vi,θ,vi,θ∈y,若存储的用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的密钥向量和撤销密钥向量不为空;则进行c3步的操作;否则,属性授权机构随机选择一个n维向量,更新用户id的第i个系统属性wi,id在节点vi,θ上的密钥向量其中,更新后的密钥向量中的元素均为小于素数q的随机数;

然后,属性授权机构利用用户id的第i个系统属性wi,id在节点vi,θ上的密钥向量和b2步中的用户id的第i个系统属性wi,id的二次子秘密分享值ui,id,根据等式得到用户id的第i个系统属性wi,id在节点vi,θ上的撤销密钥向量的更新值;并将更新后的密钥向量和撤销密钥向量存放于集合y中的节点vi,θ上;

c3、用户属性更新密钥的计算

将c1步中已撤销用户的第i个系统属性的属性权限撤销时刻,记为位数为η的二进制字符串t,即二进制撤销时间串t,t=(t1,…,tj,…,tη);其中,tj为二进制撤销时间串t中第j位的二进制字符;

属性授权机构首先利用二进制撤销时间串t和a1步的η+1个n行m列的撤销矩阵bj,j∈[0,η],计算得到撤销时间哈希值h(t),h(t)=b0+∑j∈[1,η]tj·bj;然后,属性授权机构根据高斯参数α、第i个系统属性wi的公钥矩阵ai及私钥矩阵ti、撤销时间哈希值h(t)和用户id的第i个系统属性wi,id在节点vi,θ上的撤销密钥向量运行左抽取算法生成用户id的第i个系统属性wi,id在节点vi,θ上的用户属性更新密钥

d、加密

d1、加密属性集合的构成

加密方选择加密属性子集合w*所述的加密属性子集合w*为系统属性子空间w的子集,即表示加密属性子集合w*中的第l个加密属性;|w*|表示加密属性子集合w*中加密属性的个数;且加密属性子集合w*中的第l个加密属性是系统属性子空间w中的第i个系统属性wi,即将加密属性子集合w*中的第l个加密属性命名为加密属性子集合的第i个系统属性

d2、第一子密文计算

加密方首先随机选取元素为小于素数q的n维向量作为加密向量s;然后,选取元素为小于素数q的服从分布参数为高斯参数α的高斯噪声x;最后,加密方利用加密向量s、高斯噪声x、素数q和a1步中的目标向量u,计算出消息m的第一子密文c1,其中,t为矩阵转置符号,为向下取整运算;

d3、第二子密文计算

加密方随机选取m个服从分布参数为高斯参数α的高斯噪声,组成m维噪声向量xi,作为加密属性子集合的第i个系统属性的加密噪声向量xi;并利用该加密噪声向量xi、加密向量s、第i个系统属性wi的公钥矩阵ai,加密向量s,计算出消息m的第二子密文的第i个部分ci,2,ci,2=ait·s+xi;将各个部分依次串联起来,得到消息m的第二子密文c2;

d4、第三子密文计算

加密方随机选取元素取值为-1或1的随机数构成m行m列的模糊矩阵ri,作为加密属性子集合的第i个系统属性的属性模糊矩阵ri,进而计算出加密属性子集合的第i个系统属性的加密预处理噪声向量zi,zi=(xi|ri·xi),其中,|表示行连接;

然后,加密方利用第i个系统属性wi的公钥矩阵ai和撤销时间哈希值h(t),通过链接的方式,生成加密属性子集合的第i个系统属性的重加密矩阵fi,fi=ai|h(t);

最后,加密方利用加密属性子集合的第i个系统属性的重加密矩阵fi,加密向量s和加密属性子集合的第i个系统属性的加密预处理噪声向量zi,计算出消息m的第三子密文的第i个部分ci,3,ci,3=fit·s+zi;将各个部分依次串联起来,得到消息m的第三子密文c3;

将消息m的第三子密文c1,第三子密文c2,第三子密文c3依次串联起来,得到消息m的密文c;

e、解密

e1、解密属性集合构成

用户id首先将用户属性子集与加密属性子集合w*的交集作为解密属性子集合其中,为解密属性子集合中的第r个解密属性,为解密属性子集合中解密属性的个数;且解密属性子集合中的第r个解密属性是系统属性子空间w中的第i个系统属性wi,将解密属性子集合中的第r个解密属性命名为解密属性子集合的第i个系统属性

e2、解密消息

用户id收到消息m的密文c后,判定解密属性子集合是否满足解密子策略;若解密属性子集合不满足解密子策略,算法中止;否则,用户id执行以下操作:

根据b2步中的二次线性秘密共享方法得到解密属性子集合的第i个系统属性的计算因子μi,id;并利用用户id的第i个系统属性wi,id在节点vi,θ上的属性密钥用户id的第i个系统属性wi,id在节点vi,θ上的用户属性更新密钥以及提取的消息m的第二子密文的第i个部分ci,2和消息m的第三子密文的第i个部分ci,3,根据等式计算出密文c对应的解密属性子集合的第i个系统属性的解密信息di;将密文c对应的解密属性子集合的所有系统属性的解密信息求和,得到密文c对应于属性授权机构的解密信息dsum;

然后,用户id利用所有密文c对应于属性授权机构的解密信息dsum,并根据a1步中的线性秘密共享方法,计算得到密文c的解密信息d;

最后,用户id将消息m的第一子密文c1与密文c的解密信息d的差值m'作为解密消息m',m'=c1-d;当解密消息m'满足不等式时,解密得到的消息m为1;否则,解密得到的消息m为0。

与现有技术相比,本发明的有益成果是:

一、通过多属性授权机构的方式,使得每个属性授权机构只负责系统中部分属性的密钥分发和管理权限。只有各属性授权机构管理的属性集合的并集满足解密策略时,利用所有它们生成的部分用户属性密钥才能解密密文。由于任意单个属性授权机构管理的属性集合均不满足解密策略,因此任意单个属性授权机构均无法生成完整的用户属性密钥解密密文。从而解决了已有技术存在的属性密钥由单一属性授权机构托管可能带来的泄密问题,提高了本发明方法的安全性。

二、利用线性秘密共享方法,能够实现任意满足任意布尔表达式的访问策略;并在秘密共享过程中选取不同的随机向量,使得不同用户针对同一属性的用户属性密钥也不相同。解决了已有技术访问结构不够灵活,无法抵抗拥有互补属性集合的恶意用户通过组合密钥的方式发动合谋攻击的问题。

三、通过引入属性撤销列表,借鉴二叉撤销树的思想,当特定用户的特定属性权限被撤销时,通过对消息的第三子密文和系统中未发生特定属性权限撤销的用户的用户属性更新密钥进行更新,使已撤销用户不能利用原有特定属性的用户属性更新密钥解密密文,而该用户其它属性的访问权限仍然有效,从而解决了已有技术难以实现细粒度属性权限撤销的问题。

总之,本发明通过分布式的方式,解决了现有基于属性的加密方法广泛存在的密钥托管问题;采用线性秘密共享方法,在秘密共享过程中选取不同的随机向量,实现了更为灵活的访问策略,并能抵抗合谋攻击;另外,通过二叉撤销树,使得系统能够细粒度地撤销用户的属性权限。其安全性高、访问策略灵活、支持细粒度的属性权限撤销,能够为云计算、电子医疗等网络的数据机密性保护提供有力的算法支撑。

下面结合具体实施方式对本发明作进一步的详细说明。

具体实施方式

实施例

一种格上支持细粒度属性撤销的分布式属性基加密方法,其步骤是:

a、系统初始化

a1、系统公钥、私钥的生成

系统中心首先根据设定的安全参数λ,随机选取λ位的素数q,再随机选取位数小于λ的维数n和高斯参数α;随后选出满足关系式m≥5n·log2q的随机数m,作为列数m;

然后,系统中心随机生成一个n维目标向量u、并随机生成η+1个n行m列的撤销矩阵bj,j∈[0,η];其中,目标向量u和撤销矩阵bj中的元素均为小于素数q的随机数,j为撤销矩阵的的序号,η为用户属性撤销时间的位数;

系统中心对目标向量u进行线性秘密共享,并将子秘密分享值u发送给相应的属性授权机构,作为该属性授权机构的私钥;

a2、属性公钥、私钥的生成

属性授权机构拥有系统属性子空间w,w={w1,…,wi,…,w|w|}的密钥分发、管理权限;其中,wi为系统属性子空间w中的第i个系统属性,|w|为系统属性子空间w中系统属性wi的总数;

属性授权机构为其管理的第i个系统属性wi建立对应的二叉撤销树bti,即第i个系统属性wi的二叉撤销树bti;属性授权机构根据素数q和维数n利用陷门生成算法,算出系统属性子空间w中的第i个系统属性wi的公钥矩阵ai和私钥矩阵ti;其中,公钥矩阵ai为元素均小于素数q的n行m列矩阵,私钥矩阵ti为元素均小于素数q的m行m列矩阵;

b、用户属性密钥生成

b1、用户属性集合的构成

用户id的身份标识为id,用户id拥有的用户属性子集其中,用户属性子集为系统属性子空间w的子集,即表示用户属性子集中的第k个用户属性;为用户属性子集中用户属性的数目;且用户属性子集中的第k个用户属性是系统属性子空间w中的第i个系统属性wi,即将用户属性子集中的第k个用户属性命名为用户id的第i个系统属性wi,id,

b2、用户属性密钥生成

属性授权机构对子秘密分享值u进行二次线性秘密共享,得到用户id的第i个系统属性wi,id的二次子秘密分享值ui,id;并计算用户id的第i个系统属性wi,id在二叉撤销树bti中的节点密钥ski,id,θ,具体过程如下:

属性授权机构将用户id的身份标识id,存放于第i个系统属性wi的二叉撤销树bti中的空叶子节点;针对该叶子节点至二叉撤销树bti根节点的路径上的节点vi,θ,属性授权机构随机选择一个n维向量,作为用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的密钥向量其中,密钥向量中的元素均为小于素数q的随机数;θ为节点vi,θ在二叉撤销树bti中的编号;

然后,属性授权机构计算出用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的撤销密钥向量并将用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的密钥向量和撤销密钥向量存放于节点vi,θ中;

最后,属性授权机构根据高斯参数α,第i个系统属性wi的公钥矩阵ai、第i个系统属性wi的私钥矩阵ti和用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的密钥向量利用原象抽取算法生成用户id的第i个系统属性wi,id在节点vi,θ上的属性密钥

c、用户属性更新密钥生成

c1、二叉撤销树节点的选取

当用户id的第i个系统属性wi,id被撤销时,将该用户id命名为已撤销用户其身份标识记为同时将已撤销用户的身份标识记记入用户撤销列表rl;属性授权机构根据已撤销用户的第i个系统属性的二叉撤销树bti和用户撤销列表rl,得出已撤销用户的属性权限撤销时,二叉撤销树bti需要更新的节点的最小集合,即节点更新最小集合y;

c2、密钥向量和撤销密钥向量的更新

对于节点更新最小集合y中的任一节点vi,θ,vi,θ∈y,若存储的用户id的第i个系统属性wi,id在二叉撤销树bti的节点vi,θ的密钥向量和撤销密钥向量不为空;则进行c3步的操作;否则,属性授权机构随机选择一个n维向量,更新用户id的第i个系统属性wi,id在节点vi,θ上的密钥向量其中,更新后的密钥向量中的元素均为小于素数q的随机数;

然后,属性授权机构利用用户id的第i个系统属性wi,id在节点vi,θ上的密钥向量和b2步中的用户id的第i个系统属性wi,id的二次子秘密分享值ui,id,根据等式得到用户id的第i个系统属性wi,id在节点vi,θ上的撤销密钥向量的更新值;并将更新后的密钥向量和撤销密钥向量存放于集合y中的节点vi,θ上;

c3、用户属性更新密钥的计算

将c1步中已撤销用户的第i个系统属性的属性权限撤销时刻,记为位数为η的二进制字符串t,即二进制撤销时间串t,t=(t1,…,tj,…,tη);其中,tj为二进制撤销时间串t中第j位的二进制字符;

属性授权机构首先利用二进制撤销时间串t和a1步的η+1个n行m列的撤销矩阵bj,j∈[0,η],计算得到撤销时间哈希值h(t),h(t)=b0+∑j∈[1,η]tj·bj;然后,属性授权机构根据高斯参数α、第i个系统属性wi的公钥矩阵ai及私钥矩阵ti、撤销时间哈希值h(t)和用户id的第i个系统属性wi,id在节点vi,θ上的撤销密钥向量运行左抽取算法生成用户id的第i个系统属性wi,id在节点vi,θ上的用户属性更新密钥

d、加密

d1、加密属性集合的构成

加密方选择加密属性子集合w*所述的加密属性子集合w*为系统属性子空间w的子集,即表示加密属性子集合w*中的第l个加密属性;|w*|表示加密属性子集合w*中加密属性的个数;且加密属性子集合w*中的第l个加密属性是系统属性子空间w中的第i个系统属性wi,即将加密属性子集合w*中的第l个加密属性命名为加密属性子集合的第i个系统属性

d2、第一子密文计算

加密方首先随机选取元素为小于素数q的n维向量作为加密向量s;然后,选取元素为小于素数q的服从分布参数为高斯参数α的高斯噪声x;最后,加密方利用加密向量s、高斯噪声x、素数q和a1步中的目标向量u,计算出消息m的第一子密文c1,其中,t为矩阵转置符号,为向下取整运算;

d3、第二子密文计算

加密方随机选取m个服从分布参数为高斯参数α的高斯噪声,组成m维噪声向量xi,作为加密属性子集合的第i个系统属性的加密噪声向量xi;并利用该加密噪声向量xi、加密向量s、第i个系统属性wi的公钥矩阵ai,加密向量s,计算出消息m的第二子密文的第i个部分ci,2,ci,2=ait·s+xi;将各个部分依次串联起来,得到消息m的第二子密文c2;

d4、第三子密文计算

加密方随机选取元素取值为-1或1的随机数构成m行m列的模糊矩阵ri,作为加密属性子集合的第i个系统属性的属性模糊矩阵ri,进而计算出加密属性子集合的第i个系统属性的加密预处理噪声向量zi,zi=(xi|ri·xi),其中,|表示行连接;

然后,加密方利用第i个系统属性wi的公钥矩阵ai和撤销时间哈希值h(t),通过链接的方式,生成加密属性子集合的第i个系统属性的重加密矩阵fi,fi=ai|h(t);

最后,加密方利用加密属性子集合的第i个系统属性的重加密矩阵fi,加密向量s和加密属性子集合的第i个系统属性的加密预处理噪声向量zi,计算出消息m的第三子密文的第i个部分ci,3,ci,3=fit·s+zi;将各个部分依次串联起来,得到消息m的第三子密文c3;

将消息m的第三子密文c1,第三子密文c2,第三子密文c3依次串联起来,得到消息m的密文c;

e、解密

e1、解密属性集合构成

用户id首先将用户属性子集与加密属性子集合w*的交集作为解密属性子集合其中,为解密属性子集合中的第r个解密属性,为解密属性子集合中解密属性的个数;且解密属性子集合中的第r个解密属性是系统属性子空间w中的第i个系统属性wi,将解密属性子集合中的第r个解密属性命名为解密属性子集合的第i个系统属性

e2、解密消息

用户id收到消息m的密文c后,判定解密属性子集合是否满足解密子策略;若解密属性子集合不满足解密子策略,算法中止;否则,用户id执行以下操作:

根据b2步中的二次线性秘密共享方法得到解密属性子集合的第i个系统属性的计算因子μi,id;并利用用户id的第i个系统属性wi,id在节点vi,θ上的属性密钥用户id的第i个系统属性wi,id在节点vi,θ上的用户属性更新密钥以及提取的消息m的第二子密文的第i个部分ci,2和消息m的第三子密文的第i个部分ci,3,根据等式计算出密文c对应的解密属性子集合的第i个系统属性的解密信息di;将密文c对应的解密属性子集合的所有系统属性的解密信息求和,得到密文c对应于属性授权机构的解密信息dsum;

然后,用户id利用所有密文c对应于属性授权机构的解密信息dsum,并根据a1步中的线性秘密共享方法,计算得到密文c的解密信息d;

最后,用户id将消息m的第一子密文c1与密文c的解密信息d的差值m'作为解密消息m',m'=c1-d;当解密消息m'满足不等式时,解密得到的消息m为1;否则,解密得到的消息m为0。

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