一种云环境中密文数据的模糊多关键词检索方法与流程

文档序号:12597919阅读:280来源:国知局
本发明属于云计算和信息检索
技术领域
,更具体地,涉及一种云环境中密文数据的模糊多关键词检索方法。
背景技术
:云计算可以在互联网中为用户提供更加高效和廉价的计算、存储和应用等服务。越来越多的企业和个人愿意将数据存储到云服务器中,并在需要的时候可以重新取回数据。但用户将数据存储到云环境后就失去了对数据的直接控制,又可能导致用户隐私信息的泄露和滥用,如Google等云服务商都发生过数据泄露或丢失用户数据的现象。存储在云环境中的数据面临着更大的安全问题,它不仅要防止网络黑客对数据的非法获取,还要防止云服务商或外包数据库服务提供商的窥探敏感数据的行为。在云存储中,由于数据存储在半可信或不可靠的环境中,采用数据加密是保障数据安全的基本和有效的方法。但对数据加密的同时,也给数据的访问带来困难。由于云服务器是半可信的,数据的加密和解密只能在用户端完成,数据检索要消耗大量的时间用于数据传输和解密上。因此,研究高效、安全的密文存储与检索方法具有重要的现实意义。针对加密文件进行关键词搜索的密文检索技术首先由Song等人提出,该方案没有构建任何索引,需要对全部密文进行线性扫描,效率较为低下(文献1)。Song等人首次提出了对称可搜索加密方案,即在对称密码体制下的密文检索方案。该方案只考虑了单关键词的密文检索,效率较低。当用户希望检索关键词时,将关键词与密文数据线性地进行异或操作。将操作结果与校验条件相比较,如果符合校验条件,则将相应的密文数据发送给用户,如果不符合校验条件,则检索停止。Boneh等人提出了第一个非对称可搜索加密方案PEKS,解决了当密文存储于第三方非可信服务器时的关键词密文检索问题。该方案引入了双线性对这一密码学原理,用户每次上传文件时都需要对所有关键词使用对运算进行加密,效率仍然不高(文献2)。随后,Boneh等人引入了基于属性加密的概念,使用PEKS来建立带关键词检索的加密数据,从而用户可以使用更细的粒度来控制公钥加密的强度(文献3)。然而,上述方案并未提及关键词与文件的相似度,用户得到的文件与其查询的关键词可能并不匹配。对此,Wang等人考虑关键词词频的信息,提出了单关键词的密文检索方案。然而,该方案对关键词与文件相似度计算的考虑并不全面,需要扫描全部文件,同时索引的更新较为麻烦(文献4)。在现实的应用中,精确关键词的查询不足以满足用户的检索需求。Li等人提出了模糊关键词的密文检索方案,该方案给出了每个关键词可能的拼写错误,使用编辑距离作为度量。该方案初步实现了模糊关键词的密文检索,但不支持多关键词操作,需要预先定义词典,空间开销大,查询效率低(文献5)。Wang等人提出了模糊多关键词的密文检索方案,该方案使用局部敏感哈希和布隆过滤器方法进行操作,不需要预先定义的词典,查询效率高,返回的结果准确,但随着数据量的增大,空间开销逐渐变大(文献6)。综上所述,目前并没有一种能在云环境中实现安全高效的支持模糊多关键词的密文检索方法,已有相关方案存在不支持模糊查询或多关键词查询,查询效率较低,空间开销较大等问题。文献1:SongDX,WagnerD,PerrigA.Practicaltechniquesforsearchesonencrypteddata.ProceedingsofIEEESymposiumonSecurity&Privacy,IEEEComputerSociety,Washington,DC,USA,2000.44-55。文献2:BonehD,CrescenzoGD,OstrovskyR,etal.Publickeyencryptionwithkeywordsearch.ProceedingsofEUROCRYPT’04,Springer-Verlag,Berlin,Heidelberg,Gemany,2004.506-522。文献3:BonehD,WatersB.Conjunctive,subset,andrangequeriesonencrypteddata.ProceedingsofTheoryofCryptographyConference,Springer-Verlag,Berlin,Heidelberg,Gemany,2007.535-554。文献4:WangC,CaoN,LiJ,etal.Securerankedkeywordsearchoverencryptedclouddata.ProceedingsofIEEE30thInternationalConferenceonDistributedComputingSystems(ICDCS),IEEEComputerSociety,Washington,DC,USA,2010.253-262。文献5:LiJ,WangQ,WangC,etal.Fuzzykeywordsearchoverencrypteddataincloudcomputing.ProceedingsofIEEE29thInternationalConferenceonComputerCommunications(INFOCOM),IEEEComputerSociety,Washington,DC,USA,2010.441-445。文献6:WangB,YuS,LouW,etal.Privacy-preservingmulti-keywordfuzzysearchoverencrypteddatainthecloud.ProceedingsofIEEE33rdInternationalConferenceonComputerCommunications(INFOCOM),IEEEComputerSociety,Washington,DC,USA,2014.2112-2120。技术实现要素:针对现有技术的以上缺陷或改进需求,本发明提供了一种云环境中大数据量下的密文数据的模糊多关键词检索方法。本发明所采用的技术方案是:一种云环境中密文数据的模糊多关键词检索方法,其特征在于,包括以下步骤:步骤1:初始化;数据拥有者使用随机安全参数生成一个安全密钥;步骤2:生成索引;数据拥有者根据自身需求制定文件集合,对集合中每个文件抽取关键词生成关键词集合,对每个关键词进行二元分词和向量化,得到二元向量组,并为每个文件构建计数型布隆过滤器作为文件的索引,使用MinHash算法对二元向量组降维并插入布隆过滤器,生成每个文件的索引向量;步骤3:文件加密;数据拥有者使用AES或DES算法对文件集合进行加密,生成密文文件,并将其上传至云服务器;步骤4:生成安全索引;数据拥有者使用步骤1中生成的安全密钥对步骤2中文件的索引向量进行加密,生成安全索引,并将其上传至云服务器;步骤5:生成陷门;如果数据使用者为未授权用户,则要将查询的数据发送给数据拥有者,数据拥有者对查询数据抽取关键词,对关键词二元分词和向量化,得到二元向量组,将其插入计数型布隆过滤器,生成查询向量,并根据步骤1中生成的安全密钥对查询向量进行加密,生成陷门返回给数据使用者;如果数据使用者为授权用户,则直接使用步骤1中生成的安全密钥生成陷门;步骤6:查询;数据使用者将陷门发送到云服务器,云服务器根据陷门和安全索引为用户的请求进行查询,将前k个得分最高的结果返回给数据使用者,k≥1。作为优选,步骤1的具体实现包括以下子步骤:步骤1.1:数据拥有者生成一个随机安全参数;步骤1.2:根据生成的安全参数生成两个可逆矩阵,作为密钥矩阵;步骤1.3:生成安全密钥。作为优选,步骤2的具体实现包括以下子步骤:步骤2.1:数据拥有者根据自身需求制定文件集合;步骤2.2:数据拥有者对文件集合中的每个文件进行语法分析和词法分析,抽取关键词,得到关键词的集合;步骤2.3:数据拥有者对每个关键词进行二元分词;步骤2.4:数据拥有者将关键词的二元分词进行向量化,得到二元向量组;步骤2.5:数据拥有者为文件构建一个计数型布隆过滤器作为文件的索引;步骤2.6:数据拥有者使用MinHash算法对每个文件对应的二元向量组进行降维,以Jaccard距离为相似度度量,将相似度在预设范围内的二元向量组哈希到计数型布隆过滤器的同一个地址序列中并计数,得到的布隆过滤器的值即为每个文件的索引向量。作为优选,步骤3的具体实现包括以下子步骤:步骤3.1:数据拥有者使用AES或DES算法对文件集合进行加密,生成密文文件;步骤3.2:数据拥有者将密文文件上传至云服务器。作为优选,步骤4的具体实现包括以下子步骤:步骤4.1:数据拥有者将每个文件的索引向量遵循预设的规则分解为两个向量;步骤4.2:数据拥有者使用步骤1中生成的安全密钥对文件索引向量进行加密;所述安全密钥包括两个可逆矩阵,使用两个可逆矩阵的转置分别乘以两个分解后的向量,得到每个文件的安全索引向量,所有的安全索引向量构成安全索引;步骤4.3:数据拥有者将安全索引上传至云服务器。作为优选,步骤5的具体实现包括以下子步骤:步骤5.1:判断数据使用者是否预先被授权;若是,则执行下述步骤5.11;若否,则执行下述步骤5.2;步骤5.2:数据使用者将查询的数据发送给数据拥有者;步骤5.3:数据拥有者对查询数据抽取关键词,得到关键词集合;步骤5.4:数据拥有者对关键词集合中的每个关键词进行二元分词;步骤5.5:数据拥有者对分词后的每个关键词向量化;步骤5.6:数据拥有者为查询数据生成一个计数型布隆过滤器;步骤5.7:数据拥有者使用与步骤2中相同的MinHash函数对每个关键词的向量进行计算,将其插入布隆过滤器中,生成查询数据的查询向量;步骤5.8:数据拥有者将查询向量遵循预设的规则分解为两个向量;步骤5.9:数据拥有者使用密钥矩阵对查询向量进行加密,使用矩阵的逆分别乘以两个分解后的向量,得到查询数据的陷门;步骤5.10:数据拥有者将生成的陷门返回给数据使用者,本流程结束;步骤5.11:数据使用者对查询数据抽取关键词,得到关键词集合;数据使用者对关键词集合中的每个关键词进行二元分词;数据使用者对分词后的每个关键词向量化;数据使用者为查询数据生成一个计数型布隆过滤器;数据使用者使用与步骤2中相同的MinHash函数对每个关键词的向量进行计算,将其插入布隆过滤器中,生成查询数据的查询向量;数据使用者将查询向量遵循预设的规则分解为两个向量;数据使用者使用密钥矩阵对查询向量进行加密,使用矩阵的逆分别乘以两个分解后的向量,得到查询数据的陷门。作为优选,步骤6的具体实现包括以下子步骤:步骤6.1:数据使用者将陷门发送到云服务器;步骤6.2:云服务器计算陷门与安全索引的内积;步骤6.3:云服务器对计算的内积进行排序,找到前k个内积最高的结果;步骤6.4:云服务器将找到的结果返回给数据使用者。作为优选,所述方法还包括:步骤7:数据集更新;当需要进行数据集更新时,数据拥有者根据实际需求对数据集进行增加、删除或修改操作,根据生成索引操作变更索引,将新的密文文件和安全索引发送至云服务器。与现有技术相比,本发明具有以下的有益效果:实现了云环境中密文数据的模糊多关键词检索,云服务器可以按照用户需求,查询出包含有指定多个关键词的密文,支持模糊关键词查询,并且不会向云服务器和其他攻击者泄露与数据和查询相关的任何信息;使用计数型布隆过滤器和MinHash算法构建索引向量和查询向量,使得索引构建和查询过程更加高效,并且排序结果更加准确;该方法适用于云环境中密文数据的存储和检索,具有高安全性、可靠性、检索效率和准确率。附图说明图1为本发明实施例的整体流程图;图2为本发明实施例中生成索引阶段的细化流程图;图3为本发明实施例中生成索引阶段中将文件关键词集合映射到计数型布隆过滤器的示例图;图4为本发明实施例中生成安全索引阶段的细化流程图;图5为本发明实施例中生成陷门阶段的细化流程图;图6为本发明实施例中生成查询向量阶段中将查询关键词集合映射到计数型布隆过滤器的示例图;图7为本发明实施例中查询阶段的细化流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。以下首先就本发明的技术术语进行解释和说明:数据拥有者:数据的产生者,需要将自身拥有的数据加密后存储在云服务器中,将数据分享给他人,并制定一定的访问策略决定数据的分享对象;密钥:在将明文转换为密文或将密文转换为明文的算法中输入的参数;文件集合:数据拥有者需要上传至云服务器的数据集合;索引:某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单;安全索引:加密后的索引;云服务器:存储数据拥有者的文件集合,会忠实执行数据拥有者和数据使用者发出的操作请求,但在条件允许时会偷窥文件内容;数据使用者:需要对数据拥有者存储在云服务器中的数据进行检索;Jaccard距离:用来度量两个集合之间的差异性,它是Jaccard相似系数的补集,被定义为1减去Jaccard相似系数;而Jaccard相似系数用来度量两个集合之间的相似性,它被定义为两个集合交集的元素个数除以并集的元素个数;MinHash算法:用于快速估算集合的相似度,以Jaccard距离为度量;计数型布隆过滤器:被用于在低错误率的前提下高效地判断某个元素是否属于某个集合,由一组哈希函数和一个向量数据结构组成,向量每一位为一个小的计数器,其基本原理是:用k个哈希函数对包含j个数据对象的集合S中每个数据对象计算一个地址序列{hj1,hj2,…,hjk},然后将向量对应地址序列上的计数器值加1,从而将S中的所有数据映射到布隆过滤器中。以下结合实施例和附图对本发明做进一步说明。图1为本发明云环境中密文数据的模糊多关键词检索方法的整体流程图。如图1所示,本发明云环境中密文数据的模糊多关键词检索方法是应用在云存储中的数据检索情境中,该情境包括数据拥有者、数据使用者和云服务器三个实体。首先,数据拥有者为文件集合建立可检索的安全索引,并将加密的文件集合及安全索引上传至云服务器;接着,数据使用者进行数据检索时,若预先未被授权,则联系数据拥有者,数据拥有者为合法用户生成其查询语句的陷门,若为授权用户,则自行生成陷门;最后,数据使用者将陷门发送给云服务器,云服务器根据陷门和安全索引为用户的请求进行查询,将匹配到的文件返回给数据使用者。在其它实施方式中,建立安全索引的工作也可以交给可信第三方服务器来完成,同时,索引的构建工作也可以使用Mahout分布式数据处理平台,以减轻数据拥有者的计算开销,提高索引构建效率。在本实施例中,数据拥有者为终端(PC、PDA、智能手机等)用户X,他存储在设备中的数据包括文档、照片、录音或语音消息、录像等。现数据拥有者需要传至云服务器共享的数据为文件集合F;数据使用者有3个用户,分别为A、B、C,需要访问集合F。本发明云环境中密文数据的模糊多关键词检索方法包括以下步骤:步骤1:初始化阶段;数据拥有者使用随机安全参数n生成一个安全密钥SK=(M1,M2,S);步骤1具体包括以下子步骤:步骤1.1:数据拥有者生成一个随机安全参数n,n用于保障检索的安全性;由于采用基于向量内积的方法进行检索,n应与向量维度保持一致;步骤1.2:根据n生成两个n阶可逆矩阵M1,M2,作为密钥矩阵;步骤1.3:生成私密密钥SK=(M1,M2,S),其中S={0,1}n是一个n位的向量。步骤2:生成索引阶段;数据拥有者根据自身需求制定文件集合,对集合中每个文件抽取关键词生成关键词集合,对每个关键词进行二元分词和向量化,得到二元向量组,并为每个文件构建计数型布隆过滤器作为文件的索引,使用MinHash算法对二元向量组降维并插入布隆过滤器,生成每个文件的索引向量;如图2所示,步骤2具体包括以下子步骤:步骤2.1:数据拥有者根据自身需求制定文件集合F;在本实施例中,数据拥有者X拥有一系列文件,需要传至云服务器共享的文件为文件集合F,其中包括5个文件,Fi∈F,i∈{1,...,5},F的内容如下表1所示:表1文件集合F的内容为了更清晰地描述本发明的关键步骤,本实施例以英文文件内容为主要示例进行说明;对于中文文件集合F’,例如内容如下表2所示:表2文件集合F’的内容文件内容F1篮球是圆的。F2足球也是圆的。F3我们喜欢打篮球。F4我们也喜欢踢足球。F5足球和篮球都是球。做类似处理即可,不同之处在子步骤2.2中将给予说明;步骤2.2:数据拥有者对文件集合F中的每个文件进行语法分析和词法分析,抽取关键词,得到包含j个关键词的集合W={w1,w2,…,wj};在本实施例中,文件集合F的关键词集合如下表3所示:表3文件集合F的关键词集合对于中文文件集合F’,在得到关键词集合后,将所有关键词全切分转换为其对应的五笔字型码,如下表4所示:表4文件集合F’的关键词集合文件关键词五笔字型码F1篮球tjtl,gfiyF2足球khu,gfiyF3我们,喜欢,篮球trnt,wun,fkuk,cqwy,tjtl,gfiyF4我们,喜欢,足球trnt,wun,fkuk,cqwy,khu,gfiyF5足球,篮球,球khu,gfiy,tjtl,gfiy,gfiy接下来的操作对关键词的五笔字型码进行,具体步骤与对英文关键词的操作完全相同,故不再赘述;步骤2.3:数据拥有者对每个关键词wj进行二元分词;在本实施例中,对每个关键词wj进行二元分词,如对关键词network经过二元分词后为集合{ne,et,tw,wo,or,rk};步骤2.4:数据拥有者将关键词的二元分词进行向量化,得到二元向量组;在本实施例中,使用262位的向量表示关键词的二元向量组,向量中的每个元素代表26个字母两两排列组合的一种,初值都设为0,如果对应元素存在于给定关键词的二元分词中,则将这个元素值设为1,得到二元向量组,如对关键词network的二元分词集合{ne,et,tw,wo,or,rk}可以表示为二元向量{1,…,1,…,1,1,…,1,1,0},拼写错误的netword的二元分词集合为{ne,et,tw,wo,or,rd},可以表示为二元向量{1,…,1,…,1,1,…,1,0,1},这种二元向量可以表示任何单词,并对拼写错误具有高容忍度,一个关键词的错误拼写都可以被映射为一个二元向量,并且与原始向量保持较低的差异;步骤2.5:数据拥有者为文件Fi构建一个n位的计数型布隆过滤器,作为文件的索引;步骤2.6:数据拥有者使用MinHash算法对每个文件对应的二元向量组进行降维,以Jaccard距离为相似度度量,将相似度在一定范围内的二元向量组哈希到计数型布隆过滤器的同一个地址序列中并计数,得到的布隆过滤器的值即为每个文件的索引向量indexi;在本实施例中,以Jaccard距离度量向量之间的相似度;对于两个0-1向量,它们之间Jaccard距离的计算公式为:D=1-f11/(f11+f00+f10+f01),其中f11表示两个向量同一位置都是1出现的次数,f00表示两个向量同一位置都是0出现的次数,f10表示同一位置一个向量为1,另一个向量为0出现的次数,f01则反之;D越小,表示两个向量之间的相似度越高;当两个向量之间的D小于指定的阈值时,它们将被哈希到计数型布隆过滤器的同一地址序列中;如图3所示,用k=2个哈希函数分别对j=4个关键词{computer,network,data,network}的二元向量进行计算,得到它们在计数型布隆过滤器向量中的地址序列{h11,h12},{h21,h22},{h31,h32},{h41,h42},其中network出现两次,故它们被哈希到同一地址序列中,即{h21,h22}={h41,h42};由于计数型布隆过滤器将标准布隆过滤器向量的每一位扩展为一个小的计数器,所有计数器初值都设为0,故在将元素插入其中时,对应地址序列上的k个计数器的值分别加1,当删除元素时,将对应的k个计数器值分别减1,从而将文件关键词的集合映射到了计数型布隆过滤器中,即得到的布隆过滤器的值为该文件的索引向量。利用这种性质,能够将关键词的计数作为关键词的权重。步骤3:文件加密阶段;数据拥有者使用AES或DES算法对文件集合进行加密,生成密文文件,并将其上传至云服务器,步骤3具体包括以下子步骤:步骤3.1:数据拥有者使用AES或DES算法对文件集合F进行加密,生成密文文件集合E;步骤3.2:数据拥有者将密文文件集合E上传至云服务器。步骤4:生成安全索引阶段;数据拥有者使用步骤1中生成的安全密钥对步骤2中文件的索引向量进行加密,生成安全索引,并将其上传至云服务器,如图4所示,步骤4具体包括以下子步骤:步骤4.1:数据拥有者使用生成的密钥SK=(M1,M2,S)将每个文件的索引向量indexi遵循以下规则分解为两个向量indexi'和indexi″:依次遍历向量S={0,1}n的每一位,记作S[t],而indexi[t],indexi'[t],indexi″[t]分别表示对应向量的每一位,t∈{1,...,n},则有规则1:当S[t]=1时,indexi'[t]=indexi″[t]=indexi[t];规则2:当S[t]=0时,indexi'[t]=indexi[t]/2+r,indexi″[t]=indexi[t]/2–r,r为一个随机数;步骤4.2:数据拥有者使用密钥矩阵M1,M2对每个文件的索引向量进行加密,使用M1T,M2T分别乘以分解后的向量indexi',indexi″,得到文件的安全索引向量Ii={M1Tindexi',M2Tindexi″},所有的安全索引向量构成安全索引I;步骤4.3:数据拥有者将安全索引I上传至云服务器。步骤5:生成陷门阶段;如果数据使用者为未授权用户,则要将查询的数据发送给数据拥有者,数据拥有者对查询数据抽取关键词,对关键词二元分词和向量化,得到二元向量组,将其插入计数型布隆过滤器,生成查询向量,并根据步骤1中生成的安全密钥对查询向量进行加密,生成陷门返回给数据使用者;如果数据使用者为授权用户,则直接使用步骤1中生成的安全密钥生成陷门;如图5所示,步骤5具体包括以下子步骤:步骤5.1:判断数据使用者是否预先被授权;若是,则执行下述步骤5.11;若否,则执行下述步骤5.2;步骤5.2:数据使用者将查询的数据q发送给数据拥有者;在本实施例中,由用户A将要查询的数据q={conputernetword}发送给数据拥有者X;步骤5.3:数据拥有者对查询数据q抽取关键词,得到关键词集合Wq;在本实施例中,数据拥有者X对查询数据q抽取关键词得到的关键词集合Wq={conputer,netword};步骤5.4:数据拥有者对关键词集合Wq中的每个关键词进行二元分词;在本实施例中,数据使用者X对关键词集合Wq中的每个关键词进行二元分词,其中wq1为conputer,分词后为集合{co,on,np,pu,ut,te,er},wq2为netword,分词后为集合{ne,et,tw,wo,or,rd};步骤5.5:数据拥有者对分词后的每个关键词向量化;在本实施例中,与步骤2.4相同的方法,使用262位的向量表示关键词的二元向量组,将wq1向量化为{1,…,1,…,1,1,…,1,…,1,0,1},wq2向量化为{1,…,1,…,1,1,…,1,0,1};步骤5.6:数据拥有者为查询数据q生成一个n位的计数型布隆过滤器;步骤5.7:数据拥有者使用与步骤2中相同的MinHash函数对每个关键词的向量进行计算,将其插入布隆过滤器中,生成查询数据q的查询向量Q;在本实施例中,当两个关键词对应向量之间的Jaccard距离小于指定的阈值时,即关键词相似度高,它们被哈希到布隆过滤器的同一地址序列中。如图6所示,关键词wq1与关键词computer向量间的Jaccard距离为D1=0.01,即它们相似度为0.99,故wq1与computer被哈希到同一地址序列中;关键词wq2与关键词network向量间的Jaccard距离为D2=0.009,即它们相似度为0.991,故wq2与network被哈希到同一地址序列。与步骤2.6相同的方法,将关键词集合Wq中每个关键词都映射到计数型布隆过滤器中,得到的布隆过滤器的值即为查询数据q的查询向量Q;步骤5.8:数据拥有者使用生成的密钥SK=(M1,M2,S)将查询向量Q遵循以下规则分解为两个向量Q'和Q″:依次遍历向量S={0,1}n的每一位,记作S[t],而Q[t],Q'[t],Q″[t]分别表示对应向量的每一位,t∈{1,...,n},则有规则3:当S[t]=0时,Q'[t]=Q″[t]=Q[t];规则4:当S[t]=1时,Q'[t]=Q[t]/2+r’,Q″[t]=Q[t]/2–r’,r’为一个随机数;步骤5.9:数据拥有者使用密钥矩阵M1,M2对查询向量进行加密,使用M1-1,M2-1分别乘以分解后的向量Q',Q″,得到查询数据q的陷门T={M1-1Q',M2-1Q″};步骤5.10:数据拥有者将生成的陷门T返回给数据使用者,本流程结束;步骤5.11:数据使用者对查询数据抽取关键词,得到关键词集合;数据使用者对关键词集合中的每个关键词进行二元分词;数据使用者对分词后的每个关键词向量化;数据使用者为查询数据生成一个计数型布隆过滤器;数据使用者使用与步骤2中相同的MinHash函数对每个关键词的向量进行计算,将其插入布隆过滤器中,生成查询数据的查询向量;数据使用者将查询向量遵循预设的规则分解为两个向量;数据使用者使用密钥矩阵对查询向量进行加密,使用矩阵的逆分别乘以两个分解后的向量,得到查询数据的陷门T。步骤6:查询阶段;数据使用者将陷门T发送到云服务器,云服务器根据T和安全索引I为用户的请求进行查询,将前k个得分最高的结果返回给数据使用者,如图7所示,步骤6具体包括以下子步骤:步骤6.1:数据使用者将陷门T发送到云服务器;步骤6.2:云服务器计算T与安全索引I的内积P;在本实施例中,文件F1中关键词computer出现了2次,即computer的权重为2,关键词network出现了3次,即network的权重为3,则文件F1的索引向量index1为:…232…1…31…云服务器计算陷门T与文件F1的安全索引向量I1的内积为:(M1Tindex1′)T·M1-1Q′+(M2Tindex1″)T·M2-1Q″=index1′T·Q′+index1″T·Q″=index1T·Q同理,可以计算陷门T与其他文件的安全索引向量的内积;步骤6.3:云服务器对计算的内积进行排序,找到前k个内积最高的结果,k≥1;在本实施例中,令k=3,根据内积P进行排序,有P1=P2>P3>P4>P5,故前3个内积最高的结果为文件F1、F2、F3;步骤6.4:云服务器将找到的结果返回给数据使用者;在本实施例中,云服务器将文件F1、F2、F3返回给数据使用者。步骤7:数据集更新阶段;当需要进行数据集更新时,数据拥有者根据实际需求对数据集进行增加、删除或修改操作,由于本方法不需要预先定义的词典,只需要根据生成索引操作变更索引,将新的密文文件和安全索引发送至云服务器;在本实施例中,云服务器对文件F1进行增加、删除或修改操作后,对更新后的F1重新执行步骤2、步骤3、步骤4,并将新的密文文件和安全索引发送至云服务器即可。本发明通过引入MinHash算法对关键词集合进行降维,减少空间开销和相似度计算量,提高查询效率,同时采用计数型布隆过滤器作为索引结构,使用其计数表示关键词权重,使得查询结果排序更加准确。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1