用于对加密数据进行模糊关键字搜索的方法和系统与流程

文档序号:18873696发布日期:2019-10-14 20:07阅读:456来源:国知局
用于对加密数据进行模糊关键字搜索的方法和系统与流程

本申请要求美国临时申请no.62/440,880的权益,其标题为“methodandsystemforfuzzykeywordsearchoverencrypteddata”并且于2016年12月30日提交,其全部内容在此通过引用明确地并入本文中。

本公开总体上涉及信息安全领域,并且更具体地涉及针对加密数据结构中的关键字进行搜索的系统和方法。



背景技术:

用于执行不损害加密数据的机密性的对加密数据的搜索的方法是本领域已知的。例如,在一种常见配置中,服务器计算设备存储具有相关联的加密搜索索引的大量加密数据文件。一个或多个客户端计算设备使用搜索关键字术语的加密表示来向服务器做出搜索请求。对称可搜索加密(sse)是用于在加密搜索索引中执行搜索的一种方法,该方法使得有权访问对称密码密钥的客户端计算设备能够在被存储在服务器中的加密搜索索引中针对具体术语执行搜索。然而,服务器仅接收加密的搜索术语,并且不能基于从客户端接收到的通信来识别搜索术语的内容,这是因为服务器无权访问对该搜索术语进行解密所需的(秘密)密码密钥。

大多数现有的可搜索加密系统使得客户端能够针对加密搜索索引中的确切搜索术语或“关键字”进行搜索。然而,许多实际应用使用不确切或“模糊”的搜索来在搜索索引中找到与确切搜索关键字类似但通常不相同的关键字。模糊搜索的常见用途包括但不限于:拼写检查器和搜索引擎基于可能的相关性而返回结果列表,即使搜索关键字和拼写可能不完全匹配。在一些实施例中,一般通过计算两个单词之间的预定距离度量来进行模糊搜索。

尝试将模糊搜索过程与对称可搜索加密相结合的现有技术系统利用基于通配符的模糊集合或局部敏感哈希(localitysensitivehashing)(lsh)功能,来将模糊关键字搜索变换为对加密数据的确切关键字搜索。虽然基于通配符的模糊集合为了在云服务器上存储搜索索引而产生显著的开销,但是基于lsh的方法会在搜索结果中引入误报率和漏报率。特别地,两种方法都需要内置到搜索索引中的预定相似度度量,这与明文域中的模糊搜索不兼容。例如,许多传统的明文模糊搜索技术可以指定可应用于不同搜索的错误量或“模糊度”,以使得该搜索能够取回更宽范围(更高错误级别)或更窄范围(更低错误级别)的搜索结果。然而,现有技术的加密模糊搜索过程不能适应动态地改变模糊度水平的个别搜索查询,这是由于现有技术的加密模糊搜索索引的结构指定了固定水平的模糊度。因此,对用于在加密数据中执行模糊搜索的方法和系统的改进将是有益的。



技术实现要素:

在一个实施例中,已经开发了一种用于在加密数据中执行模糊搜索的方法。该方法包括:利用不可信服务器计算设备从客户端计算设备接收与搜索关键字相对应的搜索令牌。搜索令牌进一步包括:第一查询向量,其包括与搜索关键字中的标志的出现相对应的加密数据和与第一模糊度参数相对应的加密数据;以及第二查询向量,其包括与搜索关键字中的标志的出现相对应的加密数据、与搜索关键字相对于预定最大关键字长度的长度相对应的加密数据、以及与第二模糊度参数相对应的加密数据。该方法进一步包括:利用不可信服务器计算设备中的处理器来检索存储在不可信服务器计算设备的存储器中的加密树中的非叶(non-leaf)节点。非叶节点包括:第一非叶节点向量,其包括与加密树中的非叶节点的所有子节点中的标志的出现相对应的加密数据、以及与对应于第一查询向量中的第一模糊度参数的预定乘数相对应的加密数据。该方法进一步包括:利用不可信服务器计算设备中的处理器、基于第一查询向量和第一非叶节点向量的功能隐藏内积加密操作来生成第一内积值;利用不可信服务器计算设备中的处理器、响应于第一内积值超过对应于第一查询向量与第一非叶节点向量的相似度的第一预定相似度阈值而检索加密树的叶节点,该叶节点连接到存储器中的加密树中的非叶节点。该叶节点包括:存储在叶节点中的加密关键字;以及第一叶节点向量,其包括与存储在叶节点中的关键字中的标志的出现相对应的加密数据、与存储在叶节点中的关键字相对于预定最大关键字长度的长度相对应的加密数据、以及与对应于第二查询向量中的第二模糊度参数的预定乘数相对应的加密数据。该方法进一步包括:利用不可信服务器计算设备中的处理器、使用第二查询向量和第一叶节点向量的功能隐藏内积加密操作来生成第二内积值;以及利用不可信服务器计算设备、响应于第二内积值超过对应于第二查询向量与第一叶节点向量的相似度的第二预定相似度阈值而将存储在叶节点中的加密关键字传输到客户端计算设备,模糊搜索不揭示针对存储在叶节点中的关键字、搜索关键字、第一模糊度参数或第二模糊度参数中的任一个的明文内容。

在进一步的实施例中,从客户端计算设备接收到的搜索令牌包括第三查询向量,该第三查询向量包括与搜索范围中的关键字的至少一个长度相对应的加密数据,该搜索范围对应于搜索关键字的长度,并且利用不可信服务器计算设备中的处理器检索的非叶节点包括第二非叶节点向量,该第二非叶节点向量包括与存储在加密树中的非叶节点的所有子节点中的关键字的长度相对应的加密数据。该方法包括:利用不可信服务器计算设备中的处理器、基于第三查询向量和第二非叶节点向量的功能隐藏内积加密操作来生成第三内积值;以及利用处理器、响应于第一内积值超过预定相似度阈值并且第三内积值不等于零而检索加密树的叶节点,该叶节点连接到存储器中的加密树中的非叶节点。

在进一步的实施例中,该方法包括:利用不可信服务器计算设备中的处理器、使用公共系统参数数据来生成第一内积值和第二内积值,该公共系统参数数据与客户端计算设备用于生成第一查询向量和第二查询向量中的加密数据的加密密钥相对应。

在进一步的实施例中,公共系统参数数据被存储在不可信服务器计算设备的存储器中。

在进一步的实施例中,公共系统参数数据被包括在从客户端计算设备接收到的搜索令牌中。

在进一步的实施例中,该方法包括:利用不可信服务器计算设备中的处理器、使用功能隐藏内积加密操作和公共系统参数数据来生成第一内积值,该第一内积值等同于第一查询向量的明文内容和第一非叶向量的明文内容的点积的数值,其中功能隐藏内积加密操作不向不可信服务器计算设备揭示第一查询向量和第一非叶节点向量的明文内容。

在进一步的实施例中,第一模糊度参数对应于:|w|-q-q-ed,其中|w|是搜索关键字的长度,q是用于形成加密树的预定q-gram数量,并且ed是由客户端计算设备作为搜索令牌的部分而生成的数字编辑距离量,并且第二模糊度参数对应于ulen+q+q*ed,其中ulen是预定最大关键字长度。

在进一步的实施例中,第一预定相似度阈值和第二预定相似度阈值两者为零,响应于第一内积值具有正数值,第一内积值超过第一预定相似度阈值,并且响应于第二内积值具有正数值,第二内积值超过第二预定相似度阈值。

