买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】用于搜索模式未察觉的动态对称可搜索加密的方法和系统_罗伯特·博世有限公司_201780087646.X 

申请/专利权人:罗伯特·博世有限公司

申请日:2017-12-28

公开(公告)日:2023-10-31

公开(公告)号:CN110337649B

主分类号:G06F21/60

分类号:G06F21/60;H04L9/40

优先权:["20161230 US 62/440831","20161230 US 62/440862"]

专利状态码:有效-授权

法律状态:2023.10.31#授权;2019.11.08#实质审查的生效;2019.10.15#公开

摘要:一种未察觉的加密搜索和更新方法包括:将加密搜索查询和加密文件更新请求从可信客户端传输到至少两个不同的不可信服务器;从不可信服务器接收加密搜索条目和加密文件条目;以及利用可信客户端对加密搜索条目和加密文件条目进行解密。可信客户端对解密的条目进行重新加密,并且将从第一不可信服务器接收到的重新加密的条目传输到第二不可信服务器,并且反之亦然,以提供针对来自可信客户端的加密关键字搜索和加密文件更新的未察觉性。

主权项:1.一种用于搜索和更新加密数据的方法,包括:利用可信客户端生成针对第一关键字的第一加密搜索查询和针对第一加密文件的第一加密文件更新请求;利用可信客户端生成针对第二关键字的第二加密搜索查询和针对第二加密文件的第二加密文件更新请求,所述第二关键字不同于所述第一关键字,所述第二加密文件不同于所述第一加密文件;利用可信客户端向第一不可信服务器传输所述第一加密搜索查询和所述第一加密文件更新请求;利用可信客户端向第二不可信服务器传输所述第二加密搜索查询和所述第二加密文件更新请求,第二不可信服务器不同于第一不可信服务器;利用可信客户端从第一不可信服务器接收对应于所述第一加密搜索查询的第一加密搜索条目和对应于所述第一加密文件更新请求的第一加密文件条目;利用可信客户端从第二不可信服务器接收对应于所述第二加密搜索查询的第二加密搜索条目和对应于所述第二加密文件更新请求的第二加密文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥对所述第一加密搜索条目和所述第一加密文件条目进行解密,以生成第一解密搜索条目和第一解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥对所述第二加密搜索条目和所述第二加密文件条目进行解密,以生成第二解密搜索条目和第二解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥来生成基于所述第一解密搜索条目的对应于所述第一关键字的第一重新加密的搜索条目、以及基于所述第一解密文件条目的对应于第一文件标识符的第一重新加密的文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥来生成基于所述第二解密搜索条目的对应于所述第二关键字的第二重新加密的搜索条目、以及基于所述第二解密文件条目的对应于第二文件标识符的第二重新加密的文件条目;利用可信客户端向第一不可信服务器传输所述第二重新加密的搜索条目和所述第二重新加密的文件条目,以更新存储在第一不可信服务器中的第一加密搜索索引;利用可信客户端向第二不可信服务器传输所述第一重新加密的搜索条目和所述第一重新加密的文件条目,以更新存储在第二不可信服务器中的第二加密搜索索引;利用可信客户端来更新存储在可信客户端的存储器中的索引中的计数器;利用可信客户端、基于与第二不可信服务器相关联的对称密钥、所述第一关键字的散列以及所述计数器来生成对应于所述第一关键字的第一更新加密密钥;利用可信客户端、基于与第一不可信服务器相关联的对称密钥、所述第二关键字的散列以及更新的第二关键字计数器来生成对应于所述第二关键字的第二更新加密密钥;利用可信客户端、使用所述第一更新加密密钥来生成基于所述第一解密搜索条目的对应于所述第一关键字的所述第一重新加密的搜索条目;以及利用可信客户端、使用所述第二更新加密密钥来生成基于所述第二解密搜索条目的对应于所述第二关键字的所述第二重新加密的搜索条目。

