加密信息检索
文献发布时间:2024-04-18 19:58:30
背景技术
本说明书涉及数据处理和信息检索。特别地,本说明书中所描述的技术和方法描述了用于实现从数据库隐私信息检索(PIR)的技术。
诸如内容分发商的用户设备和内容平台可以查询内容提供商,以便检索由内容提供商存储的信息。然而,在某些情况下,向内容提供商透露关于正在查询什么信息的任何细节不在内容平台的兴趣(interest)中。在其他情况下,向内容平台透露关于被存储在内容提供商的计算系统上的其他信息的任何细节可能不在内容提供商的兴趣(interest)中。
发明内容
通常,本说明书中所描述的主题的一个创新方面可以被体现在包括以下动作的方法中:生成分区的数据库,在其中数据库被划分为碎片,每个碎片具有在逻辑上将每个碎片与其他碎片区分开的碎片标识符,并且每个碎片中的数据库条目被划分为具有在逻辑上将碎片中的每个桶与碎片中的其他桶区分开的桶标识符的桶;由包括一个或多个处理器的服务器从客户端设备接收客户端加密的查询的批,其中,该客户端加密的查询的批包括两个或多个查询,该两个或多个查询各自已经由客户端设备加密并且指定用于客户端加密的查询的碎片标识符;由服务器使用被存储在数据库中的服务器加密的数据的集来处理该客户端加密的查询的批,其中,每个数据库条目是服务器加密的并且能够由相对应的解密密钥解密,其中,该处理包括:由服务器根据客户端加密的查询的碎片标识符对客户端加密的查询进行分组,其中,每个客户端加密的查询的组包括多个查询;由服务器针对每个碎片,在批执行过程中一起执行碎片的客户端加密的查询的组中的多个查询;以及由服务器针对每个碎片生成该客户端加密的查询的组中的多个查询的多个服务器加密的结果,并且由服务器将用于每个碎片的多个服务器加密的结果发送到客户端设备。
该方面的其他实施方式包括相对应的装置、系统和计算机程序,其被配置为执行被编码在计算机存储设备上的方法的各方面。这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。
方法可以包括接收客户端加密的实体标识符的集;由服务器加密该客户端加密的实体标识符的集以创建服务器-客户端加密的标识符的集;以及由服务器将该服务器-客户端加密的标识符的集发送到客户端设备。
方法还可以包括由客户端设备使用该服务器-客户端加密的标识符的集生成查询的集;由客户端设备使用该服务器-客户端加密的标识符的集来生成解密密钥的集;由客户端设备加密查询的集以创建客户端加密的查询的批。
方法可以包括由服务器加密被存储在数据库中的数据的集,其中,对于数据库中的多个条目,每个数据库条目是服务器加密的并且能够由相对应的解密密钥解密,其中,生成分区的数据库包括将每个服务器加密的数据库条目分配给桶。
方法可以包括由客户端设备将由客户端设备使用服务器-客户端加密的标识符的集生成的解密密钥的集应用于多个服务器加密的结果,以向客户端加密的查询透露未加密的结果。
方法可以包括通过将每个桶划分为小的块来生成分区的数据库。
方法还可以包括通过在桶的每个块上执行每个查询来执行多个查询,其通过缩小用于每个查询执行的搜索空间来减少CPU使用和响应时间。
本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。本说明书中所描述的技术和方法描述了用于从数据库检索数据同时保护客户端和服务器隐私的技术。这允许客户端查询服务器,而不向服务器透露关于正被查询的数据的任何细节。同时,当客户端正在查询时,服务器不透露关于未被客户端查询的数据库的内容的任何细节。相比之下,查询服务器的现有技术通常包括加密整个服务器数据库并将加密的数据库提供给客户端以进行查询。该方法需要显著更多的计算资源,因为数据库的大小通常很大。查询服务器的其他方法包括向客户端提供数据库的索引,以及从客户端接收不允许服务器和客户端隐私的索引选择。
在附图和下面的描述中阐述了本说明书中描述的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是内容被分发并被呈现给用户设备的示例环境的框图。
图2是由客户端从服务器检索内容的示例过程的泳道图。
图3是根据服务器加密的标识符生成查询的示例过程的流程图。
图4是由服务器处理查询的示例过程的流程图。
图5是示例计算机系统的框图。
具体实施方式
本说明书涉及数据处理和信息检索。特别地,本说明书中描述的技术和方法描述了用于在保护客户端和服务器隐私的同时从数据库检索数据的技术。例如,如果客户端查询服务器数据库,则客户端不向服务器透露关于正在查询的数据的任何细节(也称为客户端查询隐私)。同时,服务器不向客户端透露关于客户端未查询的数据库内容的任何细节(也称为服务器数据库隐私)。这些技术实现查询的批处理,以提供还保护用户隐私的更有效的信息检索系统。例如,通过确保被查询的服务器不能获知客户端正在查询服务器的关于用户的信息来保护用户隐私,并且还防止客户端获知可能由服务器存储的关于用户的其他信息。
图1是内容被分发并被呈现给用户设备的示例环境100的框图。示例环境100包括网络102,诸如局域网(LAN)、广域网(WAN)、互联网或其组合。网络102连接内容平台106和内容提供商110。示例环境100可以包括许多不同的内容提供商110、内容平台106和用户设备104。
用户设备104是能够通过网络102请求和接收内容的电子设备。示例用户设备104包括个人计算机、移动通信设备、数字助理设备和可以通过网络102发送和接收数据的其他设备。用户设备104通常包括操作系统112,操作系统112主要负责管理设备硬件和软件资源,诸如应用。用户设备104还包括设备存储器120,以基于特定实施方式、应用和用例临时地或永久地存储数据。用户设备104通常包括用户应用116和117,诸如web浏览器或电子邮件客户端,以促进通过网络102的数据的发送和接收,但是由用户设备104执行的本机应用也可以促进通过网络102的内容的发送和接收。在用户设备104处呈现的内容的示例包括网页、文字处理文档、便携式文档格式(PDF)文档、图像、视频以及搜索结果页面和数字广告。
内容平台106是使得能够分发内容的计算平台。示例内容平台106包括搜索引擎、社交媒体平台、新闻平台、数据聚合器平台或其他内容共享平台。每个内容平台106可以由内容平台服务提供商操作。内容平台106可以呈现由一个或多个内容提供商110提供的内容。在上述示例中,新闻平台可以呈现由不同作者创建并由一个或多个内容提供商110提供的内容。作为另一示例,内容平台106可以是数据聚合器平台,其不发布其自己的任何内容,而是聚合和呈现由不同新闻网站(即,内容提供商110)提供的新闻文章。
在一些实施方式中,内容平台106可以将数字内容分发给一个或多个用户。例如,内容平台106可以让一个或多个用户订阅内容平台106和/或向内容平台106注册。作为响应,内容平台106可以从内容提供商110检索数字内容,并将检索到的内容提供给用户的用户设备104。内容提供商110包括以键-值对的形式存储数字内容的数据存储设备(也被称为数据库)。例如,内容提供商110的数据库可以包括多个键,并且对于每个键,包括由内容平台106检索的相对应的值。
在一些实施方式中,内容平台106可以向每个用户分配标识符,使得内容平台可以区分用户。在一些实施方式中,内容平台106可以使用由一个或多个用户和/或用户设备提供的信息作为唯一标识符。例如,内容平台106可以使用由用户提供的电子邮件标识符(email id)、由用户提供的蜂窝电话号码或用户的用户设备104的媒体访问控制(MAC)地址作为唯一标识符。在一些实施方式中,内容平台106可以基于用户的组中的用户的特性将标识符分配给两个或多个用户的组。例如,内容平台106可以基于用户访问的数字内容的上下文中的类似兴趣来向用户的组分配公共标识符。在其他示例中,用户可以被分配到组,并且可以基于具有数字内容的订阅被分配公共标识符。在一些实施方式中,内容平台106可以将多个标识符分配到单个用户。例如,内容平台106可以分配电子邮件标识符和蜂窝电话号码作为用户的标识符。
为了从内容提供商110检索数字内容,内容平台106和内容提供商110实现信息检索技术,该信息检索技术以内容平台106不向内容提供商110透露关于什么信息正在被查询的任何细节的方式确保数据隐私。检索技术还确保内容提供商110不向内容平台106透露关于被存储在内容提供商110的计算系统上的其他信息的任何细节。虽然本说明书涉及内容提供商110和内容平台106,但是本文所讨论的信息检索技术可以由想要以隐私保护方式交换信息的任何两个系统使用。参考图2进一步解释信息检索技术,并且从数据库请求信息的实体被称为客户端,以及维护信息的数据库并且返回被存储在数据库中的信息的实体被称为服务器。
图2是由客户端从服务器检索内容的示例过程200的泳道图。过程200的操作可以例如由客户端202和服务器204实现。过程200的操作还可以被实现为被存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程200的操作。
服务器实现数据库(也被称为服务器数据库),该数据库以键和值之间的映射(称为键-值对)的形式存储数字内容。键可以是用于值的标识符和/或指针,该值是正在被客户端查询的数字内容。数据库可以包括多个键,并且对于每个键,包括对应于该键的相对应的值。例如,服务器可以在数据库中包括多个键,其中每个键可以唯一地标识客户端正在为其从服务器检索内容的客户端的一个或多个用户。
在一些实施方式中,服务器数据库的键-值对的键与由客户端分配到用户的标识符相关联。在查询服务器时,客户端以不向服务器公开标识符的细节的方式向服务器提供包括标识符的查询。如在文档中进一步解释的,服务器可以基于标识符从服务器数据库中选择内容(例如,任何种类的数据),即使对服务器屏蔽了标识符。
客户端202获得唯一标识符(212)。例如,客户端202可以向一个或多个用户提供数字内容。为了唯一地识别一个或多个用户,客户端202可以向一个或多个用户中的每一个分配标识符。在一些实施方式中,客户端202可以使用由一个或多个用户和/或用户设备104提供的信息作为用于一个或多个用户和/或用户设备104的标识符。例如,客户端202可以使用用户设备104的电子邮件标识符(email-id或email地址)、蜂窝电话号码或媒体访问控制(MAC)地址作为唯一标识符。客户端可以是从存储信息或维护数据库的其他系统(例如,服务器系统)请求信息的任何计算系统。
客户端202设备加密标识符(214)。为了防止服务器204以明文访问用户的标识符,客户端202使用确定性和可交换加密技术对标识符进行加密,以生成标识符的加密的形式(称为“客户端加密的标识符”)。通常,可交换加密是一种使得明文能够使用不同实体的公钥被加密多于一次的加密。在该系统中,在加密/重新加密处理之前不需要解密。此外,所得到的密文(也被称为加密文本)可以通过指定的解密技术被解密,而不考虑加密/重新加密过程中使用的公钥的顺序。换句话说,在加密和解密中使用的密钥的顺序不影响计算结果,并且允许一个加密方(例如,客户端202)即使在另一方(例如,服务器)已经对由第一加密方加密的数据应用进一步加密之后也移除其的加密。
客户端202将客户端加密的标识符发送到服务器204(216)。例如,在加密标识符之后,客户端202通过网络102将客户端加密的标识符发送到服务器204。
服务器204对客户端加密的标识符进行加密(218)。在某些实现中,在从客户端202接收到客户端加密的标识符之后,服务器204使用可交换加密技术重新加密(例如,进一步加密)客户端加密的标识符,以生成客户端加密的标识符的加密的形式(被称为“服务器和客户端加密的标识符”)。换句话说,服务器204在客户端加密的标识符上添加另一层加密。注意,服务器204不能访问明文形式的标识符,因为标识符已经由客户端202加密,并且服务器204不具有解密密钥。
服务器204将服务器和客户端加密的标识符发送回客户端202(220)。例如,在生成服务器和客户端加密的标识符之后,服务器204通过网络102将一个或多个用户的服务器和客户端加密的标识符发送到客户端202。
客户端202从服务器和客户端加密的标识符中移除先前的客户端加密(222)。在一些实施方式中,在接收到服务器和客户端加密的标识符之后,客户端202使用技术来解密(或移除)客户端202在步骤214中执行的加密,以为一个或多个用户中的每一个生成“服务器加密的标识符”。注意,客户端202能够移除客户端加密,因为加密技术本质上是可交换的。还要注意,在移除客户端加密之后生成的服务器加密的标识符是由服务器使用可交换和确定性加密技术加密的标识符。换句话说,在客户端202移除被应用到标识符的原始加密之后,标识符保持由服务器加密,并且然后仅是客户端标识符的服务器加密的版本,其被客户端202用来生成将被提交给服务器204以请求与标识符相应的信息的查询。
在一些实施方式中,可以使用不经意伪随机函数(oblivious pseudo randomfunction)(也称为不经意PRF或OPRF)来实现过程200的步骤218-222。不经意PRF是持有伪随机函数(PRF)的密钥的服务器与持有输入的客户端之间的协议。在服务器-客户端交互结束时,客户端了解OPRF在由客户端提供的输入上的输出,而没有其他内容。服务器不了解关于客户端的输入或OPRF输出。
为了促进查询的创建,客户端202为每个服务器加密的标识符生成碎片索引和桶标识符(224)。在某些实现中,客户端202实现哈希技术以生成可以包括碎片索引和桶标识符(也被称为桶id)的查询。参考图3进一步解释生成查询的示例哈希技术。
图3是根据服务器加密的标识符生成查询的示例过程300的流程图。过程300的操作可以例如由客户端202实现,客户端202包括实现本文档中所描述的技术以从其他实体检索内容的任何实体。过程300的操作还可以被实现为被存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程300的操作。
图3解释了使用示例标识符350(john.smith@example.com)生成查询的过程300。在使用过程200的步骤212至222处理标识符350之后,标识符350的服务器加密的标识符360被表示为SERV_ENC{john.smith@example.com}:=adhf8f2g&34!d0sfgn2,其中SERV_ENC是在客户端202移除步骤214的客户端加密之后服务器和客户端加密的标识符的服务器加密,并且“adhf8f2g&34!d0sfgn2”是标识符350的密文。
客户端202对服务器加密的标识符进行哈希运算以生成无符号整数(310)。在一些实施方式中,客户端202可以实现哈希函数,该哈希函数被配置为处理服务器加密的标识符360以生成无符号整数370。这可以被表示为HASH_FN[SERV_ENC{john.smith@example.com}]:=324423510001001110,其中HASH_FN是由客户端202实现的哈希函数,并且“324423510001001110”是无符号整数。哈希函数(也被称为加密哈希函数)可以是实际上不可能反转或颠倒的任何单向函数,并且可以被用于将任意大小的数据映射到固定大小的值。这种哈希函数的示例可以包括MD5信息摘要算法、安全哈希算法1、2和3。
客户端202将无符号整数转换成指定范围内的转换后的数(320)。在一些实现方式中,客户端202可以实现转换函数,该转换函数被配置为处理无符号整数370以生成指定范围内的转换后的数380。由于哈希函数和转换函数对于客户端202和服务器204两者都是已知的,因此使用转换函数生成的转换后的数的范围是预定的。在该示例中,转换后的数380被表示为CONV[HASH_FN[SERV_ENC{john.smith@example.com}]]:=324425,其中CONV是由客户端202实现的转换函数。作为示例,将无符号整数转换为0和9999之间的数的一种方式是使用无符号整数除以10000的余数。
客户端202将转换后的数分成碎片索引和桶id(330)。碎片索引将是0和P-1之间的数字,其中P是碎片的数量。桶id的范围将在0和n/P-1之间,其中n是在步骤320中生成的转换后的数380可以取的最大值。在某些实现中,客户端202将在步骤320中生成的转换后的数380分成两部分,使得第一部分是碎片索引,并且第二部分是桶id。例如,如果n是转换后的数380可以取的最大值,则表示数n所需的比特数是log
回到过程200,客户端202使用过程300来生成用于一个或多个用户的服务器加密的标识符中的每个的查询。例如,如上所述,为每个标识符生成的每个查询将包括使用服务器加密的标识符创建的碎片索引和桶id。
客户端202使用每个服务器加密的标识符生成解密密钥(226)。在一些实施方式中,客户端202可以为服务器加密的标识符中的每个生成解密密钥。例如,客户端202可以实现基于HMAC的提取和扩展密钥导出函数(HMAC-based Extract-and-Expand KeyDerivation Function,HKDF),其是用于将密钥扩展成一个或多个加密的强私钥(secretkey)的基于哈希的消息认证码(hash-based message authentication code,HMAC)加密密钥导出函数(key derivation function,KDF)。例如,客户端202可以使用HKDF来处理服务器加密的标识符以生成解密密钥。
客户端202生成并加密查询(228)。在某些实现中,客户端202使用桶id来生成长度为n/P的指示符向量,其中具有与桶id的索引相等的元素是1,并且其他元素是0(召回P是碎片的数量,n/P是不同桶id的数量)。在一些实施方式中,可以使用公知的压缩技术来压缩指示符向量。在一些实施方式中,客户端202可以使用全同态加密(fully homomorphicencryption,FHE)技术来加密与服务器加密的标识符中的每个相对应的指示符向量,以生成相对应的FHE加密的桶向量。通常,同态加密是一种加密的形式,其允许用户对其加密的数据执行计算而无需首先对其解密。这些得到的计算以加密的形式被保留,当被解密时,其会产生与对未加密的数据执行操作的产生的输出相同的输出。FHE的属性可以包括加法、乘法和吸收(absorption)。为了说明,如果{x}表示x的FHE,则加法{x}+{y}可以产生{x+y}而不透露x、y或x+y。类似地,乘法{x}*{y}可以产生{xy}而不透露x、y或xy,并且吸收{x}*y可以产生{xy}而不透露x。在一些实施方式中,FHE的属性可以包括将加密的向量转换成指定数量的单独加密的值(向量中的每个项一个)而不透露关于向量中的项的任何细节的能力。
在加密指示符向量之后,客户端202可以生成包括碎片索引和相对应的FHE加密的桶向量的查询。该查询可以被表示为FHE PIR QUERY(数据库,查询),其中数据库表示存储键和值的映射的数据存储,即,数据库存储多个键并且对于每个键存储相对应的值。
客户端202将查询发送到服务器204(230)。例如,在生成针对服务器加密的标识符中的每个的查询之后,客户端202通过网络102将查询发送到服务器204。在一些实施方式中,多个查询以批被发送到服务器,使得服务器可以同时处理查询(例如,在批处理中)。
服务器204加密数据库(232)。服务器204可以在接收查询之前的任何时间加密数据库。例如,当服务器204构建数据库或向数据库添加信息时,服务器可以加密正被存储在数据库中的数据。在一些实施方式中,服务器204使用诸如高级加密标准(AdvancedEncryption Standard,AES)的加密技术来加密服务器数据库。例如,服务器204基于使用键-值对的相对应的键和HKDF生成的AES密钥,使用AES加密技术对服务器数据库的每个键-值对的值进行加密。服务器数据库的键-值对中的每个键进一步由使用哈希函数(例如,SHA256)生成的整数(被称为记录键)代替,该哈希函数将键映射到范围[0,n)内的整数,其中n是服务器204和客户端202两者都已知的可调参数。这导致记录键-AES加密的值对代替数据库中的键-值对中的每个。
哈希函数还可以利用加密盐(cryptographic salt),其由在哈希运算之前被添加到键-值对中的每个键的随机比特组成。在某些实现中,加密盐对于客户端202也是已知的,其可以由客户端202在使用FHE技术加密指示符向量以生成相对应的FHE加密的桶向量时使用。
服务器204处理查询(234)。在一些实施方式中,服务器204可以使用优化的批处理来处理查询,其减少了从数据库检索内容所需的资源消耗。该优化的处理可以以通过将数据库拆分成小的块(被称为碎片并被使用碎片索引识别),并在多个计算系统上并行处理它们从而减少从数据库检索内容所需的计算资源来促进并发处理的方式实现。这将参考图4进一步解释。
图4是处理查询的示例过程400的流程图。过程400的操作可以例如由服务器204实现,服务器204包括实现从中检索内容的数据库的任何实体。过程400的操作还可以被实现为被存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程400的操作。
服务器204将数据库划分成P个碎片(402)。例如,通过使用客户端用于导出碎片索引的相同技术根据记录键导出碎片索引。每个碎片可以包括多个记录键-AES加密的值对。
服务器204将每个碎片划分成桶(404)。在某些实现中,服务器204通过使用客户端使用的相同技术导出碎片中的每个记录键的桶id来将每个碎片划分成甚至更小的被称为桶的分区。例如,当转换后的数除以P时,碎片索引和桶id可以分别被计算为余数和整数商。观察到这会产生d碎片至多n/P个桶。
在将每个碎片划分为多个桶之后,记录键-AES加密的值对的AES加密的值被存储在每个桶内,使得记录键-AES加密的值对的记录键索引碎片和碎片内的桶两者。应当注意,服务器204使用与客户端202相同的方法来从服务器数据库中的键-值对中的每个键导出碎片号和桶id。
服务器204组合并串行化加密的值(406)。在某些实现中,服务器204将每个桶的AES加密的值级联到字节串中。例如,如果特定桶包括3个AES加密的值,则3个AES加密的值被一个接一个地级联以生成字节串。服务器204识别AES加密的值的偏移值(字节串的索引位置),并基于相对应的记录键使用诸如AES的加密技术对偏移值进行加密。例如,如果字节串包括统一长度的3个AES加密的值,则服务器基于记录键-AES加密的值对的相应记录键使用AES对字节串中的3个AES加密的值中的每个的偏移值进行加密。在生成加密的偏移值之后,服务器203将加密的偏移值前置到字节串。服务器204还将AES加密的值的数量前置到字节串。在该示例中,服务器204将值3前置到字节串。服务器204进一步将字节串分成每个c个字节的块,其中c是客户端和服务器两者预先已知的整数。该c-字节块可以基于它们在字节串中的相对位置来进一步被索引。例如,如果c=1,则桶B可以被表示为B=[“p”,“q”,“r”,“s”],其中“pqrs”可以是在桶中被分成分别具有索引1-4的c-字节块“p”,“q”,“r”和“s”的字节串。在另一示例中,如果c=2,则桶B可以被表示为B=[“pq”、“rs”、“tu”、“v”],其中“pqrstuv”可以是在桶中被分成分别具有索引1-4的c-字节块“pq”、“rs”、“tu”和“v”的字节串。
对于每个查询,服务器204使用查询的碎片索引来识别碎片(408)。如前面参考过程200的步骤228所提到的,每个查询包括碎片索引和相对应的FHE加密的桶向量。在接收到查询之后,服务器204基于查询的碎片索引来识别特定碎片。例如,如果查询的碎片索引是32,则服务器基于服务器数据库的碎片索引来识别第32个碎片。
对于每个查询,服务器204查询碎片中的每个桶并生成FHE加密的值的列表(410)。在某些实现中,服务器204使用来自查询的FHE加密的桶向量来查询由碎片索引标识的特定碎片的每个桶。例如,如果在使用来自查询的碎片索引识别的碎片中存在32个桶,则服务器204将查询32个桶中的每一个。
为了查询桶,服务器204对来自查询的FHE加密的桶向量执行不经意扩展操作,以获得用于特定桶的FHE加密的值。然后,它在用于特定桶的FHE加密的值和桶中的每个c-字节块之间执行单独的FHE吸收操作。这可以用以下示例在逻辑上解释。
假设在特定碎片中存在4个桶。进一步假设第一桶具有以下块[“A”、“B”、“C”、“D”]。类似地,第二、第三和第四桶分别具有以下块[“E”、“F”、“G”]、[“H”]和[“I”、“J”、“K”]。进一步假设指示符向量是[0,1,0,0]。吸收操作将跨所有四个桶生成具有索引1的块的FHE加密的值,其可以被表示为[0,“E”,0,0]。类似地,跨所有四个桶具有索引2-4的块的FHE加密的值分别是[0,“F”,0,0]、[0,“G”,0,0]和[0,0,0,0]。
在某些实现中,服务器204可以使用跨所有桶的FHE加法操作来聚合桶向量和c-字节块的FHE加密的值的值,并且生成FHE加密的值的列表。换句话说,通过对FHE值求和,将先前描述的具有相同查询和块索引的三元组的集中的所有条目组合成一个。例如,对桶向量和具有特定索引(例如,索引1)的c-字节块的FHE加密的值的值的聚合操作将跨碎片的所有四个桶从具有索引1的所有块中选择块E。类似地,跨碎片的所有桶,在第二索引、第三索引和第四索引处的块的聚合的值分别是“F”、“G”和0。服务器204在从桶中选择块之后,服务器204可以生成FHE加密的值的列表并将该列表发送到客户端202。例如,服务器可以生成使用吸收操作被选择的FHE加密的值的列表[“E”、“F”、“G”],并将该列表发送到客户端202。
尽管已经参考单个查询解释了过程400,但是可以以可以在多个计算系统上并行处理多个查询的方式来实现过程400。在一些实施方式中,可以使用使得所有查询能够作为查询的批来被处理的映射减少过程,这减少了生成对查询的响应所需的时间,并且相对于单独地处理每个查询节省了处理资源。例如,假设通过对密钥哈希运算将数据库划分为n个桶,并且基于前导(leading)k比特将桶划分为碎片。在该示例中,服务器可以基于与每个查询一起提交的所提供的碎片索引来按碎片划分查询。然后,服务器可以通过解压缩加密的桶选择器来将每个查询扇出到其碎片中的每个(现有)桶的FHE值。在每个碎片内,每个桶与来自用于桶的查询的FHE值结合。对于每个桶:对于来自查询的FHE值和桶的块的笛卡尔乘积中的每对,执行FHE吸收。该步骤的输出是从(查询id,块索引)对到FHE加密的值的多映射。使用FHE加法作为聚合器来聚合值。这具有与先前步骤相同的输出格式,除了它不是多映射—每个键恰好具有一个FHE值。按块索引排序的加密值的列表被聚合,并且输出格式是从查询到FHE加密的值的列表的映射。通过按照每个碎片提供相同数量的查询并进行适当的碎片,可以通过具有许多碎片而不泄露关于查询的分布的任何信息来降低计算成本。现在回到图2。
服务器204将FHE加密的值的列表发送到客户端202(236)。服务器204在生成用于服务器加密的标识符中的每个的桶向量和c-字节块的FHE加密的值的列表之后,通过网络102将一个或多个列表发送到客户端202。
客户端202解密FHE加密(238)。在某些实现中,在接收到桶向量和c-字节块的FHE加密的值的一个或多个列表之后,客户端202使用在过程200的步骤226中生成的解密密钥来解密来自列表中的每个的FHE加密,以获得被查询并且最初被存储在服务器数据库上的键-值对的值(如果存在的话)。
在一些实施方式中,可以调整n和P的值用于进一步优化。例如,增加P的值节省了服务器204的计算时间,但同时增加了客户端202生成更多查询的负担。为了补偿P的大值的附加查询,客户端202可以生成不从服务器数据库中选择数据的假查询。
在一些情况下,当假查询呈现使用附加查询来了解被存储在服务器数据库中的其他数据的恶意客户端的问题时,服务器204可以确保仅按照每个真实查询而不是假查询向客户端202发送结果。在一些实施方式中,这可以通过在结果之上利用附加的PIR协议而不是将完整结果发送到客户端202来实现。在一些实施方式中,这可能是非常有效的,因为即使具有大量假查询,假查询的数量也比服务器数据库小几个数量级。
在一些实施方式中,将碎片的数量设置为与查询的数量相等可能是最佳的。通过使用诸如相对切尔诺夫界(Chernoff Bound)和布尔不等式(Union Bound)的技术,伪查询的数量可以被确定。对于一些实施方式,例如,当存在大约10,000个查询时,按照每个真实查询具有大约40-50个伪查询可能是最佳的。
图5是可以用于执行上述操作的示例计算机系统500的框图。系统500包括处理器510、存储器520、存储设备530和输入/输出设备540。组件510、520、530和540中的每一个可以例如使用系统总线550互连。处理器510能够处理用于在系统500内执行的指令。在一些实施方式中,处理器510是单线程处理器。在其他实施方式中,处理器510是多线程处理器。处理器510能够处理被存储在存储器520中或存储设备530上的指令。
存储器520存储系统500内的信息。在一个实施方式中,存储器520是计算机可读介质。在一些实施方式中,存储器520是易失性存储器单元。在其他实施方式中,存储器520是非易失性存储器单元。
存储设备530能够为系统500提供大容量存储。在一些实施方式中,存储设备530是计算机可读介质。在各种不同的实施方式中,存储设备530可以包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)或一些其他大容量存储设备。
输入/输出设备540为系统500提供输入/输出操作。在一些实施方式中,输入/输出设备540可以包括网络接口设备(例如以太网卡)、串行通信设备(例如RS-232端口)和/或无线接口设备(例如802.11卡)中的一个或多个。在其他实施方式中,输入/输出设备可以包括驱动器设备,其被配置为接收输入数据并将输出数据发送到外部设备560,例如键盘、打印机和显示设备。然而,其他实施方式也可以被使用,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管已经在图5中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式可以在其他类型的数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者在它们的一个或多个的组合中实现。
本说明书中描述的主题和操作的实施例可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者在它们的一个或多个的组合中实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即,计算机程序指令的一个或多个模块,其被编码在计算机存储介质(或媒介)上,用于由数据处理装置执行或控制数据处理装置的操作。可替代地或另外地,程序指令可以被编码在人工生成的被传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息,用于传输到合适的接收器装置,以供数据处理装置执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行接入存储器阵列或设备、或它们中的一个或多个的组合,或者被包括在计算机可读存储设备、计算机可读存储基板、随机或串行接入存储器阵列或设备、或它们中的一个或多个的组合中。此外,虽然计算机存储介质不是被传播信号,但是计算机存储介质可以是被编码在人工生成的被传播信号中的计算机程序指令的源或目的地。计算机存储介质还可以是一个或多个单独的物理组件或介质(例如,多个CD、磁盘或其他存储设备),或者被包括在一个或多个单独的物理组件或介质(例如,多个CD、磁盘或其他存储设备)中。
本说明书中所描述的操作可以实现为由数据处理装置对被存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或以上各项的多个或组合。装置可以包括专用逻辑电路,例如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC)。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。装置和执行环境可以实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也被认为是程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释性语言、声明式或过程语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适于计算环境中的使用的其他单元。计算机程序可以但不必与文件系统中的文件相对应。程序可以被存储在持有其他程序或数据的文件的一部分(例如,被存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。计算机程序可以被部署为在一个计算机上或在位于一个站点上的或跨多个站点分布的并通过通信网络互连的多个计算机上被执行。
本说明书中所描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适合于计算机程序的执行的处理器包括例如通用微处理器和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),或者可操作地耦合到用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),以从其接收数据或向其传输数据或两者。然而,计算机不需要具有这样的设备。此外,计算机可以被嵌入在其他设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(Global Positioning System,GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器),仅举几例。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存存储器设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或被并入专用逻辑电路中。
为了提供与用户的交互,本说明书中所描述的主题的实施例可以在具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户可以通过其向计算机提供输入的键盘和指向设备(例如,鼠标或轨迹球)的计算机上实现。其他种类的设备也可以被用于提供与用户的交互;例如,被提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求将网页发送到用户的客户端设备上的网络浏览器。
本说明书中所描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或Web浏览器的客户端计算机,用户可以通过其以本说明书中所描述的主题的实施方式交互),或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网络(例如,互联网)和对等网络(例如,ad hoc对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系凭借在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,HTML页面)发送到客户端设备(例如,出于向与客户端设备交互的用户显示数据和从与客户端设备交互的用户接收用户输入的目的)。可以从服务器处的客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
虽然本说明书包含许多具体的实施方式细节,但是这些不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在单独的实施例的上下文中本说明书中所描述的某些特征也可以在单个实施例中组合实现。从另一方面,在单个实施例的上下文中所描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管特征可以在上面被描述为以某些组合起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作,来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都要求这种分离,并且应当理解,所描述的程序组件和系统通常可以一起被集成在单个软件产品中或封装到多个软件产品中。
因此,已经描述了主题的特定实施例。其它实施例在所附权利要求书的范围内。在一些情况下,权利要求中所记载的动作可以以不同的顺序执行并且仍然实现期望的结果。另外,附图中所描绘的过程不一定要求所示的特定顺序或序列顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
- 加密信息检索
- 应用于私有信息检索的同态加密