1.一种格上支持细粒度属性撤销的分布式属性基加密方法,其步骤是:
A、系统初始化
A1、系统公钥、私钥的生成
系统中心首先根据设定的安全参数λ,随机选取λ位的素数q,再随机选取位数小于λ的维数n和高斯参数α;随后选出满足关系式m≥5n·log2 q的随机数m,将随机数m作为列数m;
然后,系统中心随机生成一个n维目标向量U、并随机生成η+1个n行m列的撤销矩阵Bj,j∈[0,η];其中,目标向量U和撤销矩阵Bj中的元素均为小于素数q的随机数,j为撤销矩阵的的序号,η为用户属性撤销时间的位数;
系统中心对目标向量U进行线性秘密共享,并将子秘密分享值u发送给相应的属性授权机构,作为该属性授权机构的私钥;
A2、属性公钥、私钥的生成
属性授权机构拥有系统属性子空间W的密钥分发、管理权限,其中W={w1,…,wi,…,wW},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), 然后,属性授权机构根据高斯参数α、第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。