全文数据:用于搜索模式未察觉的动态对称可搜索加密的方法和系统优先权要求本申请要求美国临时申请No.62440,831的权益,其标题为“SearchPatternObliviousDynamicSymmetricSearchableEncryptionSchemes”并且于2016年12月30日提交,其全部内容在此通过引用明确地并入本文中。本申请还要求美国临时申请No.62440,862的权益,其标题为“PracticalandSecureDynamicSearchableEncryptionviaObliviousAccessonDistributedDataStructure”并且于2016年12月30日提交,其全部内容在此通过引用明确地并入本文中。技术领域本公开总体上涉及信息安全领域,并且更具体地涉及搜索加密的数据文件集合内的数据的系统和方法。背景技术用于执行不损害加密数据的机密性的对加密数据的搜索的方法是本领域已知的。例如,在一种常见配置中,服务器计算设备存储具有相关联的加密搜索索引的大量加密数据文件。一个或多个客户端计算设备使用可能存在于至少一个加密文件中的搜索关键字术语的加密表示来向服务器做出搜索请求。对称可搜索加密(SSE)是用于在加密搜索索引中执行搜索的一种方法,该方法使得有权访问对称密码密钥的客户端计算设备能够在被存储在服务器中的加密搜索索引中针对具体术语执行搜索。然而,服务器仅接收加密的搜索术语,并且不能基于从可信客户端接收到的通信来识别搜索术语的内容,这是因为服务器无权访问对该搜索术语进行解密所需的(秘密)密码密钥。动态SSE(DSSE)系统是如下SSE系统:其还实现了例如当客户端修改存储在文件中的关键字、添加新文件、或删除现有文件时对存储在服务器上的加密搜索索引的更新。在本公开的上下文中,对SSE方法或系统的引用等同地指代DSSE方法或系统。现有的可搜索加密系统使得客户端能够在加密搜索索引中针对具体术语或“关键字”进行搜索,并且执行对加密信息的更新以反映加密文件的修改。然而,服务器仍然可以保持对来自可信客户端的加密搜索和文件更新操作的跟踪,以确定可信客户端多久针对关键字进行搜索以及多久更新各种加密文件的相对频率。附加地,服务器可以跟踪关键字搜索以确定可信客户端频繁地将哪些关键字包括在搜索中,即使服务器无法自己确定解密的关键字。类似地,服务器可以跟踪文件更新以确定接收频繁更新的加密文件。如果可信客户端正在执行搜索或更新,则“未察觉的(oblivious)”实施例完全或部分地防止服务器能够工作,并且防止服务器跟踪针对个别关键字的搜索、以及对个别文件的更新的模式。已知解决了对存储器的访问隐私的一组解决方案被称为“未察觉的随机存取存储器”(ORAM),其实现了对加密数据的未察觉访问,其中可以观察数据访问操作的不可信计算机不能有效地确定可信计算设备的动作。然而,现有的ORAM解决方案对搜索系统的有效操作提出了实际问题,这是因为ORAM解决方案要求可信客户端检索对可信客户端感兴趣的所有加密数据的大集合、对所有加密数据进行解密、执行感兴趣的任何操作、并且然后对整个数据集合进行加密以便以如下方式传输回到服务器:防止服务器确定可信客户端利用加密数据执行的操作。现有的ORAM系统对于高速搜索以及大的加密搜索索引的更新是不实用的。因此,提供未察觉性以及有效的关键字搜索和文件更新操作的可搜索密码系统将是有益的。发明内容在一个实施例中,已经开发了一种用于搜索和更新加密数据的方法。所述方法包括:利用可信客户端生成针对第一关键字的第一加密搜索查询和针对第一加密文件的第一加密文件更新请求;利用可信客户端生成针对不同于第一关键字的第二关键字的第二加密搜索查询和针对不同于第一加密文件的第二加密文件的第二加密文件更新请求;利用可信客户端向第一不可信服务器传输第一加密搜索查询和第一文件更新请求;利用可信客户端向第二不可信服务器传输第二加密搜索查询和第二加密文件更新请求,所述第二不可信服务器不同于第一不可信服务器;利用可信客户端从第一不可信服务器接收对应于第一加密搜索查询的第一加密搜索条目和对应于第一文件更新请求的第二加密文件条目;利用可信客户端从第二不可信服务器接收对应于第二加密搜索查询的第二加密搜索条目和对应于第二加密文件更新请求的第二加密文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥对第一加密搜索条目和第一加密文件条目进行解密,以生成第一解密搜索条目和第一解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥对第二加密搜索条目和第二加密文件条目进行解密,以生成第二解密搜索条目和第二解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥来生成基于第一解密搜索条目的对应于第一关键字的第一重新加密的搜索条目、以及基于第一解密文件条目的对应于第一文件标识符的第一重新加密的文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥来生成基于第二解密搜索条目的对应于第二关键字的第二重新加密的搜索条目、以及基于第二解密文件条目的对应于第二文件标识符的第二重新加密的文件条目;利用可信客户端向第一不可信服务器传输第二重新加密的搜索条目和第二重新加密的文件条目,以更新存储在第一不可信服务器中的第一加密搜索索引;以及利用可信客户端向第二不可信服务器传输第一重新加密的搜索条目和第一重新加密的文件条目,以更新存储在第二不可信服务器中的第二加密搜索索引。在进一步的实施例中,所述方法包括:利用可信客户端生成针对第三关键字的第三加密搜索查询和针对第三加密文件的第三加密文件更新请求,所述第三关键字不同于第一关键字和第二关键字,所述第三加密文件不同于第一加密文件和第二加密文件;利用可信客户端生成针对第四关键字的第四加密搜索查询和针对第四加密文件的第四加密文件更新请求,所述第四关键字不同于第一关键字、第二关键字和第三关键字,所述第四加密文件不同于第一加密文件、第二加密文件和第三加密文件;利用可信客户端向具有第一加密搜索查询和第一文件更新请求的第一不可信服务器传输第三加密搜索查询和第三加密文件更新请求;利用可信客户端向具有第二加密搜索查询和第二加密文件更新请求的第二不可信服务器传输第四加密搜索查询和第四加密文件更新请求;利用可信客户端从第一不可信服务器接收对应于第三加密搜索查询的第三加密搜索条目和对应于第三文件更新请求的第三加密文件条目;利用可信客户端从第二不可信服务器接收对应于第四加密搜索查询的第四加密搜索条目和对应于第四文件更新请求的第四加密文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥对第三加密搜索条目和第三加密文件条目进行解密,以生成第三解密搜索条目和第三解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥对第四加密搜索条目和第四加密文件条目进行解密,以生成第四解密搜索条目和第四解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥来生成基于第三解密搜索条目的对应于第三关键字的第三重新加密的搜索条目、以及基于第三解密文件条目的对应于第三文件标识符的第三重新加密的文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥来生成基于第四解密搜索条目的对应于第四关键字的第四重新加密的搜索条目、以及基于第四解密文件条目的对应于第四文件标识符的第四重新加密的文件条目;利用可信客户端向具有第一重新加密的搜索条目和第一重新加密的文件条目的第二不可信服务器传输第三重新加密的搜索条目和第三重新加密的文件条目,以更新存储在第二不可信服务器中的第二加密搜索索引;以及利用可信客户端向具有第二重新加密的搜索条目和第二重新加密的文件条目的第一不可信服务器传输第四重新加密的搜索条目和第四重新加密的文件条目,以更新存储在第一不可信服务器中的第一加密搜索索引。在进一步的实施例中,所述方法包括:利用可信客户端更新存储在可信客户端的存储器中的索引中的计数器;利用可信客户端、基于与第二不可信服务器相关联的对称密钥、第一关键字的散列以及计数器来生成对应于第一关键字的第一更新加密密钥;利用可信客户端、基于与第一不可信服务器相关联的对称密钥、第二关键字的散列以及更新的第二关键字计数器来生成对应于第二关键字的第二更新加密密钥;利用可信客户端、使用第一更新加密密钥来生成基于第一解密搜索条目的对应于第一关键字的第一重新加密的搜索条目;以及利用可信客户端、使用第二更新加密密钥来生成基于第二解密搜索条目的对应于第二关键字的第二重新加密的搜索条目。在进一步的实施例中,所述方法包括:利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥来生成基于第一解密文件条目和第一更新文件计数器的对应于第一关键字的第一重新加密的文件条目,与第二不可信服务器相关联的多个密码密钥包括第一更新加密密钥;以及利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥来生成基于第二解密文件条目和第二更新文件计数器的对应于第二关键字的第二重新加密的文件条目,与第一不可信服务器相关联的多个密码密钥包括第二更新加密密钥。在进一步的实施例中,所述方法包括:利用可信客户端、基于存储在可信客户端的存储器中的索引来生成第一加密搜索查询,所述第一加密搜索查询包括对应于第一关键字的存储在第一不可信服务器中的第一加密搜索索引中的第一行的第一行标识符;利用可信客户端、基于存储在可信客户端的存储器中的索引来生成第二加密搜索查询,所述第二加密搜索查询包括对应于第二关键字的存储在第二不可信服务器中的加密搜索索引中的第二行的第二行标识符;利用可信客户端、基于存储在可信客户端的存储器中的索引来生成第一加密文件更新请求,所述第一加密文件更新请求包括对应于第一文件标识符的存储在第一不可信服务器中的第一加密搜索索引中的第一列的第一列标识符;以及利用可信客户端、基于存储在可信客户端的存储器中的索引来生成第二加密文件更新请求,所述第二加密文件更新请求包括对应于第二文件标识符的存储在第二不可信服务器中的第二加密搜索索引中的第二列的第二列标识符。在进一步的实施例中,所述方法包括:利用可信客户端向第一不可信服务器传输第二重新加密的搜索条目以存储在第一加密搜索索引中的随机选择的行中,所述随机选择的行的标识符被存储在可信客户端的存储器中存储的索引中,以使得可信客户端能够在随后的加密搜索查询中访问第二重新加密的搜索条目;以及利用可信客户端向第一不可信服务器传输第二重新加密的文件条目以存储在第一加密搜索索引中的随机选择的列中,所述随机选择的列的标识符被存储在可信客户端的索引中,以使得可信客户端能够在随后的加密文件更新请求中访问第二重新加密的文件条目。在进一步的实施例中,所述方法包括:在生成第一重新加密的文件条目之前,利用可信客户端来修改第一解密文件条目,以从所述第一解密文件条目添加或移除至少一个关键字,所述至少一个关键字与对应于第一文件标识符的文件的修改相对应。在进一步的实施例中,所述方法包括:利用可信客户端、基于第一解密响应来识别包含第一关键字的加密文件的标识符;利用可信客户端向第三不可信服务器传输针对加密文件的请求;利用可信客户端从第三不可信服务器接收加密文件;以及利用存储在可信客户端的存储器中的第三密码密钥来对加密文件进行解密。在进一步的实施例中,第三不可信服务器与第一不可信服务器或第二不可信服务器中的任一个不同。在另一实施例中,已经开发了被配置成搜索和更新加密数据的可信客户端计算设备。可信客户端计算设备包括:存储器,其被配置成存储索引;网络接口设备,其被配置成向第一不可信服务器和第二不可信服务器传输数据、并且从第一不可信服务器和第二不可信服务器接收数据;以及处理器,其可操作地连接到存储器和网络接口。所述处理器被配置成:基于对应于第一关键字的存储在存储器中的索引中的条目来生成针对第一关键字的第一加密搜索查询,并且基于对应于第一加密文件的存储在存储器中的索引中的条目来生成针对第一加密文件的第一加密文件更新请求;基于对应于第二关键字的存储在存储器中的索引中的条目来生成针对第二关键字的第二加密搜索查询,并且基于对应于第二加密文件的存储在存储器中的索引中的条目来生成针对第二加密文件的第二加密文件更新请求,所述第二关键字不同于第一关键字,所述第二加密文件不同于第一加密文件;向第一不可信服务器传输第一加密搜索查询和第一文件更新请求;向第二不可信服务器传输第二加密搜索查询和第二加密文件更新请求,所述第二不可信服务器不同于第一不可信服务器;从第一不可信服务器接收对应于第一加密搜索查询的第一加密搜索条目和对应于第一文件更新请求的第二加密文件条目;从第二不可信服务器接收对应于第二加密搜索查询的第二加密搜索条目和对应于第二加密文件更新请求的第二加密文件条目;使用与第一不可信服务器相关联的多个密码密钥来对第一加密搜索条目和第一加密文件条目进行解密,以生成第一解密搜索条目和第一解密文件条目;使用与第二不可信服务器相关联的多个密码密钥来对第二加密搜索条目和第二加密文件条目进行解密,以生成第二解密搜索条目和第二解密文件条目;使用与第二不可信服务器相关联的多个密码密钥来生成基于第一解密搜索条目的对应于第一关键字的第一重新加密的搜索条目、以及基于第一解密文件条目的对应于第一文件标识符的第一重新加密的文件条目;使用与第一不可信服务器相关联的多个密码密钥来生成基于第二解密搜索条目的对应于第二关键字的第二重新加密的搜索条目、以及基于第二解密文件条目的对应于第二文件标识符的第二重新加密的文件条目;向第一不可信服务器传输第二重新加密的搜索条目和第二重新加密的文件条目,以更新存储在第一不可信服务器中的第一加密搜索索引;以及向第二不可信服务器传输第一重新加密的搜索条目和第一重新加密的文件条目,以更新存储在第二不可信服务器中的第二加密搜索索引。附图说明图1是实现分布式未察觉数据结构动态可搜索对称加密(DOD-DSSE)以使得可信客户端能够执行未察觉的关键字搜索和文件更新操作的系统的示意图。图2是描绘了存储在图1的系统中的两个不同的不可信服务器的存储器中的两个加密搜索索引的示图。图3是描绘了存储在图1的系统中的可信客户端中的本地索引的实施例的示图。图4是描绘了用以在图1的系统中执行未察觉的关键字搜索和文件更新操作的可信客户端的简化操作的示图。图5是描绘了使用存储在两个不可信服务器中的搜索索引表的未察觉的搜索或文件更新操作的一个实施例的框图。图6A是描绘了在使用低等待时间网络的情况下与现有技术DSSE和ORAM系统相比较的本文中所描述的系统和方法的一个实施例的性能水平的曲线图。图6B是描绘了在使用高等待时间网络的情况下与现有技术DSSE和ORAM系统相比较的本文中所描述的系统和方法的一个实施例的性能水平的另一曲线图。图6C是描绘了与现有技术DSSE和ORAM系统相比较的本文中所描述的系统和方法的一个实施例的未察觉性属性和性能水平的图表。具体实施方式出于促进理解本文中描述的实施例的原理的目的,现在参考以下书面说明书中的附图和描述。不意图由参考文献对本主题的范围进行限制。本专利还包括对所说明的实施例的任何更改和修改,并且包括对所描述的实施例的原理的进一步应用,如本文档所属领域的技术人员通常会想到的那样。下面阐述了涉及本文中描述的系统和方法的定义。如本文中所使用的,术语“文件”指代可以被加密并存储在不可信服务器计算设备的存储器中的任何结构化数据集合。文件的示例包括人或机器可读的文本和二进制数据、图像数据、视频数据、音频数据、以及存储在数字计算设备的文件系统中的其他文档。文件的附加示例包括例如存储在关系数据库内的表的个别行或其他子集、或者结构化数据存储中的其他对象。如本文中所使用的,术语“关键字”指代与被包含在一个或多个文件中的值相对应的数据集合。“明文”或“未加密”的关键字指代以机器或人类可读格式存在的值本身,而“密文”或“加密”的关键字指代使用该值和密码密钥、使用预定加密过程而生成的加密数据集合。如下面更详细地描述的,存储加密数据的服务器计算设备从客户端计算设备接收对应于至少一个关键字的搜索查询。服务器计算设备使用存储在两个或更多个不可信服务器的存储器中的加密搜索索引来检索包含该关键字的加密文件的文件标识符。文件标识符对应于包括与该加密关键字相对应的值的加密文件。如本文中所使用的,术语“未察觉的”指代搜索操作或数据访问操作的属性,其中当客户端执行操作时,该操作不会将信息“泄漏”给存储了至少一个加密搜索索引的服务器计算设备,该加密搜索索引包括存储在加密数据文件中或在访问一个或多个加密文件的内容的访问操作中的关键字。例如,如上所描述,当可信客户端多次针对相同关键字执行搜索或访问相同的加密文件时,许多现有的动态可搜索加密方案(DSSE)实现可能会“泄漏”信息。即使服务器没有直接接收到解密文件或搜索关键字的明文,但客户端针对不同加密关键字进行搜索并且访问不同加密数据文件的频率也仍然可能将重要信息泄露给潜在不可信服务器。仅举一个示例,在给定关于搜索和文件内容的一些一般背景知识的情况下(例如,搜索是针对英语单词,并且加密文件的明文包括英文文本),本领域已知的频率分析技术可以用于产生关于关键字的明文内容和加密文件内容的有根据的猜测。即使该分析没有直接泄漏关键字或加密文件的明文内容,但是可以分析对加密搜索索引和加密文件数据的搜索和访问模式的攻击者也仍然可以基于搜索和文件访问操作的频率,来确定某些搜索关键字和文件的相对重要性,即使该攻击者不能直接确定关键字和文件的明文内容亦如此。本文中描述的方法和系统使得DSSE具有改进的未察觉性,这减少或消除了搜索操作和访问操作两者期间发生的数据泄露,该搜索操作针对存储在加密索引中的关键字,该加密索引被存储在潜在不可信服务器中,该访问操作访问包括以加密形式存在的关键字的加密文件的内容,该加密文件也被存储在不可信服务器中。本文中描述的一个具体的未察觉属性是“关键字搜索和文件更新未察觉性”,其指代不可信服务器无法接收到来自可信客户端的关键字搜索和文件更新请求以确定可信客户端实际上是正在执行文件搜索操作、文件更新操作、还是实际上正在执行这两个操作。本文中描述的另一个具体的未察觉属性是“模式未察觉性”,其阻止不可信服务器跟踪可信客户端在多个搜索查询中使用的关键字的模式,或者阻止不可信服务器跟踪可信客户端在多个加密文件更新操作中更新的加密文件的模式。搜索模式未察觉性指代如下能力:完全地或至少部分地阻止不可信服务器在可信客户端针对具体关键字进行搜索时进行跟踪,即使该不可信服务器无权访问明文搜索关键字。更新模式未察觉性指代如下能力:完全地或至少部分地阻止不可信服务器在可信客户端针对具体文件执行文件更新操作时进行跟踪,即使该不可信服务器无权访问明文文件或无权访问针对该文件做出的具体更新。如下所描述,本文中的实施例取决于不可信服务器的动作来提供不同级别的搜索模式未察觉性和文件更新未察觉性。本公开使用以下符号约定(notationalconvention)来描述本文中的实施例。运算符和分别表示变量x的串联(concatenation)操作和位长度。形式表示变量x是从数字集合S中随机且均匀地选择的。在本文中描述的实施例中,数字由来自简单二进制集合{0,1}的一系列二进制位形成,其中较大的数字以数字计算系统领域中公知的方式被表示为一系列位。具有l位的随机生成的整数被定义为:,其中每个位都是随机选择的,并且独立于二进制集合S={0,1},如:。在密码系统的上下文中描述的一个随机整数是客户端在相对大数量的位(例如,128位或256位)的情况下生成的安全参数κ,其用作秘密对称密码密钥的基础,该安全参数κ直接地或作为密钥生成函数的输入以使得可信客户端能够执行本文中描述的对称密码操作。特别地,本文中描述的随机操作在由客户端计算设备执行时不能通过不可信计算设备(包括本文中描述的服务器、或第三方攻击者)所再现,这防止了攻击者重构安全参数κ、或者重构从安全参数κ导出的任何密码密钥。ε=(Enc;Dec;Gen)指代IND-CPA安全对称密钥加密方案,其实现了三个功能:是一种概率多项式时间(PPT)算法,其采用安全参数κ并且返回秘密密钥k1(尽管在一些实施例中,参数κ可能适合于直接充当秘密密钥k1);采用秘密密钥k1和明文消息M,并且返回密文c。在本文中描述的实施例中,消息M可以是以二进制、或用于加密和解密(包括关键字或文件)的另一个合适的编码而被编码的任何数据集合。特别地,消息M可以是单个位(0或1值)的数据,其与一个或多个数字计数器值串联以对加密搜索表中的单个元素进行加密或解密。是一种确定性算法,其采用k1和密文c,并且如果k1是用于对密文c进行加密的密钥,则返回明文M。本领域已知的合适的对称密钥加密方案的一个实际示例是高级加密系统(AES)方案。如下面更详细地描述的,可信客户端计算设备生成多个对称加密解密密钥,这些密钥仅被存储在可信客户端计算设备的存储器中,并且不与服务器计算设备或其他不可信计算设备中的任一个共享。函数Hx表示密码安全散列函数,其中本领域已知的一个示例是SHA-256,该函数将数据值x视为输入,并且返回固定长度的散列输出,其中Hx被称为具有预像抗性(pre-imageresistance)的“陷门函数”,这意味着在给定输出值Hashx的情况下,假定原始输入x不是从预定值的有限子集中选择的(例如,假定x不是以如下语言存在的简单单词:该语言易于如本领域中已知的那样经由彩虹表来检测),不存在可以再现该原始输入x的实际计算操作。附加地,本领域已知的实际密码安全散列函数还提供抗冲突性,换言之,在给定散列值Hashx的情况下,计算与原始值x不同的、也将产生相同散列输出Hashx的输入是不切实际的。图1描绘了系统100的一个实施例,该系统100使得可信客户端能够使用多个不可信服务器来执行未察觉的加密搜索和加密文件更新操作,这些操作实现了分布式未察觉数据结构-动态可搜索对称加密(DOD-DSSE)。系统100包括:可信客户端104,可信客户端104还被称为“客户端”或“可信客户端计算设备”;和多个不可信服务器154A和154B,它们还被称为“服务器”或“不可信服务器计算设备”;以及不可信文件服务器180,其是存储加密文件数据的另一个不可信服务器计算设备。图1的说明性示例包括两个服务器154A和154B,每个服务器将加密搜索索引174存储在存储器170中。可信客户端104通过数据网络140通信地连接到不可信服务器154A和154B。数据网络140例如是局域网(LAN)、广域网(WAN)、或两个或更多个LAN和WAN网络的组合,它们实现了可信客户端104与不可信服务器154A和154B之间的双向通信。然而,在其他实施例中,网络140可以是直接经由例如通用串行总线(USB)连接或其他合适的外围互连标准来连接多个计算设备的IO通道。更一般地,网络140提供了防止不可信服务器154A和154B中的任一个中的处理器158访问存储在客户端计算设备104的存储器120中的密码密钥128或其他非公共数据所需的物理和逻辑分离。在系统100中,可信客户端104是“可信的”计算设备,这意味着可信客户端104具有对下面更详细地描述的密码密钥128的访问。密码密钥128使得可信客户端104能够:对数据进行加密,该数据包括用于针对加密文件内的关键字进行搜索的文件和搜索索引数据两者;对来自加密搜索条目或来自加密文件的任何加密数据进行解密;以及生成更新的加密搜索条目和加密文件。不可信服务器154A、154B和180被认为是“不可信的”,这是因为不可信服务器154A、154B和180不具有对密码密钥128的访问,并且服务器154A、154B和180不应当获得对加密搜索索引174或加密文件数据198中的任一个中的明文(未加密)数据的访问。在本文中描述的搜索操作期间,不可信服务器154A和154B从可信客户端104接收包括加密关键字的搜索查询消息,并且通过数据网络140将加密搜索结果以及可选地将加密数据文件传输到可信客户端104。然而,搜索操作阻止不可信服务器154A和154B识别在安全搜索过程中使用的搜索关键字的明文内容、或任何加密数据文件的明文内容。可信客户端计算设备104是数字计算设备,其包括处理器108、一个或多个输入输出(IO)设备112、网络接口设备116和存储器120。处理器108是数字逻辑设备,其包括例如一个或多个中央处理单元(CPU)核、图形处理单元(GPU)核、数字信号处理(DSP)单元等等。在一些实施例中,处理器108包括多个分立的处理设备,诸如分离的CPU和GPU组件,而在其他实施例中,处理设备在片上系统(SoC)配置中被集成到单个数字逻辑设备中。IO设备112包括例如键盘、鼠标、触摸输入设备、语音输入设备和音频视频输出设备,它们使得用户能够输入命令以控制可信客户端104并且从可信客户端104接收输出信息。特别地,可信客户端104在被存储在不可信服务器174A和174B中的搜索索引数据174中执行搜索,该搜索对应于存储在不可信服务器180中的加密数据文件,并且IO设备112使得用户能够请求关键字搜索、文件更新操作、以及可选地请求附加功能,诸如向加密搜索索引添加新文件和新关键字。网络接口设备116例如是有线或无线网络适配器,其通过数据网络140将可信客户端104通信地耦合到不可信服务器154A、154B和180。存储器120包括一个或多个数据存储设备,该数据存储设备包括诸如磁性、光学或固态驱动器之类的非易失性数据存储设备、以及诸如静态和动态随机存取存储器(RAM)之类的易失性数据存储设备。在图1的配置中,存储器120保存所存储的程序指令数据124、密码密钥数据128和本地索引132,本地索引132存储状态信息以使得可信客户端104能够执行未察觉的加密关键字搜索和文件更新操作。所存储的程序数据124包括使得可信客户端104能够执行本文中描述的操作的一个或多个软件程序,这些操作包括但不限于:对文件、关键字和搜索索引数据进行加密和解密;生成加密搜索索引;针对存储在不可信服务器上的加密搜索索引生成搜索查询和文件更新查询;以及处理从不可信服务器154A、154B和180接收到的加密数据。密码密钥128包括具有预定密钥大小(例如,128位或256位)的至少一个秘密数据集合,其仅对于可信客户端104是已知的,并且对不可信服务器154A和154B或其他第三方不是已知的。处理器108使用在本领域以其他方式已知并且未在本文中进一步详细描述的安全密钥生成过程来生成密码密钥。可信客户端104使用在本领域以其他方式已知的用于对数据进行安全加密和解密的对称加密和解密方案(诸如,高级加密系统(AES)),以对包括加密搜索条目、加密文件条目和加密文件的数据进行加密、解密和重新加密。本地索引132包括状态数据,该状态数据涉及存储在不可信服务器154A和154B的加密搜索索引174中的关键字和文件索引数据、连同从文件存储服务器180检索加密文件所需的查找信息。本地索引132提供如下状态信息:可信客户端104将该状态信息用于使用不可信服务器154A和154B两者中的加密搜索索引、以未察觉的方式来执行关键字搜索和文件更新操作。下面在图3中更详细地描述了本地索引132的部分。不可信服务器154A和154B两者都是数字计算设备。在图1的实施例中,不可信服务器154A和154B两者都配置有包括处理器158、网络接口设备162和存储器170的相同组件。处理器158、网络接口设备162和存储器170在结构上分别类似于可信客户端104的处理器108、网络接口116和存储器120,尽管在一些实施例中,不可信服务器154A和154B包括比可信客户端104更多的计算和存储容量,以使得不可信服务器154A和154B能够向均以与图1中的可信客户端104相同的方式配置的大量客户端提供服务。在不可信服务器154A和154B中,存储器170保存所存储的程序指令172和加密搜索索引数据174。当与不可信服务器154B中的加密搜索索引数据174相比时,不可信服务器154A中的加密搜索索引数据174在内容方面是不相同的,尽管这两个不可信服务器针对关键字和加密文件的公共集合存储了加密关键字和文件标识符数据。服务器154A和154B执行所存储的程序数据172以实现本文中描述的操作,包括但不必限于:处理从可信客户端104接收到的搜索查询以返回从加密搜索索引174得到的加密搜索结果;以及接收关键字和文件条目的重新加密的集合以更新不可信服务器154A和154B中的每一个中的加密搜索索引数据174。不可信服务器154A和154B可以或可以不彼此“串通(collude)”。在本申请的上下文中,串通指代多个不可信服务器之间的通信,以共享关于可信客户端执行的所有搜索和文件更新操作的信息。如下所描述,如果不可信服务器没有串通,则本文中描述的搜索和文件更新方法提供了完全的未察觉性。附加地,即使不可信服务器154A和154B串通,本文中描述的方法也提供关键字搜索和文件更新未察觉性。即使在不可信服务器154A和154B串通时,本文中描述的一些搜索和文件更新方法也可以提供至少部分的关键字搜索模式和文件更新模式未察觉性。虽然系统100出于说明性目的而描绘了两个不可信服务器154A和154B,但是本文中描述的系统和方法可以扩展到三个或更多个服务器,每个服务器存储分离的加密搜索索引。即使服务器串通,服务器的添加也改进了可信客户端104执行未察觉的关键字搜索和文件更新操作的能力。添加更多服务器的一个缺点是:可信客户端104需要针对附加的不可信服务器在本地索引中维持附加信息,并且可信客户端104需要针对每个附加服务器生成附加的搜索和文件更新操作,以使用下面描述的技术来维持未察觉性。不可信文件服务器180是另一个计算设备,其包括处理器188、网络接口192和存储器196,存储器196保存所存储的程序指令197和一个或多个加密文件198。在系统100中,不可信文件服务器180响应于文件检索请求而将加密数据文件198传输到可信客户端104,并且存储可信客户端104传输到不可信文件服务器180以用于存储的加密文件。系统100的一些实施例使用多于一个不可信文件存储服务器180。系统100的一些实施例使用在本领域以其他方式已知的未察觉的文件输入和输出技术,以降低或消除不可信服务器180确定对个别加密文件198的访问模式的能力。图2更详细地描绘了两个加密搜索索引200和250的示例。搜索索引200和250中的每一个是存储在不可信服务器154A和154B中的每一个中的加密搜索索引数据174的实施例。在系统100中,第一不可信服务器154A将第一加密搜索索引(例如,加密搜索索引200)存储在存储器170中作为加密搜索索引174,并且第二不可信服务器154B将第二加密搜索索引(例如,加密搜索索引250)存储在存储器170中作为加密搜索索引174。搜索索引200和250中的每一个是利用具有2N×2N个元素的正方形配置而生成的,其中数量N是最低程度地与搜索关键字的数量、或在加密搜索索引200和250中引用的加密文件的数量中的较大者相对应的数量。2N×2N的搜索索引大小提供了大量未占用的(也称为“虚的”)行和列,它们可以在动态对称可搜索加密方案中容纳新添加的关键字和文件。附加地,大量未占用的行和列使得系统100能够在加密搜索索引200与250之间的“交换”操作中对数据的行和列进行重新定位,这在下面进一步详细描述。未占用的行和列包含随机化数据,从不可信服务器154A和154B的角度来看,该随机化数据与被占用的行和列的加密条目是无法分辨的。附加地,在操作期间,在不可信服务器访问了分别针对加密关键字搜索或加密文件更新操作的行或列之后,包括有效加密数据的一些被占用的行和列变成“未占用的”。在搜索索引200和250两者中,被占用的行对应于单个关键字,并且被占用的列对应于单个加密文件。利用数字索引值ui或uw来访问行,并且利用数字索引值vj或uf来引用列。索引200和250中的每行被称为加密搜索条目,这是由于行中的元素在被解密时对应于针对关键字的搜索结果集合。索引中的每列被称为加密文件条目,这是由于列中的元素在被解密时对应于从文件中存在或不存在的所有关键字的集合。虽然加密搜索表200和250以及本文中描述的其他实施例将“行”描述为对应于搜索关键字并且“列”对应于加密文件,但是本领域技术人员将认识到,可以将相同的搜索索引结构转置,以便以列来布置关键字并且以行来布置加密文件,同时以与本文中所描述的实施例相同的方式来有效地进行操作。由此,对本文中的术语“行”和“列”的使用应当被理解为广泛地指代如下数据结构:该数据结构包括对应于关键字或加密文件的加密搜索索引条目,其中“行”可以水平或垂直地布置,并且“列”可以类似地垂直或水平地布置。虽然索引200和250的内容被加密以防止不可信服务器154A和154B确定搜索索引的明文内容,但是给定行和列处的每个元素包括如下条目:该条目在被解密时指示对应于特定行的给定关键字是存在于还是不存在于与特定列相对应的给定数据文件中。例如,如果关键字“cipher”对应于行值25,则第25行处的加密搜索表中的每个条目都包括如下加密值:该加密值在被解密时指示给定列处的特定文件实际上是包含关键字“cipher”还是不包含。在一个实施例中,在关键字搜索操作期间,明文中的值“1”指示该关键字存在于该文件中,并且值“0”指示该关键字不存在于该文件中。附加地,加密搜索表中的数据的每个被占用的列包括如下条目的集合:该条目在被解密时提供存在于单个加密文件中的所有搜索关键字。当可信客户端104更新文件以从该文件添加或移除关键字时,可信客户端104从至少一个加密搜索索引中检索加密数据的列,并且修改沿该列的条目,以指示对已经在文件更新操作中从该文件添加或移除的关键字的改变。搜索索引200和250中的加密条目还存储二进制0或1值,但是由于加密,不可信服务器154A和154B不能以比随机猜测任何更大的概率来确定文件中任何特定关键字值的存在或不存在。加密搜索索引200和250两者在首先被生成时对相同的搜索关键字集合、以及相同的加密文件集合进行编码。然而,搜索索引200和250的内容由于至少两个原因而不相同。首先,可信客户端104使用不同的密码密钥,作为对加密搜索索引200和250两者中的个别条目进行加密的基础。其次,映射到特定关键字和加密文件的具体行和列索引值在两个加密搜索索引200与250之间不同。例如,关键字“cipher”可以对应于表200中的行索引25,但是却对应于表250中的行索引47,其中这两个行索引值之间没有特定关系。加密搜索索引表200和250还包括针对加密文件的不同列索引值。图3描绘了存储在可信客户端104的存储器120中的本地索引132的内容。图3包括两个表300和350,其中表300存储与加密搜索索引中的关键字相对应的本地状态数据,并且表350存储与加密搜索索引中的文件标识符相对应的本地状态数据。表300包括:针对关键字的字段304,该关键字被存储作为明文或作为明文关键字的散列值:计数器字段308,其跟踪在针对每个关键字的最近搜索查询操作中使用的全局计数器的值;字段312和316,它们存储数字行标识符,以便将关键字定位在两个不同服务器上存储的两个不同加密搜索索引中;以及服务器访问位320。服务器访问位320具有两个值(0或1),以识别最近返回了针对关键字的搜索结果的服务器,或者可替换地识别应当在可信客户端104下一次生成针对关键字的加密搜索查询时接收针对关键字的下一个加密搜索查询的服务器。表350包括:针对加密文件的文件标识符的字段354,该文件标识符被存储作为明文或作为散列值;具有计数器字段的另一个字段358,其跟踪在针对每个文件标识符的最近文件更新请求中使用的全局计数器的值;字段362和366,它们存储数字列标识符,以便将文件标识符定位在两个不同服务器上存储的两个不同加密搜索索引中;以及另一个服务器访问位372。服务器访问位372具有两个值(0或1),以识别最近执行了针对文件标识符的文件更新操作的服务器,或者可替换地识别应当在可信客户端104下一次生成针对文件标识符的加密文件更新请求时接收针对文件标识符的下一个加密文件更新请求的服务器。虽然图3出于说明性目的将本地索引132描绘为将数据存储在表中,但是本地索引132的另一实施例使用二叉树或其他数据结构来对本地索引进行编码。附加地,可信客户端104可选地压缩本地索引132中的数据以减少存储器消耗。本地搜索索引132还存储全局计数器值390,该值保存了在重新加密过程中使用以用于新的关键字搜索和文件更新操作的至少一个计数器值,以确保每个重新加密操作使用先前从未用于对系统100中的数据进行加密的计数器值。下面结合图5的过程更加详细地描述了本地索引132。图4是描绘了由可信客户端104结合不可信服务器154A和154B执行的系统100中的未察觉的关键字搜索和文件更新操作的简化图。首先,可信客户端104生成两个加密数据结构,其包括所有可能的搜索和更新查询的地址-数据元组(ux,Iux),并且然后将它们分别发送到两个非串通的服务器154A和154B。为了执行搜索或更新操作,客户端向每个服务器发送加密搜索查询和加密文件更新请求。在图4的示例中,一个加密搜索查询是真实操作,而其他三个是随机选择的(假的)查询(图2,步骤(1))。不可信服务器154A和154B中的每一个向客户端发送回已经被查询的对应地址-数据元组。在这之后,客户端对接收到的数据进行解密以获得结果(步骤(2)),并且然后对它们进行重新加密(步骤(3))。可信客户端104通过将重新加密的数据指派到随机地址来针对每个所执行的查询生成新的地址-数据元组(步骤(4))。最后,可信客户端104交换这些地址-数据元组,并且将它们写回到另一个服务器(步骤(5))。这意味着来自不可信服务器154A的查询的新的地址-数据元组将被写入到不可信服务器154B,并且反之亦然。图4的过程使得不可信服务器154A和154B中的每一个在仅具有已经在另一个不可信服务器上执行的一次重复不可链接查询的情况下观察到随机化数据结构-访问模式,只要这两个服务器不串通。图5描绘了用于使用与至少两个不可信服务器通信的可信客户端来执行关键字搜索和文件更新操作的组合的过程500,每个不可信服务器存储加密搜索索引以维持关键字搜索和文件更新未察觉性、搜索模式未察觉性和文件更新模式未察觉性。在以下描述中,对执行功能或动作的过程500的引用指代至少一个处理器执行所存储的程序指令以执行该功能或动作的操作。出于说明性目的,结合图1的系统100来描述过程500。过程500随着可信客户端104生成密码密钥而开始,该密码密钥用作生成加密搜索索引和加密文件的基础(框504)。在系统100中,可信客户端104中的处理器108使用本领域已知的对称密钥生成算法来生成两个对称密钥,即SK1和SK2,它们分别对应于存储在不可信服务器154A和154B中的搜索索引。合适的对称密钥的一个示例是以用于与高级加密系统(AES)密码方案或任何其他合适的密码方案一起使用的安全方式生成的128位密钥。对称密钥SK1和SK2彼此独立,因此使用密钥SK1(或者是如下所描述的那样从SK1导出的密钥)加密的数据不能被密钥SK2所解密,并且反之亦然。可信客户端104将密钥SK1和SK2存储在存储器120中的密码密钥数据128中,并且不可信服务器154A和154B连同包括不可信存储服务器180的任何其他不可信第三方计算设备不具有对密钥SK1和SK2的访问。附加地,从密钥SK1和SK2中的任一个导出的密码密钥(诸如,下面描述的个别关键字密钥τ)从不与不可信计算设备共享。在一些实施例中,可信客户端104还生成对称密钥SK3,其仅用于对存储在不可信文件服务器180的存储器196中的加密文件198的文件数据进行加密和解密。密钥SK3不被用在关键字搜索和文件更新操作中。随着可信客户端104生成将关键字映射到文件标识符的多个加密搜索索引,过程500继续(框508)。在系统100的实施例中,可信客户端104使用例如来自图2的加密搜索索引200和250的表结构来生成两个加密搜索索引。在一个实施例中,在文件被加密并发送到不可信文件存储服务器180之前,可信客户端104使用例如本领域已知的词法分析(lexing)和解析过程从加密文件198中的每个文件的明文文件数据提取关键字。可信客户端104生成未加密的搜索索引,其中列与每个文件标识符相对应,并且每行中的明文条目与明文文件中找到的关键字相对应。可信客户端利用针对每个明文文件的新列、以及针对先前未从搜索索引中已经存在的文件中提取的任何关键字的新行来构建未加密的搜索索引。未加密的搜索索引还将关键字映射到行,并且将文件标识符映射到列,如在最终的加密搜索索引中那样,但是未加密的搜索索引的内容当然是未加密的,并且未加密的搜索索引不具有最终的加密搜索索引表的2N×2N的大小。为了生成具有图2中描绘的表结构的加密搜索索引,可信客户端首先生成随机二进制值(在每个条目中为0或1)的2N×2N表,其中N是例如未加密的搜索索引中的关键字的数量或文件标识符的数量中的较大者。然后,可信客户端104将来自未加密的搜索索引的每个关键字随机地指派到2N×2N表中的行索引值,并且将随机选择的行号记录在如图3中所描绘的本地索引中,其中行标识符312和316针对第一和第二加密搜索索引表中的每个关键字。类似地,可信客户端将来自未加密的搜索表的文件标识符随机地指派到加密搜索表的列,并且记录针对每个文件标识符的随机指派的列标识符362和366。可信客户端104在加密搜索表中将每个关键字指派到唯一的行并且将每个文件标识符指派到唯一的列。为了完成加密搜索索引,可信客户端104中的处理器108初始化全局计数器,生成针对加密表中的每个关键字(行)的个别加密密钥,并且执行逐个元素的加密过程,以将原始的未加密搜索索引中的加密版本的每个元素放置到加密搜索索引的对应条目中。如图3中所描绘,可信客户端104针对从0(尽管可以使用另一个初始值)开始的所有关键字条目而初始化全局计数器值390,并且针对本地关键字索引300中的每个条目生成个别加密密钥τ。字段308针对每行而存储最近使用的计数器值的副本,这是由于在随后的加密搜索查询操作期间,一些行将比其他行被访问地更多,并且将针对不同的行更新计数器值。字段308中的所存储的计数器值使得可信客户端104能够使用用于对搜索条目进行加密的计数器值来对从不可信服务器154A和154B中的任一个接收到的搜索条目进行解密。在一个实施例中,针对给定关键字(kw)、计数器值(ct)和对称密钥(key)的每个密钥是使用密码安全散列函数的输出的全部或部分而生成的:,其中图3中的索引300描绘了关键字“aardvark”(或者在另一实施例中作为输入的单词的散列)、计数器值为4的示例,并且密钥为SK1或SK2,其中本地索引132存储两个不同的行密钥τ,每个行密钥是使用对称密钥SK1和SK2之一而生成的。唯一的行密钥确保了对应于关键字的行中的每个条目都被加密,特别是针对该特定关键字和对称密钥而被加密。因为每个行密钥τ由关键字、对称密钥和计数器形成,所以可以针对不同的行密钥使用相同的计数器值一次(例如,在生成搜索索引时,可以利用计数器值0来安全地初始化所有行密钥),尽管当可信客户端104对与关键字相对应的数据进行重新加密时,从不针对搜索条目数据的任何个别集合而重复计数器值,这意味着针对任何个别的行加密密钥τ,相同的计数器值从不会被使用多于一次。全局计数器值390在每次未察觉的关键字搜索和文件更新操作期间改变,以确保每行中的相同数据在每次搜索或文件更新操作之后被重新加密,以产生不会链接到搜索表中的行的先前版本的值,这是因为更新的计数器产生了新的行密钥值。虽然图3出于说明性目的描绘了被存储在可信客户端104的存储器120内的本地索引132中的针对不可信服务器154A和154B两者的行密钥,但是在一些实施例中,字段308仅存储计数器值和关键字、或关键字的散列。可信客户端104仅在需要时重新生成行密钥,使得存储器120不需要存储针对所有关键字的所有行密钥。可信客户端104还针对列来初始化全局计数器值390,该值也在对加密搜索表的个别条目进行加密时使用。在一个实施例中,全局计数器390可以是单个计数器,其可以在每组关键字搜索和文件更新操作期间更新多于一次以提供唯一的计数器值,尽管其他实施例可以针对关键字搜索和文件更新使用不同的计数器。如图3中所描绘,本地索引表350中的条目358以数字的形式跟踪针对每个文件标识符的最近使用的计数器。与关键字搜索条目一样,字段358使得可信客户端104能够识别针对个别文件标识符的最近使用的计数器值,以使得可信客户端104能够使用用于对文件条目进行加密的计数器值来对从不可信服务器154A和154B中的任一个接收到的数据列进行解密。当生成新的搜索索引时,可信客户端104向每个文件标识符指派唯一的起始计数器值,诸如针对在图3中所看见的N个条目使用数字0到N。在初始化之后,可信客户端104针对文件更新操作使用从不重复初始计数器值中的任一个的全局计数器(诸如,从N+1开始递增的计数器),以用作更新的计数器以用于对加密搜索索引中的文件条目的随后更新。可信客户端104在随后的文件更新操作中更新全局计数器390,以确保下面描述的每个重新加密操作产生无法链接到不可信服务器154A或154B中的任一个已经存储在加密搜索索引中的任何先前的加密数据集合的输出,即使该搜索索引的行或列中的明文数据尚未改变值。如上所描述的,最终的加密搜索索引表包括大量未占用的条目,其被填入有与被占用条目的加密条目无法分辨的随机数据。可信客户端104使用本地索引132来跟踪哪些行和列实际上包含加密搜索索引中的有用加密信息。为了生成加密搜索索引中的每个加密条目,可信客户端104从明文搜索索引中选择关键字文件索引交叉点(intersection)处的每个未加密元素,并且应用加密操作:,其中I[i,j]是加密表中的接收加密位的坐标位置,SearchEntry是来自未加密搜索表的明文单个位(single-bit)值,并且FileIDctr是针对每个文件标识符的计数器,当首先生成搜索索引时,利用如上所描述的唯一计数器值来初始化它们中的每一个。该加密操作使用针对关键字和对称密钥、连同文件标识符的计数器值的唯一行密钥。可信客户端104针对未加密搜索索引中的每个条目重复上述过程,以在“逐位”过程中单独地对每个条目进行加密以生成加密搜索索引。可信客户端104使用随机化的行和列位置的不同集合并且针对每个行密钥使用不同对称密钥SK1和SK2来重复上面描述的过程,以产生两个不同的加密搜索索引表,每个索引表存储相同的关键字和文件标识符数据。如上所描述,本地索引132存储必要的全局计数器和计数器跟踪数据、关键字到行的映射、以及文件标识符到列的映射,以使得可信客户端104能够对来自这两个加密搜索索引的数据进行检索、解密和重新加密。随着可信客户端104经由网络140将加密搜索索引表传输到不可信服务器154A和154B,过程500继续(框512)。在一些实施例中,可信客户端104在向不可信服务器154A和154B的传输之后从存储器中删除未加密的搜索索引和加密搜索索引的本地副本,同时可信客户端104保留本地索引132。用于生成针对关键字和加密文件的密码密钥和加密搜索索引的框504-512的处理典型地在可信客户端执行多个关键字搜索和文件更新操作之前发生一次。在安全漏洞的情况下、或者如果被存储在加密搜索索引中的文件和关键字的数量超过用以重新生成新的加密搜索索引的搜索索引的大小,系统100典型地仅需要重复框504-508的处理。随着可信客户端104执行用于生成针对第一关键字的第一加密搜索查询和针对第一加密文件的第一加密文件更新请求、以及生成针对第二关键字的第二加密搜索查询和针对第二加密文件的第二加密文件更新请求的操作,过程500继续,第二关键字不同于第一关键字,第二加密文件不同于第一加密文件(框516)。在可信客户端104中,处理器108经由IO设备112或经由程序指令124的执行从用户接收请求,以执行以下任务中的至少一个、并且潜在地多于一个:1.针对不可信服务器154A和154B的加密搜索索引中的关键字进行搜索;或者2.由于至少一个加密文件的内容中的改变而执行文件更新操作,该操作包括进行关键字从搜索索引中的对应文件条目的至少一次添加或移除。客户端104执行两个加密搜索查询生成和两个文件更新请求生成操作,而不考虑可信客户端104在操作期间实际上请求的底层操作,这是因为多个加密关键字搜索查询和多个加密文件更新请求的结构提供了关键字搜索和文件更新未察觉性、以及搜索模式和文件更新模式未察觉性。在其中特定操作不响应于“真实”请求的实例中,可信客户端使用来自本地索引132的随机选择的条目来生成加密关键字搜索查询或加密文件访问请求。为了生成第一和第二加密搜索查询,可信客户端104识别针对本地索引132的表300中的关键字的条目,并且基于服务器访问位320的值而选择针对第一不可信服务器(例如,不可信服务器154A)的字段312中的行号,或选择针对第二不可信服务器(例如,不可信服务器154B)的字段316中的行标识符。在针对相同关键字的查询序列期间,可信客户端104生成针对相同关键字的加密搜索查询并且以交替次序将其发送到不可信服务器154A和154B,以保持未察觉的搜索模式访问属性。当生成第一和第二加密文件搜索查询时,可信客户端104在服务器访问位字段320中选择具有相反服务器访问位值的两个不同的关键字,以确保一个加密搜索查询被引导到第一不可信服务器154A,并且另一个加密搜索查询被引导到第二不可信服务器154B。可信客户端以类似的方式通过基于字段372中的服务器访问位值而从针对第一文件标识符的字段362中选择一个列标识符并且从针对第二文件标识符的列366中选择另一个列标识符,来生成第一和第二加密文件更新请求,以确保一个文件更新请求被传输到不可信服务器154A和154B中的每一个。可信客户端104执行如下操作:基于存储在可信客户端的存储器中的本地索引132来生成第一加密搜索查询,该第一加密搜索查询包括对应于第一关键字的存储在第一不可信服务器中的第一加密搜索索引中的第一行的第一行标识符;以及基于本地索引132来生成第二加密搜索查询,该第二加密搜索查询包括对应于第二关键字的存储在第二不可信服务器中的加密搜索索引中的第二行的第二行标识符。可信客户端104还执行如下操作:基于存储在可信客户端的存储器中的索引来生成第一加密文件更新请求,该第一加密文件更新请求包括对应于第一文件标识符的存储在第一不可信服务器中的第一加密搜索索引中的第一列的第一列标识符;以及基于存储在可信客户端的存储器中的索引来生成第二加密文件更新请求,该第二加密文件更新请求包括对应于第二文件标识符的存储在第二不可信服务器中的第二加密搜索索引中的第二列的第二列标识符。如上所描述,每个加密搜索查询是针对不可信服务器154A和154B之一中的加密搜索表的数字行标识符,并且每个加密文件更新请求是针对不可信服务器154A和154B之一中的加密搜索表的列号。虽然行号和列号不是严格“加密的”值,这是因为行号和列号不是明文值的密文,但是所传输的行号和列号中的信息除了阻止不可信服务器154A和154B访问加密搜索索引的行或列中的加密信息之外还阻止它们获得关于关键字或文件的任何知识,并且因此被称为是加密搜索查询或加密文件更新请求的部分。上面参考框516描述的包括生成两个加密搜索查询和生成两个加密文件更新请求的四个操作的集合被称为事务集合。在过程500期间,可信客户端104可选地生成包括生成两个加密搜索查询和生成两个加密文件更新查询的四个操作的一个或多个附加事务集合(框520)。如果两个不可信服务器154A和154B彼此串通,则添加附加事务集合会导致总共八个操作,这些操作提供了改进的搜索模式未察觉性和文件更新模式未察觉性。如果假定不可信服务器彼此不串通,则单个事务集合提供关键字搜索和文件更新未察觉性、连同搜索模式和文件更新模式未察觉性。如果可信客户端生成操作的一个或多个附加事务集合,则每个事务集合中的主要约束是所有的加密搜索查询和文件更新请求必须分别针对不同关键字和不同文件标识符,并且存在针对不可信服务器154A和154B中的每一个而生成的两个加密搜索查询和两个加密文件更新请求。附加事务集合具有类似的约束。可信客户端104执行如下操作:生成针对第三关键字的第三加密搜索查询和针对第三加密文件的第三加密文件更新请求,该第三关键字不同于第一关键字和第二关键字,该第三加密文件不同于第一加密文件和第二加密文件。可信客户端104还执行如下操作:生成针对第四关键字的第四加密搜索查询和针对第四加密文件的第四加密文件更新请求,该第四关键字不同于第一关键字、第二关键字和第三关键字,该第四加密文件不同于第一加密文件、第二加密文件和第三加密文件。随着可信客户端104将加密搜索查询和加密文件更新请求传输到不可信服务器154A和154B,过程500继续(框524)。在其中可信客户端104生成两个事务集合的实施例中,可信客户端104将第一加密搜索查询和第一文件更新请求、连同第三加密搜索查询和第三加密文件更新请求传输到第一不可信服务器154A。可信客户端还将第二加密搜索查询和第四加密搜索查询、以及第二加密文件更新请求和第四加密文件更新请求传输到第二不可信服务器154B。在一些实施例中,可信客户端104使一个或多个事务集合中的操作的传输次序随机化、或者采取其他步骤,以确保传输到不可信服务器154A和154B中的任一个的数据的次序和定时不会向不可信服务器揭示任何有用信息。随着可信客户端104从不可信服务器154A和154B中的加密搜索索引接收到加密搜索条目和文件更新结果,过程500继续(框528)。在系统100中,不可信服务器154A和154B使用加密搜索请求中的行标识符来检索加密搜索索引表的所选行,并且使用加密文件更新请求中的列标识符来检索加密搜索索引表的所选列。不可信服务器154A和154B经由网络140将这些加密的行和列结果传输到可信客户端104。在两个事务集合的配置中,可信客户端从第一不可信服务器154A接收到:对应于第一加密搜索查询的第一加密搜索条目、对应于第三加密搜索查询的第三加密搜索条目、对应于第一文件更新请求的第二加密文件条目、以及对应于第三文件更新请求的第三加密文件条目。类似地,可信客户端从第二不可信服务器154B接收到:对应于第二加密搜索查询的第二加密搜索条目、对应于第四加密搜索查询的第四加密搜索条目、对应于第二加密文件更新请求的第二加密文件条目、以及对应于第四加密文件更新请求的第四加密文件条目。在过程500期间,可信客户端104对从不可信服务器接收到的加密搜索条目和加密文件条目进行解密(框532)。在系统100的实施例中,可信客户端使用单个行密钥τ来对每个加密文件条目的个别元素进行解密,并且可信客户端104基于本地索引132中的服务器位访问字段320来选择与用于对该条目进行加密的第一对称密钥SK1或第二对称SK2相对应的适当行密钥τ。客户端104使用与字段308中的所存储的关键字计数器和存储在本地索引132中的字段358中的文件标识符计数器相对应的行密钥,对来自不可信服务器154A和154B的加密的搜索条目和文件条目数据进行解密。客户端104针对每个加密文件条目的每个条目使用多个行密钥τ来执行类似的过程,这是由于列式文件条目中的每个条目位于与不同行密钥τ相对应的不同行中。在对来自不可信服务器的搜索条目和文件条目进行解密之后,在其中可信客户端104实际上执行了文件更新操作的情况下,可信客户端104修改任何解密的文件条目列,并且可选地,在其中可信客户端104实际上执行了关键字搜索的情况下,可信客户端104对包括关键字的加密文件进行检索和解密(框536)。为了在重新加密之前修改文件条目,可信客户端在生成第一重新加密的文件条目之前修改第一解密文件条目(或要修改的任何其他文件条目),以从该解密文件条目添加或移除至少一个关键字,该至少一个关键字与对应于第一文件标识符的文件的修改相对应。如上所描述,为了添加关键字,可信客户端104基于行标识符字段312或316来识别与关键字的行相对应的正确条目,这取决于文件条目的不可信文件服务器源,并且如果关键字存在,则将解密条目的值设置为“1”,或者如果关键字从文件中不存在,则将解密条目的值设置为“0”。为了完成关键字搜索操作,可信客户端104识别具有值“1”的解密文件条目的明文中的每个条目,并且然后参考本地索引132的表350中的文件362或366,以识别哪个文件标识符与来自该行的列标识符匹配。例如,如果条目在沿着该行的列索引42处,并且从第二不可信服务器154B中检索搜索条目,则处理器108搜索字段366,直到找到列标识符“42”,并且字段354中的对应文件标识符对应于包含关键字的文件。可信客户端104可以可选地从不可信文件服务器180中的加密文件198中检索与该文件标识符相对应的加密文件,并且使用对称密钥SK3对该加密文件进行解密,以查看和处理包含该关键字的文件的明文内容。在对从不可信服务器154A和154B接收到的搜索条目和文件条目数据进行解密之后,可信客户端对解密的数据进行重新加密以生成新的加密数据集合,其中每个新的加密数据集合被传输到不同的不可信服务器而不是该数据的原始源,以执行维持系统100中的未察觉性的“交换”操作。为了执行该操作,可信客户端104更新本地索引132中的计数器,以用于对解密的搜索条目和文件条目进行重新加密(框540)。在一种常见配置中,可信客户端104中的处理器108仅仅使全局计数器值390中的一个或多个以1递增以产生新的计数器值,该新的计数器值从未在任何先前操作中用于对相关数据进行加密,并且在一些实施例中,处理器108可以在搜索和文件更新操作的集合期间使全局计数器390递增多于一次,以产生与对搜索条目和文件条目数据进行重新加密所需的一样多的唯一计数器值。更新的计数器使得客户端104能够基于针对在文件搜索操作中访问的每行的对称密钥SK1和SK2来产生新的行密钥集合τ,这使得客户端104能够使用针对对称密钥SK1和SK2之一的单个新生成的行密钥来对两个解密搜索条目进行重新加密,或者使用所有新生成的行密钥以对重新加密的文件条目中的每一个中的一个元素进行重新加密。附加地,针对文件条目的全局计数器生成两个或更多个唯一计数器值(例如,先前全局计数器+1和先前全局计数器+2),以确保利用唯一计数器值对与加密搜索索引中的不同列相对应的每个文件条目进行重新加密。这使得可信客户端108能够产生更新的加密的搜索条目和文件条目,以便:如果可信客户端104在文件更新操作中更新一个或多个条目,或者即使在可信客户端104对解密的搜索条目和文件条目数据没有做出改变的情况下,更新不可信服务器154A和154B中的加密搜索索引。随着可信客户端104对与所有搜索条目和所有文件条目相对应的解密的数据进行重新加密,过程500继续(框544)。重新加密过程使用行密钥的集合,这些行密钥是使用对称密钥而生成的,该对称密钥与原始数据的源相反,作为过程500中的“交换”操作的部分。例如,可信客户端使用与第二不可信服务器154B的对称密钥SK2和更新的全局计数器值相关联的对应行密钥τSK2、基于第一解密搜索条目来生成对应于第一关键字的第一重新加密的搜索条目,该第一关键字是从与密钥SK1相关联的第一不可信服务器154A接收到的,该更新的全局计数器值针对对应的关键字而被存储在字段308中。附加地,可信客户端104使用针对文件标识符的更新的全局计数器值来对文件条目数据进行重新加密,并且将更新的计数器值存储在表350的字段358中。换言之,可信客户端104从第一服务器接收使用基于对称密钥SK1的行密钥而被加密的第一加密搜索结果,并且使用利用对称密钥SK2、连同更新的计数器而生成的不同行密钥来进行重新加密。可信客户端104使用均是从第二对称密钥SK2导出的针对所有行的多个行密钥,以便使用与第二不可信服务器相关联的多个密码密钥来生成基于第一解密文件条目的对应于第一文件标识符的第一重新加密的文件条目,该第一解密文件条目对应于从第一不可信服务器154A接收到的数据,该多个密码密钥是新生成的行密钥。类似地,可信客户端104通过如下操作来对最初从第二不可信服务器154B接收到的数据进行重新加密:使用与第一不可信服务器相关联的多个密码密钥来生成基于第二解密搜索条目的对应于第二关键字的第二重新加密的搜索条目、以及生成基于第二解密文件条目的对应于第二文件标识符的第二重新加密的文件条目,该多个密码密钥是从与第一不可信服务器154A相关联的对称密钥SK1、连同更新的计数器导出的行密钥τSK1。可信客户端针对每个事务集合执行相同的过程以对解密的搜索条目和文件条目进行重新加密。如上面在图2中所描述的,加密搜索索引200和250包括大量未占用或“虚”的行和列。加密的以及甚至解密的数据的每个集合中的一些条目包括来自服务器的“虚”数据,这是由于可信客户端104在逐位的基础上仅对有效条目进行解密和重新加密,其中有效条目使用本地索引132而映射到关键字和文件标识符两者。搜索条目行和文件条目列中的其他元素包括“虚”数据,这些数据不具有任何特定含义,但是不应当用于将新重新加密的数据与将具有相同“虚”条目的先前的加密数据集合链接起来。作为重新加密过程的部分,可信客户端104针对重新加密的搜索条目和文件条目中的每个“虚”条目随机生成二进制1和0值,以确保整个重新加密的结果无法链接到先前的加密数据集合。随着可信客户端104将重新加密的条目传输到第一和第二不可信服务器以更新不可信服务器154A和154B两者上的加密搜索索引并且在服务器154A与154B之间交换重新加密的搜索条目和文件条目数据,过程500继续(框548)。可信客户端104利用更新的行或列标识符将重新加密的搜索条目和文件条目传输到不可信服务器154A和154B中的每一个,该更新的行或列标识符对应于搜索索引中先前未占用的位置,其一般不同于客户端104在框516-524中请求的原始的行或列索引。例如,可信客户端104将重新加密的第一搜索条目(最初从服务器154A接收到)传输到如下行标识符:该行标识符在服务器154B上的加密搜索表174中的行的有效范围内(例如,在使用图2的示例表200和250的情况下小于2N),但是它被随机选择成不存在于本地索引132中的行标识符316中的任一个中的行标识符。这意味着经交换的加密搜索条目被存储在第二不可信服务器154B的加密搜索索引174的未占用的行中。可信客户端104更新针对本地索引132的字段316中的关键字的对应条目,以保持对第二不可信服务器154B中的重新加密的搜索条目的位置的跟踪。可信客户端104还翻转了服务器访问位320(0→1或1→0),以指示最新的重新加密的搜索条目被存储在不可信服务器154B上。可信客户端104针对重新加密的搜索条目(行)和重新加密的文件条目(列)中的每一个执行类似的操作以执行交换操作,这更新了不可信服务器154A和154B两者中的加密搜索索引,并且保持了对本地索引132中的表300中的搜索条目和表354中的文件条目两者的重新加密数据的位置的跟踪。在更新之后,本地索引132可以用于过程500的随后迭代,以使用存储在不可信服务器154A和154B上的更新的加密搜索索引来执行关键字搜索和文件更新操作。在执行未察觉的关键字搜索和文件更新操作的上下文中描述了过程500,但是过程500还可以以未察觉的方式对不可信服务器154A和154B的加密文件索引执行附加的更新操作。例如,为了添加尚未存在于加密搜索索引中的新关键字,可信客户端104如上面在框516中所描述的那样生成搜索关键字请求,但是可信客户端104有意地从搜索索引选择不与本地索引132中的关键字行值中的任一个匹配的未占用的行。可信客户端104从加密文件索引中的未占用的行接收随机数据,并且在框544中的上面描述的重新加密过程期间,可信客户端104以与首次生成搜索索引时类似的方式、使用逐位加密来生成对应于关键字的实际的加密搜索数据行。然后,新条目变为“重新加密”的条目,并且然后在框548的交换操作中被传输到相反的服务器。可信客户端104还向本地索引中的表300添加新条目以跟踪新添加的关键字。不可信服务器154A和154B不能在新关键字添加操作与可信客户端104在该过程期间执行的任何其他加密关键字搜索请求之间进行区分。类似的操作使得可信客户端104能够将新文件标识符添加到加密搜索表。可信客户端104针对第一服务器的加密搜索索引的未占用的列发送文件更新请求,在重新加密过程期间生成实际加密的数据列,以产生文件标识符到关键字的加密映射,并且在交换操作中将新生成的列发送到第二不可信服务器,而不可信服务器154A或154B中的任一个都不能够确定该操作已将新文件添加到加密搜索索引。再次,可信客户端104向本地索引132中的表350添加新条目以跟踪新添加的文件。如上所描述,过程500使得系统100能够执行具有不同程度的未察觉性的关键字搜索和文件更新操作。参考图4的简化示例,如果不可信服务器154A和154B没有串通,则每个不可信服务器从可信客户端104观察到以下操作集合:1.可信客户端104请求加密关键字条目(行),其内容自从在先前操作期间形成了加密搜索索引或重写了该行以来仅被请求过一次;2.可信客户端请求加密文件条目(列),其内容自从在先前操作期间形成了加密搜索索引或重写了该列以来仅被请求过一次;3.可信客户端104随后通过如下操作来更新加密搜索索引:利用包括先前未知的加密数据的新搜索条目来覆盖行,该先前未知的加密数据无法链接到已经在表中搜索过的行;以及利用包括先前未知的加密数据的新文件条目来覆盖列,该先前未知的加密数据无法链接到已经在表中更新过的列。此外,在给定可信客户端104执行“假的”行和列访问的能力的情况下,新插入的行和列可能甚至不对应于真实关键字搜索或真实文件更新操作。在图4的示例中(在图5中也描述了该示例),当系统100使用两个搜索查询和两个文件更新请求(总共4个操作)的单个事务集合时,系统100提供关键字搜索和文件更新未察觉性以及搜索和文件更新模式未察觉性两者。对于关键字搜索和文件更新未察觉性而言,不可信服务器154A和154B中的每一个始终接收针对关键字搜索(行)和文件更新请求(列)的请求,接着是针对新生成的行和列更新的请求。这意味着不可信服务器154A和154B无法确定客户端104实际上是正在执行关键字搜索、文件更新还是其两者(理论上,可信客户端104可以执行完全“假的”操作,该操作不执行真实工作,但是该场景在实际系统中不太可能)。附加地,在隔离时,每个不可信服务器无法跟踪加密的查询和文件更新操作,这是因为搜索索引中的每行或每列仅被访问一次,并且新更新的行和列无法链接到加密搜索索引的先前内容。因此,如果不可信服务器154A和154B没有串通,则系统100提供关键字搜索模式和文件更新模式未察觉性。如果服务器154A和154B可以串通,则上面描述的未察觉性属性不完全适用。在这种情况下,系统100仍然提供关键字搜索和文件更新未察觉性,这是因为即使不可信服务器154A和154B串通,可信客户端104仍然始终执行关键字搜索和文件更新操作。然而,串通使得不可信服务器154A和154B能够跟踪对搜索索引的个别行和列的访问,即使可信客户端104对这些条目进行重新加密和交换亦如此,这是因为串通的服务器在每组4个操作中知道行与列之间的源-目的地关系。因此,如果服务器154A和154B串通,则系统100失去了关键字搜索模式和文件更新模式未察觉性。图5的过程500提供了部分补救措施:即使服务器154A和154B串通,该补救措施也提供某种程度的关键字搜索模式和文件更新模式未察觉性。如图5中所描述的,如果可信客户端使用两个事务集合来执行总共8个操作(4个关键字搜索查询和4个文件更新请求),则串通的服务器154A和154B均观察到两个不同的行访问和更新操作以及两个不同的列访问和更新操作。串通的服务器154A和154B可以确定行和列的对(pair)是彼此相关的,但是关于确切的行与列之间的个别关系,仅可以以50%的准确度进行猜测。如果过程500执行具有附加事务集合的更复杂的操作,则该概率降低到甚至更低(例如,在3个事务集合的情况下为33%,在4个事务集合的情况下为25%)。附加地,向系统100添加更多不可信服务器使得跟踪过程更加困难。因此,严格地说,执行关键字搜索查询和文件更新操作的附加集合不提供完美的模式未察觉性,但是本文中描述的实施例和过程500至少降低了串通的服务器154A和154B跟踪可信客户端104的关键字搜索和文件更新模式的尝试的准确度。下面呈现了方法的附加形式描述以及对上述方法的可替换方案。框504的密钥生成过程:。框508的初始化过程:。框516-532和540-548的关键字搜索查询和文件更新请求、以及重新加密的数据交换:。上面呈现的算法中使用的子例程:。本文中描述的实施例在执行对称可搜索的密码搜索时提供了对计算设备的操作的改进,该搜索实现了搜索模式未察觉的动态可搜索对称加密(SPO-DSSE)和分布式未察觉的数据结构DSSE(DOD-DSSE)。上面描述的系统和方法实现了SPO-DSSE,这是由于非串通的不可信服务器对关键字搜索和文件更新模式是未察觉的。上面描述的系统和方法还实现了DOD-DSSE,这是由于两个或更多个不可信服务器具有不同的加密搜索索引。非限制性改进列表包括:搜索模式的实际保护、高通信和计算效率、以及高安全性和抗串通性。搜索模式的实际保护:与所有先前的传统DSSE方案相比,SPO-DSSE和DOD-DSSE是可以以有效方式隐藏搜索模式的第一种实用DSSE方法。换言之,所有先前的传统DSSE方案都泄漏搜索模式,而SPO-DSSE和DOD-DSSE在不需要对整个加密索引的处理和传输的情况下实现了未察觉的搜索模式。高通信和计算效率:SPO-DSSE和DOD-DSSE仅需要对I的小-恒定(small-constant)部分进行重新加密和传输(例如,对于两个服务器的情况,利用小的传输进行四个轮次的交互),并且因此是完全实际的。然而,在一些现有技术解决方案中仅有的搜索模式隐藏可替换方案需要在两个非串通服务器之间针对每个搜索查询对整个索引进行传输,并且因此对于具有甚至中等索引大小的实际应用来说是不实际的。SPO-DSSE和DOD-DESS还比现有技术ORAM方法有通信效率且有计算效率得多,现有技术ORAM方法需要多对数(poly-logarithmic)数量的轮次、以及可信客户端与服务器之间的重新加密置换。高安全性和抗串通性:一些现有技术解决方案仅提供最小级别的搜索模式保护,而SPO-DSSE和DOD-DSSE实现了完全未察觉的搜索模式。而且,包括八个或更多个事务的SPO-DSSEDOD-DSSE的变体提供了针对多个服务器的子集的串通的一些弹性,而现有技术解决方案中的两个服务器的串通直接暴露了搜索模式。图6A-图6C描绘了与现有技术可搜索加密系统相比较的本文中描述的实施例的附加性能结果。图6A描绘了在状态内(in-state)网络等待时间情况下的端到端密码延迟的曲线图600,其中曲线图620是以曲线图600中的DOD-DSSE的视野而被放大的,其难以在曲线图600中观察到。在时序曲线图中,更低的时间指示更快速的性能。“DSSE”条目是现有技术DSSE方案,其具有快速性能但是不具有本文中所描述的DOD-DSSE实施例的未察觉性属性。ODICT和OMAT曲线图描绘了现有技术未察觉RAM(ORAM)系统的性能水平,这些系统确实提供了未察觉性,但仅仅是以比DOD-DSSE显著更慢的性能为代价而这样做的。因此,如在曲线图600和620中看到的,与现有技术相比,DOD-DSSE实施例提供了性能和未察觉性的强大组合。曲线图600和620描绘了针对具有相对低等待时间的数据网络140的实施例的“状态内”网络等待时间。图6B描绘了在较高等待时间的状态外(out-of-state)网络情况下的端到端密码延迟的另一个曲线图650,其中曲线图670是以DOD-DSSE和传统DSSE的视野而被放大的,其在难以在曲线图650中观察到。再次,在高等待时间数据网络中,本文中所描述的DOD-DSSE实施例仍然提供明显优于ODICT和OMAT的强大性能水平,同时继续提供了从传统DSSE中不存在的未察觉性特征(等待时间仅影响性能,而不是DOD-DSSE的未察觉性属性)。图6C描绘了图表680,其描绘了传统DSSE、ODICT和OMAT与本文中描述的DOD-DSSE实施例之间的进一步区别。再次,图表680描述了DSSE(高性能但是没有未察觉性属性)、ODICT和OMATORAM实现方式(高未察觉性但是低性能)与本文中所描述的DOD-DSSE实施例(从DSSE的改进的未察觉性、以及与ODICT和OMAT相比改进的性能的组合)之间的权衡。将领会到的是,上面描述的和其他的特征和功能的变体或其可替换方案可以被合期望地组合到许多其他不同的系统、应用或方法中。可以随后由本领域技术人员做出各种目前未预见或未预测到的可替换方案、修改、变型或改进,这些也意图在本文中被涵盖在以下权利要求中。

