发明名称 一种基于KP‑ABE的有效可验证的公钥可搜索加密方法
摘要 本发明公开了一种基于KP‑ABE的有效可验证的公钥可搜索加密方法,该方法包括可信权威中心、数据拥有者、云服务器、数据用户;可信权威中心为所有云用户生成证书;数据拥有者外包数据文件和关键词给云服务器;云服务器是提供存储服务并在收到用户发送的搜索请求后执行搜索操作;数据用户生成搜索口令发送给云服务器寻找目标文件。本发明首先为数据拥有者和云服务器生成了公私钥对,在发送密文关键词和搜索口令时,首先使用云服务器的公钥对其再加密,这样有效地防止了外部攻击者的离线猜测攻击行为,提高了信息和数据的安全性,而且,复杂度降低,大大减少了用户的运算量,效率得到了很大提高。
申请公布号 CN104038349B 申请公布日期 2017.05.03
申请号 CN201410316818.4 申请日期 2014.07.03
申请人 西安电子科技大学 发明人 马华;刘鹏亮;王剑锋;聂海新
分类号 H04L9/32(2006.01)I;H04L9/30(2006.01)I;H04L29/06(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 北京科亿知识产权代理事务所(普通合伙) 11350 代理人 汤东凤
主权项 一种基于KP‑ABE的有效可验证的公钥可搜索加密方法,其特征在于,所述的基于KP‑ABE的有效可验证的公钥可搜索加密方法包括以下步骤:数据拥有者从外包的数据文件F中提取关键词w;并生成关键词w密文cph发送给云服务器;云服务器对数据拥有者发送来的数据提供存储服务并在收到用户发送的搜索口令tk后执行搜索,并将搜索结果和搜索证据返回给用户;数据用户用私钥sk生成搜索口令tk并发送给云服务器;在收到云服务器返回的搜索结果后,对结果的正确性和完整性进行验证;所述的基于KP‑ABE的有效可验证的公钥可搜索加密方法的具体方案为:可信权威中心运行RSA算法为云服务器和数据拥有者生成公私钥对:{(n<sub>1</sub>,e<sub>1</sub>),d<sub>1</sub>}和{(n<sub>2</sub>,e<sub>2</sub>),d<sub>2</sub>};数据拥有者通过数字签名来保证数据文件的完整性;用云服务器的公钥对密文关键词进行再加密来防止外部攻击者的离线猜测攻击,当数据拥有者用SYM<sub>Enc</sub>()加密算法对数据文件加密后外包给云服务器,服务器返回加密文件的地址,记为ID{F<sub>i</sub>},这样包含关键词w的数据文件即可表示为ID<sub>w</sub>=ID{F<sub>1</sub>}||ID{F<sub>2</sub>}…||ID{F<sub>i</sub>};具体包括:步骤一、初始化(1<sup>l</sup>):可信权威中心选择双线性对:e:G×G→G<sub>T</sub>,G和G<sub>T</sub>是阶为p的循环群,p为l比特长的素元,选择随机预言机模型下的哈希函数H<sub>1</sub>:{0,1}<sup>*</sup>→G;H<sub>2</sub>:{0,1}<sup>*</sup>→Z<sub>p</sub>是单向哈希函数,选择a,b,c←Z<sub>p</sub>,g←G,pm=(H<sub>1</sub>,H<sub>2</sub>,e,g,p,g<sup>a</sup>,g<sup>b</sup>,g<sup>c</sup>,G,G<sub>T</sub>),mk=(a,b,c)接着选取k个独立的哈希函数H′<sub>1</sub>,…,H'<sub>k</sub>,构造m比特的布隆过滤器BF发送给数据拥有者,为数据拥有者和云服务器生成公私钥对{(n<sub>1</sub>,e<sub>1</sub>),d<sub>1</sub>}和{(n<sub>2</sub>,e<sub>2</sub>),d<sub>2</sub>};步骤二、密钥生成(mk,T):可信权威中心执行Share(T,ac)算法,访问树T的每一个叶子节点都会得到有关秘密ac的部分分享q<sub>v</sub>(0),对每一个叶子节点v∈lvs(T),选取t←Z<sub>p</sub>,计算<img file="FDA0001232163460000021.GIF" wi="422" he="63" />和B<sub>v</sub>=g<sup>t</sup>,记私钥sk=(T,A<sub>v</sub>,B<sub>v</sub>)|v∈lvs(T);步骤三、对关键词和文件地址的加密:(w,atts,ID(w)),数据拥有者通过可信权威中心发送的哈希函数生成布隆过滤器,BF←BFGen({H′<sub>1</sub>,…,H'<sub>k</sub>},{w<sub>1</sub>,…,w<sub>l</sub>}),对含有关键词w数据文件地址ID<sub>w</sub>和布隆过滤器BF,用SYM<sub>Enc</sub>()对称加密算法加密,其中对称密钥为sk<sub>1</sub>:BF<sub>Enc</sub>=SYM(BF),(ID<sub>w</sub>)<sub>Enc</sub>=SYM(ID<sub>w</sub>);用户数据拥有者对BF<sub>Enc</sub>和(ID<sub>w</sub>)<sub>Enc</sub>进行签名:<img file="FDA0001232163460000022.GIF" wi="1902" he="71" />对sk<sub>1</sub>用ABE()加密算法进行加密:C=ABE(sk<sub>1</sub>);在搜索结束后,属性满足访问策略的合法用户就可以解密C得到sk<sub>1</sub>,进而解密获取目标文件;选择r<sub>1</sub>,r<sub>2</sub>←Z<sub>p</sub>,计算<img file="FDA0001232163460000023.GIF" wi="610" he="63" />F=(f<sub>1</sub>,f<sub>2</sub>)其中<img file="FDA0001232163460000024.GIF" wi="401" he="71" /><img file="FDA0001232163460000025.GIF" wi="190" he="62" />对每一个at<sub>j</sub>∈Atts,计算<img file="FDA0001232163460000026.GIF" wi="314" he="69" />用服务器的公钥对W加密得到<img file="FDA0001232163460000027.GIF" wi="622" he="71" />这样可记密文关键词为:cph=(Atts,W',W<sub>E</sub>,W<sub>0</sub>,W<sub>j</sub>,F,A,B,C);步骤四、生成搜索口令(sk,w):选择s←Z<sub>p</sub>,对每个叶子节点v∈lvs(T)计算<img file="FDA0001232163460000028.GIF" wi="390" he="63" />搜索口令为<img file="FDA0001232163460000029.GIF" wi="387" he="71" />tok<sub>2</sub>=g<sup>cs</sup>,用服务器的公钥对tok<sub>2</sub>进行加密:<img file="FDA00012321634600000210.GIF" wi="373" he="62" />记tk=(tok<sub>1</sub>,(tok<sub>2</sub>)<sub>Enc</sub>,T,(A′<sub>v</sub>,B′<sub>v</sub>)|v∈lvs(T));步骤五、搜索(tk,cph):服务器从cph中选取属性集S来满足搜索口令中指定的访问树,如果这样的集合S不存在,返回0;反之,对每一个at<sub>j</sub>∈S,计算<img file="FDA00012321634600000211.GIF" wi="814" he="70" />att(v)=at<sub>j</sub>,v∈lvs(T),结合(T,E<sub>v</sub>|att(v)∈S),计算出<img file="FDA00012321634600000212.GIF" wi="595" he="70" />进而得到<img file="FDA00012321634600000213.GIF" wi="377" he="63" />服务器用自己的私钥解密W<sub>E</sub>,(tok<sub>2</sub>)<sub>Enc</sub>得到W和tok<sub>2</sub>,如果e(W',tok<sub>1</sub>)E<sub>root</sub>=e(W,tok<sub>2</sub>),返回{W,F,A,B,C}给用户;否则,只返回A;步骤六、验证{W,F,A,B,C}:数据用户接收到云服务器返回的搜索结果后,进行验证操作。
地址 710071 陕西省西安市太白南路2号西安电子科技大学