[0124] 下面结合附图对本发明的实施例作进一步的说明。
[0125] 如图1所示,本发明提供了一种可验证搜索结果的布尔检索属性基加密方法,包括以下步骤:
[0126] S1:对密钥生成中心、可信第三方和云服务器分别进行初始化,完成系统初始化;
[0127] S2:利用初始化后的密钥生成中心生成用户属性私钥;
[0128] S3:通过颁发属性私钥后的用户,利用初始化后的可信第三方为密文生成相关数据;
[0129] S4:基于生成相关数据后的密文,利用初始化后的可信第三方生成搜索请求;
[0130] S5:利用初始化后的云服务器,通过搜索请求执行搜索操作,将搜索匹配成功的密文返回给数据用户;
[0131] S6:通过数据用户检验搜索结果,完成布尔检索属性基加密。
[0132] 在本发明实施例中,如图1所示,密钥生成中心的初始化包括以下子步骤:
[0133] A11:利用密钥生成中心选择两个p阶循环群,即第一循环群G和第二循环群GT;
[0134] A12:利用密钥生成中心选择第一循环群G上的生成元g和双线性映射e:G×G→GT;
[0135] A13:基于生成元和双线性映射,利用密钥生成中心选择第一抗碰撞哈希函数H:* *
{0,1} →G、第二抗碰撞哈希函数H':{0,1} →Zp、安全参数λ'和全体属性集合U,其中,Zp为有限域;
[0136] A14:根据全体属性集合,利用密钥生成中心随机选择第一随机数 和第二随*机数 其中Zp为不含有零元素的有限域,i∈U;
[0137] A15:根据生成元和第二随机数计算系统属性的公开承诺Ti,其计算公式为:
[0138]
[0139] 其中,g表示生成元,si表示第二随机数;
[0140] A16:根据双线性映射、第一循环群、第二循环群、生成元、第一随机数、第一抗碰撞哈希函数、第二抗碰撞哈希函数和全体属性集合,公开系统参数PM和系统主密钥MSK,完成密钥生成中心的初始化,其表达式分别为:
[0141]
[0142] MSK={gα,α}
[0143] 其中,e表示双线性映射;G表示第一循环群,GT表示第二循环群,p表示循环群阶数,g表示生成元,α表示第一随机数,e()表示双线性映射运算,Ti表示系统属性的公开承诺,H表示第一抗碰撞哈希函数,H'表示第二抗碰撞哈希函数,i表示全体属性集合的每个属性,U表示全体属性集合。
[0144] 在本发明实施例中,如图1所示,可信第三方的初始化包括以下子步骤:
[0145] B11:利用可信第三方随机选择第三随机数 第四随机数 第五随机*
数 和第六随机数 其中Zp为不含有零元素的有限域;
[0146] B12:根据生成元、第三随机数、第四随机数、第五随机数和第六随机数,公开可信第三方参数PKt和可信第三方私钥SKt,完成可信第三方的初始化,其表达式分别为:
[0147] PKt={gf,gx,gy,e(g,g)d}
[0148] SKt={d,f,x,y}
[0149] 其中,g表示生成元,d表示第三随机数,f表示第四随机数,x表示第五随机数,y表示第六随机数,e()表示双线性映射运算。
[0150] 在本发明实施例中,如图1所示,云服务器的初始化包括以下子步骤:
[0151] C11:利用云服务器随机选择第七随机数 其中Zp*为不含有零元素的有限域;
[0152] C12:根据第七随机数公开云服务器公钥PKs和云服务器私钥SKs,完成可信第三方的初始化,其计算公式分别为:
[0153] PKs=gb
[0154] SKs=b
[0155] 其中,b表示第七随机数,g表示生成元。
[0156] 在本发明实施例中,如图1所示,步骤S2包括以下子步骤:
[0157] S21:利用初始化后的密钥生成中心随机选取第八随机数 其中Zp*为不含有零元素的有限域;
[0158] S22:根据第一随机数、第八随机数和生成元计算用户第一私钥K、用户第二私钥K0和用户第三私钥Ki,其计算公式分别为:
[0159] K=gαgαt
[0160] K0=gt
[0161]
[0162] 其中,g表示生成元,α表示第一随机数,t表示第八随机数,ξ表示用户属性集合,Ti表示系统属性的公开承诺,i表示全体属性集合的每个属性,U表示全体属性集合;
[0163] S23:根据用户第一私钥、用户第二私钥和用户第三私钥为用户颁发属性私钥SK,其表达式为:
[0164] 在本发明实施例中,如图1所示,步骤S3包括以下子步骤:
[0165] S31:通过数据拥有者DO制定线性秘密分享LSSS授权搜索访问结构(M,ρ),其中,M表示L×N的矩阵,ρ表示属性映射函数,L表示矩阵M的行数,N表示矩阵M的列数;
[0166] S32:根据线性秘密分享LSSS授权搜索访问结构,利用初始化后的系统随机选择第一向量V=(s,v'2,...,v'm)∈Zp,其中,s表示秘密分享值,v'2,...,v'm表示有限域Zp中的m‑1个随机数,Zp为有限域;
[0167] S33:基于第一向量,通过数据拥有者DO为矩阵M的每一行随机选择第九随机数*其中,Zp为不含有零元素的有限域;
[0168] S34:根据第九随机数计算秘密分享值的第一公开承诺C'、秘密分享值的第二公开承诺C″和子秘密密文 其计算公式分别为:
[0169] C'=gs
[0170] C″=gαs
[0171]
[0172] 其中,s表示秘密分享值,α表示第一随机数,ηl表示第九随机数,g表示生成元,V表示第一向量,ρ(l)表示线性秘密分享LSSS授权搜索访问结构的属性,T表示属性公钥,表示授权搜索访问结构属性的随机化公开承诺;
[0173] S35:根据LSSS授权搜索访问结构、秘密分享值的第一公开承诺和秘密分享值的第二公开承诺生成搜索权限sp,其表达式为
[0174] S36:基于搜索权限,利用初始化后的系统提取关键词集合W,其表达式为W={Na:wa},其中,Na表示第a个关键字名,wa表示第a个关键字值;
[0175] S37:根据关键词集合,将数据拥有者DO和初始化后的可信第三方进行交互,生成关键词索引Index;
[0176] S38:基于关键词索引,通过数据拥有者DO生成验证标签Tag,其计算公式为:
[0177]
[0178]
[0179] 其中, 表示文件密文的哈希值, 表示密文,g表示生成元,α表示第一随机数,e()表示双线性映射运算,t1表示第十随机数,H0表示关键字集合的哈希值,H'()表示第二碰撞哈希函数运算;
[0180] S39:将搜索权限sp、关键词索引Index和验证标签Tag作为相关数据。
[0181] 在本发明实施例中,如图1所示,步骤S37包括以下子步骤:
[0182] S371:通过数据拥有者DO选择第十随机数 和第十一随机数 其中,*Zp为不含有零元素的有限域;
[0183] S372:根据第十随机数和第十一随机数计算文件关键词盲化信息,其表达式为其中,g表示生成元,H0表示关键字集合的哈希值,α表示第一随机数,t1表示第十随机数,t2表示第十一随机数,wa表示第a个关键字值,W表示关键词集合,H()表示第一碰撞哈希函数运算;
[0184] S373:将文件关键词盲化信息发送给初始化后的可信第三方;
[0185] S374:向初始化后的可信第三方输入可信第三方私钥并计算关键子集合哈希值密文 第十随机数和第十一随机数的密文I和文件关键词密文Ia,其计算公式分别为:
[0186]
[0187]
[0188]
[0189] 其中,g表示生成元,d表示第三随机数,f表示第四随机数,x表示第五随机数,y表示第六随机数,H0表示关键字集合的哈希值,wa表示第a个关键字值,W表示关键词集合;
[0190] S375:将关键子集合哈希值密文、第十随机数和第十一随机数的密文和文件关键词密文发送给数据拥有者DO;
[0191] S376:向数据拥有者DO输入云服务器公钥,计算第十随机数的随机化保护I'、第十一随机数的随机化保护I″和关键字集合的随机化保护I0,其计算公式分别为:
[0192]
[0193]
[0194]
[0195] 其中,g表示生成元,d表示第三随机数,x表示第五随机数,y表示第六随机数,t1表示第十随机数,t2表示第十一随机数,H0表示关键字集合的哈希值;
[0196] S377:根据第十随机数的随机化保护、第十一随机数的随机化保护和关键字集合的随机化保护生成关键词索引Index,其表达式为
[0197] 在本发明实施例中,如图1所示,步骤S4包括以下子步骤:
[0198] S41:通过数据用户DU选择想要搜索的关键词集合W',其表达式为W'={N'a:w'a},其中,N'a表示想要搜索的第a个关键字名,w'a表示想要搜索的第a个关键字值;
[0199] S42:基于想要搜索的关键词集合,通过数据用户DU制定LSSS搜索策略结构其中, 表示E×k的矩阵,表示关键词映射函数,E表示矩阵 的行数,k表示矩阵的列数;
[0200] S43:通过数据用户DU为矩阵 的每一行选择第十二随机数*
第十三随机数 和第十四随机数 其中,Zp为不含有零元素的有限域,i∈U,i表示全体属性集合的每个属性,U表示全体属性集合;
[0201] S44:根据第十二随机数、第十三随机数和第十四随机数计算第十四随机数的第一θ αθ公开承诺g 、第十四随机数的第二公开承诺g 和随机化请求关键词值
[0202] 其中,α表示第一随机数,γe'表示第十二随机数,g表示生成元,θ表示第十四随机数,H()表示第一碰撞哈希函数运算,W'表示想要搜索的关键词集合,e表示双线性映射,表示对想要搜索的关键词集合的隐藏, 表示根据关键词映射函数确定想要搜索的关键词集合;
[0203] S45:将第十四随机数的第一公开承诺、第十四随机数的第二公开承诺和随机化请求关键词值发送给初始化后的可信第三方;
[0204] S46:向初始化后的可信第三方输入可信第三方私钥并计算第十四随机数的第一密文Tv、第十四随机数的第二密文T″和请求关键词密文Te″,1,其计算公式分别为:
[0205] Tv=gxyθ
[0206] T″=gαdθ
[0207]
[0208] 其中,g表示生成元,α表示第一随机数,d表示第三随机数,x表示第五随机数,y表示第六随机数,θ表示第十四随机数,W'表示想要搜索的关键词集合,e表示双线性映射,表示对想要搜索的关键词集合的隐藏, 表示LSSS搜索策略结构的属性;
[0209] S47:将第十四随机数的第一密文、第十四随机数的第二密文和请求关键词密文发送给数据用户DU;
[0210] S48:通过数据用户DU随机选择第二向量 其中,θ表示第十四随机数,v2,...,vz表示有限域Zp中的z‑1个随机数;
[0211] S49:根据第二向量计算秘密值的公开承诺T'、密文T0、想要搜索的关键词集合的密文Te',1、第十二随机数的公开承诺Te',2、数据用户第一转换密钥K'、数据用户第二转换密钥K'0和数据用户第三转换密钥Ki',其计算公式分别为:
[0212] T'=gθ
[0213]
[0214]
[0215]
[0216] K'=Kz′=gαz′gαtz′
[0217]
[0218]
[0219] 其中,g表示生成元,e()表示双线性映射运算,α表示第一随机数,d表示第三随机数,f表示第四随机数,γe'表示第十二随机数,θ表示第十四随机数,z'表示第十三随机数,H()表示第一抗碰撞哈希函数运算,ξ表示用户属性集合,i表示全体属性集合的每个属性,表示对想要搜索的关键词集合的隐藏, 表示第二向量,t表示第八随机数,H'表示第二抗碰撞哈希函数,K表示用户第一私钥,K0表示用户第二私钥,Ki表示用户第三私钥;
[0220] S410:通过数据用户生成搜索请求和转换密钥TK,其表达式分别为[0221] 在本发明实施例中,如图1所示,步骤S5包括以下子步骤:
[0222] S51:利用初始化后的云服务器判断数据拥有者DO的属性集是否满足LSSS授权搜索访问结构(M,ρ),若不满足则匹配失败,否则进入步骤S52;
[0223] S52:根据线性秘密分享LSSS授权搜索访问结构(M,ρ)定义Ω={l:ρ(l)∈L},其中,L表示矩阵M的行数,ρ(l)表示线性秘密分享LSSS授权搜索访问结构的属性;
[0224] S53:计算满足∑i∈UλiM=(1,0,...,0)的常数λi∈Zp,其中,Zp为有限域,M表示L×N的矩阵;
[0225] S54:基于常数,判断数据用户DU的关键词名是否满足线性秘密分享LSSS搜索策略结构 若不满足则匹配失败,否则进入步骤S55,其中, 表示E×k的矩阵, 表示关键词映射函数;
[0226] S55:计算满足LSSS搜索策略结构 的最小子集
[0227] S56:根据最小子集计算第一搜索匹配值R1、第二搜索匹配值R2、第三搜索匹配值E'和第四搜索匹配值 其计算公式分别为:
[0228]
[0229]
[0230]
[0231]
[0232] 其中,g表示生成元,e()表示双线性映射运算,α表示第一随机数,d表示第三随机数,b表示第七随机数,t表示第八随机数,z'表示第十三随机数,θ表示第十四随机数,(Cl,Dl)表示子秘密密文,l∈{1,...,L},L表示矩阵M的行数,H()表示第一碰撞哈希函数运算,H'()表示第二碰撞哈希函数运算,ρ(l)表示LSSS授权搜索访问结构的属性,I″表示第十一随机数的随机化保护,T″表示第二向量计算秘密值的公开承诺,K'0表示数据用户第二转换密钥,λi表示常数, 表示最小子集,Te',1表示想要搜索的关键词集合的密文,Te',2表示第十二随机数的公开承诺,K'ρ(l)表示用户第四转换密钥,I0表示关键字集合的随机化保护,Ia表示文件关键词密文,μj表示常数,j表示最小子集的元素,I表示第十随机数和第十一随机数的密文,T0表示密文;
[0233] S57:判断等式 是否成立,若不成立则匹配失败,否则进入步骤S58;
[0234] S58:利用初始化后的云服务器计算Compte=(ver1,ver2)并返回给数据用户DU,Compte表示搜索计算证明,ver1表示第一证明值,ver2表示第二证明值,其计算公式分别为:
[0235]
[0236]
[0237] 其中,K'表示数据用户第一转换密钥,g表示生成元,α表示第一随机数,d表示第三随机数,x表示第五随机数,y表示第六随机数,t1表示第十随机数,θ表示第十四随机数,T'表示秘密值的公开承诺,R2表示第二搜索匹配值,H0表示关键字集合的哈希值,C'表示秘密分享值的第一公开承诺,s表示秘密分享值,I'表示第十随机数的随机化保护。
[0238] 在本发明实施例中,如图1所示,步骤S6中,通过数据用户DU计算等式是否成立,若成立则完成布尔检索属性基加密,否则拒绝搜索密文;其中Tv表示第十四随机数的第一密文。
[0239] 验证过程的推导如下:
[0240] 验证阶段,搜索服务器将部分计算结果ver1和ver2返回给数据用户DU,只有当文件的关键词索引满足数据用户DU制定的搜索策略时,ver2的值才等于 其中θ为DU选择的秘密随机数值,而t1,H0只有文件上传者才知道,所以当某份文件的索引并不满足数据用户DU的搜索策略时,服务器无法通过公开信息计算出 同理,关于计算结αsz果ver1,只有当数据用户DU的属性满足文件的授权搜索策略时,其值才为e(g,g) ,其中s,z分别为DO、DU所选的秘密随机值,在用户属性不满足文件访问策略时,搜索服务器无法通αsz
过公开信息计算出e(g,g) 。由于 其中 为加密文件,搜索
服务器无法通过篡改加密文件而伪造一个合法的标签。从而还可以实现对文件的完整性保护。
[0241] 因此,当搜索服务器返回的加密文件符合用户的搜索要求时,有
[0242]
[0243]
[0244] 本发明的工作原理及过程为:本发明提供的一种可验证搜索结果的布尔检索属性基加密方法,涉及数据安全领域,其包括系统初始化,生成系统的公开参数PM和主密钥MSK,以及云服务器和可信第三方的公私钥对;为用户颁发属性私钥SK;生成文件密文 的相关数据:搜索权限sp、验证标签Tag以及与可信第三方联合计算的关键词索引Index,将生成的数据组 上传至云服务器;提出搜索请求,计算转换密钥TK,选择关键词并制定由逻辑“与”“或”连接的关键词搜索策略,联合可信第三方计算搜索陷门Trapdoor,将生成的TK和Trapdoor发送给云服务器;权限验证和执行搜索运算,根据TK、Trapdoor和文件密文及索引进行权限验证和搜索匹配计算;如果匹配成功,则返回相应的密文文件 的Tag给用户;用户做最后的相关性与完整性验证,决定是否解密该文件。
[0245] 本发明的有益效果为:(1)本发明采用密文策略的属性基算法和线性秘密分享LSSS结构,将关键词看作其中的参与者,由用户制定搜索策略,匹配过程中通过计算恢复LSSS秘密值,实现布尔检索。本发明的方法具有较高的计算效率,在生成加密文件的过程中,引入关键词随机数,将关键词索引与加密文件绑定,保证密文与索引的关联性。
[0246] (2)本发明能够抵御服务器的离线关键词猜测攻击。通过可信第三方协助用户生成密文索引和关键词陷门,使得索引和陷门中含有可信第三方的私钥,从而可以抵抗一般恶意用户和指定云服务器的离线关键字猜测攻击。除此之外,方案还借助盲化的思想,使得关键词对于可信第三方而言也是不可见的。
[0247] (3)本发明能够对布尔检索的密文结果进行验证。利用属性基外包解密的方法,通过判断搜索服务器计算的结果是否能恢复LSSS秘密值,以此验证搜索结果的正确性与完整性。
[0248] (4)该方法兼顾了灵活的搜索语句和效率,在实现布尔检索的同时,实现了高效的搜索结果验证,算法表达灵活、安全性高。
[0249] 本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。