1.一种可验证解密权限的策略隐藏属性基加密方法,其特征在于,包括如下步骤:A、系统初始化,包括生成系统参数以及云辅助下的布隆过滤器CBF,系统参数包括公开参数PK以及主密钥MSK;
B、生成用户参数,包括用户属性私钥SK、用户标签tag以及用户转换密钥TK;
C、生成密文CT和验证量,该验证量包括外包验证量Ver以及权限验证量pf,用户输出数据组{CT,Ver,pf}并发送给云服务器;
D、验证和解密
通过查看方用户的用户标签tag和被查看方用户的权限验证量pf进行解密权限验证和匹配,如果匹配成功,则通过云服务器为查看方用户提供部分解密服务以及查看方用户解密两阶段进行解密,并进行外包验证,以保证外包计算的正确性;
步骤C中密文CT的生成包括:
用户首先制定访问策略A=(M,ρ),即满足所述访问策略的用户才有权查看自己的数据,ρ为行向量Mj映射到属性ρ(j)上的函数,j∈[1,l],l为生成矩阵M的行数;
加密算法首先选择随机向量 其中,s,v2,…vn均为 中的随机值,对于j∈[1,l],随机选rj∈ZN,Fj,Fj',fj∈Gp4,其中,Fj,Fj',fj均为Gp4中的随机值,Gp4为N的αs s b s循环群G的p4阶子群,生成密文CT={C=message·e(g,g) ,C′=g ,C″=(g ) ,, message为用户需要加密的数据,αs α
e(g,g) 为e(g,g) 与随机值s的计算值;
外包验证量Ver的生成包括:
用户计算 其中, 为外包验证量,用于解密后检验部分解密运算的正确性;
权限验证量pf的生成包括:
用户查列表Ti‑u得到属性ρ(j)对应值 并以下列步骤生成过滤器(m,n,k,H,λ′)‑CBF:
1)生成集合Se={j||uρ(j)}j∈[1,l],其中j需补足位数到Lm比特,Lm为线性秘密共享访问结构中的生成矩阵M的行数的最大比特长度;
2)对集合Se中的某元素ej=j||uρ(j)进行(k,k)秘密分享,即随机生成k‑1个λ′比特的字符串r1,r2,…rk‑1,计算 共得到e的k个秘密分享值r1,r2,…rk;
3)计算ej中uρ(j)部分的索引值:h1(uρ(j)),h2(uρ(j)),…hk(uρ(j)),并分别存入步骤2)中生成的秘密分享值r1,r2,…rk;
4)重复步骤2)‑3)过程直到集合中所有元素均存入CBF,若某元素秘密分享值存入时所述索引值中的位置已被占用,则选取与该位置相同的值;
5)将CBF中的剩余位置用λ′比特的随机数填满;
6)CBF生成后得到权限验证量pf=(M,CBF);
步骤D具体包括以下步骤:
D1、权限验证
当云服务器收到查看方用户的对被查看方用户的数据查看请求后,需通过查看方用户的用户标签tag和被查看方用户的权限验证量pf进行权限验证和匹配;
首先使用CBF询问算法验证查看方用户的用户属性是否存在于访问策略A中,包括以下步骤:
1)用查看方用户的用户标签tag中某元素ui计算索引值h1(ui),h2(ui),…hk(ui),并取出对应位置的k个数值求异或得到ei′;
2)若ei′的后Lu位与ui相等,则元素ei′存在于CBF中,ei′的剩余位数表示该用户属性在生成矩阵中的位置,若不相等,则该用户属性不在访问结构所包含的属性的集合中,其中,Lu为属性i对应的认证码ui的比特长度;
3)重复1)‑2)的步骤,直到找到查看方用户的用户标签tag与被查看方用户的权限验证量pf的所有交集Se’={i||ui};
若交集Se’不为空,进一步验证 其中,Mi为矩阵M的第i行,若能够重构出M的列满秩子阵,即存在并能够求出这样的一组常数ωi满足上式,也就是说,交集Se’中的元素对应的属性包含能够满足访问策略的最小子集,即查看方用户满足被查看方用户的访问策略,能够成功解密;
若查看方用户满足被查看方用户的访问策略,则继续执行步骤D2,否则输出⊥;
D2、部分解密服务
权限验证和匹配成功后,服务器为查看方用户提供外包部分解密服务得到部分密文PCT:并发送给
查看方用户,其中, 为连续求积通式,tkρ(j)为第四密钥组的转换密钥;
D3、用户解密
z
查看方用户计算message=C/(PCT) 得到想要查看的数据;
D4、外包验证
查看方用户验证 和Ver是否相等,以保证计算外包的正确性,相等则message可用,否则输出⊥。
2.根据权利要求1所述可验证解密权限的策略隐藏属性基加密方法,其特征在于,系统参数的生成包括:系统运行初始化算法,获得双线性群的描述:(N,p1,p2,p3,p4,G,GT,e),其中p1,p2,p3,p4为不同的素数,阶数N=p1p2p3p4,G和GT是阶为N的循环群,用 表示G的p1,p2,p3,p4阶子群,双线性映射函数e:G×G→GT;
设属性集合为 ZN为正整数模N的剩余类,取GT的一个生成元gT作为消息基量,取随机群元素f∈G作为外包验证参量,外包验证函数H0:{0,1}*→ZN,选择k0作为HMAC的密钥;
选三个随机值α,a,b∈ZN,选随机群元素 作为标准运算基量,g3是 的一个生成元,选对每个属性 随机选ti∈ZN作为属性对应随机值,并计算ui=HMAC(k0,i)得到属性i与对应ui的列表Ti‑u;
公开参数 主密钥MSK=
α
{k0,g ,g3},其中,k0为HMAC的密钥。
3.根据权利要求2所述可验证解密权限的策略隐藏属性基加密方法,其特征在于,云辅助下的布隆过滤器CBF的生成包括:系统使用(m,n,k,H,λ′)‑CBF定义一个云辅助下的布隆过滤器,其中安全参数λ′作为数组中字符串位数,λ′等于ui的比特长度Lu与M的行数的最大比特长度Lm之和,M是线性秘密共享访问结构中的生成矩阵,m为CBF 长度,n为集合元素个数,H={h1,h2,…hk}为k个相互独立的散列函数,其映射值范围是[0,m‑1]。
4.根据权利要求3所述可验证解密权限的策略隐藏属性基加密方法,其特征在于,步骤B中用户属性私钥SK的生成包括:授权中心执行密钥生成算法:选随机数t,u∈ZN, 其中,R、R′和R″均为群 中的随机群元素,{Ri}i∈S为群 中的随机群元素组,计算得到用户属性私钥并颁发给用户,其中 为用户属性集αat bu t u
合,gg g R为第一私钥,g R′为第二私钥,g R″为第三私钥, 为第四私钥组,αat bu a bgg g 为g、g以及随机数t,u计算得到的过程值;
用户标签tag的生成包括:
授权中心根据用户属性集合S和列表Ti‑u,选取S中的属性i在列表Ti‑u中对应的ui值作为用户标签tag并颁发给用户,即用户转换密钥TK的生成包括:
用户随机选择秘密值z∈ZN,使得gcd(z,N)=1,其中,gcd()为最大公约数通式,根据用户属性私钥计算得到用户转换密钥并将转换密钥发送给云服务器。