发明名称 云存储中多用户多个关键词可搜索的加密方法
摘要 本发明公开了一种云存储中多用户多个关键词可搜索的加密方法,步骤包括:步骤1、系统参数初始化;步骤2、添加用户;步骤3、文件拥有者对文件加密和安全索引生成;步骤4、用户关于关键词搜索令牌的生成;步骤5、云存储服务器关于密文关键词的搜索;步骤6、用户关于密文的解密;步骤7、撤销用户。本发明方法,授权用户能够利用连接关键词的陷门搜索加密文档,数据用户将自己的数据加密后存放到云存储服务器,需要时通过关键词检索令牌检索到需要的密文数据,然后下载解密;同时云存储服务器并不知道用户检索的关键词,确保用户的数据信息隐私性,适合多用户环境。
申请公布号 CN104023051A 申请公布日期 2014.09.03
申请号 CN201410219689.7 申请日期 2014.05.22
申请人 西安理工大学 发明人 王尚平;张亚玲;邹又姣
分类号 H04L29/08(2006.01)I;G06F17/30(2006.01)I;H04L9/00(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 西安弘理专利事务所 61214 代理人 李娜
主权项 1.一种云存储中多用户多个关键词可搜索的加密方法,其特征在于,设文件加密者为Ent,文档集合D=(D<sub>1</sub>,…,D<sub>n</sub>),存储服务器为Serv,设文档D<sub>i</sub>的关键词列表为W<sub>i</sub>=(w<sub>i,1</sub>,…,w<sub>i,m</sub>),1≤i≤n,n是即将存储的文件个数,m是文档D<sub>i</sub>中的关键词个数,w<sub>i,j</sub>为D<sub>i</sub>的第j个关键词字段的关键词,1≤j≤m,按照以下步骤实施:步骤1、系统参数初始化由用户管理机构UM输入安全参数k,输出阶为素数q的循环群G,g为G的生成元,并且G中的DDHP是困难的;随机选择<img file="FDA0000509326980000011.GIF" wi="164" he="85" />作为UM的主密钥,记为k<sub>UM</sub>=x,计算h=g<sup>x</sup>;UM选择两个伪随机函数<maths num="0001"><![CDATA[<math> <mrow> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mo>:</mo> <msup> <mrow> <mo>{</mo> <mn>0,1</mn> <mo>}</mo> </mrow> <mi>k</mi> </msup> <mo>&times;</mo> <msup> <mrow> <mo>{</mo> <mn>0,1</mn> <mo>}</mo> </mrow> <mo>*</mo> </msup> <mo>&RightArrow;</mo> <msubsup> <mi>Z</mi> <mi>q</mi> <mo>*</mo> </msubsup> </mrow></math>]]></maths>和<maths num="0002"><![CDATA[<math> <mrow> <msup> <mi>f</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msup> <mo>:</mo> <msup> <mrow> <mo>{</mo> <mn>0,1</mn> <mo>}</mo> </mrow> <mi>k</mi> </msup> <mo>&times;</mo> <msubsup> <mi>Z</mi> <mi>q</mi> <mo>*</mo> </msubsup> <mo>&RightArrow;</mo> <msubsup> <mi>Z</mi> <mi>q</mi> <mo>*</mo> </msubsup> </mrow></math>]]></maths>及其随机种子分别为s′,s″∈<sub>R</sub>{0,1}<sup>k</sup>,并为语义安全的对称加密算法Enc(·)选择加密密钥ek,发布params=(G,g,q,f′,f″,h,Enc)作为系统参数,保密用户管理机构UM的私钥为msk<sub>Ent</sub>=x及文件加密密钥ek;步骤2、添加用户由用户管理机构UM输入UM的主密钥k<sub>UM</sub>=x和用户身份u<sub>ID</sub>∈U,输出u<sub>ID</sub>的密钥和辅助密钥<maths num="0003"><![CDATA[<math> <mrow> <mrow> <mo>(</mo> <msub> <mi>sk</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <mo>,</mo> <mi>com</mi> <msub> <mi>k</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <msub> <mo>&Element;</mo> <mi>R</mi> </msub> <msubsup> <mi>Z</mi> <mi>q</mi> <mo>*</mo> </msubsup> <mo>,</mo> <msup> <mi>g</mi> <mrow> <msub> <mi>k</mi> <mi>UM</mi> </msub> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <mo>,</mo> <msup> <mi>g</mi> <mrow> <mi>x</mi> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> <mo>;</mo> </mrow></math>]]></maths>将<img file="FDA0000509326980000015.GIF" wi="298" he="81" />,安全)地发送给用户u<sub>ID</sub>;将<maths num="0004"><![CDATA[<math> <mrow> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mi>ID</mi> </msub> <mo>.</mo> <mi>com</mi> <msub> <mi>k</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mi>ID</mi> </msub> <mo>,</mo> <msup> <mi>g</mi> <mrow> <msub> <mi>k</mi> <mi>UM</mi> </msub> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> </mrow></math>]]></maths>安全地发送给云存储服务器Serv,云存储服务器Serv在其用户列表U-ComK中加入用户信息<maths num="0005"><![CDATA[<math> <mrow> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mi>ID</mi> </msub> <mo>.</mo> <mi>com</mi> <msub> <mi>k</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mi>ID</mi> </msub> <mo>,</mo> <msup> <mi>g</mi> <mrow> <msub> <mi>k</mi> <mi>UM</mi> </msub> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> <mo>;</mo> </mrow></math>]]></maths>步骤3、文件拥有者对文件加密和安全索引生成用户u<sub>ID</sub>输入用户密钥<img file="FDA0000509326980000018.GIF" wi="254" he="78" />加密密钥ek、随机种子s′、文档D<sub>i</sub>及其关键词列表W<sub>i</sub>=(w<sub>i,1</sub>,…,w<sub>i,m</sub>),1≤i≤n,随机选择r<sub>i</sub>∈<sub>R</sub>Z<sub>q</sub>,计算<img file="FDA0000509326980000029.GIF" wi="501" he="89" /><img file="FDA0000509326980000022.GIF" wi="486" he="84" />和E<sub>i</sub>=Enc<sub>ek</sub>(D<sub>i</sub>),对<img file="FDA0000509326980000028.GIF" wi="221" he="68" />1≤j≤m,计算σ<sub>i,j</sub>=f′(s′,w<sub>i,j</sub>),<maths num="0006"><![CDATA[<math> <mrow> <msub> <mi>I</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msup> <mrow> <mo>(</mo> <mi>gh</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>i</mi> </msub> <msub> <mi>&sigma;</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> </mrow> </msup> <mo>,</mo> </mrow></math>]]></maths>令文件索引为<img file="FDA00005093269800000211.GIF" wi="585" he="92" />I<sub>i,1</sub>,…I<sub>i,m</sub>),记C<sub>i</sub>=(E<sub>i</sub>,I<sub>i</sub>),将(u<sub>ID</sub>,C<sub>i</sub>)发送给云存贮服务器Serv进行存储;步骤4、用户关于关键词搜索令牌的生成用户u<sub>ID</sub>输入<img file="FDA00005093269800000212.GIF" wi="123" he="64" />s′、s″和要检索的关键词位置1≤l<sub>1</sub>,…,l<sub>d</sub>≤m及对应的关键词w<sub>1</sub>′,…,w′<sub>d</sub>,d是用户搜索的关键词个数,随机选择随机数<img file="FDA0000509326980000024.GIF" wi="294" he="79" />按照下式计算:<maths num="0007"><![CDATA[<math> <mrow> <msub> <mi>T</mi> <mn>1</mn> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mn>1</mn> </msub> <mo>+</mo> <msup> <mi>f</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msup> <mrow> <mo>(</mo> <msup> <mi>s</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msup> <mo>,</mo> <msub> <mi>t</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>d</mi> </msubsup> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msup> <mi>s</mi> <mo>&prime;</mo> </msup> <mo>,</mo> <msubsup> <mi>w</mi> <mi>j</mi> <mo>&prime;</mo> </msubsup> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mi>s</mi> <msub> <mi>k</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>t</mi> <mn>1</mn> </msub> <mo>+</mo> <msup> <mi>f</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msup> <mrow> <mo>(</mo> <msup> <mi>s</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msup> <mo>,</mo> <msub> <mi>t</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>d</mi> </msubsup> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msup> <mi>s</mi> <mo>&prime;</mo> </msup> <mo>,</mo> <msubsup> <mi>w</mi> <mi>j</mi> <mo>&prime;</mo> </msubsup> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <mo>,</mo> </mrow></math>]]></maths>T<sub>2</sub>=t<sub>1</sub>,T<sub>3</sub>=f″(s″,t<sub>2</sub>),将搜索令牌T=(u<sub>ID</sub>,T<sub>1</sub>,T<sub>2</sub>,T<sub>3</sub>,l<sub>1</sub>,…,l<sub>d</sub>)发送给云存贮服务器Serv;步骤5、云存储服务器关于密文关键词的搜索云存贮服务器Serv执行用于搜索加密文档,输入陷门T=(u<sub>ID</sub>,<sub>1</sub>T,<sub>2</sub>T,<sub>3</sub>T…,<sub>1</sub>l,<sub>d</sub>及,l密)文C<sub>i</sub>=(E<sub>i</sub>,I<sub>i</sub>),Serv初始化空集Ω,对每一个密文C<sub>i</sub>=(E<sub>i</sub>,I<sub>i</sub>),1≤i≤n,中的I<sub>i</sub>,判断下式是否成立:<maths num="0008"><![CDATA[<math> <mrow> <mfenced open='' close=''> <mtable> <mtr> <mtd> <msup> <mrow> <mo>(</mo> <msup> <mrow> <mo>(</mo> <msup> <mi>g</mi> <mrow> <mn>1</mn> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <msup> <mrow> <mo>(</mo> <msup> <mi>h</mi> <mrow> <mn>1</mn> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <mo>)</mo> </mrow> <msub> <mi>T</mi> <mn>1</mn> </msub> </msup> <mo>/</mo> <msup> <mrow> <mo>(</mo> <msup> <mi>g</mi> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <msup> <mi>h</mi> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <mo>)</mo> </mrow> <msub> <mi>T</mi> <mn>2</mn> </msub> </msup> </mtd> </mtr> <mtr> <mtd> <mo>=</mo> <msup> <mrow> <mo>(</mo> <mi>gh</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>d</mi> </msubsup> <msup> <mi>f</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msup> <mi>s</mi> <mo>&prime;</mo> </msup> <mo>,</mo> <msubsup> <mi>w</mi> <mi>j</mi> <mo>&prime;</mo> </msubsup> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <msup> <mi>f</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msup> <mrow> <mo>(</mo> <msup> <mi>s</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msup> <mo>,</mo> <msub> <mi>t</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <mo></mo> </mrow> </msup> <mo>=</mo> <msup> <mrow> <mo>(</mo> <msubsup> <mi>&Pi;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>d</mi> </msubsup> <msup> <mrow> <mo>(</mo> <mi>gh</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>i</mi> </msub> <msub> <mi>&sigma;</mi> <mrow> <mi>i</mi> <mo>,</mo> <msub> <mi>l</mi> <mi>j</mi> </msub> </mrow> </msub> </mrow> </msup> <mo>)</mo> </mrow> <msub> <mi>T</mi> <mn>3</mn> </msub> </msup> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow></math>]]></maths>其中的<maths num="0009"><![CDATA[<math> <mrow> <msub> <mi>I</mi> <mi>i</mi> </msub> <mo>=</mo> <msup> <mrow> <mo>(</mo> <mrow> <mo>(</mo> <msup> <mi>g</mi> <mrow> <mn>1</mn> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> </mrow> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <mo>,</mo> <msup> <mi>g</mi> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <mo>,</mo> <msup> <mrow> <mo>(</mo> <msup> <mi>h</mi> <mrow> <mn>1</mn> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <mo>,</mo> <msup> <mi>h</mi> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <mo>,</mo> <msub> <mi>I</mi> <mrow> <mi>i</mi> <mo>.</mo> <mn>1</mn> </mrow> </msub> <mo>,</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>&CenterDot;</mo> <mo>,</mo> <msub> <mi>I</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>m</mi> </mrow> </msub> <mo>)</mo> <mo>,</mo> <msub> <mi>I</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msup> <mrow> <mo>(</mo> <mi>gh</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>r</mi> <mi>i</mi> </msub> <msub> <mi>&sigma;</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> </mrow> </msup> <mo>,</mo> </mrow></math>]]></maths>若成立,则Ω=Ω∪{E<sub>i</sub>};否则,该密文与关键词不匹配,继续搜索下一个关键词索引I<sub>i+1</sub>,最后将搜索结果Ω发送给用户u<sub>ID</sub>;步骤6、用户关于密文的解密用户u<sub>ID</sub>执行用来解密密文,输入对称密钥ek及接收到的Ω,对<img file="FDA0000509326980000033.GIF" wi="203" he="58" />计算D<sub>i</sub>=Dec<sub>ek</sub>(E<sub>i</sub>);步骤7、撤销用户用户管理机构UM执行用来撤销用户,输入用户身份u<sub>ID</sub>,UM向云存贮服务器Serv发送撤销用户u<sub>ID</sub>的命令,Serv执行操作<img file="FDA0000509326980000031.GIF" wi="813" he="79" />即云存储服务器CSS删除用户u<sub>ID</sub>注册项目<maths num="0010"><![CDATA[<math> <mrow> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mi>ID</mi> </msub> <mo>.</mo> <mi>com</mi> <msub> <mi>k</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mi>ID</mi> </msub> <mo>,</mo> <msup> <mi>g</mi> <mrow> <msub> <mi>k</mi> <mi>UM</mi> </msub> <mo>/</mo> <msub> <mi>x</mi> <msub> <mi>u</mi> <mi>ID</mi> </msub> </msub> </mrow> </msup> <mo>)</mo> </mrow> <mo>,</mo> </mrow></math>]]></maths>即成。
地址 710048 陕西省西安市金花南路5号