CN103345526B - 一种云环境下高效的隐私保护密文查询方法 - Google Patents

一种云环境下高效的隐私保护密文查询方法 Download PDF

Info

Publication number
CN103345526B
CN103345526B CN201310308414.6A CN201310308414A CN103345526B CN 103345526 B CN103345526 B CN 103345526B CN 201310308414 A CN201310308414 A CN 201310308414A CN 103345526 B CN103345526 B CN 103345526B
Authority
CN
China
Prior art keywords
vector
ciphertext
bucket
index
word
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310308414.6A
Other languages
English (en)
Other versions
CN103345526A (zh
Inventor
彭智勇
程芳权
宋伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201310308414.6A priority Critical patent/CN103345526B/zh
Publication of CN103345526A publication Critical patent/CN103345526A/zh
Application granted granted Critical
Publication of CN103345526B publication Critical patent/CN103345526B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种云环境下高效的隐私保护密文查询方法,属于可信数据管理领域,该方法包括以下步骤:1)数据贡献者在客户端根据数据集构建基于桶的密文索引,然后加密数据集,最后向云端发布密文数据和基于桶的密文索引;2)查询用户提交查询请求到云端,云端在基于桶的密文索引上执行查询,返回满足条件的查询结果给查询用户。本发明提供了一种云环境下隐私保护的高效密文查询方法,该方法针对可信云环境,在保护用户数据隐私的前提下,通过构建高效的基于桶的密文索引,确保查询结果的高准确性,提高密文查询时空效率。

Description

