发明名称 一种面向云存储的关键字密文检索方法
摘要 本发明提供一种面向云存储的关键字密文检索方法。方法中包括数据拥有者、云服务器和数据使用者三个角色。数据拥有者将加密后的文档、标题、关键字和使用数据者验证证书等保存到云服务器中;云服务器负责存储并建立好加密的文档、标题和关键字之间的对应关系,存储数据使用者的验证证书等;数据使用者访问云服务器中密文时,需要获得数据拥有者颁发的授权证书,向云服务器提供关键字陷门等信息,云服务器根据关键字陷门等信息将用户所需要的密文发送给数据使用者;数据使用者利用密钥解密密文。该一种面向云存储的关键字密文检索方法和现有技术相比,具备较高安全性,能够有效地减轻通信、存储和计算负担,提高密文检索的精度和效率。
申请公布号 CN103095733B 申请公布日期 2017.02.01
申请号 CN201310067753.X 申请日期 2013.03.04
申请人 淮阴工学院 发明人 步山岳;杨荣根;张粤;钮冰清
分类号 H04L29/06(2006.01)I;H04L29/08(2006.01)I;G06F17/30(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 代理人
主权项 一种面向云存储的关键字密文检索方法,其特征在于:其具体密文检索过程为:1)数据拥有者产生整个检索过程需要的初始化参数,使产生的参数确保检索的安全性:这个过程由数据拥有者DO完成,设有存储到云服务器中的文档有m个,文档集合为M,文档标题集合为T,文档关键字集合为W;DO选用对称加密算法AES‑256,并选择密钥,K<sub>DOM</sub>、K<sub>DOT</sub>和K<sub>DOW</sub>,分别用于加密文档M<sub>i</sub>∈M、标题T<sub>i</sub>∈T和关键字W<sub>i</sub>∈W;DO选用公开密钥算法NTRU,构造NTRU算法所需要的参数,产生密钥对(SK<sub>DO1</sub>、PK<sub>DO1</sub>)和(SK<sub>DO2</sub>、PK<sub>DO2</sub>)用于构造关键字陷门和数据使用者身份验证,DO在方法中选用单项散列函数SHA‑256算法,用H(·)表示,2)由数据拥有者将数据存储到云服务器上;在该过程中,假设DO要将文档集合U存储到云服务器CS中,DO为每个文档M<sub>i</sub>∈M创建一个标题T<sub>i</sub>∈T,i∈m;DO用密钥K<sub>DOT</sub>加密H(T<sub>i</sub>),得到CT<sub>i</sub>,用K<sub>DOM</sub>加密M<sub>i</sub>得到CM<sub>j</sub>,分别用CT<sub>i</sub>=Enc(AES,K<sub>DOT</sub>,H(T<sub>i</sub>))<sup>(1)</sup>,CM<sub>i</sub>=Enc(AES,K<sub>DOM</sub>,M<sub>i</sub>)表示:设DO从第i个文档和标题中取出n个关键字,W<sub>ij</sub>表示从第i个文档M<sub>i</sub>和标题T<sub>i</sub>中取出的第j个关键字,i∈m:j∈n,W<sub>ij</sub>∈W,DO用密钥K<sub>DOW</sub>加密H(W<sub>ij</sub>),用CW<sub>ij</sub>=Enc(AES,K<sub>DOW</sub>,H(W<sub>ij</sub>))表示;DO将DOCS={CW<sub>ij</sub>,CT<sub>i</sub>,CM<sub>i</sub>,PK<sub>DO1</sub>,PK<sub>DO2</sub>}发送给CS,令CW为加密关键字集合,CT为加密标题集合,CW为加密文档集合,则CW<sub>ij</sub>∈CW、CT<sub>i</sub>∈CT、CM<sub>i</sub>∈CM,这样成完成了关键字W<sub>ij</sub>,标题T<sub>i</sub>和文档M<sub>i</sub>对应的检索关系,3)数据使用者向数据拥有者提出使用数据申请,经过数据拥有者的认证,分别将授权证书和验证证书发送给数据使用者和云服务器;假设有u个DU,每个DU<sub>v</sub>∈DU有自己的密钥对<img file="FDA0000990372110000021.GIF" wi="735" he="116" />向DO发出使用数据请求信息<img file="FDA0000990372110000022.GIF" wi="677" he="112" />DO收到DU<sub>v</sub><img file="FDA0000990372110000023.GIF" wi="206" he="90" />后,给DU<sub>v</sub>分配唯一的ID<sub>v</sub>号,然后DO按照CID<sub>v</sub>=SK<sub>DOv</sub>*r+H(ID<sub>v</sub>)mod q进行计算,其中的r是NTRU算法加密时作为临时眩值的多项式,q为多项式或整数,DU<sub>v</sub>的使用数据证书为DODU<sub>v</sub>={CID<sub>v</sub>,K<sub>DOW</sub>,K<sub>DOT</sub>,K<sub>DOM</sub>,SK<sub>DO2</sub>,r,q}DO用密钥PK<sub>DUv</sub>加密DODU<sub>v</sub>用EDODU<sub>v</sub>=Enc(NTRU,PK<sub>DUv</sub>DODU<sub>v</sub>)表示;DO将EDODU<sub>v</sub>发送给DU<sub>v</sub>;DU<sub>v</sub>|收到EDODU<sub>v</sub>后,用<img file="FDA0000990372110000032.GIF" wi="168" he="100" />解密EDODU<sub>v</sub>,还原出DODU<sub>v</sub>;DU<sub>v</sub>的验证证书为DOCS<sub>v</sub>={H(ID<sub>v</sub>),PK<sub>DOv</sub> p},其中ρ为整数DO将DOCS<sub>v</sub>发送给CS,v∈u;当需要提前解除DU<sub>v</sub>使用数据权限时,只需要将的验证证书改为DOCS<sub>v</sub>={error,PK<sub>DOv</sub> p};4)通过验证后,云服务器向合法的数据使用者提供数据,数据使用者完成数据检索过程;当DO需要使用数据时,DO的身份将自动转变成DU,假设DU向CS请求密文检索时输入n个关键字,用集合<img file="FDA0000990372110000031.GIF" wi="247" he="97" />表示,根据每个关键字W<sub>j</sub>∈W′,计算陷门TW<sub>j</sub>,j∈n,DU用密钥K<sub>DOW</sub>加密H(W<sub>j</sub>),用CW<sub>j</sub>=Enc(AES,K<sub>DOW</sub>,H(W<sub>j</sub>))表示:DU计算关键字陷门TW<sub>j</sub>=SK<sub>DO2</sub>*r+CW<sub>j</sub>mod q,DU向CS发送密文检索信息MSG<sub>DUCS</sub>={CID<sub>v</sub>,TW<sub>j</sub>},j∈n·v∈u,其中CID<sub>v</sub>是DU身份信息;CS收到MSG<sub>DUCS</sub>后,用H(ID<sub>v</sub>)=PK<sub>DO1</sub>*CID<sub>v</sub>(mod p),v∈u,对DU身份进行验证如果不成立,用户验证失败,CS将验证error消息发送给DU,拒绝用户数据查询请求,否则CS认为DU是合法用户,并进行<img file="FDA0000990372110000041.GIF" wi="1065" he="167" />检索判断,其中x为不定数,x∈Z<sup>+</sup>,i∈m,如果判断失败,CS将检索toll消息发送给DU,如果判断成功,假设有i个<img file="FDA0000990372110000042.GIF" wi="249" he="163" />满足条件,这就意味看在集合CT中有i个加密标题CT<sub>i</sub>∈CT满足检索条件,i∈m;设满足检索条件的加密标题集合为<img file="FDA0000990372110000046.GIF" wi="527" he="103" />CS将CT′发送给DU,设T′为满足检索条件的标题集合,DU用密钥K<sub>DOT</sub>解密<img file="FDA0000990372110000045.GIF" wi="540" he="105" />还原出T<sub>i</sub>即:<img file="FDA0000990372110000044.GIF" wi="1593" he="118" />DU从T′中找出自己所需要的标题T<sub>i</sub>后,用密钥K<sub>DOT</sub>加密H(T<sub>i</sub>)得到CT<sub>i</sub>,用CT<sub>i</sub>=Enc(AES,K<sub>DOT</sub>,H(T<sub>i</sub>))表示,DU计算标题陷门TCT<sub>i</sub>=SK<sub>DO2</sub>*r+CT<sub>i</sub>mod q,DU向CS发送密文检索信息MSG<sub>DUCS</sub>={CID<sub>v</sub>,TCT<sub>i</sub>};CS收到MSG<sub>DUCS</sub>后,按照H(ID<sub>v</sub>)=PK<sub>DO1</sub>*CID<sub>v</sub>(mod p)对DU身份进行验证,其中v∈u;如果验证设有通过,CS将error消息发送给DU,否则CS认为DU是合法用户,并计算CT<sub>i</sub>=PK<sub>DO2</sub>*TCT<sub>i</sub>(mod p),CS根据CT<sub>i</sub>将CM<sub>i</sub>发送给DU,DU用密钥K<sub>DOM</sub>解密CM<sub>i</sub>,还原出M<sub>i</sub>,检索完成。
地址 223001 江苏省淮安市清河区北京北路89号