CN104102714A - 基于累加器和布隆过滤器的外包数据查询验证方法及系统 - Google Patents

基于累加器和布隆过滤器的外包数据查询验证方法及系统 Download PDF

Info

Publication number
CN104102714A
CN104102714A CN201410339782.1A CN201410339782A CN104102714A CN 104102714 A CN104102714 A CN 104102714A CN 201410339782 A CN201410339782 A CN 201410339782A CN 104102714 A CN104102714 A CN 104102714A
Authority
CN
China
Prior art keywords
bloom filter
cloud server
data
word
result
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.)
Pending
Application number
CN201410339782.1A
Other languages
English (en)
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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN201410339782.1A priority Critical patent/CN104102714A/zh
Publication of CN104102714A publication Critical patent/CN104102714A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于累加器和布隆过滤器的外包数据查询验证方法及系统,该方法包括如下步骤:数据主生成验证所需的参数并上传云端服务器;数据主生成所有原始文档的针对每一个关键字/词的反向索引,计算每一个关键字/词的索引集合的累加器值和布隆过滤器,并将所有原始文档与所有的反向索引、累加器值和布隆过滤器一起上传到所述云端服务器;数据主发起查询请求;云端服务器执行查询操作,生成查询结果的结果正确性和结果完整性的证明发送到所述数据主;数据主根据查询结果的结果正确性和结果完整性的证明验证从云端服务器接收的查询结果是否正确和完整,本发明能够有效验证从云端服务器搜索的查询结果的正确性和完整性。

Description