在另一个实施例中,一种用于在加密数据中执行模糊搜索的方法包括:利用不可信服务器计算设备从客户端计算设备接收与搜索关键字相对应的搜索令牌。该搜索令牌包括:第一查询向量,其包括与搜索关键字中的标志的出现相对应的加密数据、与搜索关键字相对于预定最大关键字长度的长度相对应的加密数据、以及与模糊度参数相对应的加密数据。该方法进一步包括:利用处理器来检索存储在不可信服务器计算设备的存储器中的加密树的叶节点。该叶节点包括:存储在叶节点中的加密关键字;以及第一叶节点向量,其包括与存储在叶节点中的关键字中的标志的出现相对应的加密数据、与存储在叶节点中的关键字相对于预定最大关键字长度的长度相对应的加密数据、以及与对应于第一查询向量中的第二模糊度参数的预定乘数相对应的加密数据。该方法进一步包括:利用不可信服务器计算设备中的处理器、使用第一查询向量和第一叶节点向量的功能隐藏内积加密操作来生成第一内积值;以及利用不可信服务器计算设备、响应于第一内积值超过对应于第一查询向量与叶节点向量的相似度的第一预定相似度阈值而将存储在叶节点中的加密关键字传输到客户端计算设备,模糊搜索不揭示针对存储在叶节点中的关键字、搜索关键字、或模糊度参数中的任一个的明文内容。

在进一步的实施例中,从客户端计算设备接收到的搜索令牌进一步包括第二查询向量,该第二查询向量包括与搜索范围中的关键字的至少一个长度相对应的加密数据,该搜索范围对应于搜索关键字的长度,并且利用不可信服务器计算设备中的处理器检索的叶节点进一步包括第二叶节点向量,该第二叶节点向量包括与存储在叶节点中的加密关键字的长度相对应的加密数据。该方法进一步包括:利用不可信服务器计算设备中的处理器、基于第二查询向量和第二叶节点向量的功能隐藏内积加密操作来生成第二内积值;以及利用处理器、响应于第一内积值超过第一预定相似度阈值并且第二内积值不等于零而将存储在叶节点中的加密关键字传输到客户端计算设备。

在另一个实施例中,已经开发了一种被配置成在加密数据中执行模糊搜索的不可信计算设备。该不可信计算设备包括:网络接口设备,其被配置成使用数据网络从可信客户端计算设备传输和接收数据;存储器,其被配置成存储所存储的加密树,该加密树包括至少一个非叶节点和至少一个叶节点;以及处理器,其可操作地连接到网络接口设备和存储器。处理器被配置成从可信客户端计算设备接收与搜索关键字相对应的搜索令牌。该搜索令牌进一步包括:第一查询向量,其包括与搜索关键字中的标志的出现相对应的加密数据和与第一模糊度参数相对应的加密数据;以及第二查询向量,其包括与搜索关键字中的标志的出现相对应的加密数据、与搜索关键字相对于预定最大关键字长度的长度相对应的加密数据、以及与第二模糊度参数相对应的加密数据。处理器进一步被配置成检索存储在存储器中的加密树中的非叶节点。非叶节点包括:第一非叶节点向量,其包括与加密树中的非叶节点的所有子节点中的标志的出现相对应的加密数据、以及与对应于第一查询向量中的第一模糊度参数的预定乘数相对应的加密数据。处理器进一步被配置成:基于第一查询向量和第一非叶节点向量的功能隐藏内积加密操作来生成第一内积值;以及响应于第一内积值超过对应于第一查询向量与第一非叶节点向量的相似度的第一预定相似度阈值而检索加密树的叶节点,该叶节点连接到存储器中的加密树中的非叶节点。该叶节点包括:存储在叶节点中的加密关键字;以及第一叶节点向量,其包括与存储在叶节点中的关键字中的标志的出现相对应的加密数据、与存储在叶节点中的关键字相对于预定最大关键字长度的长度相对应的加密数据、以及与对应于第二查询向量中的第二模糊度参数的预定乘数相对应的加密数据。处理器进一步被配置成:使用第二查询向量和第一叶节点向量的功能隐藏内积加密操作来生成第二内积值;以及响应于第二内积值超过对应于第二查询向量与第一叶节点向量的相似度的第二预定相似度阈值而将存储在叶节点中的加密关键字传输到客户端计算设备,模糊搜索不揭示针对存储在叶节点中的关键字、搜索关键字、第一模糊度参数或第二模糊度参数中的任一个的明文内容。

在进一步的实施例中,处理器进一步被配置成:接收从可信客户端计算设备接收到的搜索令牌,该搜索令牌进一步包括第三查询向量,该第三查询向量包括与搜索范围中的关键字的至少一个长度相对应的加密数据,该搜索范围对应于搜索关键字的长度。处理器进一步被配置成检索非叶节点,该非叶节点进一步包括第二非叶节点向量,该第二非叶节点向量包括与存储在加密树中的非叶节点的所有子节点中的关键字的长度相对应的加密数据。处理器进一步被配置成:基于第三查询向量和第二非叶节点向量的功能隐藏内积加密操作来生成第三内积值;以及响应于第一内积值超过预定相似度阈值并且第三内积值不等于零而检索加密树的叶节点,该叶节点连接到存储器中的加密树中的非叶节点。

在进一步的实施例中,处理器进一步被配置成:使用公共系统参数数据来生成第一内积值和第二内积值,该公共系统参数数据与客户端计算设备用于生成第一查询向量和第二查询向量中的加密数据的加密密钥相对应。

在进一步的实施例中,公共系统参数数据被存储在不可信服务器计算设备的存储器中。

在进一步的实施例中,公共系统参数数据被包括在从客户端计算设备接收到的搜索令牌中。

在进一步的实施例中,处理器进一步被配置成:使用功能隐藏内积加密操作和公共系统参数数据来生成第一内积值,该第一内积值等同于第一查询向量的明文内容和第一非叶向量的明文内容的点积的数值,其中功能隐藏内积加密操作不向不可信服务器计算设备揭示第一查询向量和第一非叶节点向量的明文内容。

在进一步的实施例中,第一模糊度参数对应于:|w|-q-q-ed,其中|w|是搜索关键字的长度,q是用于形成加密树的预定q-gram数量,并且ed是由客户端计算设备作为搜索令牌的部分而生成的数字编辑距离量,并且第二模糊度参数对应于ulen+q+q*ed,其中ulen是预定最大关键字长度。

在进一步的实施例中,第一预定相似度阈值和第二预定相似度阈值两者为零,响应于第一内积值具有正数值,第一内积值超过第一预定相似度阈值,并且响应于第二内积值具有正数值,第二内积值超过第二预定相似度阈值。

本公开基于“服务器过滤然后用户验证”的策略而呈现了安全且有效的模糊对称可搜索加密方案。所提出的方案是通过将被称为过滤树的新数据结构和功能隐藏内积加密的新应用进行整合而构建的。本公开呈现了一种过滤树搜索索引数据结构,该结构是基于关键字的长度和q-gram集合的扩充的树,并且使得能够在模糊搜索期间有效检索类似关键字。本公开呈现了一种通过使用功能隐藏内积加密(ipe)来在过滤树中实现隐私保护比较的有效方法。本公开还呈现了一种基于隐私保护过滤树和“服务器过滤然后用户验证”的策略的有效模糊对称可搜索加密(sse)方案。

附图说明

图1是使得可信客户端计算设备能够将加密模糊关键字搜索查询发送到不可信服务器计算设备的系统的示意图,其中不可信服务器计算设备在不能够识别加密过滤树搜索索引的明文内容或识别从可信客户端计算设备接收到的搜索查询的明文内容的情况下执行模糊搜索操作。

图2是用于生成加密过滤树搜索索引并且使用加密过滤树搜索索引来执行模糊关键字搜索的过程的框图。

图3是描绘了过滤树搜索索引的图示,可信客户端计算设备生成该过滤树搜索索引来执行模糊搜索操作。

图4是基于图3的过滤树搜索索引的加密过滤树搜索索引的图示,可信客户端计算设备生成该加密过滤树搜索索引并将其传输到不可信服务器,以使得不可信服务器能够使用从客户端接收到的加密搜索查询来执行对加密过滤树搜索索引的搜索。

图5a是用于将搜索查询与过滤树搜索索引中的非叶节点进行比较的向量的示例。

图5b是用于将搜索查询与过滤树搜索索引中的叶节点进行比较的向量的示例。

图5c是用于将搜索查询与过滤树搜索索引中的关键字的长度进行比较的向量的示例。

具体实施方式

