一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

无零日泄漏的加密搜索的制作方法

2022-09-14 23:01:14 来源:中国专利 TAG:


1.本公开涉及执行无零日泄漏的加密搜索。


背景技术:

2.随着在云端存储大量数据变得越来越普遍,可搜索加密(即加密的搜索)越来越受欢迎。越来越多的用户或客户端拥有大量加密文档,这些文档存储在不受客户端控制的服务器上(即,服务器不受信任)。使用可搜索加密,客户端可以将其加密的文档存储在不受信任的服务器上,但仍保持搜索文档的能力,例如,检索包含特定关键字的所有文档的标识符。然而,这种可搜索的加密通常伴随着安全和隐私方面的缺陷。


技术实现要素:

3.本公开的一个方面提供了一种用于提供无零日泄漏的加密搜索的方法。该方法包括在与用户相关联的用户设备的数据处理硬件处接收对关键字的搜索查询。关键字出现在存储于不可信存储设备上的加密文档的语料库中的一个或多个加密文档中。该方法还包括由数据处理硬件访问计数表以从包括关键字的加密文档的语料库中获得加密文档的语料库唯一文档的计数,以及由数据处理硬件基于关键字、私有加密密钥和包含该关键字的唯一文档的计数来生成可委托的伪随机函数(dprf)。该方法还包括由数据处理硬件评估dprf的第一部分以及由数据处理硬件将dprf的剩余的第二部分委托给不可信存储设备。当不可信存储设备接收到dprf的剩余第二部分时,使得不可信存储设备评估dprf的剩余第二部分并访问与存储在不可信存储设备上的加密文档的语料库相关联的加密搜索索引。不可信存储设备还基于加密的搜索索引确定与dprf的剩余第二部分相关联的加密文档的语料库中的一个或多个加密文档,并向用户设备返回每个加密文档的标识符,该标识符至少为一个与dprf的剩余第二部分相关联的一个或多个加密文档的一部分。
4.本公开的实现可以包括以下可选特征中的一个或多个。在一些实施方式中,生成dprf包括生成二叉树,其中二叉树包括一组节点,该一组节点包括根节点和多个其他节点。每个其他节点包括非叶节点或叶节点。该方法还可以包括其中二叉树的叶节点的数量等于或大于包括关键字的唯一文档的计数。
5.在一些示例中,二叉树的根节点包括私有加密密钥和关键字的第一散列。根节点可以与第一子节点和第二子节点相关联,其中第一子节点包括私有加密密钥和关键字的第一散列的第二散列的第一部分,第二子节点包括私有加密密钥和关键字的第一个散列的第二散列的第二部分。可选地,与第二散列的第二部分连接的第二散列的第一部分等效于私有加密密钥和关键字的第一散列的第二散列。
6.二叉树的节点集合中的每个叶节点可以与存储在加密搜索索引中的值相关联。二叉树的节点集合中的每个其他节点可以包括与对应的其他节点相关联的父节点的散列的一部分。在一些实施方式中,评估dprf的第一部分包括评估二叉树的节点集合的第一子集。当不可信存储设备评估dprf的剩余第二部分时,不可信存储设备评估二叉树的节点集的第
二子集。第二子集包括来自二叉树节点集合的与第一子集不同的节点。
7.在一些示例中,该方法还包括:对于用户上传到存储在不可信存储设备上的加密文档的语料库中的新加密文档的每个唯一关键字,由数据处理硬件在计数表中递增加密文档的语料库中包括相应的唯一关键字的唯一文档的计数,加密文档的语料库以及由数据处理硬件从包括相应的唯一关键字的加密文档的语料库中基于私有加密密钥、相应的唯一关键字和唯一文档的递增计数生成唯一关键字散列。该方法还可以包括由数据处理硬件生成包含唯一关键字散列和与用户上传的新的加密文档相关联的加密文档标识符的散列对,以及由数据处理硬件将散列对发送到不可信存储设备。
8.当不可信存储设备返回与dprf的剩余第二部分相关联的一个或多个加密文档的至少一部分的每个加密文档的标识符时,不可信存储设备可以返回与每个返回的标识符相关联的加密元数据。
9.本公开的另一方面提供了一种用于提供无零日泄漏的加密搜索的系统。该系统包括与用户相关联的用户设备的数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储当在数据处理硬件上执行时使数据处理硬件执行操作的指令。这些操作包括接收对关键字的搜索查询。关键字出现在存储在不可信存储设备上的加密文档的语料库中的一个或多个加密文档中。这些操作还包括访问计数表以获取加密文档的语料库中包含关键字的唯一文档的计数,以及基于关键字、私有加密密钥和包括关键字的唯一文档的计数生成可委托的伪随机函数(dprf)。该操作还包括评估dprf的第一部分并将dprf的剩余第二部分委托给不可信存储设备。当不可信存储设备接收到dprf的剩余第二部分时,使不可信存储设备评估dprf的剩余第二部分并访问与存储在不可信存储设备上的加密文档的语料库相关联的加密搜索索引。不可信存储设备还基于加密搜索索引确定与dprf的剩余第二部分相关联的加密文档的语料库中的一个或多个加密文档,并向用户设备返回每个加密文档的标识符,该标识符至少为与dprf的剩余第二部分相关联的一个或多个加密文档的一部分。
10.该方面可以包括以下可选特征中的一个或多个。在一些实施方式中,生成dprf包括生成二叉树,其中二叉树包括一组节点,该一组节点包括根节点和多个其他节点。每个其他节点包括非叶节点或叶节点。操作还可以包括二叉树的叶节点的数量等于或大于包括关键字的唯一文档的计数的情况。
11.在一些示例中,二叉树的根节点包括私有加密密钥和关键字的第一散列。根节点可以与第一子节点和第二子节点相关联,其中第一子节点包括私有加密密钥和关键字的第一散列的第二散列的第一部分,第二子节点包括私有加密密钥和关键字的第一散列的第二散列的第二部分。可选地,与第二散列的第二部分相连接的第二散列的第一部分等效于私有加密密钥和关键字的第一散列的第二散列。
12.二叉树的节点集合中的每个叶节点可以与存储在加密搜索索引中的值相关联。二叉树的节点集合中的每个其他节点可以包括与对应的其他节点相关联的父节点的散列的一部分。在一些实施方式中,评估dprf的第一部分包括评估二叉树的节点集合的第一子集。当不可信存储设备评估dprf的剩余第二部分时,不可信存储设备评估二叉树的节点集的第二子集。第二子集包括来自二叉树节点集合的与第一子集不同的节点。
13.在一些示例中,操作进一步包括,对于用户上传到存储在不可信存储设备上的加密文档的语料库中的新加密的文档的每个唯一关键字,增加加密文档的语料库内的唯一文
档的计数,包括计数表中对应的唯一关键字,并基于私有加密密钥、对应的唯一关键字和加密文档的语料库中包括对应唯一关键字的唯一文档的递增计数生成唯一关键字散列。操作还可以包括生成包含唯一关键字散列和与用户上传的新加密文档相关联的加密文档标识符的散列对,并将散列对发送到不可信存储设备。
14.当不可信存储设备返回与dprf的剩余第二部分相关联的一个或多个加密文档的至少一部分的每个加密文档的标识符时,不可信存储设备可以返回与每个返回的标识符相关联的加密元数据。
15.本发明的一种或多种实施方式的细节在附图和以下描述中阐述。从描述和附图以及从权利要求中,其他方面、特征和优点将是显而易见的。
附图说明
16.图1提供了无零日泄漏的加密搜索的示例性系统的示意图。
17.图2是可搜索的加密管理器的示范性组件的示意图。
18.图3是二叉树的示意图。
19.图4是可搜索的加密管理器和高级查询的示意图。
20.图5是将文档添加到加密文档的语料库的示例性系统的示意图。
21.图6是从加密文档的语料库中删除文档的示例性系统的示意图。
22.图7是不可信存储设备和计数表分桶的示意图。
23.图8是向计数表插入关键字的概率图的示意图。
24.图9是用于提供无零日泄漏的加密搜索的方法的示例性操作布置的流程图。
25.图10是可用于实现本文所描述的系统和方法的示例性计算设备的示意图。
26.各图中相同的参考符号表示相同的元件。
具体实施方式
27.可搜索加密(也可以称为加密的搜索)越来越受欢迎。可搜索加密的目的是使客户端能够将加密文档的语料库的存储外包给不受信任的服务器。例如,客户端可能希望将大量文档(或上传到服务器的任何其他项目,例如图片、电子邮件等)安全地存储在基于云的存储解决方案中。术语文档通常被使用,并且可以表示任何类型的数字文件(例如,图片、歌曲、数据库条目等)。通常,客户希望保持有效搜索文档的能力(即搜索特定关键字),同时保持加密提供的文档的隐私和安全性。为了维护这种隐私,与文档内容或来自客户端的查询相关的信息必须对不受信任的服务器隐藏。解决此问题的常用方法是创建单独的加密搜索索引,该索引为存储在不受信任服务器上的所有文档的关键字和相关文档标识符编制索引。
28.此搜索索引使用不受信任的服务器无法访问的密钥加密,然后与文档一起存储。客户端然后可以生成服务器针对加密的搜索索引评估的搜索查询。评估产生与搜索查询的关键字相关联的加密文档标识符,不受信任的服务器将其返回给客户端。以这种方式,客户端接收包括关键字的文档的文档标识符列表,同时最小化信息泄漏(例如,到不受信任的服务器)。
29.由于不受信任的服务器根据用户的查询对搜索索引进行评估,该索引将逐渐泄露
有关搜索模式的信息,并且通过部署诸如频率分析之类的攻击,服务器可能最终能够以不可忽略的概率对历史搜索词做出有根据的猜测。由于在同一索引上重复搜索,这是一个固有问题,因此无法有效地防止这种泄漏。
30.然而,许多可搜索的加密方案除了使用搜索索引的这种缓慢泄漏的问题之外,还存在许多额外的安全或隐私问题。在一个示例中,一些方案容易受到零日攻击。零日攻击是在存储服务器处理任何查询之前向对手(例如,不受信任的存储服务器)揭示或泄露信息的攻击。即,搜索查询(即,在加密文档中搜索关键字)通常将至少一些信息泄露给服务器。但是,成功的零日攻击根本不需要任何搜索查询来获取有关加密文档的信息。
31.例如,一些可搜索的加密方案将文档中的每个关键字散列为一个或多个附加到每个加密文档的小值。为了搜索关键字,可以搜索每个相关的散列值。但是,该方案向服务器显示包含特定散列值的文档数量(以及文档的标识符)的频率表。例如,与大量文档相关联的散列值可能比与较少文档相关联的散列值更常见。在执行任何搜索查询之前,此信息会显示给服务器。研究表明,频率表可以揭示大量的关键词。虽然这些方案可能试图减轻这个弱点(例如,通过添加随机项),但必须添加大量噪声以确保克服频率问题,这会显著降低方案的效率。
32.许多可搜索的加密方案容易受到的另一个常见安全问题是文件注入攻击。这些攻击的前提是攻击者可以向目标发送加密文档(例如电子邮件)。这些电子邮件将包含特定的关键字。当目标查询这些特定关键字时,攻击者可以查看返回了哪些注入的电子邮件,从而确定查询的关键字。在某些情况下,攻击者甚至可以通过隐藏可以通过,例如不可见的超文本标记语言(html)通知目标的关键字来隐藏注入电子邮件的身份。如果攻击者能够保存目标执行的查询(或检索从日志中执行的查询),则这种攻击可能会更加复杂。然后,攻击者可以将所有这些历史查询应用于最近注入(即,在执行查询之后注入)的电子邮件,以损害历史查询的查询关键字的隐私。因此,当该方案对过去或未来的所有电子邮件使用相同的散列时,该方案很容易受到攻击者的攻击,将所有先前的查询应用到最近才注入的文件中。
33.为了在保持搜索功能和效率的同时减轻加密文档的零日攻击和文件注入攻击,本文的实现针对使用可委托的伪随机函数(dprf)的加密搜索方案,以在任何搜索查询被执行之前完全隐藏频率表执行。
34.现在参考图1,在一些实施方式中,示例系统100包括与相应用户或客户端12相关联并且经由网络112与远程系统111通信的用户设备10。用户设备10可以对应于任何计算设备,例如台式工作站、膝上型工作站或移动设备(即智能手机)。用户设备10包括计算资源18(例如,数据处理硬件)和/或存储资源16(例如,存储器硬件)。
35.远程系统111可以是单台计算机、多台计算机或具有可扩展/弹性计算资源118(例如,数据处理硬件)和/或存储资源116(例如,存储器硬件)的分布式系统(例如,云环境)。不可信文档数据存储150(即,远程存储设备150)覆盖在存储资源116上,以允许客户端或计算资源118中的一个或多个对存储资源116的可扩展使用。文档数据存储150是配置为存储文档152、152a-n的语料库。每个文档152包括唯一标识相关文档152(例如,文档名称)的文档标识符154。每个文档152还包括一组关键字32。一组关键字32包括出现在用户12可以搜索的相关加密文档152中的所有关键字。如本文所使用的,文档152可以指代上传到远程系统111以存储在文档数据存储150内的任何项目,例如但不限于电子邮件、日历事件、笔记、数
据库条目、图片、音频文件等。在一些示例中,不可信存储设备150存储电子邮件语料库152,并且用户12通过用户设备10访问收件箱以接收和撰写电子邮件。在一些实施方式中,用户设备10执行可搜索加密(se)管理器120以管理对数据存储150内的加密文档152的访问。
36.用户12可以经由在用户设备10上执行的软件应用程序(例如,网络浏览器)与se管理器120交互。软件应用程序(即,软件资源)可以指使计算设备执行的计算机软件一个任务。在一些示例中,软件应用程序可以被称为“应用程序”、“app”或“程序”。示例应用程序包括但不限于系统诊断应用程序、系统管理应用程序、系统维护应用程序、文字处理应用程序、电子表格应用程序、消息传递应用程序、媒体流应用程序、社交网络应用程序和游戏应用程序。
37.se管理器120从用户12接收对一个或多个关键字32的搜索查询122,该关键字32出现在存储在不可信存储设备150上的一个或多个加密文档152中。se管理器120访问计数表210以获得包含关键字32的加密文档152的语料库中的唯一文档152的计数212。即,计数212指示关键字32出现在的唯一文档152的数量。例如,当查询的关键字32是“猫”和“猫”出现在存储在存储设备150上并与用户12相关联的526个不同文档152中,计数212将为526。
38.现在参考图2,示意图200显示se管理器120从计数表210接收查询关键字32的关键字计数212。计数表210包括关键字32出现在多少个不同文档152中的计数212。在图示的示例中,关键字“猫”出现在526个文档152中,关键字“狗”出现在128个不同的文档152中,并且关键字“牦牛”出现在12个不同的文档152中。在一些示例中,计数表210可以被加密,se管理器120可以使用加密密钥解密计数表210和/或计数212。如下文参考图7更详细讨论的。如图7所示,计数表210可以本地存储在用户设备10或远程(例如,在不可信存储设备150)。为了保持隐私,计数表210必须保持私密,因此通常会被加密,尤其是当远离用户设备10存储时。
39.返回参考图1,se管理器120还获得私有加密密钥124。在一些示例中,se管理器120生成私有密钥124。在其他示例中,se管理器120从用户设备10或从用户设备10检索或接收私有密钥124。第三方(例如,第三方密钥管理服务)。se管理器120基于关键字32、私有加密密钥124和包括关键字32的唯一文档152的计数212生成可委托的伪随机函数126(dprf)。当用户12查询多于一个关键字32时,se管理器120可以为每个关键字32生成单独的dprf 126。
40.如本文所用,dprf是使用输入密码密钥k和输入x生成输出f(k,x)的函数,该输出f(k,x)对于任何不能访问密钥k的一方来说是随机的。具体而言,dprf126允许将函数域的严格子集的评估委托给代理,而代理不能评估严格子集之外的函数。
41.例如,假设用户希望检索存储在服务器上的值,这些值与函数f的大量输出相关联。也就是说,用户希望服务器检索或评估与存储在服务器上的f(k,x1),
……
,f(k,xm)相关联的值。用户可以简单地将函数f、密钥k和x的值范围发送到服务器,服务器可以评估x的值范围以获得输出。但是,在这种情况下,服务器随后可以针对x的任何值评估函数f,因为服务器可以访问密钥k。用户的另一种可能途径是自己评估x的每个值,然后将每个输出发送到服务器。虽然这限制了服务器接收的信息,但它需要发送m个输出,这是非常低效的。
42.理想情况下,用户希望最小化用户必须发送给服务器的信息量,同时也最小化服务器获知的信息量。如在随后的图3中所详细描述的那样,dprf 126是一个函数,它限制服务器评估指定范围之外的x值,从而限制服务器获得的信息量。例如,当用户发送x1到xm的范围值以供服务器进行评估时,服务器将无法针对小于x1和x大于xm的x值来评估函数f。为了
建立这些界限,se管理器120评估dprf 126的第一部分126a并将dprf的剩余第二部分126b委托给不可信存储设备150。
43.再次参考图2,在一些实施方式中,se管理器120包括dprf生成器218和dprf评估器220。dprf生成器218基于私有加密密钥124、关键字32和从计数表210接收到的关键字计数212来为查询过的关键字32生成dprf 126。dprf生成器218将dprf 126传递给dprf评估器220。如在随后的图3中所详细描述的那样,dprf评估器220评估dprf 126的至少一部分(例如,第一部分126a),并且基于评估的部分,将剩余的第二部分126b委托(即,发送)给不可信远程存储设备150。
44.返回参考图1,不可信存储设备150(即,存储加密文档152的文档数据存储150)响应于接收到由se管理器120的dprf评估器委托的dprf 126的剩余的第二部分126b,评估剩余的dprf的第二部分126b并访问与存储在不可信存储设备150上的加密文档的语料库152相关联的加密搜索索引160。存储设备150确定加密文档的语料库内的一个或多个加密文档152的dprf的剩余第二部分126b基于加密的搜索索引160。
45.在一些实施方式中,加密搜索索引160包括条目162、162a-n的列表,其中每个条目162包括关键字32和关键字32出现在其中的至少一个加密文档标识符154之间的关联。剩余的第二部分126b的评估向不可信存储设备150提供与一个或多个加密文档标识符154相关联的一个或多个加密关键字32,而不向存储设备150透露明文关键字或文档标识符。存储设备150向用户设备10返回与dprf的剩余第二部分126b相关联的一个或多个加密文档152的至少一部分的每个加密文档152的标识符154。也就是说,在一些实施方式中,存储设备150不返回与包含查询关键字32的文档152相关联的每个标识符154,而是仅返回文档标识符154的一部分(例如,五十个)。随后的查询122由用户12可以返回附加结果(例如,接下来的五十个文档标识符154)。在一些示例中,例如,当查询的关键字32没有出现在任何文档152中时,存储设备150向用户设备10返回空集(即,不返回文档标识符154)。
46.在一些实施方式中,当不可信存储设备150返回与包括查询关键字32的加密文档152相关联的文档标识符154的至少一部分时,不可信存储设备还返回与每个返回的标识符154相关联的加密元数据156。元数据156可以包括用于用户12的附加相关或上下文信息。例如,元数据156可以包括日期(例如,文档152被创建或上传的日期)、文档152的作者、文档152的大小、包含关键字32等。
47.现在参考图3,如前所述,se管理器120生成dprf 126以通过生成二叉树300来求解来自f(k,x1),
……
,f(k,xm)的值范围。例如,字符k与特定关键字32相关联,并且dprf 126的每个x值表示选择关键字32出现在其中的文档152之一。例如,如果选择关键字32是“猫”,则计数与“猫”关联的值212为526,则猫出现在526个唯一文档152中。在此示例中,x的最大大小为526(例如,1到526),每个x将代表出现关键字32的文档152中的一个。f(k,x)的每个值随后与存储在加密搜索索引160中的值相关联,该值表示所选的关键字32出现在其中的文档标识符154。
48.因此,为了让se管理器120检索所有具有关键字“猫”的文档152,se管理器120和/或不可信存储设备150可以从f(k,1),
……
,f(k,526)中评估dprf 126。526个结果中的每一个与存储在加密搜索索引160中的不同值相关联。在另一个示例中,se管理器120可以仅检索526个文档152中包括关键字“猫”的一部分。在该示例中,se管理器120和/或不可信存储
设备150将仅评估dprf 126的一部分。例如,为了检索五十个文档152,se管理器120和/或不可信存储设备150可以评估f(k,1),
……
,f(k,50)。五十个结果中的每一个再次与存储在加密搜索索引160中的不同值相关联。类似地,为了检索接下来的五十个文档,se管理器120和/或不可信存储设备150可以评估f(k,51),
……
,f(k,100)等等。这样,se管理器120和不可信存储设备150可以评估dprf126以获得与加密搜索索引160内的值(即,条目162)相关联的结果。不可信存储设备150可以将与结果相关联的所有或一些值返回给se管理器120。
49.在一些实施方式中,se管理器120响应于接收到搜索查询122,通过生成二叉树300来生成与查询的关键字32相关联的dprf 126。在其他实施方式中,se管理器120为每一个生成二叉树300。在接收搜索查询122之前计数表210中的关键字32。二叉树是具有多个节点的树数据结构,其中结构中的每个节点最多具有两个子节点。二叉树300包括一组节点310,其包括根节点310r和多个其他节点310。其他节点310是非叶节点310nl或叶节点310l。x的每个输入值以升序唯一地分配叶节点310l。二叉树300的叶节点310l的数量可以等于或大于包括相关关键字32的唯一文档152的计数。例如,如果关键字“猫”具有526的计数值212,则se管理器120可以为关键字“猫”生成具有至少526个叶节点310l的二叉树300。“猫”的526个实例中的每一个都与特定叶节点310l相关联。
50.每个节点310还与值330、330a-n相关联,在本文中它们通常被称为“令牌”。在一些实施方式中,每个叶节点310l的值330与加密搜索索引160的条目162内的值相关联。也就是说,二叉树300的每个叶节点310l的每个值330都与加密搜索索引160内的值相关联。其中,加密搜索索引160与对应的关键字32相关联。返回到关键字32“猫”的示例,为关键字32“猫”生成的二叉树300中的526个叶节点300l中的每一个可以与存储在加密搜索索引160中的值相关联,并且与加密搜索索引160相关联的值中的每一个对应于包括关键字32“猫”的文档152的文档标识符154。
51.在一些实施方式中,二叉树300的根节点310r的值330是私有加密密钥124的第一散列340和与二叉树300相关联的关键字32的值。因此,每个二叉树300对于为相应关键字32生成的每个二叉树300的每个根节点310r将具有唯一值330r。每个根节点310r与第一个子节点(例如,图3中的节点“b”)和第二个子节点(例如,图3中的节点“c”)相关联。第一子节点包括私有加密密钥124和关键字32的第一散列340的第二散列342,342a的第一部分330b,第二子节点包括私有加密密钥124和关键字32的第一散列340的第二散列342的第二部分330c。也就是说,在一些示例中,根节点310r的值330a是密钥124和关键字32的第一散列340。这个值(在图3中显示为“a”)然后被散列(例如,使用sha256)并且得到的第二散列342a,被分成第一部分330b和第二部分330c。如本文所用,术语“散列”和“散列函数”用于指示任何单向函数(即,无法从输出确定输入的函数),因此,除了散列操作以外,同样适用于加密操作(例如,高级加密标准(aes))。
52.在一些示例中,与第二散列342的第二部分330c连接的第二散列342的第一部分330b等效于私有加密密钥124的第一散列340和关键字32的第二散列342。如图3所示,第二散列342(例如,sha256散列)是330a的散列(即,根节点310r值330a)并且等于“b”||“c”(即,值330b与值330c合并)。例如,sha256散列的输出是一个256位的数字。值330b可能相当于sha256输出的前128位,而值330c可能相当于sha256输出的后128位。因此,与值330c连接的值330b等价于值330a的散列342。
的令牌330c、330f、330g。因此,通过确定叶节点310l的并集准确地(并且仅)覆盖与要检索的文档标识符154的范围相对应的值集合330的节点310的最小数目,在保持低带宽要求的同时最小化提供给不可信存储设备150的信息量。为了返回额外的文档标识符154,se管理器120可以通过将附加值330发送到不可信存储设备(例如,节点“c”的值330c以获得节点“f”和节点“g”的值330f、330g)来跟踪。
58.在一些实施方式中,加密索引160的每个条目162正好是一个关键字32和一个文档标识符154之间的关联。然而,在一些实施方式中,可以优化搜索索引160而不降低隐私。代替加密索引160的每个条目162包括一个关键字32和一个文档标识符154之间的关联,每个条目162可以包括一个关键字32和多个文档标识符154之间的关联。也就是说,每个条目162关联一个将关键字32添加到关键字32出现在其中的多个文档标识符154。注意,如果每个条目162可以与单个关键字32相关联的文档标识符154的数量没有限制,则搜索索引将有泄露频率表信息的风险。为了减轻这种风险,每个条目162可以被限制为最大数量的文档标识符。例如,每个条目162可以被限制为五十或一百个文档标识符154。在实践中,这确保了具有高频率(即,出现在许多文档152中)的关键字将被分成搜索索引160中的许多不同条目162。
59.在一些示例中,文档标识符的最大数量可以基于关键字32的频率动态改变。随着关键字32的频率增加(即,关键字32在文档154中更常见),文档标识符的最大数量可能会增加。结果,不可信存储设备150不必处理那么多的散列。计数表210可用于跟踪每个关键字32的文档标识符的最大数量以及当前与每个条目162相关联的文档标识符154的数量。可选地,代替跟踪当前与每个条目162关联的文档标识符154的数量的计数表210,se管理器120每次添加新关键字32时,se管理器120可以创建新条目162并基于关键字概率将关键字32添加到新条目162。平均而言,这导致在创建另一个新条目162之前将预期数量的文档标识符154添加到条目1622。这样,计数表210不需要跟踪文档标识符154的数量分配给每个条目162,从而减小计数表210的大小。
60.现在参考图4的示意图400。如图4所示,在一些示例中,se管理器120接收析取、合取或否定搜索查询122d、122c、122n。析取查询122d包括与逻辑或组合的两个或更多个关键字32的查询。例如,析取查询122d可以包括对“猫”或“狗”的查询,并且应该导致返回与文档152相关联的任何文档标识符154,该文档标识符包括关键字“猫”和关键字
““
狗中的一个或两个。对于析取查询122d,se管理器120可以分别为每个关键字32生成dprf 126和对应部分126b、126ba-n。在用户设备10处接收到每个关键字32的文档标识符154之后,se管理器120可以组合结果,并且在一些实施方式中,使用与文档标识符154一起返回的任何元数据156对结果进行排名。
61.合取查询122c包括与逻辑and组合的两个或更多个关键字32的查询。例如,合取查询122c可以包括对“猫”和“狗”的查询并且应该导致返回与包括“猫”和“狗”两者的文档152相关联的任何文档标识符154。类似于析取查询122d,对于合取查询122c,se管理器120可以分别为每个关键字32生成dprf 126和对应部分126b。在用户设备10处接收到每个关键字32的文档标识符154之后,se管理器120可以仅向用户12返回针对每个关键字32返回的文档标识符154。
62.否定查询122n包括对不包括一个或多个关键字32的结果的查询。例如,否定查询
122n可以包括对不包括关键字“猫”的所有文档152的查询。对于否定查询122n,se管理器120可以为否定关键字32生成dprf 126和对应部分126b。在接收到否定关键字32的结果之后,se管理器120可以检索所有文档标识符154并从列表中删除与否定关键字32相关联的标识符154,并将剩余的结果返回给用户12。使用上述用于析取查询122d、合取查询122c和否定查询122n的方法,组合或包括多种不同类型的查询的复杂查询122可以使用相同的技术通过将复杂查询拆分为多个更简单的查询来解决。
63.现在参考图5,在一些示例中,系统100显示用户12将新文档152n添加/上传到存储在不可信存储设备150上的加密文档152的语料库中。在这种情况下,加密搜索索引160用关键字32更新存在于新添加的文档152中。新文档152n与新文档标识符154n相关联。在一些实施方式中,对于由用户12上传到存储在不可信存储设备150上的加密文档152的语料库中的新加密文档152n的每个唯一关键字32,se管理器120使包括计数表210中的对应唯一关键字32的加密文档152的语料库内的唯一文档152的计数212递增。例如,当新文档152n包括关键字“猫”并且与关键字“猫”相关联的当前计数212是526时,计数212增加到527。
64.在一些示例中,se管理器120基于私有加密密钥124、对应的唯一关键字32和加密文档的语料库内包括对应唯一关键字32的唯一文档152的递增计数212来生成唯一关键字散列520。例如,se管理器120可以使用散列函数510来计算h
kw
=f(k||kw,cnt
kw
),其中h
kw
代表散列值520,k代表私有加密密钥126,kw代表关键字32,并且cnt
kw
代表递增计数212。任何合适的单向函数或算法可用于散列或加密关键字32(例如,sha256)。
65.se管理器120还可以生成散列对522,其包括唯一关键字散列520和与用户上传的新加密文档152相关联的加密文档标识符154n(即,se管理器120散列或加密新文档标识符154n)。se管理器120将散列对522发送到不可信存储设备150。se管理器120可以为新上传的文档152n内的每个唯一关键字32生成单独且唯一的散列对522。
66.草稿文档152(例如,在未发送的情况下保存或正在积极撰写的电子邮件)通常由用户设备10经常(例如,每隔几秒)保存。se管理器120可以以与以下相同的频率更新搜索索引160草稿被保存或以不同的频率保存。例如,当草稿每5秒保存一次时,se管理器120可以每5分钟更新一次加密搜索索引160。在一些实施方式中,se管理器120可以以与保存草稿相同的速率更新加密搜索索引160,但以较慢的频率更新计数表210。在这种情况下,令牌330可以暂时重新用于更新搜索索引160,直到计数表210在未来时间被更新。
67.当存储在不受信任存储设备150上的文档152是电子邮件时,se管理器120可以将在用户设备10处接收到的电子邮件自动添加到不受信任存储设备上的加密电子邮件的语料库中。在一些示例中,已接收但尚未打开的电子邮件不被添加到搜索索引160。也就是说,在一些示例中,se管理器120自动将打开的电子邮件添加到搜索索引160。这样,一个发件人可以撤销电子邮件,而无需se管理器120和/或不可信存储设备150从关键字32推断出被撤销的电子邮件的内容。
68.现在参考图6,类似于添加文档152,系统100显示se管理器120,在一些实施方式中,接收删除请求630以从不可信存储设备150中删除文档152。在这种情况下,se管理器120检索要删除的文档152中存在的每个关键字32(例如,从不可信存储设备150),并且对于每个关键字32,递减计数表210中的对应计数212。se管理器然后指示不可信存储设备删除与删除的文档152d相关联的加密搜索索引内的值。例如,se管理器120可以使用散列函数610
生成私有加密密钥124、关键字32和适当计数212(或其他标识符)的散列620,以生成具有文档标识符154的散列对622。se管理器120可以将散列对622发送到不可信存储设备150以向不可信存储设备指示要删除加密搜索索引160内的哪些条目。不可信存储设备150可以运行周期性任务以定期更新搜索索引160。在一些实施方式中,不可信存储设备150保留已删除文档152的所有文档标识符154的列表,并且在从搜索查询122返回结果之前,移除与已删除文档152相关联的任何文档标识符154。
69.可选地,不可信存储设备150可以在一个或多个文档152已被删除之后周期性地压缩(例如,执行垃圾收集)搜索索引160。在删除文档之后,删除的文档可以在与删除的文档152相关联的计数212处创建“空洞”。当从文档删除变得可用时,不可信存储设备150可以将具有较高计数212的搜索索引160中的条目移动或移位到较低计数中的一个。然后可以从搜索索引160中删除所得到的空的较高计数条目。
70.在一些场景中,用户12可能希望删除文档152的部分而不删除整个文档152。在这种情况下,从文档152中移除一些关键字32并且加密的搜索索引160不再准确地反映存在的关键字32在修改的文档152中。在一些实施方式中,删除索引660包括对从存储在数据存储150上的加密文档的语料库内的文档152中删除的关键字32的引用。删除索引660可以类似于当新文档关键字被添加到搜索索引160时生成和维护。在不可信存储设备150返回与查询关键字相关联的文档标识符154之前,不可信存储设备可以参考删除索引660以确定删除索引660是否指示任何文档标识符154包括已被删除的关键字32。不可信存储设备150可以删除文档标识符154,其中,删除索引指示了查询的关键字32被从中移除。
71.为了防止零日泄漏(例如,频率表攻击),计数表210的明文对用户12以外的任何人都不可用是很重要的。然而,还希望用户12具有容易的同时从各种用户设备10访问计数表210。存在多种存储计数表210的方法,它们在不同程度上解决了这些问题。例如,计数表可以仅本地存储在用户设备10上。然而,该实施具有显着的缺点,因为用户仅限于存储计数表210的用户设备10,并且如果用户设备10丢失计数表210(例如,用户设备10崩溃),则很难恢复计数表210。
72.另一种实现方式是以加密格式将计数表210存储在不可信存储设备150上。计数表210可以用不同于私有加密密钥124的第二私有加密密钥加密,或者计数表210可以是使用相同的私有加密密钥124加密。然后,用户设备10可以在执行查询时,首先从存储服务器150下载加密的计数表210,对其进行解密,并执行查询。每当从加密文档的语料库中添加或移除文档152时,用户设备10可以向不可信存储设备150发送更新的计数表210。这允许多个用户设备10之间的同步并确保在用户设备崩溃的情况下进行备份,然而,带宽需求可能很大,特别是对于一些用户设备(例如,移动电话)。以大大增加的复杂性为代价,不可信存储设备150可以替代地存储计数表210的增量备份。例如,可以以规则的间隔(例如,每天一次或每隔几个小时)上传备份。用户设备可以将更改上传到计数表210(例如,添加或删除文档152),并且不可信存储设备150可以跟踪对计数表210的这些更改,直到下一次备份上传。
73.用于存储计数表210的又一实现涉及将加密的计数表210存储在不可信存储设备150上并访问计数表210的加密条目。例如,对于每个关键字32,不可信存储设备150可以存储加密的标识符具有指向该关键字的计数212的加密的唯一密钥。当用户12添加文档152时,用户12请求不可信存储设备返回与标识符相关联的加密计数212。用户设备10然后可以
使用恢复的计数212执行如上所述的搜索,然后将加密的递增计数发送回不可信存储设备150以供不可信存储设备150更新。此实施提供了对崩溃用户设备的保护,并最大限度地减少了所需的带宽。但是,访问加密计数的日志如果没有正确删除,可能会泄露频率信息。该频率信息可以允许生成可以在攻击中使用的频率表。
74.在又一实施方式中,计数表210被替换为单个最大计数整数。最大计数整数可以设置为最大计数212。即,最大计数整数可以设置为具有最高计数212(即,出现在最多文档152中)的关键字32的计数212。当搜索关键字32时,se管理器120可以在直到最大计数整数的整个范围内将dprf 126委托给不可信存储设备150。不可信存储设备可以对加密的搜索索引160执行搜索(例如,二进制搜索)以获得被查询的关键字32的实际计数212。例如,不可信存储设备150可以确定匹配的最大计数值加密搜索索引160中的结果是关键字的实际计数212。该实现消除了对计数表210的需要,但增加了不可信存储设备150必须对加密的搜索索引160执行的查找次数,同时还潜在地降低隐私,因为搜索日志可能泄露关键字32的计数频率。
75.在又一实施方式中,计数表210被划分为多个不同的访问桶。这里,划分可以使用k-匿名,其中k-匿名是指匿名数据的属性,其中群体的特定成员不能容易地从数据中识别或区分。
76.现在参考图7的示意图700。如图7所示,在一些实施方式中,se管理器120将计数表210划分为多个桶710、710a-n并将桶710存储在不可信存储设备150上。这里,每个桶710存储一个或多个唯一的计数212包括相应关键字32的加密文档152的语料库中的文档152。也就是说,每个关键字32和相关的计数212对712、712a-n(例如,“猫”和526)被加密并分配给存储桶710和每个桶存储在不可信存储设备150上。不可信存储设备150可以托管任何数量的桶710并且每个桶710可以存储任何数量的关键字计数对712,但是每个关键字计数对712仅分配给一个单个桶710。se管理器120可以通过生成指示多个桶710中的特定桶710的桶请求720并将其发送到不可信存储设备150来请求特定对712(例如,针对特定关键字的计数212)。作为响应,不可信存储设备150返回存储在特定桶710中的每一对712。这样,不可信存储设备150不能从不可信存储设备150返回给se管理器120的对的桶中辨别特定对712。se管理器120可以通过生成第二dprf 726来确定将对712分配给哪个桶710,第二dprf 726的输出域仅仅是桶710的数目。
77.分桶所需的带宽与分桶提供的匿名强度相平衡。也就是说,每个桶710的关键字和计数对712的数量越大(即,当桶710的总数小时),为每个查询122返回的对712的数量越大,匿名性越大,并且带宽消耗。相反,每个桶710的关键字和计数对712的数量越少(即,当桶710的总数很大时),为每个查询122返回的对712的数量越少,匿名性越少,并且带宽消耗。此实现确保即使不删除不可信存储设备生成的日志,也可以通过k-匿名技术减轻泄漏。特别地,频率泄漏发生在桶的粒度(通常将包含k个加密对712),因此频率泄漏仅泄漏大约k个关键字32的组的频率。
78.在一些示例中,桶710的总数是固定的。也就是说,使用中的桶710的数量没有改变,并且新的关键字计数对712被不断地添加到相同的桶710。随着时间的推移,随着每个桶的关键字计数对712的数量增加,桶化技术的总带宽消耗同样的提高。在其他示例中,桶710的数量不是固定的(即,动态桶化)。在这种情况下,第二dprf 726的输出域是可以部署的最
大桶数(例如,1024)。与固定桶实现一样,第二dprf 726用于将关键字计数对712分配给桶710。为了将桶710的数量从第二dprf 726分配的最大数量减少到期望数量,不同的可能输出可以将第二个dprf 726的多个存储桶710组合成单个桶710。即,可以将两个或更多个桶710动态关联在一起。
79.例如,如果桶的最大数量为1,024,但桶的目标数量为64,则可以组合每16个桶710,使得当请求来自16个桶之一的关键字计数对712时,不可信存储设备150将从16个桶的每一个中返回所有对712。注意,每组桶710不必构成相同数量的桶710。例如,一组可以是16个桶,而另一组是32个桶。为了增加或减少桶710的数量,se管理器120可以简单地改变组合的桶710的数量。这允许se管理器120动态地改变使用中的桶710的数量,而无需物理地改变底层计数表210。当计数表210以排序顺序存储时,动态桶化还确保放置在同一桶710中的计数212在逻辑上邻近以用于效率目的。
80.图8示出了描绘当输入关键字的概率810为0.02时将新关键字32插入计数表210的可能性的图800。图800具有表示具有相同新关键字32的多个文档152的x轴和表示将新关键字32添加到计数表210的概率或可能性的y轴。从图800可以看出,随着具有新关键字32的文档152的数量接近200,输入关键字32的概率接近100%。在一些实施方式中,通过基于概率将新关键字32添加到计数表210来减小计数表210的大小。即,当将新文档152n(图5)添加到存储在不受信任存储设备150上的加密文档的语料库中时,当新文档152n包含尚未在计数表210中的关键字32时,se管理器120可以基于概率810确定是否将关键字32添加到计数表210。例如,将新关键字32添加到计数表210的概率810可以是1/50(即,2%)。当se管理器120基于概率810确定关键字32将被添加到计数表210时(例如,2%的时间),关键字32如图5所描述的那样被添加。当se管理器120基于概率810确定不将关键字32添加到计数表210时,se管理器120可以替代地将关键字32随机分配给阈值范围内的令牌330。在一些示例中,阈值范围可以是响应于搜索查询而检索的文档标识符154的默认数量(例如,五十个)。
81.例如,当se管理器120确定不将新关键字32添加到计数表210时,se管理器120可以使用在1和50之间的随机计数值212来替代地生成如关于图5所述的散列对522。当在附加文档中使用时,新关键字32最终将被添加到计数表210(即,最终,基于概率810,关键字32将被添加到计数表210)。
82.虽然有可能某些令牌330将用于多个文档152,即,当随机选择介于1和50之间的计数值212时,由于不常见关键字32的性质,相同的数字被随机选择不止一次并且关键字32最终将被添加到计数表210的可能性很大,共享令牌330所泄露的信息量是最小的。至多,不可信存储设备150可以获知共享相同令牌300的每个文档152具有共同的关键字32。不可信存储设备150不知道关键字32是什么或包括关键字32的文档152的总数。这种技术可以大大减小计数表210的大小,因为将不包括很少使用的关键字(例如,符号、首字母缩略词、名称等)。这减少了存储计数表210的存储成本和计数表操作期间的通信成本(例如,关于图7)。
83.图9是用于提供无零日泄漏的加密搜索的方法900的示例性操作布置的流程图。方法900包括,在步骤902,在与用户12相关联的用户设备10的数据处理硬件18处接收对关键字32的搜索查询122。关键字32出现在存储在不可信存储设备150上的加密文档152的语料库内的一个或多个加密文档152中。方法900包括,在步骤904,由数据处理硬件18访问计数表210以获得包括关键字32的加密文档152的语料库中唯一文档152的计数212;以及在步骤
906,由数据处理硬件18基于关键字32、私有加密密钥124和包括关键字32的唯一文档152的计数212生成可委托的伪随机函数(dprf)126。
84.在步骤908,方法900包括由数据处理硬件18评估dprf 126a的第一部分,并且在步骤910,由数据处理硬件18将dprf 126b的剩余的第二部分委托给不可信存储设备150。当被不可信存储设备150接收时,dprf的剩余的第二部分,使得不可信存储设备150(在步骤912)评估dprf 126b的剩余的第二部分,访问与存储在不可信存储设备150上的加密文档的语料库152相关联的加密搜索索引160,并基于加密搜索索引160确定与dprf 126b的剩余第二部分相关联的加密文档的语料库152内的一个或多个加密文档152。存储设备150还向用户设备10返回用于关联的一个或多个加密文档152的至少一部分的每个加密文档152的标识符154与dprf 126b的剩余第二部分。
85.图10是可用于实现本文档中描述的系统和方法的示例计算设备1000的示意图。计算设备1000旨在表示各种形式的数字计算机,例如膝上型电脑、台式机、工作站、个人数字助理、服务器、刀片式服务器、大型机和其他适当的计算机。这里所示的组件、它们的连接和关系以及它们的功能仅是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实现。
86.计算设备1000包括处理器1010、存储器1020、存储设备1030、连接到存储器1020和高速扩展端口1050的高速接口/控制器1040、以及连接到低速的低速接口/控制器1060。高速总线1070和存储设备1030。组件1010、1020、1030、1040、1050和1060中的每一个使用各种总线互连,并且可以安装在公共主板上或以其他适当的方式安装。处理器1010可以处理用于在计算设备1000内执行的指令,包括存储在存储器1020或存储设备1030上的指令,以在诸如显示器的外部输入/输出设备上显示用于图形用户界面(gui)的图形信息1080耦合到高速接口1040。在其他实现中,可以酌情使用多个处理器和/或多个总线以及多个存储器和多种类型的存储器。此外,可以连接多个计算设备1000,每个设备提供必要操作的部分(例如,作为服务器组、刀片服务器组或多处理器系统)。
87.存储器1020在计算设备1000内非暂时性地存储信息。存储器1020可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非瞬态存储器1020可以是用于在临时或永久基础上存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备1000使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(rom)/可编程只读存储器(prom)/可擦可编程只读存储器(eprom)/电可擦可编程只读存储器(eeprom)(例如,通常用于固件,例如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)以及磁盘或磁带。
88.存储设备1030能够为计算设备1000提供大容量存储。在一些实施方式中,存储设备1030是计算机可读介质。在各种不同的实施方式中,存储设备1030可以是软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其他类似的固态存储设备、或设备阵列,包括设备在存储区域网络或其他配置中。在另外的实施方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含在执行时执行一种或多种方法的指令,例如上述那些。信息载体是计算机或机器可读介质,例如存储器1020、存储设备1030或处理器1010上的存储器。
89.高速控制器1040管理计算设备1000的带宽密集型操作,而低速控制器1060管理较
低带宽密集型操作。这种职责分配只是示例性的。在一些实施方式中,高速控制器1040耦合到存储器1020、显示器1080(例如,通过图形处理器或加速器),并且耦合到可以接受各种扩展卡(未示出)的高速扩展端口1050。在一些实施方式中,低速控制器1060耦合到存储设备1030和低速扩展端口1090。低速扩展端口1090可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)可以例如通过网络适配器耦合到一个或多个输入/输出设备,例如键盘、定点设备、扫描仪或网络设备,例如交换机或路由器。
90.如图所示,计算设备1000可以以多种不同的形式实现。例如,它可以实现为标准服务器1000a或在一组这样的服务器1000a中多次实现,作为膝上型计算机1000b,或作为机架服务器系统1000c的一部分。
91.可以在数字电子和/或光学电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或它们的组合中实现本文描述的系统和技术的各种实现。这些各种实现可以包括在一个或多个计算机程序中的实现,该计算机程序在包括至少一个可编程处理器的可编程系统上可执行和/或可解释,该可编程处理器可以是专用或通用的,耦合以从其接收数据和指令以及传输数据以及对存储系统、至少一个输入设备和至少一个输出设备的指令。
92.这些计算机程序(也称为程序、软件、软件应用程序或代码)包括用于可编程处理器的机器指令,并且可以用高级程序和/或面向对象的编程语言和/或汇编/机器来实现语。如本文所用,术语“机器可读介质”和“计算机可读介质”是指任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(pld))用于向可编程处理器提供机器指令和/或数据,包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
93.本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器(也称为数据处理硬件)执行,执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,例如fpga(现场可编程门阵列)或asic(专用集成电路)。适合于执行计算机程序的处理器包括,例如,通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和一个或多个用于存储指令和数据的存储设备。一般而言,计算机还将包括或可操作地耦合以从一个或多个用于存储数据的大容量存储设备(例如,磁、磁光盘或光盘)接收数据或向其传输数据或两者。然而,计算机不需要有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,例如包括半导体存储设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;和cd rom和dvd-rom磁盘。处理器和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。
94.为了提供与用户的交互,本公开的一个或多个方面可以在具有显示设备的计算机上实现,例如,crt(阴极射线管)、lcd(液晶显示器)监视器或用于显示信息的触摸屏向用户和可选的键盘和定点设备,例如鼠标或轨迹球,用户可以通过它们向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;可以以任何形式接收来自用户的输入,包
括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从其接收文档来与用户交互;例如,通过响应从网络浏览器接收到的请求,将网页发送到用户客户端设备上的网络浏览器。
95.已经描述了许多实现。然而,应当理解,在不背离本公开的精神和范围的情况下可以进行各种修改。因此,其他实施方式在所附权利要求的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献