一种云环境下高效的隐私保护密文查询方法
技术领域
本发明涉及一种隐私保护密文查询方法,尤其是涉及一种云环境下高效的隐私保护密文查询方法。
背景技术
云环境下安全数据外包管理,即数据贡献者在本地可信前端对数据加密处理以后再外包给云服务提供商进行存储、管理和维护,当用户访问数据时,首先从云端获得所需要的密文数据,再在可信前端进行解密从而获得明文数据。虽然可信前端数据加解密可以有效保证用户数据安全和隐私保护,但是密文数据查询由于不再具有明文查询特性而成为了重要挑战。
云环境下密文查询有以下两方面需求:一方面,面向云端海量数据特征和用户个性化查询需求,有必要提供支持多关键词的高效密文查询方法,充分表达用户查询兴趣,高效返回满足用户需求的所有结果,使用户能快速定位与查询相关的密文数据。另一方面,考虑到云服务的“pay-as-you-go”特性,为了减小用户的服务付费和云环境中的资源消耗,如网络传输开销和存储开销等,有必要在保证密文数据高效精确的查询的同时,尽可能减小密文索引的空间开销。总之,除了确保密文查询隐私保护(密文索引及查询过程的无隐私泄露)外,极有必要提高其时空高效性:数据发布时数据、索引等的低传输/存储代价,数据查询时请求转换的客户端低计算代价以及云端密文查询的低执行代价。
因此,一种能支持多关键词查询且兼具强隐私保护特性和时空高效性的密文查询方法将对云环境下安全数据外包管理起到至关重要的作用。
目前,研究者们针对加密数据查询方面做了大量工作。在密文检索隐私保护方面,Gloldreich等人提出了遗忘RAM模型,该模型可以保证检索加密数据过程的安全性,不过该方法由于其交互过程的高额开销而不适用于诸多现实场景。Song等人第一次提出基于对称密钥的单关键词可检索加密方法,Goh基于布隆过滤器对其效率进行改进。同时Curtmola等人在Song的基础上给出更严格的安全性定义和更高效的对称密钥可检索加密方法构造,Seny Kamara等人也在此基础上进一步设计了支持数据更新的动态可检索对称密钥加密方法。然而,目前具有高效查询特性的方法仅支持单关键词查询,且其索引和查询效率方面仍有很大的提升空间。
针对非对称加密场景,Boneh等人首次基于DH密钥交换协议提出关键词可检索的公钥加密方法(PKES),通过公钥加密和私钥查询在一定程度上为用户数据提供了隐私保护。尽管后来对该方法的改进构造不断有提出,然而此类方法由于引入双线性对等复杂数学计算以及查询时直接匹配每个数据索引,导致效率十分低下。
此外,B.Lewko等人提出了支持与运算和或运算的多关键词密文检索方法,该方法的缺陷仍然是查询效率较低,不适用于现实场景。Cao等人在多关键词密文检索方面有做了进一步的研究,通过计算索引向量和查询向量的内积并使用安全knn技术中提出的内积相似度计算,提出了支持排序的多关键词密文检索方法。然而,现有方法普遍存在效率低下等问题,无法同时兼顾密文查询的隐私保护、时空高效以及多关键词查询等需求,故不适用于数据量大、用户交互频繁且有较高隐私保护需求的云环境。
发明内容
本发明主要是解决现有技术所存在的技术问题;提供了一种通过构建保护用户隐私的高效密文桶索引,满足用户安全可靠查询需求的一种云环境下高效的隐私保护密文查询方法。
本发明还有一目的是解决现有技术所存在的技术问题;提供了一种在保证查询隐私保护和查询结果准确性的同时,提高了查询过程中的时空效率的一种云环境下高效的隐私保护密文查询方法。
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种云环境下高效的隐私保护密文查询方法,其特征在于:包括以下步骤:
步骤1,数据贡献者在客户端根据数据集构建基于桶的密文索引,然后加密数据集,最后向云端发布密文数据和基于桶的密文索引;
步骤2,查询用户提交查询请求到云端,云端在基于桶的密文索引上执行查询,返回满足条件的查询结果给查询用户。
本发明主要针对可信云环境,在保护用户数据隐私的前提下,确保查询结果的高准确性,提高密文查询时空效率。
在上述一种云环境下高效的隐私保护密文查询方法,所述步骤1的包括以下子步骤:
步骤1.1、数据贡献者U在客户端对数据集D中的每个文档进行分词,将每个文档分词得到的明文索引词集合进行并操作,得到所有文档对应的明文索引词集合W;
步骤1.2、对得到的明文索引词集合W进行优化,即去掉所有索引词中重复的索引词;得到优化后的明文索引词集合W’,W’={w’i|i=1,2,……,n};w’i表示明文索引词集合中的第i个明文索引词;
步骤1.3、数据贡献者用索引词加密密钥key1对所有的明文索引词进行AES单向加密,得到密文索引词集合EW,EW={ewi|i=1,2,……,n},其中明文索引词w’i和密文索引词ewi一一对应;
步骤1.4、数据贡献者在客户端利用密文索引词集合构建基于桶的密文索引I,I={I[i],i=1,2,……,p},该密文索引是基于桶的数据结构,I[i]表示第i个桶;
步骤1.5、数据贡献者用数据加密密钥key2对明文数据集进行AES加密,得到密文数据集D,D={di|i=1,2,……,m};
步骤1.6、数据贡献者将本地构建的基于桶的密文索引I、密文数据集发布到云端,将索引词加密密钥key1和数据加密密钥key2安全共享给查询用户。
在上述的一种云环境下高效的隐私保护密文查询方法,所述步骤2包括以下子步骤:
步骤2.1、查询用户在客户端将查询请求进行分词,得到明文查询关键词集;
步骤2.2、查询用户获取数据贡献者安全共享的索引词加密密钥key1,并利用key1和明文查询关键词集构建密文查询请求;
步骤2.3、查询用户将密文密文查询请求提交到云端;
步骤2.4、云端获取密文查询请求,并在基于桶的密文索引上执行查询;
步骤2.5、云端返回密文查询结果到查询用户的客户端,查询用户的客户端获取数据贡献者安全共享的数据加密密钥key2对查询结果进行解密。
在上述的一种云环境下高效的隐私保护密文查询方法,步骤1.4中根据密文索引词集合构建基于桶的密文索引I包括以下子步骤:
步骤1.4.1、客户端获取密文索引词集合EW中密文索引词的个数n,然后获取数据贡献者的数据集D中所有文档的个数m;
步骤1.4.2、构建n个长度为m的倒排文档向量,分别命名为Vector1、Vector2、……、Vectorn;其中每一个倒排文档向量Vectori(1≤i≤n)与W’中明文索引词w’i一一对应,也和EW中的密文关键词ewi一一对应;每一个倒排文档向量中的第i位对应于数据集中的第i个文档,且向量中的每一位初始值为0;
步骤1.4.3、依次取出明文索引词集合w’1、w’2、……、w’n和对应密文索引词集合ew1、ew2、……、ewn,以及对应的倒排文档向量集Vector1、Vector2、……、Vectorn
步骤1.4.4、循环处理每个明文索引词w’i和密文索引词ewi对应的倒排文档向量Vectori,将Vectori中包含w’i的文档对应的向量位标记为1;
步骤1.4.5、构建桶集合,通过密文索引词的个数n计算桶的初始个数p和对每一个密文索引词进行哈希运算的次数k,并确定k个具体的哈希函数hash1()、hash2()、……、hashk(),其中每个桶用于存一个长度为m的向量,每个向量的各个元素初始值均为0;
步骤1.4.6、依次获取密文索引词集合中的密文索引词,对每一个密文索引词进行k次哈希运算,每次哈希运算映射到一个桶,将映射到该桶的所有密文索引词对应的倒排文档向量执行并操作,即对这些倒排文档向量执行按位或操作,得到该桶所存的最终向量,第i个桶所存的最终向量命名为Vi
步骤1.4.7、对文档di进行分词后得到的索引词个数用|di|表示,取△=max{|d1|,|d2|,……,|dm|},则对于文档di,还需要添加△-|di|个索引词,即可转化为如下需求:需要额外为文档di随机选取αi个桶,并将αi个桶中所存的最终向量的第i个位的值重置为1,其中αi=(△-|di|)*k;
步骤1.4.8、对于只被一个密文索引词映射过的桶I[j],统计该桶所存的最终向量Vj中值为0的位的个数μ,从这μ个位中随机选取ε个位,并将这ε个位的值重置为1;假设最终向量Vj中第i个位被选中(该向量位对应文档di),则将该位的值重置为1后,对于文档di,还需要为其随机选取αi-1个桶,并将这些桶中所存最终向量的第i个位的值重置为1;
步骤1.4.9、将只被一个密文索引词映射过的桶中的最终向量处理完毕后,最后依次处理各个文档,此时对于其中一个文档di,随机选取αi-β个桶,并将这些桶中所存最终向量的第i个位的值重置为1,其中β表示步骤1.4.8中第i个位被选中并重置为1的最终向量(或桶)的个数。
在上述的一种云环境下高效的隐私保护密文查询方法,步骤2.2中查询用户根据明文查询关键词集构建密文查询请求包括以下子步骤:
步骤2.2.1、查询用户利用索引词加密密钥key1,对明文查询关键词集中每一个关键词进行AES单向加密,得到密文关键词集;
步骤2.2.2、查询用户获取每一个密文关键词,对其进行k次哈希运算,运算结果为k个位置游标,它将对应指向密文索引的k个桶;
步骤2.2.3、查询用户对所有密文关键词哈希运算后得到的位置游标取并集并去重,得到一个位置游标序列;该位置游标序列即为最终的密文查询请求。
在上述的一种云环境下高效的隐私保护密文查询方法,步骤2.4中云端根据密文查询请求在基于桶的密文索引上执行查询包括以下子步骤:
步骤2.4.1、云端获取密文查询请求,即一个位置游标序列;
步骤2.4.2、云端从密文查询请求中依次取出每一个位置游标,并从密文索引中取出该位置游标所映射的桶中所存的向量,最终得到一个向量集合;
步骤2.4.3、对于单关键词查询,将向量集合中所有向量进行交运算,即对这些向量执行按位与操作,得到的向量即为该单关键词查询请求的结果向量;
步骤2.4.4、对于多关键词查询,则分为多关键词的与逻辑查询和或逻辑查询两类:对于与逻辑查询,将向量集合中所有向量进行交运算,即对这些向量执行按位与操作,得到的向量即为该多关键词与逻辑查询请求的结果向量;对于或逻辑查询,将向量集合中所有向量进行加运算,即对这些向量执行按位加操作,得到的向量即为该多关键词或逻辑查询请求的结果向量;
步骤2.4.4、对于单关键词查询请求和多关键词与逻辑查询请求,云端获取结果向量中值为1的向量位对应的文档,并将这些密文文档集作为查询结果返回给查询用户客户端;对于多关键词或逻辑查询请求,获取结果向量中值大于等于k的位对应的文档,将这些密文文档集按照结果向量中对应位的值由大到小的顺序进行排序后返回给查询用户客户端。
因此,本发明具有如下优点:1.通过构建保护用户隐私的高效密文桶索引,满足了用户安全可靠的查询需求;2.在保证查询隐私保护和查询结果准确性的同时,大大提高了密文索引及查询过程的时空效率。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的步骤中所涉及的密文索引词对应向量的生成图。
图3是本发明的步骤中所涉及的数据发布者本地构建基于桶的密文索引的流程图。
图4是本发明的步骤中所涉及的查询用户输入单关键词进行密文检索或输入多关键词进行与逻辑密文检索的流程图。
图5是本发明的步骤中所涉及的查询用户输入多关键词进行或逻辑密文检索的流程图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例:
下面结合附图和实施例,对本发明所述的技术方案做进一步的阐述。
步骤一,数据贡献者在客户端根据数据集构建基于桶的密文索引,然后加密数据集,最后向云端发布密文数据和密文索引:
具体步骤如下:
1)数据贡献者U在客户端对数据集D中的每个文档进行分词,将每个文档分词得到的明文索引词集合进行并操作,得到所有文档对应的明文索引词集合W;
2)对得到的明文索引词集合进行优化,即去掉所有索引词中重复的索引词,得到优化后的明文索引词集合W,W={wi|i=1,2,……,n};
3)数据贡献者用索引词加密密钥key1对所有的明文索引词进行单向加密,得到密文索引词集合EW,EW={ewi|i=1,2,……,n},其中明文索引词wi和密文索引词ewi一一对应;
4)数据贡献者在客户端利用密文索引词集合EW构建基于桶的密文索引I,I={I[i],i=1,2,……,p},该密文索引是基于桶的数据结构,I[i]表示第i个桶;
5)数据贡献者用数据加密密钥key2对明文数据集进行加密,得到密文数据集D,D={di|i=1,2,……,m};
6)数据贡献者将本地构建的基于桶的密文索引I、密文数据集D发布到云端,并将索引词加密密钥key1和数据加密密钥key2安全共享给查询用户。
上述步骤4)中客户端利用密文索引词集合EW构建基于桶的密文索引I的具体步骤如下:
(1)客户端获取密文索引词集合EW中密文索引词的个数n,然后获取数据贡献者的数据集D中所有文档的个数m;
(2)构建n个长度为m的倒排文档向量,分别命名为Vector1、Vector2、……;其中每一个倒排文档向量Vectori(1≤i≤n)与W’中明文索引词w’i一一对应,也和EW中的密文索引词ewi一一对应;每一个倒排文档向量中的第i位对应于数据集中的第i个文档,比如Vector1[i]和第i个文档di相对应,每个向量中各个位的初始值为0;
(3)依次取出明文索引词集合w’1、w’2、……、w’n和对应密文索引词集合ew1、ew2、……、ewn,以及对应的倒排文档向量集Vector1、Vector2、……、Vectorn。例如ew1和Vector1对应,ew2和Vector2对应;
(4)循环处理每个明文索引词w’i和密文索引词ewi对应的倒排文档向量Vectori,将Vectori中包含ewi(或w’i)的文档对应的向量位标记为1。例如数据贡献者有包含6个文档的密文数据集,密文索引词ew1在第二个文档d2、第五个文档d5和第六个文档d6中出现,则将ew1对应的向量Vector1中第2位、第5位和第6位的值置为1,即Vector1[2]=1,Vector1[5]=1,Vector1[6]=1;密文索引词ew2在第一个文档d1、第二个文档d2和第四个文档d4中出现,则将ew2对应的向量Vector2中第1位、第2位和第4位的值置为1,即Vector2[1]=1,Vector2[2]=1,Vector2[4]=1;密文索引词ew3在第二个文档d2和第三个文档d3中出现,则将ew3对应的向量Vector3中第2位和第3位的值置为1,即Vector3[2]=1,Vector3[3]=1。
(5)构建桶集合Bucket,并通过密文索引词的个数n计算桶的初始个数p和对每一个密文索引词进行哈希运算的次数k,并确定k个具体的哈希函数hash1()、hash2()、……、hashk(),其中每个桶用于存一个长度为m的向量,将第i个桶所存向量记为Vi,每个向量的各个元素初始值均为0;
(6)依次获取密文索引词集合中的密文索引词ew1、ew2、……,对每一个密文索引词分别用hash1()、hash2()、……、hashk()进行k次哈希运算,每次哈希运算映射到一个桶,这样,每个密文索引词经过k次哈希运算后会映射到k个桶中。当密文索引词经过一次哈希运算映射到的桶中所存向量为初始向量0时,将该密文索引词对应的向量作为这个桶所存的向量值;当密文索引词经过一次hash运算映射到的桶中所存向量不为初始向量0时,将映射到该桶的密文索引词对应的向量和桶中所存向量执行并操作,即对两个向量执行按位或操作,得到该桶此时对应的向量。令第i个桶所存的最终向量命名为Vi。例如,当k=3时,每个密文索引词会进行3次哈希运算,以ew1、ew2、ew3为例:对于ew1,有hash1(ew1)=1,hash2(ew1)=4,hash3(ew1)=7,则第1个桶、第4个桶和第7个桶所存向量就更新为Vector1,即V1=Vector1,V4=Vector1,V7=Vector1,经过计算可得V1={0,1,0,0,1,1},V4={0,1,0,0,1,1},V7={0,1,0,0,1,1};对于ew2,有hash1(ew2)=2,hash2(ew2)=4,hash3(ew2)=7,第2个桶所存向量就更新为Vector2,第4个桶所存向量更新为Vector1∪Vector2,第7个桶所存向量更新为Vector1∪Vector2,即V2=Vector2,V4=Vector1∪Vector2,V7=Vector1∪Vector2,经过计算可得V2={1,1,0,1,0,0},V4={1,1,0,1,1,1},V7={1,1,0,1,1,1};对于ew3,有hash1(ew3)=5,hash2(ew3)=6,hash3(ew3)=7,则第5个桶所存向量就更新为Vector3,第6个桶所存向量更新为Vector3,第7个桶所存向量更新为Vector1∪Vector2∪Vector3,即V5=Vector3,V6=Vector3,V7=Vector1∪Vector2∪Vector3,经过计算可得V5={0,1,1,0,0,0},V6={0,1,1,0,0,0},V7={1,1,1,1,1,1}。
(7)对文档di进行分词后得到的索引词个数用|di|表示,取△=max{|d1|,|d2|,……,|dm|},则对于文档di,还需要添加△-|di|个索引词,即即可转化为如下需求:需要额外为文档di随机选取αi个桶,并将αi个桶中所存的最终向量第i个位的值置为1,其中αi=(△-|di|)*k;
(8)对于只被一个密文索引词映射过的桶I[j],为了在增强索引安全性的同时保证查询精确性,根据映射到桶I[j]的密文索引词,找到该密文索引词映射到的k个桶,将除了桶I[j]外的其他k-1个桶中所存的最终向量的各个位进行排查,对于其中任何一位,若只有桶I[j]所存的最终向量Vj中此位的值为0,则不能将桶I[j]此位的值重置为1,否则,该桶所存的最终向量Vj中此位的值可以由0置为1,最后统计桶I[j]所存的最终向量Vj中值为0且可以置为1的位的个数μ,从这μ个位中随机选取ε个位的值重置为1。假设最终向量Vj中第i个位被选中(该向量位对应文档di),则将该位的值重置为1后,对于文档di,还需要为其随机选取αi-1个桶,并将这些桶中所存最终向量的第i个位的值重置为1。
(9)将只被一个密文索引词映射过的桶中的最终向量处理完毕后,最后依次处理各个文档,此时对于其中一个文档di,随机选取αi-β个桶,对于其中的一个桶I[j],若该桶中所存的最终向量的第i个位为1,则不作任何处理。若该桶中所存的最终向量的第i个位为0,则找到映射到桶I[j]的各个密文索引词,对于任一个密文索引词,找到该密文索引词映射到的k个桶,若这k个桶中只有桶I[j]所存的最终向量Vj第i个位的值为0,则不能将最终向量Vj第i个位的值重置为1,否则,将该桶所存最终向量Vj第i个位的值由0重置为1,按照此处理流程处理完为文档di随机选取的αi-β个桶,其中β表示步骤(8)中第i个位被置1的最终向量的个数,若只被一个密文索引词映射过的桶的总数为γ,则β的取值范围为0≤β≤γ;
步骤二,查询用户提交查询请求到云端,云端在基于桶的密文索引上执行查询,返回满足条件的查询结果给查询用户:
具体步骤如下:
1)查询用户在客户端将查询请求进行分词,得到明文查询关键词集;
2)查询用户获取数据贡献者安全共享的索引词加密密钥key1,并利用key1和明文查询关键词集构建密文查询请求;
3)查询用户将密文查询请求提交到云端;
4)云端获取密文查询请求,并在基于桶的密文索引上执行查询;
5)云端返回密文查询结果到查询用户的客户端,查询用户的客户端获取数据贡献者安全共享的数据加密密钥key2对查询结果进行解密。
上述步骤2)中查询用户根据明文查询关键词集构建密文查询请求的具体步骤如下:
(1)查询用户利用索引词加密密钥key1,对明文查询关键词集中每一个关键词进行AES单向加密,得到密文查询关键词集KW,KW={kwi|i=1,2,……};例如查询用户输入的查询关键词经加密后得到步骤一例子中的ew2和ew3作为密文查询关键词,即kw1=ew2,kw2=ew3
(2)对于每一个密文查询关键词kwi,进行k次哈希运算,运算结果为k个位置游标,它将对应指向密文索引的k个桶;例如对于kw1,根据步骤一中例子,有hash1(kw1)=2,hash2(kw1)=4,hash3(kw1)=7,即kw1经过三次哈希运算后得到的位置游标为{2,4,7},将分别指向密文索引的第2个桶、第4个桶和第7个桶;对于kw2,根据步骤一中例子,有hash1(kw2)=5,hash2(kw2)=6,hash3(kw2)=7,即kw2经过三次哈希运算后得到的位置游标为{5,6,7},将分别指向密文索引的第5个桶、第6个桶和第7个桶;
(3)查询用户对所有密文查询关键词哈希运算后得到的位置游标取并集并去重,得到一个位置游标序列,该位置游标序列即为最终的密文查询请求;例如上述只包含kw1、kw2密文查询关键词的查询请求,取kw1、kw2对应的位置游标的并集所得到的位置游标序列为{2,4,5,6,7},即最终的密文查询请求为{2,4,5,6,7};
上述步骤4)中云端根据密文查询请求在基于桶的密文索引上执行查询的具体步骤如下:
(1)云端获取密文查询请求,即一个位置游标序列;
(2)云端从密文查询请求中依次取出每一个位置游标,并从密文索引中取出该位置游标所映射的桶中所存的向量,最终得到一个向量集合;
(3)对于单关键词查询,将向量集合中所有向量进行交运算,即对这些向量执行按位与操作,得到的向量即为该单关键词查询请求的结果向量Vector’;例如,根据步骤一中例子,只包含密文关键词kw1=ew1的密文查询请求为{2,4,7},则对应的结果向量为Vector’=V2∩V4∩V7,计算可得Vector’恰好等于ew1的倒排文档向量Vector2;只包含密文关键词kw2=ew2的密文查询请求为{5,6,7},则对应的结果向量为Vector’=V5∩V6∩V7,计算可得Vector’恰好等于ew2的倒排文档向量Vector3
(4)对于多关键词与逻辑查询,将向量集合中所有向量进行交运算,即对这些向量执行按位与操作,得到的向量即为该多关键词与逻辑查询请求的结果向量;根据步骤一中例子,包含两个密文关键词kw1=ew1、kw2=ew2的与逻辑密文查询请求为{2,4,5,6,7},则其对应的结果向量为Vector’=V2∩V4∩V5∩V6∩V7={0,1,0,0,0,0}=Vector2∩Vector3
(5)对于上述单关键词查询请求和多关键词与逻辑查询请求,云端获取结果向量中值为1的向量位对应的文档,将这些密文文档集作为查询结果返回给查询用户客户端;本例中包含密文关键词kw1=ew1、kw2=ew2的与逻辑密文查询请求对应的最终结果向量中只有第二位值为1,且向量第二位对应第二个文档,故将第二个文档d2作为查询结果返回给用户客户端,表示用户查询的两个关键词只在第二个文档中均出现。
(6)对于多关键词或逻辑查询,将向量集合中所有向量进行加运算,即对这些向量执行按位加操作,得到的向量即为该多关键词与逻辑查询请求的结果向量;根据步骤一中例子,包含两个密文关键词kw1=ew1、kw2=ew2的或逻辑密文查询请求为{2,4,5,6,7},则其对应的结果向量为Vector’=V2+V4+V5+V6+V7={3,5,3,3,2,2}=Vector2+Vector3
(7)对于上述多关键词或逻辑查询请求,云端获取结果向量中值大于等于k的位对应的文档,将这些密文文档集按照结果向量中对应位的值由大到小的顺序进行排序后返回给查询用户客户端,本例中包含密文关键词kw1=ew1、kw2=ew2的或逻辑密文查询请求对应的最终结果向量第一、三、四位均为3,第二位为5,其余位为2且小于k=3,则按照文档d2、d1、d3、d4的顺序将查询结果返回给用户客户端,表示各个文档中至少出现了一个用户查询的关键词,且文档d2中包含的关键词个数最多。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (3)