权利要求:1.一种用于搜索和更新加密数据的方法,包括:利用可信客户端生成针对第一关键字的第一加密搜索查询和针对第一加密文件的第一加密文件更新请求;利用可信客户端生成针对第二关键字的第二加密搜索查询和针对第二加密文件的第二加密文件更新请求,所述第二关键字不同于所述第一关键字,所述第二加密文件不同于所述第一加密文件;利用可信客户端向第一不可信服务器传输所述第一加密搜索查询和所述第一文件更新请求;利用可信客户端向第二不可信服务器传输所述第二加密搜索查询和所述第二加密文件更新请求,第二不可信服务器不同于第一不可信服务器;利用可信客户端从第一不可信服务器接收对应于所述第一加密搜索查询的第一加密搜索条目和对应于所述第一文件更新请求的第二加密文件条目;利用可信客户端从第二不可信服务器接收对应于所述第二加密搜索查询的第二加密搜索条目和对应于所述第二加密文件更新请求的第二加密文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥对所述第一加密搜索条目和所述第一加密文件条目进行解密,以生成第一解密搜索条目和第一解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥对所述第二加密搜索条目和所述第二加密文件条目进行解密,以生成第二解密搜索条目和第二解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥来生成基于所述第一解密搜索条目的对应于所述第一关键字的第一重新加密的搜索条目、以及基于所述第一解密文件条目的对应于所述第一文件标识符的第一重新加密的文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥来生成基于所述第二解密搜索条目的对应于所述第二关键字的第二重新加密的搜索条目、以及基于所述第二解密文件条目的对应于所述第二文件标识符的第二重新加密的文件条目;利用可信客户端向第一不可信服务器传输所述第二重新加密的搜索条目和所述第二重新加密的文件条目,以更新存储在第一不可信服务器中的第一加密搜索索引;以及利用可信客户端向第二不可信服务器传输所述第一重新加密的搜索条目和所述第一重新加密的文件条目,以更新存储在第二不可信服务器中的第二加密搜索索引。2.根据权利要求1所述的方法,进一步包括:利用可信客户端生成针对第三关键字的第三加密搜索查询和针对第三加密文件的第三加密文件更新请求,所述第三关键字不同于所述第一关键字和所述第二关键字,所述第三加密文件不同于所述第一加密文件和所述第二加密文件;利用可信客户端生成针对第四关键字的第四加密搜索查询和针对第四加密文件的第四加密文件更新请求,所述第四关键字不同于所述第一关键字、所述第二关键字和所述第三关键字,所述第四加密文件不同于所述第一加密文件、所述第二加密文件和所述第三加密文件;利用可信客户端向具有所述第一加密搜索查询和所述第一文件更新请求的第一不可信服务器传输所述第三加密搜索查询和所述第三加密文件更新请求;利用可信客户端向具有所述第二加密搜索查询和所述第二加密文件更新请求的第二不可信服务器传输所述第四加密搜索查询和所述第四加密文件更新请求;利用可信客户端从第一不可信服务器接收对应于所述第三加密搜索查询的第三加密搜索条目和对应于所述第三文件更新请求的第三加密文件条目;利用可信客户端从第二不可信服务器接收对应于所述第四加密搜索查询的第四加密搜索条目和对应于所述第四文件更新请求的第四加密文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥对所述第三加密搜索条目和所述第三加密文件条目进行解密,以生成第三解密搜索条目和第三解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥对所述第四加密搜索条目和所述第四加密文件条目进行解密,以生成第四解密搜索条目和第四解密文件条目;利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥来生成基于所述第三解密搜索条目的对应于所述第三关键字的第三重新加密的搜索条目、以及基于所述第三解密文件条目的对应于所述第三文件标识符的第三重新加密的文件条目;利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥来生成基于所述第四解密搜索条目的对应于所述第四关键字的第四重新加密的搜索条目、以及基于所述第四解密文件条目的对应于所述第四文件标识符的第四重新加密的文件条目;利用可信客户端向具有所述第一重新加密的搜索条目和所述第一重新加密的文件条目的第二不可信服务器传输所述第三重新加密的搜索条目和所述第三重新加密的文件条目,以更新存储在第二不可信服务器中的第二加密搜索索引;以及利用可信客户端向具有所述第二重新加密的搜索条目和所述第二重新加密的文件条目的第一不可信服务器传输所述第四重新加密的搜索条目和所述第四重新加密的文件条目,以更新存储在第一不可信服务器中的第一加密搜索索引。3.根据权利要求1所述的方法,进一步包括:利用可信客户端更新存储在可信客户端的存储器中的索引中的计数器;利用可信客户端、基于与第二不可信服务器相关联的对称密钥、所述第一关键字的散列以及所述计数器来生成对应于所述第一关键字的第一更新加密密钥;利用可信客户端、基于与第一不可信服务器相关联的对称密钥、所述第二关键字的散列以及更新的第二关键字计数器来生成对应于所述第二关键字的第二更新加密密钥;利用可信客户端、使用所述第一更新加密密钥来生成基于所述第一解密搜索条目的对应于所述第一关键字的所述第一重新加密的搜索条目;以及利用可信客户端、使用所述第二更新加密密钥来生成基于所述第二解密搜索条目的对应于所述第二关键字的所述第二重新加密的搜索条目。4.根据权利要求3所述的方法,进一步包括:利用可信客户端、使用与第二不可信服务器相关联的多个密码密钥来生成基于所述第一解密文件条目和第一更新文件计数器的对应于所述第一关键字的所述第一重新加密的文件条目,与第二不可信服务器相关联的多个密码密钥包括所述第一更新加密密钥;以及利用可信客户端、使用与第一不可信服务器相关联的多个密码密钥来生成基于所述第二解密文件条目和第二更新文件计数器的对应于所述第二关键字的所述第二重新加密的文件条目,与第一不可信服务器相关联的多个密码密钥包括所述第二更新加密密钥。5.根据权利要求1所述的方法,进一步包括:利用可信客户端、基于存储在可信客户端的存储器中的索引来生成所述第一加密搜索查询,所述第一加密搜索查询包括对应于所述第一关键字的存储在第一不可信服务器中的第一加密搜索索引中的第一行的第一行标识符;利用可信客户端、基于存储在可信客户端的存储器中的索引来生成所述第二加密搜索查询,所述第二加密搜索查询包括对应于所述第二关键字的存储在第二不可信服务器中的加密搜索索引中的第二行的第二行标识符;利用可信客户端、基于存储在可信客户端的存储器中的索引来生成所述第一加密文件更新请求,所述第一加密文件更新请求包括对应于所述第一文件标识符的存储在第一不可信服务器中的第一加密搜索索引中的第一列的第一列标识符;以及利用可信客户端、基于存储在可信客户端的存储器中的索引来生成所述第二加密文件更新请求,所述第二加密文件更新请求包括对应于所述第二文件标识符的存储在第二不可信服务器中的第二加密搜索索引中的第二列的第二列标识符。6.根据权利要求1所述的方法,进一步包括:利用可信客户端向第一不可信服务器传输所述第二重新加密的搜索条目以存储在第一加密搜索索引中的随机选择的行中,所述随机选择的行的标识符被存储在可信客户端的存储器中存储的索引中,以使得可信客户端能够在随后的加密搜索查询中访问所述第二重新加密的搜索条目;以及利用可信客户端向第一不可信服务器传输所述第二重新加密的文件条目以存储在第一加密搜索索引中的随机选择的列中,所述随机选择的列的标识符被存储在可信客户端的索引中,以使得可信客户端能够在随后的加密文件更新请求中访问所述第二重新加密的文件条目。7.根据权利要求1所述的方法,进一步包括:在生成所述第一重新加密的文件条目之前,利用可信客户端来修改所述第一解密文件条目,以从所述第一解密文件条目添加或移除至少一个关键字,所述至少一个关键字与对应于所述第一文件标识符的文件的修改相对应。8.根据权利要求1所述的方法,进一步包括:利用可信客户端、基于第一解密响应来识别包含所述第一关键字的加密文件的标识符;利用可信客户端向第三不可信服务器传输针对所述加密文件的请求;利用可信客户端从第三不可信服务器接收所述加密文件;以及利用存储在可信客户端的存储器中的第三密码密钥来对所述加密文件进行解密。9.根据权利要求8所述的方法,其中第三不可信服务器与第一不可信服务器或第二不可信服务器中的任一个不同。10.一种被配置成搜索和更新加密数据的可信客户端计算设备,包括:存储器,其被配置成存储索引;网络接口设备,其被配置成向第一不可信服务器和第二不可信服务器传输数据以及从第一不可信服务器和第二不可信服务器接收数据;以及处理器,其可操作地连接到存储器和网络接口,所述处理器被配置成:基于对应于第一关键字的存储在存储器中的索引中的条目来生成针对所述第一关键字的第一加密搜索查询,并且基于对应于第一加密文件的存储在存储器中的索引中的条目来生成针对所述第一加密文件的第一加密文件更新请求;基于对应于第二关键字的存储在存储器中的索引中的条目来生成针对所述第二关键字的第二加密搜索查询,并且基于对应于第二加密文件的存储在存储器中的索引中的条目来生成针对所述第二加密文件的第二加密文件更新请求,所述第二关键字不同于所述第一关键字,所述第二加密文件不同于所述第一加密文件;向第一不可信服务器传输所述第一加密搜索查询和所述第一文件更新请求;向第二不可信服务器传输所述第二加密搜索查询和所述第二加密文件更新请求,第二不可信服务器不同于第一不可信服务器;从第一不可信服务器接收对应于所述第一加密搜索查询的第一加密搜索条目和对应于所述第一文件更新请求的第二加密文件条目;从第二不可信服务器接收对应于所述第二加密搜索查询的第二加密搜索条目和对应于所述第二加密文件更新请求的第二加密文件条目;使用与第一不可信服务器相关联的多个密码密钥对所述第一加密搜索条目和所述第一加密文件条目进行解密,以生成第一解密搜索条目和第一解密文件条目;使用与第二不可信服务器相关联的多个密码密钥对所述第二加密搜索条目和所述第二加密文件条目进行解密,以生成第二解密搜索条目和第二解密文件条目;使用与第二不可信服务器相关联的多个密码密钥来生成基于所述第一解密搜索条目的对应于所述第一关键字的第一重新加密的搜索条目、以及基于所述第一解密文件条目的对应于所述第一文件标识符的第一重新加密的文件条目;使用与第一不可信服务器相关联的多个密码密钥来生成基于所述第二解密搜索条目的对应于所述第二关键字的第二重新加密的搜索条目、以及基于所述第二解密文件条目的对应于所述第二文件标识符的第二重新加密的文件条目;向第一不可信服务器传输所述第二重新加密的搜索条目和所述第二重新加密的文件条目,以更新存储在第一不可信服务器中的第一加密搜索索引;以及向第二不可信服务器传输所述第一重新加密的搜索条目和所述第一重新加密的文件条目,以更新存储在第二不可信服务器中的第二加密搜索索引。

百度查询: 罗伯特·博世有限公司 用于搜索模式未察觉的动态对称可搜索加密的方法和系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。