基于累加器和布隆过滤器的外包数据查询验证方法及系统
技术领域
本发明涉及一种外包数据查询验证方法及系统,特别是涉及一种基于累加器和布隆过滤器的外包数据查询验证方法及系统。
背景技术
随着云计算技术的日益普及,大量个人和企业用户为了以较低的价格获得更高的可用性和数据可靠性,逐渐将自身的数据外包到云端存储。目前,对这些外包数据进行内容搜索都存在着正确性和完整性的问题:正确性指用户无法确认搜索结果内容是从外包数据中产生的;完整性指用户无法确认结果是从所有外包数据中得到的,即搜索结果可能只是搜索部分数据得到的。
现有的可搜索加密技术(参见文献7.S.Kamara,C.Papamanthou,and T.Roeder,“Dynamic searchable symmetric encryption,”in CCS,2012,pp.965–976.文献8.R.Curtmola,J.Garay,S.Kamara,and R.Ostrovsky,“Searchable symmetricencryption:improved definitions and efficient constructions,”in Proceedings of the13th ACM conference on Computer and communications security,2006,pp.79–88.文献9.C.Wang,N.Cao,J.Li,K.Ren,and W.Lou,“Secure Ranked Keyword Searchover Encrypted Cloud Data,”in Proceedings of the2010IEEE30th InternationalConference on Distributed Computing Systems,2010,pp.253–262.文献10.N.Cao,C.Wang,M.Li,K.Ren,and W.Lou,“Privacy-preserving multi-keyword rankedsearch over encrypted cloud data,”in IEEE INFOCOM,2011,pp.829–837.文献11.Y.Chang and M.Mitzenmacher,“Privacy preserving keyword searches on remoteencrypted data,”in Applied Cryptography and Network Security,2005,pp.442–455.)关注于确保云服务无法获取用户的数据信息(包括存储的数据和查询关键词),但普遍缺乏上述查询结果正确性和完整性的验证。
在验证外包数据的查询结果方面,文献1(J.Wang,X.Chen,H.Ma,Q.Tang,J.Li,and H.Zhu,“A Verifiable Fuzzy Keyword Search Scheme Over EncryptedData,”Journal of Internet Services and Information Security(JISIS),vol.2,no.1/2,pp.49–58,2012)和文献6(J.Li,Q.Wang,C.Wang,N.Cao,K.Ren,and W.Lou,“Fuzzy Keyword Search over Encrypted Data in Cloud Computing,”in2010Proceedings IEEE INFOCOM,2010,pp.1–5.)提出了在外包数据上实现模糊查询的方法,通过一个符号树(symbol-tree)的数据结构,提供安全的搜索服务。文献3(Q.Chai and G.Gong,“Verifiable Symmetric Searchable Encryption ForSemi-honest-but-curious Cloud Servers,”in2012IEEE International Conference onCommunications(ICC),2012,pp.917–922.)提出了一个基于Trie树的可验证查询方法。以上这些方法仅支持单个关键词的查询,无法像本发明一样允许一个查询同时包含多个关键词。
可验证计算(文献2.R.Gennaro,C.Gentry,and B.Parno.Non-InteractiveVerifiable Computing:Outsourcing Computation to Untrusted Workers.In Proc.ofCRYPTO,pages465–482,2010.)提出了将计算外包到服务端执行,由服务端产生计算结果的正确性证明,然后在客户端验证的方法。目前可验证计算普遍利用全同态加密技术(文献4.C.Gentry.Computing arbitrary functions of encrypteddata.Communications of the ACM,53(3):97–105,Mar.2010.),其计算证明的过程缓慢,离实际使用还有较大的距离。例如Pinocchio系统(文献5.B.Parno,C.Gentry,J.Howell,and M.Raykova,“Pinocchio:Nearly Practical VerifiableComputation,”in Proceedings of the IEEE Symposium on Security and Privacy,2013.)先将C程序转换到电路表示形式(circuit representation),然后再转换到一个二次程序(quadratic program),最后生成可验证的协议。该方法在2.67GHzIntel Core i7上需要9.4毫秒才能计算出SHA-1哈希算法的证明。此外,Pinocchio系统对于验证的程序还有很多限制,不适合于更为复杂外包数据的实时查询。
文献12(M.T.Goodrich,R.Tamassia,and J.Hasic,“An Efficient Dynamicand Distributed Cryptographic Accumulator,”in Proc.of Information SecurityConference(ISC),2002,pp.372–388.)提出了一种利用RSA累加器回答集合成员查询的方法,客户端可以验证服务端返回结果的正确性。文献13(J.Li,N.Li,andR.Xue,“Universal Accumulators with Efficient Nonmembership Proofs,”inProceedings of the5th international conference on Applied Cryptography andNetwork Security(ACNS),2007,pp.253–269.)给出了利用RSA累加器回答非集合成员查询的方法。本发明中利用以上方法,分别构造出外包数据查询的正确性和完整性的证明。以上方法均不涉及本发明中的多关键词查询、也没有同时构造出查询的正确性和完整性的证明。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种累加器和布隆过滤器的外包数据查询验证方法及系统,其可以让云端服务器在较短的时间内生成搜索结果的证明,该证明还应尽可能小,使得用户能够有效验证云端搜索查询结果的正确性和完整性。
为达上述及其它目的,本发明提出一种基于累加器和布隆过滤器的外包数据查询验证方法,包括如下步骤:
步骤一,数据主生成验证所需的参数并上传云端服务器;
步骤二,所述数据主生成所有原始文档的针对每一个关键字/词的反向索引,计算每一个关键字/词的索引集合的累加器值和布隆过滤器,并将所有原始文档与所有的反向索引、累加器值和布隆过滤器一起上传到所述云端服务器;
步骤三,所述数据主发起查询请求,将查询的多个关键字/词发送到所述云端服务器;
步骤四,所述云端服务器执行查询操作,分别找到每个关键字/词的反向索引,然后计算这些反向索引的交集,生成查询结果的结果正确性的证明,并利用基于集合非成员证明或基于布隆过滤器的方法生成结果完整性的证明,一并发送到所述数据主;
步骤五,所述数据主根据查询结果的结果正确性的证明验证从云端服务器接收的查询结果是否正确,并利用基于集合非成员证明或基于布隆过滤器的方法根据查询结果的结果完整性的证明验证查询结果的完整性。
进一步地,步骤一还包括如下步骤:
所述数据主根据给定的参数k随机生成一个k-bit长的RSA模n=pq,并随机从模n的平方剩余中产生数字g,其中,k的取值大于或等于1024,p、q的长度相同且都是安全素数,g为正整数;
所述数据主选择第一哈希函数和第二哈希函数,其中,所述第一哈希函数用于将任意长度的数字映射到一个固定长度的数字,所述第二哈希函数用于将一个固定长度的数字映射到一个三倍固定长度的素数;
所述数据主选择一个计数布隆过滤器的参数,包括计数器的数量和哈希函数;
所述数据主将参数n和g、第一哈希函数、第二哈希函数以及布隆过滤器参数作为验证所需的参数上传至所述云端服务器。
进一步地,步骤二进一步包括如下步骤:
所述数据主生成原始文档的每一个关键字/词(对于任一字、词)的索引集合,其中每一个关键字/词的ID用e来表示,e为任意正整数,每个关键字/词的索引集合用Xe={x1,x2...,xm}表示,Xe中的每个元素xi={docIDi,TFi,Pi1,Pi2...},i=1,2,…,m,m为正整数,docIDi、TFi、Pi1、Pi2分别表示包含该关键字/词的原始文档的ID、出现次数和出现的各个位置;
采用第一哈希函数HASH1和第二哈希函数HASH2将每个索引集合Xe={x1,x2...,xm}映射为集合Y={y1,y2...,ym},其中i=1,2,…,m,m为正整数,如果Xe中的元素的长度不足所述固定长度(o-bit),则略过该步骤映射;
获取Y中所有元素的乘积作为u,根据公式c=gumodn获取每个索引集合Xe相应的RSA累加器的值c,并生成每个RSA累加器的值(c)的对应的数据签名;
计算每个索引集合Xe的布隆过滤器B(X),B(X)利用Xe中每个元素的文档ID来计算;
将每个索引集合Xe和相应的RAS累加器的值c、数据签名作为所述反向索引,将所有原始文档、所有的反向索引以及所有布隆过滤器B(X)一起上传到云端服务器。
进一步地,步骤四进一步包括如下步骤:
所述云端服务器找到每个关键字/词对应的索引集合,然后将所有索引集合的交集作为所述查询的多个关键字/词的查询结果,所述交集用X′e={xe,1,xe,2...,xe,f}表示,f<=m;
所述云端服务器采用第一哈希函数和第二哈希函数将每个关键词的索引集合分别映射为对应的第一映射集合,并将每个索引集合中的所有满足条件的元素X′e={xe,1,xe,2...,xe,i}映射为对应的第二映射集合Y'e={ye,1,ye,2...,ye,i},获取集合Y'e中所有元素的乘积u',获取第一映射集合中所有元素的乘积u,根据公式获取每个X′e对应的并将与集合Xe的累加器的值(c)和数字签名一起构成集合X′e为正确结果的证明;
采用基于集合非成员证明的方法或基于布隆过滤器的方法证明集合中所有不满足条件的元素不在其它任意一个集合中,以实现结果完整性的证明,
所述云端服务器将查询的多个关键字/词的查询结果、结果正确性的证明和完整性的证明发送至所述数据主。
进一步地,所述采用基于布隆过滤器的方法证明集合中所有不满足条件的元素不在其它任意一个集合中的步骤进一步包括如下步骤:
根据每个关键字/词的索引集合的布隆过滤器B(Xi),计算以各布隆过滤器每个元素的最小值构成的布隆过滤器B’;
各索引集合共同包含的文档ID集合为DS,计算DS的布隆过滤器B(DS);
对于布隆过滤器的每个元素j,如果B(DS)j<B’j,那么每个索引集合必然存在B(Xi)j-B(DS)j个检查元素,它们的文档ID不在DS中,而且用布隆过滤器哈希时值为j
各索引集合中所有检查元素的集合、成员证明以及布隆过滤器共同构成结果完整性证明。
进一步地,所述云端服务器在计算查询结果的完整性证明时,选择两种方法中大小较小的一种计算。
进一步地,步骤五进一步包括:
所述数据主通过第一哈希函数和第二哈希函数将返回结果的集合X’映射为对应的映射集合Y’;
根据每个索引集合Xe相应的RSA累加器的值(c)验证所接收到的对应的数据签名是否正确,并计算c=(P X’)u’mod n是否成立;
若上述两个条件同时满足,数据主确认返回的结果集合X’是正确的,否则,则认为返回的结果集合X’是不正确的。
采用基于集合非成员证明或基于布隆过滤器的方法进行查询结果的结果完整性验证。
进一步地,所述采用基于布隆过滤器的方法进行查询结果完整性验证的步骤进一步包括:
数据主利用相应的成员证明分别验证各索引集合中的检查集合;
计算各索引集合的布隆过滤器B(Xi)每个元素的最小值构成的布隆过滤器B’;
对于布隆过滤器的每个元素j,如果B(Xi)j>B’j,那么检查集合Ci必然存在B(Xi)j-B’j个元素,它们用布隆过滤器哈希时值为j;
若以上验证都通过,那么所述数据主认为所述云端服务器提供的证明是正确的恶,否则是错误的。
进一步地,步骤四中,对查询结果中的元素利用树形结构进行结果正确性的证明,以减少证明的计算时间。
为达到上述目的,本发明还提供一种基于累加器和布隆过滤器的外包数据查询验证系统,该系统包括:
数据主,用于生成验证所需的参数并上传到云端服务器,生成所述原始文档的每一个关键字/词的反向索引,计算每一个关键字/词的索引集合的累加器值和布隆过滤器,将所有原始文档、所有反向索引、累加器值及布隆过滤器上传到云端服务器,及发起查询请求,将查询的多个关键字/词发到云端服务器,根据所述云端服务器接收到的查询结果的结果正确性的证明验证从云端服务器接收的查询结果是否正确,并根据所述云端服务器接收到的查询结果的结果完整性的证明利用基于集合非成员证明或基于布隆过滤器的方法验证从云端服务器接收的查询结果是否完整。
云端服务器,用于执行查询操作,根据所述参数和查询的每个关键字/词的反向索引生成所述查询的多个关键字/词的查询结果和所述查询结果的结果正确性的证明,并利用基于集合非成员证明或基于布隆过滤器的方法生成所述查询结果的结果完整性的证明,并发送至所述数据主。
与现有技术相比,本发明一种本发明一种基于累积器和布隆过滤器的外包数据查询验证方法及系统通过数据主生成验证所需的参数并上传到云端服务器,由数据主生成所有原始文档的针对每一个关键字/词的反向索引,计算每一个关键字/词的索引集合的累加器值和布隆过滤器,并将所有原始文档、所有反向索引、累加器值及布隆过滤器上传到云端服务器,由云端服务器执行查询操作,根据所述参数和查询的每个关键字/词的反向索引生成所述查询的多个关键字/词的查询结果和所述查询结果的结果正确性的证明,并利用基于集合非成员证明或基于布隆过滤器的方法生成所述查询结果的结果完整性的证明一并发送至所述数据主,最后由数据主根据所述云端服务器接收到的查询结果的结果正确性的证明验证从云端服务器接收的查询结果是否正确,并根据所述云端服务器接收到的查询结果的结果完整性的证明利用基于集合非成员证明或基于布隆过滤器的方法验证从云端服务器接收的查询结果是否完整,本发明能够有效验证从云端服务器搜索的查询结果的正确性和完整性。
附图说明
图1为本发明一实施例之基于累加器和布隆过滤器的外包数据查询验证方法的步骤流程图;
图2为本发明一实施例的查询过程示意图;
图3为图1中步骤S1的详细流程图;
图4为图1中步骤S2的详细流程图;
图5为图1中步骤S4的详细流程图;
图6为图1中步骤S5的详细流程图;
图7为本发明较佳实施例中集合成员和非成员证明生成的时间比较图;
图8为本发明较佳实施里中构建区间证明的树型结构图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
随着云计算的迅速发展和普及,用户产生的大量数据不再仅仅存储在用户自身的设备上,而是更多地存储在云端,由云端提供低廉、高可用、高可靠的数据存储和查询服务。本发明针对其中的验证查询结果的问题进行了深入的研究。本发明考虑数据主(data owner)和云端服务器(server)两方,数据主将数据外包到云端服务器上,然后在数据主向服务器发送搜索关键词后,由服务器执行搜索操作并返回结果和用于验证结果的简短证明,用户可以快速根据结果和证明来验证服务器所做的查询操作是正确的。
如图1至6所示,本发明提供一种基于累加器和布隆过滤器的外包数据查询验证方法,包括步骤S1~S5。
步骤S1,数据主生成验证所需的参数并上传服务器,验证所需的参数包括参数n和g、第一哈希函数HASH1、第二哈希函数HASH2以及布隆过滤器参数。
优选的,如图3所示,步骤S1包括:
步骤S11,数据主根据给定的参数k随机生成一个k-bit长的RSA模n=pq,并随机从模n的平方剩余(quadratic residue)中产生数字g,其中,k为1024(或更大的正整数),为获取更高的安全性建议为2048以上,p、q的长度相同且都是安全素数(safe prime),g为正整数;
步骤S12,数据主选择第一哈希函数HASH1和第二哈希函数HASH2,其中,所述第一哈希函数HASH1用于将任意长度的数字映射到一个固定长度(o-bit)的数字,例如使用MD5算法产生128-bit的数字、用SHA1算法(安全哈希算法)产生160-bit的数字,所述第二哈希函数HASH2为一个two-universal哈希函数(具体可参见J.L.Carter and M.N.Wegman.Universal Classes of HashFunctions.Journal of Computer and System Sciences,18(2):143–154,1979.),用于将一个固定长度(o-bit)的数字映射到一个三倍固定长度(3o-bit)的素数。
步骤S13,数据主还选择一个计数布隆过滤器(Counting Bloom filter)的参数,包括计数器的数量和哈希函数。根据文献(具体参见R.Morselli,B.Bhattacharjee,J.Katz,and P.Keleher.Trust-Preserving Set Operations.In IEEEINFOCOM,pages2231–2241,2004.),使用一个哈希函数为最优化的情况。
步骤S14,数据主将参数n和g、第一哈希函数HASH1、第二哈希函数HASH2以及布隆过滤器参数作为验证所需的参数上传至云端服务器,即数据主将参数n和g、第一哈希函数HASH1、第二哈希函数HASH2以及布隆过滤器参数告诉给云端服务器。
步骤S2,数据主生成所有原始文档的针对每一个关键字/词的反向索引(inverted index),计算每一个关键字/词的索引集合的累加器值和布隆过滤器,并将所有原始文档与所有的反向索引、累加器值及布隆过滤器一起上传到云端服务器。
优选的,如图4所示,所述步骤S2包括:
步骤S21,数据主生成原始文档的每一个关键字/词(对于任一字、词)的索引集合,其中每一个关键字/词的ID用e来表示,e为任意正整数,每个关键字/词的索引集合用Xe={x1,x2...,xm}表示,Xe中的每个元素xi={docIDi,TFi,Pi1,Pi2...},i=1,2,…,m,m为正整数,docIDi、TFi、Pi1、Pi2分别表示包含该关键字/词的原始文档的ID、出现次数和出现的各个位置,即docIDi表示文档ID、TFi表示出现次数、Pi1等表示出现的位置。
步骤S22,采用第一哈希函数HASH1和第二哈希函数HASH2将每个索引集合Xe={x1,x2...,xm}映射为集合Y={y1,y2...,ym},即yi=HASH2(HASH1(xi)),其中i=1,2,…,m,m为正整数。如果Xe中的元素的长度不足所述固定长度(o-bit),则略过该步骤映射。
步骤S23,获取Y中所有元素的乘积作为u,根据公式c=gumodn获取每个索引集合Xe相应的RSA累加器的值c,并生成每个RSA累加器的值c的对应的数据签名,具体地,由于数据主知道p、q的值,c可以快速计算得到。
步骤S24,计算每个索引集合Xe的布隆过滤器B(X)。在这里,B(X)是用Xe中每个元素的文档ID来计算的。
步骤S25,将每个索引集合Xe和相应的RAS累加器的值c、数据签名作为所述反向索引,将所有原始文档、所有的反向索引以及所有布隆过滤器B(X)一起上传到云端服务器。上传结束以后,数据主可以和云端服务器进行交互,完成查询操作。
步骤S3,数据主发起查询请求,将查询的多个关键字/词发送到云端服务器。
步骤S4,云端服务器执行查询操作,分别找到每个关键字/词的反向索引,然后计算这些反向索引的交集(即包含所有关键字/词的文档),生成查询结果的结果正确性的证明,并利用基于集合非成员证明或基于布隆过滤器的方法生成结果完整性的证明,一并发送到所述数据主
优选的,如图5所示,步骤S4包括:
步骤S41,云端服务器找到每个关键字/词对应的索引集合,然后将所有索引集合的交集作为所述查询的多个关键字/词的查询结果,所述交集用X′e={xe,1,xe,2...,xe,f}表示,f<=m。例如,用户查询关键词包括t1和t2,那么数据主首先找到t1的索引X1和t2的索引X2,对X1中每一个元素x1,i={docID1,i,TF1,i,P1,i1,P1,i2...},如果X2中存在一个元素x2,i={docID2,i,TF2,i,P2,i1,P2,i2...}满足docID1,i=docID2,j,那么云端服务器就找到了一个文档同时包含这两个关键词,x1,i和x2,j都将被包含在结果当中。
步骤S42,云端服务器采用第一哈希函数HASH1和第二哈希函数HASH2将每个关键词的索引集合(例如t1的索引X1/t2的索引X2)分别映射为对应的第一映射集合(Y1/Y2…),并将每个索引集合Xe(例如前述X1/X2)中的所有满足条件的元素(交集)X′e={xe,1,xe,2...,xe,i}映射为对应的第二映射集合Y'e={ye,1,ye,2...,ye,i},获取集合Y'e中所有元素的乘积u',获取第一映射集合(Y1/Y2)中所有元素的乘积u,根据公式获取每个X′e对应的并将与集合Xe的累加器的值(c)和数字签名一起构成集合X′e为正确结果的证明。假定在上例中,云端服务器从t1的索引集合X1中找到的所有满足条件的元素为X′={x1,1,x1,2...,x1,i},服务器通过第一哈希函数HASH1和第二哈希函数HASH2将这些元素映射为Y'={y1,1,y1,2...,y1,i},并将索引集合X1用同样方法映射为集合Y1,然后计算PX'=gu/u'modn,其中u’为集合Y’中所有元素的乘积,u为Y1中所有元素的乘积。PX'与索引集合X1的累加器的值(c)和数字签名一起构成集合X’为正确结果的证明。在完成以上计算之后,云端服务器再计算X2中所有满足条件的元素的证明,即服务器需要对每个关键词的索引都计算相应的证明。
步骤S43,采用基于集合非成员证明的方法或基于布隆过滤器的方法证明集合中所有不满足条件的元素不在其它任意一个集合中,以实现结果完整性的证明。举例来说,在上述实施例中,对于X1中任意这样的一个元素x=(docID,TF1,P1,P2,…),需要证明docID不出现在X2的所有元素的文档ID集合中。
对于基于集合非成员证明的方法,从所有索引集合中选择一个包含最少元素的索引集合,构造该包含最少元素的索引集合中在所述交集之外的每个元素不在其它索引集合中出现的证明为数据对(x,a,d,e),其表示元素x不出现在第e个关键字/词的索引集合中,将所有的证明为数据对(x,a,d,e)作为结果完整性的证明,具体地,结果完整性的证明包括在包含最小元素的索引集合中所有不满足条件的元素不在其它任意一个集合中的证明,例如,不失一般性,假定假定||X1||≤||X2||,即我们需要给出集合X1\X’中所有元素的文档ID都不在X2所有的文档ID中的证明。对于任意一个这样的元素x构造出对应的证明为数据对(a,d)(具体可参见J.Li,N.Li,and R.Xue,“UniversalAccumulators with Efficient Nonmembership Proofs,”in Proceedings ofthe5th international conference on Applied Cryptography and NetworkSecurity(ACNS),2007,pp.253–269.)。在计算出所有数据对(a,d)的具体值以后,所有的(x,a,d,e)一起构成完整性证明,其中e表示元素x不出现在第e个关键词的反向索引中。
对于基于布隆过滤器的方法,具体包括:根据每个关键字/词的索引集合(例如X1和X2)的布隆过滤器B(Xi)(B(X1)和B(X2),计算以各布隆过滤器每个元素的最小值构成的布隆过滤器B’;各索引集合(例如X1和X2)共同包含的文档ID集合为DS,计算DS的布隆过滤器B(DS);对于布隆过滤器的每个元素j,如果B(DS)j<B’j,那么每个索引集合必然存在B(Xi)j-B(DS)j个检查元素,它们的文档ID不在DS中,而且用布隆过滤器哈希时值为j;各索引集合中所有检查元素的集合、成员证明以及布隆过滤器共同构成结果完整性证明。具体地说,在上例中,根据X1和X2的布隆过滤器B(X1)和B(X2),计算以这两个过滤器每个元素的最小值构成的布隆过滤器B’。X1和X2共同包含的文档ID集合为DS,计算DS的布隆过滤器B(DS)。对于布隆过滤器的每个元素j,如果B(DS)j<B’j,那么X1必然存在B(X1)j-B(DS)j个检查元素,它们的文档ID不在DS中,而且用布隆过滤器哈希时值为j。X1中所有检查元素的集合C1和X2中类似的检查集合C2,C1属于X1中文档集合的成员证明w1,C2属于X2中文档集合的成员证明w2,以及布隆过滤器B(X1)和B(X2)共同构成完整性证明。
需要说明的是,云端服务器在计算上述完整性证明的时候,只选择两种方法中大小较小的一个计算。第一种方法的大小与||X1\X’||线性相关,第二种方法的大小等于事先计算的布隆过滤器的大小加上固定大小的成员证明,以及集合C1和C2的大小。||C1||和||C2||的期望值是||X1||*||X2||/m,其中m代表布隆过滤器的元素数量。
步骤S44,将查询的多个关键字/词的查询结果、结果正确性的证明和完整性的证明发送至所述数据主。
步骤S5,数据主根据查询结果的结果正确性的证明验证从云端服务器接收的查询结果是否正确,并利用基于集合非成员证明或基于布隆过滤器的方法根据查询结果的结果完整性的证明验证查询结果的完整性。
优选的,如图6所示,步骤S5包括:
步骤S51,数据主通过第一哈希函数HASH1和第二哈希函数HASH将返回结果的集合X’映射为对应的映射集合Y’;
步骤S52,根据每个索引集合Xe相应的RSA累加器的值c验证所接收到的对应的数据签名是否正确,并计算c=(P X’)u’mod n是否成立;
步骤S53,若上述两个条件同时满足,数据主确认返回的结果集合X’是正确的,否则,则认为返回的结果集合X’是不正确的。
步骤S54,采用基于集合非成员证明或基于布隆过滤器的方法进行查询结果的结果完整性验证。
对于基于集合非成员证明,即服务器返回的所有数据对(x,a,d,e),数据主首先找到第e个关键词的累加器值c,计算y=HASH2(HASH1(x)),然后验证ca=dy g(mod n)是否成立,如果以上验证通过,那么判断所述证明为数据对(x,a,d,e)为正确,如果以上验证不通过,则判断所述证明为数据对(x,a,d,e)为不正确。
对于基于布隆过滤器的方法,具体包括:数据主利用相应的成员证明(w1/w2...)分别验证各索引集合中的检查集合(C1/C2…);计算各索引集合的布隆过滤器B(Xi)(例如B(X1)和B(X2))每个元素的最小值构成的布隆过滤器B’;对于布隆过滤器的每个元素j,如果B(Xi)j>B’j,那么Ci必然存在B(Xi)j-B’j个元素,它们用布隆过滤器哈希时值为j;若以上验证都通过,那么数据主认为云端服务器给的证明是正确的恶,否则是错误的。具体地说,数据主用成员证明w1和w2分别验证C1和C2。然后计算布隆过滤器B(X1)和B(X2)每个元素的最小值构成的布隆过滤器B’。对于布隆过滤器的每个元素j,如果B(X1)j>B’j,那么C1必然存在B(X1)j-B’j个元素,它们用布隆过滤器哈希时值为j;如果B(X2)j>B’j,那么C2必然存在B(X2)j-B’j个元素,它们用布隆过滤器哈希时值为j,如果以上验证都通过,那么给的的证明是正确的,否则是错误的。
在上述步骤S42云端服务器计算结果证明中,根据公式PX'=gu/u'modn计算集合成员证明,或根据文献(具体可参见J.Li,N.Li,and R.Xue,“UniversalAccumulators with Efficient Nonmembership Proofs,”in Proceedings of the5th international conference on Applied Cryptography and NetworkSecurity(ACNS),2007,pp.253–269.)计算集合非成员证明的时候,所花费的时间与集合的大小线性相关。
如图7所示,在2.9GHz Intel Core i7CPU上,集合每个元素为96bit长的素数时,测得集合成员和非成员证明生成的时间与集合的大小是线性相关的关系。当集合大小超过2万时,成员和非成员证明都需要超过1秒的时间。由于搜索应用往往涉及较大的集合,花费数秒时间来生成证明成为性能上的一个问题。
为解决以上问题,本发明设计了图8的树形结构,来减少证明的计算时间。对于给定的某个大集合X,先将X中的元素按照大小排序,然后将每q个(图8中q=4)元素组成一个小集合(即值的区间)。对于每个小集合Xk,按照公式c=gu mod n计算Xk的RSA累加器的值c,c为所有中间层的元素bk集合的RSA累加器值。对于中间层的每个元素bk,可以事先计算它属于中间层的证明ck
这样,当需要计算某个元素x属于(或不属于)集合X的证明时,仅需找到x所属的某个区间Xk,然后计算x属于(或不属于)Xk的证明p。(p,bk,ck,c)构成x属于(或不属于)集合X的证明。由于Xk是比X小得多,计算时间可以大大减少。在实际使用中,为减少中间层元素的数量,Xk的值也不能过小。例如在2.9GHz Intel Core i7CPU上,集合每个元素为96bit长的素数时,可以选择q=100,此时成员和非成员证明均可以在6毫秒内计算出来。
在验证(p,bk,ck,c)时,首先利用验证bk,代表X的一个子集,即:然后再验证p为元素x的证明:
(1)当x属于Xk时,验证xp=bk
(2)当x不属于Xk时,p为一对值(a,d),验证
如图2所示,本发明还提供一种基于累加器和布隆过滤器的外包数据查询验证系统,包括:
数据主,用于生成验证所需的参数并上传到云端服务器,生成所述原始文档的每一个关键字/词的反向索引,计算每一个关键字/词的索引集合的累加器值和布隆过滤器,将所有原始文档、所有反向索引、累加器值及布隆过滤器上传到云端服务器,及发起查询请求,将查询的多个关键字/词发到云端服务器,根据所述云端服务器接收到的查询结果的结果正确性的证明验证从云端服务器接收的查询结果是否正确,并根据所述云端服务器接收到的查询结果的结果完整性的证明利用基于集合非成员证明或基于布隆过滤器的方法验证从云端服务器接收的查询结果是否完整。
云端服务器,用于执行查询操作,根据所述参数和查询的每个关键字/词的反向索引生成所述查询的多个关键字/词的查询结果和所述查询结果的结果正确性的证明,并利用基于集合非成员证明或基于布隆过滤器的方法生成所述查询结果的结果完整性的证明,并发送至所述数据主。
优选的,所述数据主用于,
根据给定的参数k随机生成一个k-bit长的RSA模n=pq,并随机从模n的平方剩余(quadratic residue)中产生数字g,其中,k为1024(或更大的正整数),为获取更高的安全性建议为2048以上,p、q的长度相同且都是安全素数(safeprime),g为正整数;
选择第一哈希函数HASH1和第二哈希函数HASH2,其中,所述第一哈希函数HASH1用于将任意长度的数字映射到一个固定长度(o-bit)的数字,所述第二哈希函数HASH2用于将一个固定长度(o-bit)的数字映射到一个三倍固定长度(3o-bit)的素数。
选择一个计数布隆过滤器(Counting Bloom filter)的参数,包括计数器的数量和哈希函数。
将参数n和g、第一哈希函数HASH1、第二哈希函数HASH2以及布隆过滤器参数作为验证所需的参数上传至云端服务器。
优选的,所述数据主用于,
生成原始文档的每一个关键字/词(对于任一字、词)的索引集合,其中每一个关键字/词的ID用e来表示,e为任意正整数,每个关键字/词的索引集合用Xe={x1,x2...,xm}表示,Xe中的每个元素xi={docIDi,TFi,Pi1,Pi2...},i=1,2,…,m,m为正整数,docIDi、TFi、Pi1、Pi2分别表示包含该关键字/词的原始文档的ID、出现次数和出现的各个位置,即docIDi表示文档ID、TFi表示出现次数、Pi1等表示出现的位置。
采用第一哈希函数HASH1和第二哈希函数HASH2将每个索引集合Xe={x1,x2...,xm}映射为集合Y={y1,y2...,ym},即yi=HASH2(HASH1(xi)),其中i=1,2,…,m,m为正整数。如果Xe中的元素的长度不足所述固定长度(o-bit),则略过该步骤映射。
获取Y中所有元素的乘积作为u,根据公式c=gumodn获取每个索引集合Xe相应的RSA累加器的值c,并生成每个RSA累加器的值c的对应的数据签名。
计算每个索引集合Xe的布隆过滤器B(X)。在这里,B(X)是用Xe中每个元素的文档ID来计算的。
将每个索引集合Xe和相应的RAS累加器的值c、数据签名作为所述反向索引,将所有原始文档、所有的反向索引以及所有布隆过滤器B(X)一起上传到云端服务器
优选的,所述云端服务器用于,
找到每个关键字/词对应的索引集合,然后将所有索引集合的交集作为所述查询的多个关键字/词的查询结果,所述交集用X′e={xe,1,xe,2...,xe,f}表示,f<=m。
采用第一哈希函数HASH1和第二哈希函数HASH2将每个关键词的索引集合分别映射为对应的第一映射集合,并将每个索引集合(例如前述X1/X2)中的所有满足条件的元素(交集)映射为对应的第二映射集合获取集合Y'e中所有元素的乘积u',获取第一映射集合(Y1/Y2)中所有元素的乘积,根据公式获取每个X′e对应的并将与集合Xe的累加器的值(c)和数字签名一起构成集合X′e为正确结果的证明。
采用基于集合非成员证明的方法或基于布隆过滤器的方法证明集合中所有不满足条件的元素不在其它任意一个集合中,以实现结果完整性的证明。
对于基于集合非成员证明的方法,从所有索引集合中选择一个包含最少元素的索引集合,构造该包含最少元素的索引集合中在所述交集之外的每个元素不在其它索引集合中出现的证明为数据对(x,a,d,e),其表示元素x不出现在第e个关键字/词的索引集合中,将所有的证明为数据对(x,a,d,e)作为结果完整性的证明,具体地,结果完整性的证明包括在包含最小元素的索引集合中所有不满足条件的元素不在其它任意一个集合中的证明。
对于基于布隆过滤器的方法,具体包括:根据每个关键字/词的索引集合(例如X1和X2)的布隆过滤器B(Xi)(B(X1)和B(X2),计算以各布隆过滤器每个元素的最小值构成的布隆过滤器B’;各索引集合(例如X1和X2)共同包含的文档ID集合为DS,计算DS的布隆过滤器B(DS);对于布隆过滤器的每个元素j,如果B(DS)j<B’j,那么每个索引集合必然存在B(Xi)j-B(DS)j个检查元素,它们的文档ID不在DS中,而且用布隆过滤器哈希时值为j;各索引集合中所有检查元素的集合、各检查元素集合的成员证明以及布隆过滤器共同构成结果完整性证明。具体地说,在上例中,根据X1和X2的布隆过滤器B(X1)和B(X2),计算以这两个过滤器每个元素的最小值构成的布隆过滤器B’。X1和X2共同包含的文档ID集合为DS,计算DS的布隆过滤器B(DS)。对于布隆过滤器的每个元素j,如果B(DS)j<B’j,那么X1必然存在B(X1)j-B(DS)j个检查元素,它们的文档ID不在DS中,而且用布隆过滤器哈希时值为j。X1中所有检查元素的集合C1和X2中类似的检查集合C2,C1属于X1中文档集合的成员证明w1,C2属于X2中文档集合的成员证明w2,以及布隆过滤器B(X1)和B(X2)共同构成完整性证明。
将查询的多个关键字/词的查询结果、结果正确性的证明和完整性的证明发送至所述数据主。
优选的,所述数据主用于,
通过第一哈希函数HASH1和第二哈希函数HASH将返回结果的集合X’映射为对应的映射集合Y’;
根据每个索引集合Xe相应的RSA累加器的值c验证所接收到的对应的数据签名是否正确,并计算c=(P X’)u’mod n是否成立,若上述两个条件同时满足,数据主确认返回的结果集合X’是正确的,否则,则认为返回的结果集合X’是不正确的。
采用基于集合非成员证明或基于布隆过滤器的方法进行查询结果的结果完整性验证。
对于基于集合非成员证明,即服务器返回的所有数据对(x,a,d,e),数据主首先找到第e个关键词的累加器值c,计算y=HASH2(HASH1(x)),然后验证ca=dy g(mod n)是否成立,如果以上验证通过,那么判断所述证明为数据对(x,a,d,e)为正确,如果以上验证不通过,则判断所述证明为数据对(x,a,d,e)为不正确。
对于基于布隆过滤器的方法,具体包括:数据主利用相应的成员证明(w1/w2...)分别验证各索引集合中的检查集合(C1/C2…);计算各索引集合的布隆过滤器B(Xi)(例如B(X1)和B(X2))每个元素的最小值构成的布隆过滤器B’;对于布隆过滤器的每个元素j,如果B(Xi)j>B’j,那么Ci必然存在B(Xi)j-B’j个元素,它们用布隆过滤器哈希时值为j;若以上验证都通过,那么数据主认为云端服务器给的证明是正确的恶,否则是错误的。具体地说,数据主用成员证明w1和w2分别验证C1和C2。然后计算布隆过滤器B(X1)和B(X2)每个元素的最小值构成的布隆过滤器B’。对于布隆过滤器的每个元素j,如果B(X1)j>B’j,那么C1必然存在B(X1)j-B’j个元素,它们用布隆过滤器哈希时值为j;如果B(X2)j>B’j,那么C2必然存在B(X2)j-B’j个元素,它们用布隆过滤器哈希时值为j,如果以上验证都通过,那么给的的证明是正确的,否则是错误的。
综上所述,本发明一种基于累加器和布隆过滤器的外包数据查询验证方法及系统通过数据主生成验证所需的参数并上传到云端服务器,由数据主生成所有原始文档的针对每一个关键字/词的反向索引,计算每一个关键字/词的索引集合的累加器值和布隆过滤器,并将所有原始文档、所有反向索引、累加器值及布隆过滤器上传到云端服务器,由云端服务器执行查询操作,根据所述参数和查询的每个关键字/词的反向索引生成所述查询的多个关键字/词的查询结果和所述查询结果的结果正确性的证明,并利用基于集合非成员证明或基于布隆过滤器的方法生成所述查询结果的结果完整性的证明一并发送至所述数据主,最后由数据主根据所述云端服务器接收到的查询结果的结果正确性的证明验证从云端服务器接收的查询结果是否正确,并根据所述云端服务器接收到的查询结果的结果完整性的证明利用基于集合非成员证明或基于布隆过滤器的方法验证从云端服务器接收的查询结果是否完整,本发明能够有效验证从云端服务器搜索的查询结果的正确性和完整性。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

Claims (10)

1.一种基于累加器和布隆过滤器的外包数据查询验证方法,包括如下步骤:
步骤一,数据主生成验证所需的参数并上传云端服务器;
步骤二,所述数据主生成所有原始文档的针对每一个关键字/词的反向索引,计算每一个关键字/词的索引集合的累加器值和布隆过滤器,并将所有原始文档与所有的反向索引、累加器值和布隆过滤器一起上传到所述云端服务器;
步骤三,所述数据主发起查询请求,将查询的多个关键字/词发送到所述云端服务器;
步骤四,所述云端服务器执行查询操作,分别找到每个关键字/词的反向索引,然后计算这些反向索引的交集,生成查询结果的结果正确性的证明,并利用基于集合非成员证明或基于布隆过滤器的方法生成结果完整性的证明,一并发送到所述数据主;
步骤五,所述数据主根据查询结果的结果正确性的证明验证从云端服务器接收的查询结果是否正确,并利用基于集合非成员证明或基于布隆过滤器的方法根据查询结果的结果完整性的证明验证查询结果的完整性。
2.如权利要求1所述的一种基于累加器和布隆过滤器的外包数据查询验证方法,其特征在于,步骤一还包括如下步骤:
所述数据主根据给定的参数k随机生成一个k-bit长的RSA模n=pq,并随机从模n的平方剩余中产生数字g,其中,k的取值大于或等于1024,p、q的长度相同且都是安全素数,g为正整数;
所述数据主选择第一哈希函数和第二哈希函数,其中,所述第一哈希函数用于将任意长度的数字映射到一个固定长度的数字,所述第二哈希函数用于将一个固定长度的数字映射到一个三倍固定长度的素数;
所述数据主选择一个计数布隆过滤器的参数,包括计数器的数量和哈希函数;
所述数据主将参数n和g、第一哈希函数、第二哈希函数以及布隆过滤器参数作为验证所需的参数上传至所述云端服务器。
3.如权利要求2所述的一种基于累加器和布隆过滤器的外包数据查询验证方法,其特征在于,步骤二进一步包括如下步骤:
所述数据主生成原始文档的每一个关键字/词(对于任一字、词)的索引集合,其中每一个关键字/词的ID用e来表示,e为任意正整数,每个关键字/词的索引集合用Xe={x1,x2...,xm}表示,Xe中的每个元素xi={docIDi,TFi,Pi1,Pi2...},i=1,2,…,m,m为正整数,docIDi、TFi、Pi1、Pi2分别表示包含该关键字/词的原始文档的ID、出现次数和出现的各个位置;
采用第一哈希函数HASH1和第二哈希函数HASH2将每个索引集合Xe={x1,x2...,xm}映射为集合Y={y1,y2...,ym},其中i=1,2,…,m,m为正整数,如果Xe中的元素的长度不足所述固定长度(o-bit),则略过该步骤映射;
获取Y中所有元素的乘积作为u,根据公式c=gumodn获取每个索引集合Xe相应的RSA累加器的值c,并生成每个RSA累加器的值(c)的对应的数据签名;
计算每个索引集合Xe的布隆过滤器B(X),B(X)利用Xe中每个元素的文档ID来计算;
将每个索引集合Xe和相应的RAS累加器的值c、数据签名作为所述反向索引,将所有原始文档、所有的反向索引以及所有布隆过滤器B(X)一起上传到云端服务器。
4.如权利要求3所述的一种基于累加器和布隆过滤器的外包数据查询验证方法,其特征在于,步骤四进一步包括如下步骤:
所述云端服务器找到每个关键字/词对应的索引集合,然后将所有索引集合的交集作为所述查询的多个关键字/词的查询结果,所述交集用X′e={xe,1,xe,2...,xe,f}表示,f<=m;
所述云端服务器采用第一哈希函数和第二哈希函数将每个关键词的索引集合分别映射为对应的第一映射集合,并将每个索引集合中的所有满足条件的元素X′e={xe,1,xe,2...,xe,i}映射为对应的第二映射集合Y'e={ye,1,ye,2...,ye,i},获取集合Y'e中所有元素的乘积u',获取第一映射集合中所有元素的乘积u,根据公式获取每个X′e对应的并将与集合Xe的累加器的值(c)和数字签名一起构成集合X′e为正确结果的证明;
采用基于集合非成员证明的方法或基于布隆过滤器的方法证明集合中所有不满足条件的元素不在其它任意一个集合中,以实现结果完整性的证明,
所述云端服务器将查询的多个关键字/词的查询结果、结果正确性的证明和完整性的证明发送至所述数据主。
5.如权利要求4所述的一种基于累加器和布隆过滤器的外包数据查询验证方法,其特征在于,所述采用基于布隆过滤器的方法证明集合中所有不满足条件的元素不在其它任意一个集合中的步骤进一步包括如下步骤:
根据每个关键字/词的索引集合的布隆过滤器B(Xi),计算以各布隆过滤器每个元素的最小值构成的布隆过滤器B’;
各索引集合共同包含的文档ID集合为DS,计算DS的布隆过滤器B(DS);
对于布隆过滤器的每个元素j,如果B(DS)j<B’j,那么每个索引集合必然存在B(Xi)j-B(DS)j个检查元素,它们的文档ID不在DS中,而且用布隆过滤器哈希时值为j
各索引集合中所有检查元素的集合、成员证明以及布隆过滤器共同构成结果完整性证明。
6.如权利要求5所述的一种基于累加器和布隆过滤器的外包数据查询验证方法,其特征在于:所述云端服务器在计算查询结果的完整性证明时,选择两种方法中大小较小的一种计算。
7.如权利要求6所述的一种基于累加器和布隆过滤器的外包数据查询验证方法,其特征在于,步骤五进一步包括:
所述数据主通过第一哈希函数和第二哈希函数将返回结果的集合X’映射为对应的映射集合Y’;
根据每个索引集合Xe相应的RSA累加器的值(c)验证所接收到的对应的数据签名是否正确,并计算c=(P X’)u’mod n是否成立;
若上述两个条件同时满足,数据主确认返回的结果集合X’是正确的,否则,则认为返回的结果集合X’是不正确的。
采用基于集合非成员证明或基于布隆过滤器的方法进行查询结果的结果完整性验证。
8.如权利要求7所述的一种基于累加器和布隆过滤器的外包数据查询验证方法,其特征在于,所述采用基于布隆过滤器的方法进行查询结果完整性验证的步骤进一步包括:
数据主利用相应的成员证明分别验证各索引集合中的检查集合;
计算各索引集合的布隆过滤器B(Xi)每个元素的最小值构成的布隆过滤器B’;
对于布隆过滤器的每个元素j,如果B(Xi)j>B’j,那么检查集合Ci必然存在B(Xi)j-B’j个元素,它们用布隆过滤器哈希时值为j;
若以上验证都通过,那么所述数据主认为所述云端服务器提供的证明是正确的,否则是错误的。
9.如权利要求8所述的一种基于累加器和布隆过滤器的外包数据查询验证方法,其特征在于:步骤四中,对查询结果中的元素利用树形结构进行结果正确性的证明,以减少证明的计算时间。
10.一种基于累加器和布隆过滤器的外包数据查询验证系统,其特征在于,该系统包括:
数据主,用于生成验证所需的参数并上传到云端服务器,生成所述原始文档的每一个关键字/词的反向索引,计算每一个关键字/词的索引集合的累加器值和布隆过滤器,将所有原始文档、所有反向索引、累加器值及布隆过滤器上传到云端服务器,及发起查询请求,将查询的多个关键字/词发到云端服务器,根据所述云端服务器接收到的查询结果的结果正确性的证明验证从云端服务器接收的查询结果是否正确,并根据所述云端服务器接收到的查询结果的结果完整性的证明利用基于集合非成员证明或基于布隆过滤器的方法验证从云端服务器接收的查询结果是否完整。
云端服务器,用于执行查询操作,根据所述参数和查询的每个关键字/词的反向索引生成所述查询的多个关键字/词的查询结果和所述查询结果的结果正确性的证明,并利用基于集合非成员证明或基于布隆过滤器的方法生成所述查询结果的结果完整性的证明,并发送至所述数据主。
CN201410339782.1A 2014-07-16 2014-07-16 基于累加器和布隆过滤器的外包数据查询验证方法及系统 Pending CN104102714A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410339782.1A CN104102714A (zh) 2014-07-16 2014-07-16 基于累加器和布隆过滤器的外包数据查询验证方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410339782.1A CN104102714A (zh) 2014-07-16 2014-07-16 基于累加器和布隆过滤器的外包数据查询验证方法及系统

Publications (1)

Publication Number Publication Date
CN104102714A true CN104102714A (zh) 2014-10-15

Family

ID=51670868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410339782.1A Pending CN104102714A (zh) 2014-07-16 2014-07-16 基于累加器和布隆过滤器的外包数据查询验证方法及系统

Country Status (1)

Country Link
CN (1) CN104102714A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776791A (zh) * 2016-11-23 2017-05-31 深圳大学 一种基于云服务的模式串匹配验证方法及装置
CN106776904A (zh) * 2016-11-30 2017-05-31 中南大学 一种不可信云计算环境中支持动态验证的模糊查询加密方法
CN107302521A (zh) * 2017-05-23 2017-10-27 全球能源互联网研究院 一种用户隐私数据的发送方法和接收方法
CN107368596A (zh) * 2017-07-26 2017-11-21 郑州云海信息技术有限公司 一种布隆过滤器查询集合元素的方法及装置
CN107612969A (zh) * 2017-08-16 2018-01-19 中国民航大学 基于B‑Tree布隆过滤器的云存储数据完整性审计方法
CN108256348A (zh) * 2017-11-30 2018-07-06 深圳大学 一种密文搜索结果验证方法及其系统
CN108460030A (zh) * 2017-02-17 2018-08-28 北京大学 一种基于改进的布隆过滤器的集合元素判断方法
CN109088719A (zh) * 2018-08-14 2018-12-25 重庆第二师范学院 外包数据库多关键词可验证密文搜索方法、数据处理系统
WO2018232554A1 (zh) * 2017-06-19 2018-12-27 深圳大学 模式串匹配验证方法、装置、设备及存储介质
CN109558444A (zh) * 2018-11-29 2019-04-02 苏州思必驰信息科技有限公司 数据检索方法及装置
CN110034936A (zh) * 2019-04-08 2019-07-19 中国科学院软件研究所 一种可刺穿的数字签名方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073716A (zh) * 2011-01-05 2011-05-25 北京大学 一种数据外包环境下的查询结果验证方法
US20110211700A1 (en) * 2008-11-06 2011-09-01 Samsung Electronics Co., Ltd. Device and method for security key exchange and system pertaining to same
CN103309973A (zh) * 2013-06-08 2013-09-18 上海交通大学 可验证外包数据查询的方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110211700A1 (en) * 2008-11-06 2011-09-01 Samsung Electronics Co., Ltd. Device and method for security key exchange and system pertaining to same
CN102073716A (zh) * 2011-01-05 2011-05-25 北京大学 一种数据外包环境下的查询结果验证方法
CN103309973A (zh) * 2013-06-08 2013-09-18 上海交通大学 可验证外包数据查询的方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
RUGGERO MORSELLI ET AL: "Trust-Preserving Set Operations", 《TWENTY-THIRD ANNUALJOINT CONFERENCE OF THE IEEE COMPUTER AND COMMUNICATIONS SOCIETIES》 *
温涛等: "追加型数据库外包中的查询结果验证", 《计算机研究与发展》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776791A (zh) * 2016-11-23 2017-05-31 深圳大学 一种基于云服务的模式串匹配验证方法及装置
WO2018094764A1 (zh) * 2016-11-23 2018-05-31 深圳大学 一种基于云服务的模式串匹配验证方法及装置
CN106776904A (zh) * 2016-11-30 2017-05-31 中南大学 一种不可信云计算环境中支持动态验证的模糊查询加密方法
CN106776904B (zh) * 2016-11-30 2019-05-28 中南大学 一种不可信云计算环境中支持动态验证的模糊查询加密方法
CN108460030A (zh) * 2017-02-17 2018-08-28 北京大学 一种基于改进的布隆过滤器的集合元素判断方法
CN107302521A (zh) * 2017-05-23 2017-10-27 全球能源互联网研究院 一种用户隐私数据的发送方法和接收方法
CN107302521B (zh) * 2017-05-23 2021-03-23 全球能源互联网研究院有限公司 一种用户隐私数据的发送方法和接收方法
WO2018232554A1 (zh) * 2017-06-19 2018-12-27 深圳大学 模式串匹配验证方法、装置、设备及存储介质
CN107368596A (zh) * 2017-07-26 2017-11-21 郑州云海信息技术有限公司 一种布隆过滤器查询集合元素的方法及装置
CN107612969A (zh) * 2017-08-16 2018-01-19 中国民航大学 基于B‑Tree布隆过滤器的云存储数据完整性审计方法
CN107612969B (zh) * 2017-08-16 2020-01-14 中国民航大学 基于B-Tree布隆过滤器的云存储数据完整性审计方法
CN108256348A (zh) * 2017-11-30 2018-07-06 深圳大学 一种密文搜索结果验证方法及其系统
CN108256348B (zh) * 2017-11-30 2021-08-20 深圳大学 一种密文搜索结果验证方法及其系统
CN109088719A (zh) * 2018-08-14 2018-12-25 重庆第二师范学院 外包数据库多关键词可验证密文搜索方法、数据处理系统
CN109088719B (zh) * 2018-08-14 2019-06-04 重庆第二师范学院 外包数据库多关键词可验证密文搜索方法、数据处理系统
CN109558444A (zh) * 2018-11-29 2019-04-02 苏州思必驰信息科技有限公司 数据检索方法及装置
CN110034936A (zh) * 2019-04-08 2019-07-19 中国科学院软件研究所 一种可刺穿的数字签名方法

Similar Documents

Publication Publication Date Title
CN104102714A (zh) 基于累加器和布隆过滤器的外包数据查询验证方法及系统
WO2022007889A1 (zh) 基于区块链与同态加密的可搜索加密数据共享方法及系统
Ng et al. Private data deduplication protocols in cloud storage
Wang et al. Enabling public auditability and data dynamics for storage security in cloud computing
Wang et al. Enabling public verifiability and data dynamics for storage security in cloud computing
Venkatesh et al. Improving public auditability, data possession in data storage security for cloud computing
Rahman et al. A blockchain-enabled privacy-preserving verifiable query framework for securing cloud-assisted industrial internet of things systems
Wang et al. S-BDS: An effective blockchain-based data storage scheme in zero-trust IoT
CN108197499B (zh) 一种可验证的密文数据范围查询方法
CN115834200A (zh) 基于区块链的属性基可搜索加密数据共享方法
CN112131227A (zh) 一种基于联盟链的数据查询方法及装置
CN111147508B (zh) 一种抗关键词猜测攻击的可搜索属性基加密方法
CN108156138A (zh) 一种用于雾计算的细粒度可搜索加密方法
WO2018070932A1 (en) System and method for querying an encrypted database for documents satisfying an expressive keyword access structure
Yuan et al. Flexible and publicly verifiable aggregation query for outsourced databases in cloud
CN103309973B (zh) 可验证外包数据查询的方法及系统
CN108632257B (zh) 支持分层搜索的加密健康记录的获取方法和系统
CN114710357A (zh) 一种可编辑区块链中支持分块验证的动态可搜索加密方法
Chen et al. Ensuring dynamic data integrity with public auditability for cloud storage
JP7560708B2 (ja) 情報処理システム、情報処理方法、情報処理プログラム、秘密計算システム、秘密計算方法、及び、秘密計算プログラム
Wang et al. Data integrity verification scheme with designated verifiers for dynamic outsourced databases
CN117494221B (zh) 一种区块链协助搜索的物联网数据共享方法
CN116450746B (zh) 一种基于区块链的属性可搜索加密系统与方法
Abraham et al. Proving possession and retrievability within a cloud environment: A comparative survey
CN114519042B (zh) 一种文件共享方法、共享文件的搜索方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20141015