1.一种云环境下高效的隐私保护密文查询方法,其特征在于:包括以下步骤:
步骤1,数据贡献者在客户端根据数据集构建基于桶的密文索引,然后加密数据集,最后向云端发布密文数据和基于桶的密文索引;
步骤2,查询用户提交查询请求到云端,云端在基于桶的密文索引上执行查询,返回满足条件的查询结果给查询用户;
所述步骤1包括以下子步骤:
步骤1.1、数据贡献者U在客户端对数据集D中的每个文档进行分词,将每个文档分词得到的明文索引词集合进行并操作,得到所有文档对应的明文索引词集合W;
步骤1.2、对得到的明文索引词集合W进行优化,即去掉所有索引词中重复的索引词;得到优化后的明文索引词集合W’,W’={w’i|i=1,2,……,n};w’i表示明文索引词集合中的第i个明文索引词;
步骤1.3、数据贡献者用索引词加密密钥key1对所有的明文索引词进行AES单向加密,得到密文索引词集合EW,EW={ewi|i=1,2,……,n},其中明文索引词w’i和密文索引词ewi一一对应;
步骤1.4、数据贡献者在客户端利用密文索引词集合构建基于桶的密文索引I;
步骤1.5、数据贡献者用数据加密密钥key2对明文数据集进行AES加密,得到密文数据集S,S={di|i=1,2,……,m};
步骤1.6、数据贡献者将本地构建的基于桶的密文索引I、密文数据集发布到云端,将索引词加密密钥key1和数据加密密钥key2安全共享给查询用户;
所述步骤2包括以下子步骤:
步骤2.1、查询用户在客户端将查询请求进行分词,得到明文查询关键词集;
步骤2.2、查询用户获取数据贡献者安全共享的索引词加密密钥key1,并利用key1和明文查询关键词集构建密文查询请求;
步骤2.3、查询用户将密文查询请求提交到云端;
步骤2.4、云端获取密文查询请求,并在基于桶的密文索引上执行查询;
步骤2.5、云端返回密文查询结果到查询用户的客户端,查询用户的客户端获取数据贡献者安全共享的数据加密密钥key2,对查询结果进行解密;
步骤1.4中根据密文索引词集合构建基于桶的密文索引I包括以下子步骤:
步骤1.4.1、客户端获取密文索引词集合EW中密文索引词的个数n,然后获取数据贡献者的数据集D中所有文档的个数m;
步骤1.4.2、构建n个长度为m的倒排文档向量,分别命名为Vector1、Vector2、……、Vectorn;其中每一个倒排文档向量Vectori与W’中明文索引词w’i一一对应,1≤i≤n,也和EW中的密文索引词ewi一一对应;每一个倒排文档向量中的第i位对应于数据集中的第i个文档,且向量中的每一位初始值为0;
步骤1.4.3、依次取出明文索引词集合w’1、w’2、……、w’n和对应密文索引词集合ew1、ew2、……、ewn,以及对应的倒排文档向量集Vector1、Vector2、……、Vectorn
步骤1.4.4、循环处理每个明文索引词w’i和密文索引词ewi对应的倒排文档向量Vectori,将Vectori中包含w’i的文档对应的向量位标记为1;
步骤1.4.5、构建桶集合,通过密文索引词的个数n计算桶的初始个数p和对每一个密文索引词进行哈希运算的次数k,并确定k个具体的哈希函数hash1()、hash2()、……、hashk(),其中每个桶用于存一个长度为m的向量,每个向量的各个元素初始值均为0;
步骤1.4.6、依次获取密文索引词集合中的密文索引词,对每一个密文索引词进行k次哈希运算,每次哈希运算映射到一个桶,将映射到该桶的所有密文索引词对应的倒排文档向量执行并操作,即对这些倒排文档向量执行按位或操作,得到该桶所存的最终向量,第i个桶所存的最终向量命名为Vi
步骤1.4.7、对文档di进行分词后得到的索引词个数用|di|表示,取△=max{|d1|,|d2|,……,|dm|},则对于文档di,还需要添加△-|di|个索引词,即可转化为如下需求:需要额外为文档di随机选取αi个桶,并将αi个桶中所存的最终向量的第i个位的值重置为1,其中αi=(△-|di|)*k;
步骤1.4.8、对于只被一个密文索引词映射过的桶I[j],统计该桶所存的最终向量Vj中值为0的位的个数μ,从这μ个位中随机选取ε个位,并将这ε个位的值重置为1;假设最终向量Vj中第i个位被选中,该向量位对应文档di,则将该位的值重置为1后,对于文档di,还需要为其随机选取αi-1个桶,并将这些桶中所存最终向量的第i个位的值重置为1;
步骤1.4.9、将只被一个密文索引词映射过的桶中的最终向量处理完毕后,最后依次处理各个文档,此时对于其中一个文档di,随机选取αi-β个桶,并将这些桶中所存最终向量的第i个位的值重置为1,其中β表示步骤1.4.8中第i个位被选中并重置为1的最终向量或桶的个数。
2.根据权利要求1所述的一种云环境下高效的隐私保护密文查询方法,其特征在于:步骤2.2中查询用户根据明文查询关键词集构建密文查询请求包括以下子步骤:
步骤2.2.1、查询用户利用索引词加密密钥key1,对明文查询关键词集中每一个关键词进行AES单向加密,得到密文关键词集;
步骤2.2.2、查询用户获取每一个密文关键词,对其进行k次哈希运算,运算结果为k个位置游标,它将对应指向密文索引的k个桶;
步骤2.2.3、查询用户对所有密文关键词哈希运算后得到的位置游标取并集并去重,得到一个位置游标序列;该位置游标序列即为最终的密文查询请求。
3.根据权利要求2所述的一种云环境下高效的隐私保护密文查询方法,其特征在于:步骤2.4中云端根据密文查询请求在基于桶的密文索引上执行查询包括以下子步骤:
步骤2.4.1、云端获取密文查询请求,即一个位置游标序列;
步骤2.4.2、云端从密文查询请求中依次取出每一个位置游标,并从密文索引中取出该位置游标所映射的桶中所存的向量,最终得到一个向量集合;
步骤2.4.3、对于单关键词查询,将向量集合中所有向量进行交运算,即对这些向量执行按位与操作,得到的向量即为该单关键词查询请求的结果向量;
步骤2.4.4、对于多关键词查询,则分为多关键词的与逻辑查询和或逻辑查询两类:对于与逻辑查询,将向量集合中所有向量进行交运算,即对这些向量执行按位与操作,得到的向量即为该多关键词与逻辑查询请求的结果向量;对于或逻辑查询,将向量集合中所有向量进行加运算,即对这些向量执行按位加操作,得到的向量即为该多关键词或逻辑查询请求的结果向量;
步骤2.4.4、对于单关键词查询请求和多关键词与逻辑查询请求,云端获取结果向量中值为1的向量位对应的文档,并将这些密文文档集作为查询结果返回给查询用户客户端;对于多关键词或逻辑查询请求,获取结果向量中值大于等于k的位对应的文档,将这些密文文档集按照结果向量中对应位的值由大到小的顺序进行排序后返回给查询用户客户端。
CN201310308414.6A 2013-07-22 2013-07-22 一种云环境下高效的隐私保护密文查询方法 Active CN103345526B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310308414.6A CN103345526B (zh) 2013-07-22 2013-07-22 一种云环境下高效的隐私保护密文查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310308414.6A CN103345526B (zh) 2013-07-22 2013-07-22 一种云环境下高效的隐私保护密文查询方法