出于促进理解本文中描述的实施例的原理的目的,现在参考以下书面说明书中的附图和描述。不意图由参考文献对本主题的范围进行限制。本专利还包括对所说明的实施例的任何更改和修改,并且包括所描述的实施例的原理的进一步应用,如本文档所属领域的技术人员通常会想到的那样。

下面阐述了涉及本文中描述的系统和方法的定义。如本文中所使用的,术语“文件”指代可以被加密并存储在不可信服务器计算设备的存储器中的任何结构化数据集合。文件的示例包括人或机器可读的文本和二进制数据、图像数据、视频数据、音频数据、以及存储在数字计算设备的文件系统中的其他文档。文件的附加示例包括例如存储在关系数据库内的表的个别行或其他子集、或者结构化数据存储中的其他对象。

如本文中所使用的,术语“关键字”指代与被包含在一个或多个文件中的值相对应的数据集合。搜索过程识别文件中的值。特别地,关键字对应于覆盖预定范围的值,该预定范围诸如数字范围、字母范围或作为搜索查询的主体的数据值的任何其他集合。“明文”或“未加密的”关键字指代以机器或人类可读格式存在的值本身,而“密文”或“加密的”关键字指代使用明文数据和密码密钥、使用预定加密过程而生成的加密数据集合。

如本文中所使用的,术语“可信的”指代具有对一个或多个密码密钥的访问的计算设备,该密码密钥使得计算设备能够对明文数据进行加密和解密。在下面描述的实施例中,客户端计算设备是“可信的”计算设备,并且服务器计算设备是“不可信的”计算设备。可信客户端计算设备生成加密过滤树搜索索引,并且针对加密过滤树搜索索引生成加密的模糊关键字搜索查询。不可信服务器计算设备存储加密过滤树搜索索引,并且使用从可信客户端计算设备接收到的加密搜索查询来执行搜索。然而,不可信服务器计算设备不能够确定加密过滤树的明文内容,也就是说,不可信服务器不能确定存储在加密过滤树中的关键字的内容、或不能确定包括关键字长度以及存储在加密过滤树中的q-gram信息的其他信息。附加地,服务器还不能够确定从可信客户端计算设备发送的加密搜索查询的明文内容,也就是说,不可信服务器不能确定在来自可信客户端计算设备的模糊搜索查询中使用的明文关键字。

如本文中所使用的,术语“q-gram”指代较大字符串s内的可用于构造该字符串s的连续子字符串长度。集合gm(q,s)被定义为q-gram对的集合以及出现的次数。例如,给定字符串s=“hello”,1-gram集合(即,q=1)为gm(1,s)={(e,1),(h,1),(l,2),(o,1)},作为示例,其按字母次序而呈现。在本文中描述的示例中,字符串集合s包括由英语字母(26个字母,并且忽略大写字母)形成的字符串,并且关于q-gram,其中q=1(1-gram)。这意味着字母表的每个字母都被视为单独的标志,并且集合gm(q,s)包括存在于过滤树搜索索引层次结构内的单个字符串s中或字符串的较大组中的每个字母的计数。然而,本领域技术人员将认识到,用于搜索索引和搜索查询两者的关键字字符串可以包括除标准英语字母之外的标志,包括非英语字母、诸如中文之类的语言的语标、数字和标志、或者更一般地被编码为二进制标志的序列的任何数据集合或任何其他合适的编码技术,这意味着并不严格要求“关键字”是传统人类语言中的单词。此外,可替换实施例可以使用其中q>1的q-gram,以使用两个或更多个标志的序列而不是个别标志作为用于使用本文中描述的实施例形成模糊搜索索引的基础来执行模糊搜索。

本领域已知的合适的对称密钥加密方案的一个实际示例是高级加密系统(aes)方案。如下面更详细描述的,可信客户端计算设备生成多个对称加密/解密密钥,这些密钥仅被存储在可信客户端计算设备的存储器中,并且不与任何服务器计算设备或其他不可信计算设备共享。

图1描绘了系统100的一个实施例,系统100包括可信客户端计算设备(“客户端”)104和不可信服务器计算设备154(“服务器”),其中图1的说明性示例包括不可信服务器计算设备154。客户端104通过数据网络140通信地连接到服务器154。数据网络140例如是局域网(lan)、广域网(wan)、或两个或更多个lan和wan网络的组合,它们实现了客户端104与服务器154之间的双向通信。然而,在其他实施例中,网络140可以是直接经由例如通用串行总线(usb)连接或其他合适的外围互连标准来连接两个计算设备的i/o通道。更一般地,网络140提供了防止服务器154中的处理器158访问存储在客户端计算设备104的存储器120中的密码密钥128或其他非公共数据所需的物理和逻辑分离。

在系统100中,客户端计算设备104是“可信的”计算设备,这意味着客户端104具有对下面更详细地描述的密码密钥128的访问。密码密钥128使得可信客户端104能够:对数据进行加密,该数据包括用于针对加密文件内的关键字进行搜索的文件和搜索索引数据两者;以及对任何加密数据进行解密。服务器154被认为是“不可信的”,这是因为服务器154不具有对密码密钥128的访问,并且服务器154不应当获得对过滤树模糊搜索索引174或加密文件数据178中的任一个中的明文(未加密)数据的访问。

在本文中描述的搜索操作期间,服务器154从客户端104接收包括具有多个加密向量的令牌的搜索查询消息,处理器158使用该加密向量来在加密过滤树搜索索引174中执行模糊搜索。在不能够确定在过滤搜索树搜索索引174中加密的明文数据、以及在从客户端计算设备接收到的搜索令牌中编码的明文数据的任何内容的情况下,服务器150识别加密过滤树搜索索引174中满足模糊搜索令牌的要求的加密关键字,该任何内容包括用于模糊搜索查询的关键字的明文、以及参数数据(诸如,调整模糊搜索查询的范围的所选ed参数)两者。

客户端计算设备104是数字计算设备,其包括处理器108、一个或多个输入/输出(i/o)设备112、网络接口设备116和存储器120。处理器108是数字逻辑设备,其包括例如一个或多个中央处理单元(cpu)核、图形处理单元(gpu)核、数字信号处理(dsp)单元、以及任何其他合适的数字逻辑设备。在一些实施例中,处理器108包括多个分立的处理设备,诸如分离的cpu和gpu组件,而在其他实施例中,处理设备在片上系统(soc)配置中被集成到单个数字逻辑设备中。i/o设备112包括例如键盘、鼠标、触摸输入设备、语音输入设备和音频/视频输出设备,它们使得用户能够输入命令以控制客户端104并且从客户端104接收输出信息。特别地,客户端104在被存储在不可信服务器154中的加密数据文件中执行搜索,并且i/o设备112使得用户能够提供用于模糊关键字搜索的关键字,并且从客户端104接收具有搜索结果的输出。网络接口设备116例如是有线或无线网络适配器,其通过数据网络140将客户端104通信地耦合到服务器154。

存储器120包括一个或多个数据存储设备,该数据存储设备包括诸如磁性、光学或固态驱动器之类的非易失性数据存储设备、以及诸如静态和动态随机存取存储器(ram)之类的易失性数据存储设备。在图1的配置中,存储器120保存所存储的程序指令数据124、密码密钥数据128、以及针对明文过滤树搜索索引的临时存储器存储装置132,该存储装置132在可信客户端104对过滤树搜索索引数据进行加密并将其传输到不可信服务器154之前存储过滤树搜索索引数据。所存储的程序数据124包括一个或多个软件程序,该软件程序使得客户端104能够执行本文中所描述的操作,包括但不限于:对文件、关键字和搜索索引数据进行加密和解密;生成过滤树搜索索引以实现模糊搜索;基于搜索关键字来生成搜索查询令牌;以及对从服务器154接收到的搜索结果和加密文件进行解密。

密码密钥128包括具有预定密钥大小(例如,128位或256位)的至少一个秘密数据集合,其仅对于客户端104是已知的,并且对服务器154或其他第三方不是已知的。处理器108使用在本领域以其他方式已知并且未在本文中进一步详细描述的安全密钥生成过程来生成密码密钥。客户端104使用在本领域以其他方式已知的用于对数据进行安全加密和解密的对称加密和解密方案(诸如,高级加密系统(aes)),以对文件数据、以及搜索索引中存储的加密关键字进行加密和解密。附加地,可信客户端104中的处理器108执行功能隐藏内积加密,以生成加密过滤树搜索索引的结构,并且针对加密搜索索引生成加密搜索查询令牌。如本文中更详细地描述的,可信客户端104使用对称功能隐藏内积加密方案,来对过滤树搜索索引进行加密,并且对一个或多个搜索查询中的搜索令牌进行加密。本文中描述的过滤树搜索索引和对称内积加密方案使得可信客户端计算设备104和不可信服务器计算设备154能够针对关键字执行模糊搜索,其中过滤树搜索索引中的关键字的明文内容和搜索令牌中的明文搜索关键字信息不会被揭示给不可信服务器154。

不可信服务器计算设备154是数字计算设备,其包括处理器158、网络接口设备162和存储器170。处理器158、网络接口设备162和存储器170在结构上分别类似于客户端104的处理器108、网络接口116和存储器120,尽管在一些实施例中,服务器154包括比客户端104更多的计算和存储容量,以使得单个服务器154能够向均以与图1中的客户端104相同的方式配置的大量客户端提供服务。

在服务器154中,存储器170保存所存储的程序指令172、加密过滤树搜索索引数据174、可选地加密文件178、以及可选地公共系统参数数据集合180。服务器154执行所存储的程序数据172以实现本文中描述的操作,包括但不一定限于:基于从客户端104接收到的加密搜索令牌来处理搜索查询,以使用加密过滤树搜索索引174来执行模糊搜索,并且从加密过滤树搜索索引174返回加密的搜索结果。服务器154可选地处理来自客户端104的文件请求,以将所选的加密文件数据178传输到客户端104。服务器154还存储从客户端104接收到的加密过滤树搜索索引数据174和加密文件数据178。

图2描绘了用于生成加密过滤树搜索索引并使用加密过滤树搜索索引在对称可搜索加密系统中执行模糊搜索的过程200。在以下描述中,对执行功能或动作的过程200的引用指代至少一个计算设备中的至少一个处理器执行所存储的程序指令以执行该功能或动作的操作。出于说明性目的,结合图1的系统100来描述图2的过程200。

过程200是模糊可搜索对称加密(fsse)方案的实施例。特别地,过程200实现了四个操作,包括密钥生成、加密搜索索引生成、加密模糊关键字搜索令牌生成、以及模糊关键字搜索操作,该搜索操作使用加密的搜索令牌从加密搜索索引返回加密的结果,而不向执行该搜索操作的不可信计算设备揭示关于搜索索引或令牌的内容的明文信息。这些操作还被称为:

1.(mk,paramsetup:给定安全参数,数据所有者运行该算法以生成对称秘密密钥mk和公共系统参数param。密钥mk是对称秘密密钥,其也被称为“主”密钥,这是因为可信客户端计算设备104使用密钥mk来生成附加的对称密码密钥skx,该对称密码密钥skx用于对搜索索引中的元素进行加密,如在下面更详细地描述。为了简单起见,我们隐含地假设以下算法将param视为输入的部分。可信客户端生成秘密密钥mk和公共系统参数param。不可信服务器从不获得对秘密密钥mk的访问,尽管不可信服务器有意地接收公共系统参数param数据,该数据在功能隐藏内积加密操作中使用,功能隐藏内积加密操作将在下面进一步详细描述。

2.(索引,edb)buildindex(构建索引)(skx,db):给定要被外包(outsource)的数据集合db,数据所有者运行该算法以生成安全索引和加密文件集合edb。特别地,关键字的语料库(corpus)可以是经受模糊搜索的数据集合db。在一些实施例中,加密数据进一步包括加密文件的标识符,该加密文件包括搜索索引中的关键字,尽管模糊搜索识别关键字本身。

3.令牌gentoken(生成令牌)(mk,wq):给定所查询的关键字wq,数据所有者运行该算法以使用主密钥mk来生成加密搜索令牌。可信客户端104生成加密搜索令牌,并且将该加密搜索令牌传输到不可信服务器154。

4.结果search(搜索)((sk,wq),(令牌,索引,edb)):将令牌、索引、edb视为输入的不可信服务器154以及将sk、wq视为输入的可信客户端104执行模糊搜索,以识别搜索索引中与加密搜索关键字wq类似的类似加密关键字。不可信服务器将来自搜索索引的加密关键字结果传输到客户端以用于解密,并且在一些实施例中,加密条目还包括针对包括关键字结果的加密文件的标识符,以使得可信客户端计算设备能够检索包含来自模糊搜索操作的关键字的加密文件。

过程200开始于可信客户端计算设备104生成密码安全对称密钥mk和公共系统参数数据param,它们使得可信客户端能够对数据进行加密,并且生成本文中所描述的加密过滤树数据搜索索引(框204)。在一个实施例中,可信客户端计算设备104使用已知的对称密钥密码密钥生成技术,来以安全的方式生成具有足够密钥长度(例如,128位或256位)的对称密钥sk,以便为加密数据提供实际的密码安全性,这防止了不可信服务器154以实际的方式来确定加密数据的明文内容。公共系统参数数据param是如下一组数据:该组数据使得不可信服务器154能够在两个加密向量之间执行功能隐藏内积加密操作以生成数字内积值,该数字内积值是将在相同向量的明文版本之间生成的相同值,其中功能隐藏内积加密操作不向不可信服务器154揭示任一个向量的明文内容。如下面进一步详细描述的,过程200中的两个加密向量包括:一个向量,其包含加密过滤树搜索索引的非叶节点或叶节点中的加密数据;以及另一个向量,其包含作为搜索令牌的部分的加密数据,可信客户端104将该搜索令牌传输到不可信服务器154。可信客户端计算设备104将密钥mk和其他密码密钥128存储在存储器120中。处理器108使用密码密钥128,该密码密钥128既用于对被发送到不可信服务器计算设备154的过滤树搜索索引数据和搜索令牌中的数据进行加密,又用于对可信客户端计算设备104从不可信服务器计算设备154接收到的加密模糊搜索结果和加密文件进行解密。

随着可信客户端计算设备104生成加密过滤树搜索索引(这是上面描述的buildindex函数),过程200继续(框208)。客户端计算设备104使用被包括在搜索中的关键字的语料库,其中关键字是例如被包括在加密文件数据中的可搜索术语。本申请的说明性实施例包括四个搜索关键字的语料库:(“sum”,“marry”,“hello”,“world”),尽管可替换的过滤搜索树包括不同的关键字,并且如上所描述,关键字可以包括不同的可搜索标志集合,并且可能不是诸如英语之类的标准语言中的“单词”。

在过程200期间,客户端计算设备104生成过滤搜索树,作为例如具有多个节点的二叉树,该多个节点从单个“根”节点开始,该单个“根”节点直接地、或通过一层或多层中间非叶节点连接到一个或多个“叶”节点。每个节点由两个向量形成,该两个向量具有:gm向量,其对q-gram标志(其中q=1,并且该标志是本文中的说明性示例中的文本字母)在关键字中出现的频率进行编码;以及len向量,其对关于有多少来自关键字的q-gram的长度信息进行编码。非叶节点存储关于树中所有的子叶和非叶节点的聚合信息。叶节点存储单个关键字的信息,并且在本文中描述的实施例中,叶节点包括以加密形式的个别关键字。

图3描绘了可信客户端计算设备104在过程200期间基于使用26个标志的集合的样本语料库(“sum”,“marry”,“hello”,“world”)以及q=1的q-gram模型而生成的搜索树300,该26个标志与英文字母表的字母相对应。在过程200期间,可信客户端计算设备中的处理器108基于在搜索索引中编码的明文关键字来生成叶节点。然后,处理器108生成利用叶节点对而开始的非叶节点,以生成非叶节点305和306,并且随后基于非叶节点305和306的内容来生成根节点。在至少一些实施例中,叶节点301-304以随机化的(例如,不按字母顺序排列或以任何其他预定布置而组织)次序而布置,以防止不可信服务器计算设备154能够基于加密过滤树搜索索引的结构来推断出关于过滤树中的关键字或其他元素的明文内容的信息。

图3的树300被称为“过滤”搜索树,这是因为所有的非叶节点(根节点307和中间节点305和306)包括关于每个非叶节点下的所有子节点的聚合信息。如下面进一步详细描述的,如果非叶节点不满足模糊查询的不等式比较,则模糊搜索操作可以在非叶节点处停止而不必完全地遍历子节点,这是因为非叶节点包括关于所有子节点的聚合的标志gm和关键字长度len信息,因此搜索操作过滤掉子节点,这是由于如果更高级别的非叶节点不满足该不等式,则没有子节点将会与该模糊搜索匹配。

作为示例参考叶节点303,处理器108生成gm向量gm2,其包括针对关键字“marry”中的每个字母的条目,该条目与每个标志的出现次数相关联(对于“a”、“m”和“y”中的每一个为1,并且对于“r”为2)。len向量len2存储关键字的q-gram长度,对于过滤树300的q=1示例中的五个字母的单词而言,该长度为5。图3描绘了在gm向量中编码的信息,并且在下面结合图5b描述了针对叶节点的gm向量的更精确结构。

作为示例参考中间非叶节点305,每个非叶节点包括gm向量和len向量,但是代替于存储关于个别关键字的数据,非叶节点存储:向量gm,其具有与该非叶节点的所有子节点中的标志的出现相对应的数据;以及len向量,其存储与该非叶节点的所有子节点的长度相对应的数据。特别地,非叶节点305具有gm5,gm5包括针对来自子节点302的“a”、“r”和“y”的条目、针对另一个子节点301中的关键字“sum”的“u”和“s”的条目、以及针对存在于叶节点301和302两者的关键字中的字母“m”的条目。要注意的是,向量gm5中的数值与子节点中的任何单个关键字中的标志的最大出现次数相对应。因此,向量gm5包括条目(r,2),这是由于“r”在“marry”中出现两次(但在叶节点301的关键字“sum”中出现零次),但是gm5包括针对字母“m”的条目(m,1),即使“m”在叶节点301和302两者的关键字中出现,这是因为对于“m”在节点301和302的任何单个关键字中的最高出现频率仍然仅为1。非叶节点305还包括len向量len5,len5包括针对所有子节点中的关键字的长度的聚合数据,对于叶节点301中的3个字母的关键字和叶节点302中的5个字母的关键字而言,len5为{3,5}。

在过程200期间,可信客户端计算设备中的处理器108生成包括过滤树(诸如,图3的树300)中的所有的叶节点和非叶节点直到单个根节点(图3中的节点307)的过滤树。在过滤树300中,处理器108生成根节点307、另一个gm向量以及len向量,该另一个gm向量包括关于整个过滤树300中的标志的所有出现的聚合数据,该len向量包括关于过滤树中的所有关键字长度的聚合数据。在过程200期间,可信客户端计算设备104中的处理器108生成过滤树搜索索引的明文版本,并且将过滤树搜索索引的至少部分作为临时明文过滤树数据132而存储在存储器120中。客户端计算设备104使用下面描述的向量结构来生成过滤树搜索索引节点,并且客户端计算设备在将加密过滤树搜索索引传输到不可信服务器计算设备154之前,对过滤树搜索索引的节点中的向量结构的内容进行加密。

图4和图5a-图5c描绘了可信客户端计算设备104基于图3的过滤树搜索索引300生成的加密过滤搜索树结构。图4描绘了还被称为“加密树”的加密过滤树搜索索引400,其对应于来自图3的过滤树搜索索引300。加密树400包括与图3的未加密的树300相同数量的节点和相同的节点结构,并且节点401-407中的每一个包括分别与未加密的过滤树300中的节点301-307相关联的相同数据元素的加密表示。图5a-图5c更详细地描绘了非叶和叶节点的向量结构。

图5a描绘了被标记为xgmnon-leaf的向量504,向量504存储针对过滤树中的任何非叶节点(诸如,加密过滤树搜索索引400中的非叶节点405-407)的gm数据。向量504包括被标记为x1和x2的两个串联(concatenate)字段。字段x1对存储在非叶节点中的每个字母的出现次数进行编码。字段x1进一步被划分为ugm集合,其中ugm是过滤树搜索索引中的关键字中的任一个中的任何q-gram(例如,字母)的最大出现频率。在图3和图4的示例中,ugm=2,这是因为字母“r”和“l”在单个关键字中出现两次,而存在于关键字中的所有其他字母仅出现过一次。因此,字段x1包括总共26×2=52个元素,这些元素针对26个字母的字母表中的标志的两个完整集合。可信客户端计算设备104中的处理器108将字段x1的每个子集中的元素设置为第一数值(例如,1),如果对应于该元素的标志存在于针对该节点的gm向量中的话,同时所有的其余元素被设置为第二数值(例如,0)。在图5a的示例中,向量504包括条目的两个集合,在第一集合中,每个条目对应于出现一次的标志[a-z],或者对于出现两次直到针对任何标志的最大出现次数ugm的标志[a-z]而言,条目存在于第一集合和第二集合两者中。

使用来自树400的节点407作为示例,在字段x1的两个集合中存在针对字母“l”和“r”两者的条目,这是由于非叶节点407包括示出了使用这两个字母两次(ugm=2)的关键字(“hello”和“marry”)的聚合数据。其余字母(“a”、“e”、“d”、“h”、“o”、“s”、“m”、“u”、“w”和“y”)仅被表示在字段x1的第一集合中,这是由于这些标志中的每一个在任何单个关键字中最多仅出现一次。与仅出现一次的字母相比,在针对字母“l”和“r”的向量中将两个不同的元素设置为1增加了这些字母在下面描述的模糊匹配不等式操作中的总权重,并且更一般地说,在模糊匹配过程期间,该向量的结构为更频繁地出现在关键字中的标志提供更高的权重值。字段x2被指派固定数值-1,其用作改变对应搜索令牌向量508(ygmnon-leaf)中的模糊度参数的数字符号的乘数,这将在下面更详细地描述。

图5b描绘了被标记为xgmleaf的向量512,向量512存储针对过滤树中的叶节点(诸如,加密过滤树搜索索引400中的非叶节点401-404)的gm数据。向量504包括被标记为x1、x2和x3的三个串联字段。字段x1具有与来自上面在图5a中描述的向量504的字段x1相同的结构,但是在叶节点中,字段x1仅对存储在单个叶节点中的关键字中的标志的出现进行编码。特别地,对于过滤树中的所有节点向量而言,[a-z]值的集合的数量(在图3和图4的示例中总共52个条目的情况下为2个集合)是相同的,即使个别节点(诸如,叶节点)可以对不具有占据了字段x1中的所有集合的字母出现的关键字进行编码,诸如在叶节点401中,其中关键字“sum”仅包括该关键字中的每个字母的单个出现。向量512的字段x2包括与存储在叶节点中的关键字相对于预定最大关键字长度(ulen)的长度(|kwv|)相对应的编码值,其中ulen表示存储在过滤树搜索索引中的最长关键字的长度。字段x2具有被设置为第一值(例如,0)的ulen条目,其中ulen-|kwv|处的单个条目被设置为第二值(例如,1)。第三字段x3具有单个值(1),其对应于与搜索令牌的第二查询向量516(ygmleaf)中的第二模糊度参数相对应的预定乘数,这在下面更详细地描述。

图5c描绘了被标记为xlen的向量520,向量520存储过滤树的非叶和叶节点两者(诸如,加密过滤树搜索索引400中的节点401-407中的每一个)中的关键字长度数据。xlen向量包括具有ulen条目的单个字段xl,其中每个条目具有两个值(例如,0和1)中的一个,以指示该节点是对具有给定长度的关键字进行编码(1)还是不进行编码(0)。在图3和图4的过滤树搜索索引中,xlen向量具有总共五个(5)元素,这是由于最长关键字具有五个条目。对于非叶节点,xlen向量对子节点中的每个关键字的长度进行编码(例如,对于过滤树400中关键字长度为3和5的根节点407而言,该向量为[0,0,1,0,1])。对于叶节点,xlen向量对存储在叶节点中的关键字的长度进行编码。要注意的是,在某些情况下,xlen向量包括可能与任何关键字都不对应的关键字长度的条目,诸如与过滤树中的任何关键字都不匹配的关键字长度4。

出于说明性目的,图5a-图5c描绘了在过滤搜索树400的非叶和叶节点中形成的gm和len向量的明文内容。在过程200期间,可信客户端计算设备104对过滤搜索树中的向量和存储在叶节点中的关键字进行加密,并且将加密的过滤树搜索索引传输到不可信服务器154,以防止不可信服务器154能够确定关键字的明文内容或长度(框212)。可信客户端计算设备104使用标准对称加密算法(诸如,利用对称加密密钥的aes)来对存储在叶节点中的关键字的内容、以及在一些实施例中对包含每个关键字的加密文件的文件标识符集合进行加密。至少在一些实施例中,本文中描述的功能隐藏内积加密过程中使用的主密钥mk也适合于与标准对称加密方案一起使用,以对关键字和文件进行加密,尽管在许多实际实施例中,可信客户端104生成一个或多个分离的对称密钥,以对关键字和文件数据进行加密和解密。可信客户端104将分离的对称密钥128存储在存储器120中。关键字本身的加密内容作为模糊搜索过程的结果而返回到可信客户端计算设备104,但是不可信服务器154使用加密过滤树搜索索引来执行模糊搜索,而不是在搜索过程中直接使用加密关键字数据。

可信客户端计算设备104使用本领域一般已知并且在过程200的上下文中在此被解释的功能隐藏内积加密(ipe)过程来对过滤树内的向量进行加密。为了对搜索索引向量进行加密,可信客户端计算设备使用主密钥mk来生成针对x向量的子密钥skxgenkey(生成密钥)(mk,x)。子密钥与每个明文向量的内容相联系,因此可信客户端计算设备104针对与过滤树中的节点相关联的每个向量(gm和len)生成不同的子密钥。通过将主密钥mk以及非叶向量xgmnon-leaf、叶节点向量xgmleaf、或长度向量xlen中的每一个视为输入,该算法输出功能秘密密钥skx。功能秘密密钥skx是向量的加密表示,其仍然使得不可信服务器能够使用由不可信服务器计算设备154执行的以下函数zdec(param,skx,cty)、使用如下各项来执行具体的内积操作:针对搜索令牌中的另一个向量y的加密向量数据(cty);与加密过滤树中的向量相对应的加密向量数据skx;以及与如上所描述的主密钥mk一起由客户端生成的公共系统参数数据param。z的值在数值上等同于原始未加密向量的内积(z=<x,y>),其中在至少一个实施例中,“内积”是在相等长度的两个向量之间执行的点积操作的标量数值输出(例如,对于两个向量x和y,每个向量具有五个元素:z=x1y1+x2y2+x3y3+x4y4+x5y5)。功能隐藏内积加密操作使得不可信服务器154能够仅使用param、skx、cty作为输入来生成值z,并且功能隐藏内积加密过程不揭示原始x和y向量中的任何元素的明文内容。如下面进一步详细描述的,加密过滤树搜索索引的结构和加密搜索令牌使得不可信服务器计算设备154能够执行内积加密操作以生成标量值,这等同于将搜索令牌的内容与加密过滤搜索树的内容进行比较的不等式操作。

可信客户端计算设备104使用数据网络140将加密过滤树数据(包括针对加密过滤树中的每个节点的加密向量、加密关键字以及可选地公共系统参数数据)传输到不可信服务器计算设备154。不可信服务器计算设备154将加密过滤树搜索索引数据174存储在存储器170中,以便响应于可信客户端计算设备104向不可信服务器计算设备154传输的随后的搜索查询令牌而执行模糊搜索。在一些实施例中,可信客户端计算设备104还将公共系统参数数据param传输到不可信服务器计算设备154,并且该不可信服务器计算设备将param数据180存储在存储器170中以供在随后的模糊搜索操作中使用。在一些实施例中,可信客户端计算设备104还将加密文件传输到不可信服务器计算设备154,该加密文件与加密文件178一起被存储在存储器170中。

随着可信客户端计算设备104生成加密搜索令牌并将该加密搜索令牌传输到不可信服务器计算设备154,过程200继续(框216)。加密搜索令牌包括针对模糊关键字搜索查询而编码的信息,可信客户端计算设备104执行该模糊关键字搜索查询,以针对存储在不可信服务器154中的加密过滤树搜索索引数据174中的关键字进行搜索。可信客户端104开始于输入搜索关键字,该输入搜索关键字可以但通常不完全与存储在加密过滤树搜索索引中的关键字之一匹配。如图5a-图5c中所描绘,可信客户端计算设备104生成向量ygmnon-leaf、ygmleaf和ylen的集合,它们被加密并且用于搜索不可信服务器154中的加密过滤搜索树。

参考图5a,被标记为ygmnon-leaf的向量508包括串联字段y1和y2。y1是与搜索关键字中的标志的出现相对应的字段,并且是使用相同数量的条目(例如,对于图3和图4的实施例而言,是2×26=52个条目)而编码的,如上面关于向量504所描述的字段x1那样。可信客户端104基于搜索关键字中的出现标志(字母)来生成字段y1。向量xgmnon-leaf和ygmnon-leaf两者包括相同数量的元素。

可信客户端104使用第一模糊度参数fuzz1在向量508中生成第二字段y2。第一模糊度参数在数值上被定义为:|w|-q-(q·ed),其中|w|是搜索关键字的长度,q是用于过滤树的q-gram(例如,在本文中使用的示例中,q=1),并且ed是数字编辑距离值,它是调整搜索的广度或“模糊度”的数字参数。更详细地,ed是在执行模糊搜索时影响不等式比较的结果的数字量。一般而言,较大的数字ed值增加了模糊搜索的范围,这是由于在模糊搜索中,过滤树搜索索引中有较大数量的节点满足搜索令牌中的向量与过滤树的节点中的向量之间的预定相似度阈值,而较小的ed值减小了模糊搜索的范围,这是由于过滤树搜索索引中有较少的节点满足搜索令牌中的向量与过滤树节点中的向量之间的预定相似度阈值。

参考图5b,被标记为ygmleaf的向量516包括串联字段y1、y2和y3。y1是与搜索关键字中的标志的出现相对应的字段,并且是使用相同数量的条目(例如,对于图3和图4的实施例而言,2×26=52个条目)而编码的,如上面分别关于向量504和508所描述的字段x1和y1那样。字段y2对应于向量512中的字段x2。y2包括ulen元素的字段,除了与搜索关键字相对于预定最大关键字长度的长度(ulen-|kwv|)相对应的单个元素,ulen元素均被设置为第一值(例如0),其中|kwv|是接收预定数值-1(而不是在向量512的对应字段x2中使用的+1)的搜索关键字的长度。字段y3是具有数值ulen+q+(q·ed)的第二模糊度参数fuzz2。本文中描述的实施例使用单个编辑距离参数ed来执行与非叶节点和叶节点的比较,尽管可替换实施例可以使用不同的编辑距离来遍历过滤树搜索索引的非叶节点,并且在叶节点处执行最终的模糊比较。因为编辑距离和模糊度参数数据仅被包括在搜索令牌中并且不被静态地编码到加密过滤树数据174的结构中,所以系统100可以在不同搜索查询中使用不同模糊度参数来执行过程200。向量xgmleaf和ygmleaf两者都包括相同数量的元素。

参考图5c,被标记为ylen的向量524是针对搜索令牌的长度匹配向量,该向量包括ulen元素,其中每个元素对应于范围1到ulen中的一个关键字长度。可信计算设备104将向量524中的与搜索关键字的确切长度、以及可选地其他关键字长度相对应的元素设置为“1”,以匹配在加密过滤树搜索索引中具有在ylen中指定的长度的关键字。长度向量ylen没有明确的模糊度参数,但是除了与搜索关键字的确切长度相对应的确切匹配之外,可信客户端计算设备104还可以通过将长度向量ylen中的多个值设置为1,来增加或减少搜索关键字与存储在加密过滤树搜索索引174中的关键字的关键字长度之间的长度匹配的模糊度水平。例如,在图5c中,向量524具有被设置为1的三个元素,以使得向量524能够匹配三个不同的关键字长度。向量xlen和ylen两者都包括相同数量的元素。

为了对搜索令牌进行加密,可信客户端计算设备使用主密钥mk分离地对向量ygmnon-leaf、ygmleaf和ylen中的每一个进行加密:ctynon-leafenc(mk,ygmnon-leaf)、ctyleafenc(mk,ygmleaf)、ctylenenc(mk,ylen),其中加密搜索令牌包括cty1和cty2。加密向量数据cty3被包括在过程200的实施例中,该实施例还在模糊搜索过程中使用关键字长度比较。可信客户端计算设备104将加密搜索令牌传输到不可信服务器计算设备154,该加密搜索令牌包括:加密的第一查询向量ygmnon-leaf,其包括与搜索关键字中的标志的出现相对应的加密数据和与第一模糊度参数相对应的加密数据;以及加密的第二查询向量ygmleaf,其包括与搜索关键字中的标志的出现相对应的加密数据、与搜索关键字相对于预定最大关键字长度的长度相对应的加密数据、以及与第二模糊度参数相对应的加密数据。在还执行关键字长度比较作为模糊搜索的部分的过程200的实施例中,可信客户端计算设备104还将加密搜索令牌传输到不可信服务器计算设备154,该加密搜索令牌包括:加密的第三查询向量ylen,其包括与搜索范围中的关键字的至少一个长度相对应的加密数据,该搜索范围对应于搜索关键字的长度。在一些实施例中,可信客户端计算设备104针对如下实施例而在搜索令牌中包括公共系统参数数据param:在该实施例中,在生成加密过滤树搜索索引174的时间处,不可信服务器154没有将param存储在存储器170中。

随着不可信服务器计算设备154从可信客户端计算设备104接收到与搜索关键字相对应的搜索令牌,过程200继续,其中搜索令牌包括分别与向量ygmnon-leaf、ygmleaf和ylen相对应的加密向量数据ctynon-leaf、ctyleaf和ctylen。不可信服务器154使用加密搜索令牌数据和加密过滤树搜索索引174来遍历加密过滤树搜索索引174中的非叶节点(框220)。不可信服务器计算设备154中的处理器158检索加密过滤树搜索索引174中的非叶节点,典型地从根节点(图4中的节点407)开始。如上所描述,非叶节点向量节点包括:与加密树中的非叶节点的所有子节点中的标志的出现相对应的向量xgmnon-leaf的加密数据skx_non-leaf;以及与对应于第一查询向量ygmnon-leaf中的第一模糊度参数的预定乘数相对应的加密数据。

为了利用非叶节点数据和搜索令牌来执行模糊搜索,不可信服务器计算设备中的处理器158基于第一查询向量和第一非叶节点向量的功能隐藏内积加密操作来生成第一内积值。如上所描述,处理器158使用功能隐藏ipe操作来生成z<dec(param,skxnon-leaf,ctynon-leaf),其中输入是公共系统参数数据param、针对非叶节点的加密gm向量数据skxnon-leaf、以及来自搜索令牌的加密向量数据ctynon-leaf。结果z是内积值,其仅仅是与原始未加密向量xgmnon-leaf·ygmnon-leaf的数字点积相对应的数值。模糊搜索中的功能隐藏内积加密不会向不可信服务器154揭示来自原始向量的任何明文数据,即使不可信服务器154仍然生成了将从原始明文向量的点积而生成的相同内积值z,这些明文数据包括:存储在叶节点中的关键字、搜索关键字、第一模糊度参数或第二模糊度参数(在随后的叶节点比较中使用)中的任一个的明文内容。

处理器158将内积值z与第一预定相似度阈值进行比较,该第一预定相似度阈值对应于第一查询向量与第一非叶节点向量的相似度。在系统100和过程200的实施例中,第一预定相似度阈值仅仅为数字零(0)值,并且大于(>)0(或者可替换地,在较不严格的配置中为大于等于(≥)0)的任何z值都超过了预定相似度阈值。然而,在可替换实施例中,相似度阈值的数值可以是除0以外的值,并且本领域技术人员将认识到,在某些配置中“超过”阈值可能意味着产生了在数值上小于而不是大于该阈值的值。

更详细地,产生了z的功能隐藏ipe计算和等同点积操作执行等同于用于模糊搜索的以下不等式的操作:(尽管≥0可以用于较不严格的配置中),其中wq是该查询中的搜索关键字,并且对于本文中描绘的1-gram示例而言,q=1。如在图5a和先前的不等式中可以看到的,除了编辑距离ed之外,搜索中的所有值都被固定为加密树或加密搜索令牌的部分,可信客户端计算设备104可以选择该编辑距离ed来调整针对每个加密模糊搜索查询的第一模糊度参数。ed的作用是增加该不等式左侧上的结果值。较大的ed值意味着,仍然可以组合更多不同的过滤树和搜索查询向量以生成z值,其中z>0(尽管z≥0可以用于较不严格的配置中),而较小的ed值仅返回针对非叶节点的结果,该结果对应于具有与搜索关键字的较高相似度水平的关键字。

gm向量的功能隐藏内积加密操作基于在非叶节点和搜索令牌本身中编码的关键字的标志内容来识别相似度。在图2的实施例中,不可信服务器计算设备154中的处理器158也执行功能隐藏内积加密操作,该操作返回对应于非叶节点的加密长度向量与搜索令牌之间的相似度的结果:zdec(param,skxlen,ctylen)。再次,功能隐藏内积加密操作不会向不可信服务器154揭示存储在过滤树搜索索引中的关键字或搜索令牌中的关键字的长度。如果结果不等于0,则这指示原始长度向量xlen和ylen中的至少两个元素两者都被设置为1,并且节点中的至少一个关键字长度与在搜索令牌向量ylen中指定的关键字长度相对应,并且然后处理器108识别出非叶节点的长度向量满足与搜索令牌的相似度测量。针对加密向量skxlen和ctylen的结果z对应于数学不等式(尽管在使用负数的可替换实施例中,该结果可以是负的非零数字)。过程200的一些实施例可选地从模糊搜索操作中省略了关键字长度的比较。

在过程200期间,不可信服务器计算设备中的处理器158响应于gm和len功能隐藏内积加密操作两者都返回了超过预定相似度阈值的结果(例如,zdec(param,skxnon-leaf,ctynon-leaf)>0,并且zdec(param,skxlen,ctylen)>0)而从非叶节点遍历到子非叶节点(例如,从节点407遍历到节点405和406之一,或者从非叶节点遍历到叶节点)。如果功能隐藏内积加密操作中的任一个产生了不超过该阈值的结果,则处理器158不会从非叶节点遍历到任何附加的子节点(叶节点或非叶节点),这使得不可信服务器计算设备154的有效操作能够避免处理也将无法与模糊搜索匹配的子节点。在一些实施例中,由于兄弟节点之间没有数据依赖性,因此服务器计算设备154并行地从父代非叶节点遍历到子节点(例如,并行地从根节点407遍历到子节点405和405两者),以提高模糊搜索过程的操作速度。

随着不可信服务器计算设备154遍历了加密过滤树搜索索引174直到潜在地到达树中的一个或多个叶节点为止,过程200继续(框224)。如果服务器154因为所有非叶节点都未能超过模糊搜索的相似度阈值而没有到达任何叶节点,则不可信服务器154将空的()搜索结果返回到可信客户端计算设备(框240)。

如果不可信服务器计算设备154在过程200期间到达至少一个叶节点,则过程200以该叶节点继续(框228)。处理器158响应于父代非叶节点的内积值z超过第一预定相似度阈值而在存储器170中的加密树搜索索引174中检索连接到该父代非叶节点的加密树的叶节点。为了利用叶节点数据和搜索令牌来执行模糊搜索,不可信服务器计算设备154中的处理器158基于第二查询向量ctyleaf和对应的加密叶节点向量数据skxleaf的功能隐藏内积加密操作来生成第二内积值。如上所描述,处理器158使用功能隐藏ipe操作来生成zdec(param,skxleaf,ctyleaf),其中输入是公共系统参数数据param、针对叶节点的加密gm向量数据skxleaf、以及来自搜索令牌的加密向量数据ctyleaf。结果z是第二内积值,其仅仅是与原始未加密向量xgmleaf·ygmleaf的数字点积相对应的数值。模糊搜索中的功能隐藏内积加密不会向不可信服务器154揭示来自原始向量的任何明文数据,即使不可信服务器154仍然生成了将从原始明文向量的点积而生成的相同内积值z,该明文数据包括:存储在叶节点中的关键字、搜索关键字和第二模糊度参数中的任一个的明文内容。

处理器158将第二内积值z与第二预定相似度阈值进行比较,该第二预定相似度阈值对应于第二查询向量与第一叶节点向量的相似度。在系统100和过程200的实施例中,第二预定相似度阈值也是数字零(0)值,并且大于(>)0(或者可替换地,在较不严格的配置中为大于等于(≥)0)的任何z值都超过了预定相似度阈值。然而,在可替换实施例中,相似度阈值的数值可以是除0以外的值,并且本领域技术人员将认识到,在某些配置中“超过”阈值可能意味着产生了在数值上小于而不是大于该阈值的值。附加地,分别用于非叶节点和叶节点比较的第一和第二预定相似度阈值不必彼此相等。

更详细地,产生了z的功能隐藏ipe计算和等同点积操作执行等同于用于模糊搜索的以下不等式的操作:(尽管>0可以用于较不严格的配置中),其中wq是该查询中的搜索关键字,kwv是存储在叶节点中的加密关键字,并且对于本文中描绘的1-gram示例而言,q=1。如在图5b和先前的不等式中可以看到的,除编辑距离ed之外,搜索中的所有值都被固定为加密树或加密搜索令牌的部分,可信客户端计算设备104可以选择该编辑距离ed来调整针对每个加密模糊搜索查询的第二模糊度参数。ed的作用是增加该不等式左侧上的结果值。较大的ed值意味着,仍然可以组合更多不同的过滤树和搜索查询向量以生成z值,其中z>0(或者,在较不严格的实施例中z≥0),而较小的ed值仅返回针对非叶节点的结果,该结果对应于具有与搜索关键字的较高相似度水平的关键字。

与非叶节点一样,在图2的实施例中,不可信服务器计算设备154中的处理器158也执行功能隐藏内积加密操作,该操作返回对应于叶节点的加密长度向量与搜索令牌之间的相似度的结果,叶节点的加密长度向量对应于与叶节点一起存储的加密关键字的长度:zdec(param,skxlen,ctylen)。再次,功能隐藏内积加密操作不会向不可信服务器154揭示存储在加密过滤树搜索索引的叶节点中的关键字或搜索令牌中的关键字的长度。如果结果不等于0,则存储在叶节点中的关键字的长度与搜索令牌的加密向量中的大小准则相匹配。

在过程200期间,不可信服务器计算设备154中的处理器158针对在过程200期间从非叶节点到达的任何叶节点来执行上面描述的操作。如果gm和len功能隐藏内积加密操作返回了超过针对叶节点的预定相似度阈值的结果(例如,z,并且),则处理器158识别出存储在叶节点中的加密关键字与模糊搜索匹配。过程200不会向不可信服务器计算设备154揭示加密关键字数据的内容。再次,在可替换实施例中,模糊搜索过程可以省略搜索令牌的搜索范围长度与加密关键字的长度之间的比较。

随着处理器158识别出叶节点中的任一个是否超过了针对gm功能隐藏内积操作的预定相似度阈值(zdec(param,skxleaf,ctyleaf)>0)、超过了针对len功能隐藏内积操作的预定相似度阈值(zdec(param,skxlen,ctylen)>0),过程200继续(框232)。如果叶节点中没有一个超过模糊搜索的相似度阈值,则不可信服务器154将空的()搜索结果返回到可信客户端计算设备(框240)。

然而,如果叶节点中的一个或多个超过了相似度阈值,则不可信服务器计算设备154响应于第二内积值超过了对应于第二查询向量与第一叶节点向量的相似度的第二预定相似度阈值而将存储在叶节点中的加密关键字传输到客户端计算设备104(框236)。可信客户端计算设备104使用对称密钥128来对不可信服务器计算设备154作为模糊搜索查询结果的部分而传输的一个或多个加密关键字进行解密。客户端计算设备104可以例如使用i/o设备112来生成在模糊搜索中识别的经解密的关键字的输出,或者执行附加处理以对包含模糊搜索结果中的关键字的加密文件178进行检索和解密。

如上所描述,过滤树300和400的叶将关键字数据存储为明文(树300)或密文(树400)。在一些实施例中,过滤树的叶还存储针对加密文件178的文件标识符数据,加密文件178被存储在不可信服务器154中、或者被存储在包含特定叶节点的关键字的另一个不可信服务器计算设备上。在一些实施例中,文件标识符被存储在恒定大小的数据结构(例如,填充(padded)数据结构)中,这防止了不可信服务器154基于加密关键字和文件标识符数据结构的大小来确定有多少文件与给定关键字匹配。因此,在一些实施例中,不可信服务器不仅返回与模糊搜索令牌匹配的关键字,而且返回的信息还包括针对一个或多个加密数据文件178的标识符,该加密数据文件178包括来自模糊搜索的关键字结果。客户端计算设备104可选地对包括在模糊搜索的结果中返回的关键字的加密文件进行检索和解密。

在另一个实施例中,不可信服务器154包括分离的静态或动态对称可搜索加密(sse)搜索索引,该索引包括与可信客户端104作为fsse搜索的结果接收到的确切关键字相对应的加密条目。分离的sse搜索索引在本领域以其他方式已知,并且不在本文中进一步详细描述。然后,可信客户端104使用来自模糊搜索的关键字结果来执行附加的确切结果搜索,以识别并且可选地检索包括模糊搜索的关键字结果的加密文件。

如上所描述,系统100和过程200提供了对计算设备的操作的改进。本文中体现的非限制性改进列表使得计算设备能够:既以防止不可信服务器获得关于存储在过滤树搜索索引中的明文数据的信息的方式在加密数据中执行安全模糊搜索操作,又以计算上有效的方式执行模糊搜索,并且使得能够进行如下模糊搜索:其中可信客户端计算设备可以在搜索之间动态地调整搜索的模糊度参数,而不需要修改加密搜索索引以适应具有不同模糊搜索参数的模糊搜索。附加地,对于搜索操作而言,通信开销与加密候选关键字的数量成线性关系,该数量是一常数(小于50),如我们的实现方式所演示的那样。此外,搜索复杂度取决于过滤树加密搜索索引(ftree)相对于不同查询关键字的遍历路径而变化。下面阐述了本文中描述的实施例的计算和通信以及存储复杂度的附加属性,其中m表示存储在加密过滤树搜索索引中的关键字的数量,并且|ct|是通过ipe.enc生成的密文的大小(例如,加密的gm和len向量、连同上面描述的对应加密搜索向量的长度),并且|candidates|(候选者)是候选列表的大小:

将领会到的是,上面描述的和其他的特征和功能的变体或其可替换方案可以被合期望地组合到许多其他不同的系统、应用或方法中。可以随后由本领域技术人员做出各种目前未预见或未预测到的可替换方案、修改、变型或改进,这些也意图在本文中被涵盖在以下权利要求中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1