Publications (2)

Publication Number Publication Date
CN103345526A CN103345526A (zh) 2013-10-09
CN103345526B true CN103345526B (zh) 2016-12-28

Family

ID=49280321

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310308414.6A Active CN103345526B (zh) 2013-07-22 2013-07-22 一种云环境下高效的隐私保护密文查询方法

Country Status (1)

Country Link
CN (1) CN103345526B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108768651A (zh) * 2018-04-20 2018-11-06 南京搜文信息技术有限公司 支持多维区间范围查询的可搜索公钥加密方法

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103607405B (zh) * 2013-11-27 2016-11-23 东北大学 一种面向云存储的密文搜索认证方法
CN103595730B (zh) * 2013-11-28 2016-06-08 中国科学院信息工程研究所 一种密文云存储方法和系统
CN103927340B (zh) * 2014-03-27 2017-06-27 中国科学院信息工程研究所 一种密文检索方法
CN104980477B (zh) * 2014-04-14 2019-07-09 航天信息股份有限公司 云存储环境下的数据访问控制方法和系统
CN103955537A (zh) * 2014-05-16 2014-07-30 福州大学 一种语义模糊可搜索加密云盘设计方法及系统
CN104036050A (zh) * 2014-07-04 2014-09-10 福建师范大学 一种密文云数据复杂查询方法
CN104598835A (zh) * 2014-12-29 2015-05-06 无锡清华信息科学与技术国家实验室物联网技术中心 一种保护隐私的基于云的实数向量距离计算方法
CN104834696B (zh) * 2015-04-24 2019-03-26 百度在线网络技术(北京)有限公司 一种用于在计算机设备中搜索私有资源的方法和装置
US10083315B2 (en) * 2015-06-29 2018-09-25 Microsoft Technology Licensing, Llc Privacy enhanced personal search index
CN106610995B (zh) * 2015-10-23 2020-07-07 华为技术有限公司 一种创建密文索引的方法、装置及系统
CN105827595A (zh) * 2016-03-09 2016-08-03 成都爆米花信息技术有限公司 本地数据安全存储方法
CN106127075B (zh) * 2016-06-27 2019-11-08 湖南大学 一种云存储环境下基于隐私保护的可搜索加密方法
CN109144993B (zh) * 2017-06-16 2021-07-27 腾讯科技(深圳)有限公司 一种数据查询方法及装置
CN107273529B (zh) * 2017-06-28 2020-02-07 武汉图信科技有限公司 基于哈希函数的高效层级索引构建及检索方法
CN107547525B (zh) * 2017-08-14 2020-07-07 复旦大学 一种大数据查询处理的隐私保护方法
CN107566111A (zh) * 2017-10-23 2018-01-09 郑州云海信息技术有限公司 一种基于加密算法的网络节点布隆过滤器构建及实现方法
CN110019011A (zh) * 2017-11-20 2019-07-16 中移(杭州)信息技术有限公司 一种密文检索方法及设备
CN108512840A (zh) * 2018-03-21 2018-09-07 杭州弗兰科信息安全科技有限公司 一种基于泄序加密的密文检索方法
CN109088719B (zh) * 2018-08-14 2019-06-04 重庆第二师范学院 外包数据库多关键词可验证密文搜索方法、数据处理系统
CN109461499A (zh) * 2018-10-23 2019-03-12 陈晋广 一种诊断脱色素性皮肤病的系统
CN109614817B (zh) * 2018-11-20 2021-06-22 南京邮电大学 一种云环境下分布式密文索引切片检索方法
CN109885650B (zh) * 2019-01-08 2021-05-11 南京邮电大学 一种外包云环境隐私保护密文排序检索方法
CN109885640B (zh) * 2019-01-08 2021-05-11 南京邮电大学 一种基于α叉索引树的多关键词密文排序检索方法
CN111783109B (zh) * 2019-04-04 2023-08-01 华控清交信息科技(北京)有限公司 数据查询方法、系统及存储介质
CN110457945B (zh) * 2019-08-01 2021-03-02 卫盈联信息技术(深圳)有限公司 名单查询的方法、查询方设备、服务方设备及存储介质
CN112087439B (zh) * 2020-09-02 2022-05-17 杭州趣链科技有限公司 区块链交易查询方法、系统、计算机设备和存储介质
CN114003938B (zh) * 2021-11-11 2022-05-31 蓝象智联(杭州)科技有限公司 一种基于多头联盟的安全隐匿数据查询方法
CN114090638B (zh) * 2022-01-20 2022-04-22 支付宝(杭州)信息技术有限公司 基于隐私保护的联合数据查询方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101854392A (zh) * 2010-05-20 2010-10-06 清华大学 一种基于云计算环境的个人数据管理方法
CN103038750A (zh) * 2010-03-31 2013-04-10 安全第一公司 对移动中数据进行保护的系统和方法
CN103064931A (zh) * 2012-12-21 2013-04-24 清华大学 可验证的隐私数据比较与排名查询方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870398B2 (en) * 2007-01-25 2011-01-11 International Business Machines Corporation Integrity assurance of query result from database service provider

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103038750A (zh) * 2010-03-31 2013-04-10 安全第一公司 对移动中数据进行保护的系统和方法
CN101854392A (zh) * 2010-05-20 2010-10-06 清华大学 一种基于云计算环境的个人数据管理方法
CN103064931A (zh) * 2012-12-21 2013-04-24 清华大学 可验证的隐私数据比较与排名查询方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
云环境下一种隐私保护的高效密文排序查询方法;程芳权 等;《计算机学报》;20121130;第35卷(第11期);第2215-2227页 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108768651A (zh) * 2018-04-20 2018-11-06 南京搜文信息技术有限公司 支持多维区间范围查询的可搜索公钥加密方法

Also Published As

Publication number Publication date
CN103345526A (zh) 2013-10-09

Similar Documents

Publication Publication Date Title
CN103345526B (zh) 一种云环境下高效的隐私保护密文查询方法
CN106127075B (zh) 一种云存储环境下基于隐私保护的可搜索加密方法
CN108156140A (zh) 一种支持数值属性比较的多关键字可搜索加密方法
CN106815350A (zh) 一种云环境中动态的密文多关键词模糊搜索方法
CN110326253A (zh) 用于对加密数据进行模糊关键字搜索的方法和系统
CN111026788B (zh) 一种混合云中基于同态加密的多关键词密文排序检索方法
CN106559422B (zh) 基于密钥协商的多维密文区间查询方法
CN105357247B (zh) 基于分层云对等网络的多维属性云资源区间查找方法
CN110166466A (zh) 一种可高效更新权限的多用户可搜索加密方法和系统
CN106980796A (zh) 云环境下基于mdb+树的多域连接关键词的搜索方法
US20240104234A1 (en) Encrypted information retrieval
CN109885650A (zh) 一种外包云环境隐私保护密文排序检索方法
CN107766739B (zh) 面向加密文本数据的短语检索方法及其装置
CN108416037A (zh) 云环境中基于两级索引的中心关键词密文搜索方法
Ananthi et al. FSS-SDD: fuzzy-based semantic search for secure data discovery from outsourced cloud data
CN107317814A (zh) 与应用透明的密文搜索方法、网关装置、网关设备和系统
CN107086917A (zh) 一种并行化和结构化公钥可搜索的加密方法
US11310045B2 (en) Compression and oblivious expansion of RLWE ciphertexts
CN106874379B (zh) 一种面向密文云存储的多维区间检索方法与系统
CN108768651A (zh) 支持多维区间范围查询的可搜索公钥加密方法
CN109672525B (zh) 一种具有前向索引的可搜索公钥加密方法及系统
CN115905317A (zh) 一种空间数据联邦的隐私保护范围聚合查询方法
CN113158087B (zh) 一种空间文本的查询方法及装置
CN109213874A (zh) 一种wmsn区块链的多媒体混合数据近似近邻二元查询方法
Hong et al. An efficient key management scheme for user access control in outsourced databases

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant