CN117355834A - 使用隐私信息检索和安全多方计算的隐私安全批量检索 - Google Patents

使用隐私信息检索和安全多方计算的隐私安全批量检索 Download PDF

Info

Publication number
CN117355834A
CN117355834A CN202380011603.9A CN202380011603A CN117355834A CN 117355834 A CN117355834 A CN 117355834A CN 202380011603 A CN202380011603 A CN 202380011603A CN 117355834 A CN117355834 A CN 117355834A
Authority
CN
China
Prior art keywords
key
database
requested
data
mpc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202380011603.9A
Other languages
English (en)
Inventor
王刚
马塞尔·M·莫蒂·扬
凯文·维·立·约
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN117355834A publication Critical patent/CN117355834A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

描述了用于批量检索数据的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。在一个方面,一种方法包括由多方计算(MPC)服务器集群中的第一MPC服务器从客户端设备接收用于检索存储在一个或多个数据库中的多个数据库值的批量请求。批量请求包括第一字节阵列,第一字节阵列针对多个请求的密钥中的每个请求的密钥包括请求的密钥的第一秘密份额。每个数据库包括多个数据项,每个数据项包括数据库密钥和对应的值。MPC服务器处理每个数据库密钥以生成指示数据库密钥是否与至少一个请求的密钥匹配的匹配数据的第一秘密份额。MPC服务器生成一个或多个结果,一个或多个结果表示与和至少一个请求的密钥匹配的每个数据库密钥对应的数据库值。

Description

使用隐私信息检索和安全多方计算的隐私安全批量检索
相关申请的交叉引用
本申请要求2022年5月3日提交的以色列申请序列号No.292731的优先权,其全部内容通过引用并入本文。
技术领域
本说明书涉及密码学、数据隐私和数据安全。
背景技术
私人信息检索是一系列协议,其使得能够从由服务器托管的数据库中检索项(item),而不向服务器透露正在检索哪个项。安全多方计算(MPC)是一系列加密协议,其通过将计算分布跨多方来防止对数据的访问,使得任何单独一方都不能访问另一方的数据或中间计算值,而仅向指定方发布输出。MPC计算系统通常使用数据的秘密份额(share)或其他加密形式和各方之间的信息的安全交换来进行计算。
发明内容
一般而言,本说明书中描述的主题的一个创新方面可以被体现在包括以下操作的方法中:由多方计算(MPC)服务器集群中的第一MPC服务器从客户端设备接收用于检索存储在一个或多个数据库中的多个数据库值的批量请求,该批量请求包括第一字节阵列,对于多个请求的密钥中的每个请求的密钥,该第一字节阵列包括请求的密钥的第一秘密份额,其中每个数据库包括多个数据项,每个数据项包括数据库密钥和对应的值;由第一MPC服务器处理每个数据库密钥以生成匹配数据的第一秘密份额,该匹配数据指示该数据库密钥是否与多个请求的密钥中的至少一个请求的密钥匹配;由第一MPC服务器使用每个数据库密钥的匹配数据的每个第一秘密份额生成一个或多个结果,所述一个或多个结果表示与和多个请求的密钥中的至少一个请求的密钥匹配的每个数据库密钥对应的数据库值;以及将所述一个或多个结果发送至客户端设备。该方面的其他实施方式包括被配置为执行在计算机存储设备上编码的方法的各方面的对应装置、系统和计算机程序。
这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。在一些方面,MPC集群的第二MPC服务器接收第二字节阵列,该第二字节阵列对于多个请求的密钥中的每个请求的密钥包括请求的密钥的第二秘密份额。第一MPC服务器和第二MPC服务器可以协作地执行安全MPC操作以生成一个或多个结果和一个或多个附加结果,所述一个或多个结果表示与和所述至少一个请求的密钥匹配的每个数据库密钥对应的数据库值,所述一个或多个附加结果表示与和所述至少一个请求的密钥匹配的每个数据库密钥对应的数据库值。第二MPC服务器将所述一个或多个附加结果发送到客户端设备。
在一些方面,每个请求的密钥的第一秘密份额包括由客户端设备使用分布式点函数的生成函数来生成的第一分布式点函数密钥。每个请求的密钥的第二秘密份额可以包括由客户端设备使用分布式点函数的生成函数来生成的第二分布式点函数密钥。
在一些方面,由第一MPC服务器处理每个数据库密钥以生成指示数据库密钥是否与多个请求的密钥中的至少一个请求的密钥匹配的匹配数据的第一秘密份额包括,针对每个数据库密钥,标识第一字节阵列中数据库密钥的每个潜在位置,并且对于每个潜在位置,使用分布式点函数的评估函数来确定匹配数据的相应第一秘密份额。
在一些方面,由第一MPC服务器使用每个数据库密钥的匹配数据的每个第一秘密份额来生成表示与在和多个请求的密钥中的至少一个请求的密钥匹配的每个数据库密钥对应的一个或多个结果包括,对于每个数据库密钥的每个潜在位置:确定匹配数据的相应第一秘密份额是否具有为1的值;以及响应于确定匹配数据的相应第一秘密份额具有为1的值,将匹配数据的相应第一秘密份额和第一字节阵列的潜在位置中的现有值之间的XOR运算的结果确定为潜在位置的数据库值的第一秘密份额。
在一些方面,生成一个或多个结果包括生成包括第一结果字节阵列的第一结果,所述第一结果字节阵列对于数据库中存在的多个请求的密钥中的每个请求的密钥包括表示请求的密钥的值的对应字节阵列。对于在数据库中未找到的多个请求的密钥中的每个请求的密钥,第一结果可以包括为0的值
生成一个或多个结果可以包括从MPC服务器集群中的第二MPC服务器接收表示对第二结果字节阵列和掩码执行的按位XOR运算的结果的乱码响应。第二结果字节阵列针对多个请求的密钥中的每个请求的密钥包括表示请求的密钥的值的对应字节阵列。生成一个或多个结果可以包括对第一结果字节阵列和乱码响应计算按位XOR运算。掩码可以由客户端设备和第一MPC服务器使用密码算法和针对第一字节阵列中的每个位置的输入随机数来生成
可以实现本说明书中描述的主题的特定实施例以便实现以下优点中的一个或多个。本文档中描述的系统和技术使客户端设备(例如,在客户端设备上运行的应用)能够从由服务器托管的数据库批量检索多个数据项,同时防止服务器具有对由客户端设备请求的数据项和/或返回到客户端设备的数据项的访问。数据库可以以密钥值对(key-valuepair)的形式存储项,每个密钥值对包括标识数据项的密钥和数据项的值。在该示例中,客户端设备可以请求密钥集合的值,并且服务器可以提供与密钥对应的值,而服务器不能访问请求的密钥或返回到客户端设备的数据项的值。这在数据项的密钥和/或值包括机密信息的情况下以及在客户端设备请求密钥集合的事实是机密信息的情况下改善了数据安全性和数据保密性。
在本文档中描述的系统和技术可以将私有信息检索(private informationretrieval,PIR)技术与概率数据结构(例如,布谷鸟过滤器)、MPC技术和分布式点函数或提供保护数据安全性和数据隐私的协同效应的其他形式的秘密份额相结合,同时相对于其他技术,例如采用使用同态加密的单个PIR服务器的批量检索技术,还改善从服务器获取数据项的速度和效率。例如,与单个服务器PIR技术相比,用于返回由客户端设备请求的数据项的值的技术使用这些所描述的技术计算成本较低,例如,每个请求的数据项需要更少的处理器循环和/或更少的网络带宽。
所描述的技术还阻止服务器能够标识由客户端设备请求的数据项的数量,或者由服务器返回到客户端设备的数据项的数量,这例如在其中请求/返回的数据项的数量是机密信息的情况下提供了附加的隐私保证。为了进一步增强这样的数据隐私,客户端设备可以被配置为从多个概率数据结构大小中进行选择,并随机挑选一个以防止MPC知道请求中的密钥的数目。
使用所描述的批量检索技术还减少了由客户端设备通过将客户端设备连接到服务器的数据通信网络发送的请求的数目以及从服务器发送到客户端设备的响应的数目。聚合超过数千或数百万个客户端设备,这导致节省大量带宽和时延。通过所描述的批量检索技术实现的减小的数据大小还减少了由客户端设备发送请求和接收响应数据所消耗的电池电量,这对于通常依靠有限电池电量运行的移动设备来说非常重要。即使对于大量请求的数据项,批量检索技术也提供这些性能改进,因为不管请求的数据项的数量如何,总体时延、计算要求和带宽都是相同或相似的。
在一些实施方式中,客户端设备(例如,在客户端设备上运行的应用)可以取决于客户端设备正在请求的数据项的数量而选择性地使用批量检索技术。以该方式,当仅少量数据项被请求时,客户端设备可以使用更高效的单个项PIR过程,从而减少置于服务器上的计算负担并释放服务器来处置从其他客户端设备接收到的批量检索请求。这增加了由服务器在任何给定时间可以处置的请求的数量。
使用本文档中描述的密钥编码技术使得服务器能够扫描整个数据库一次,而与正在被请求的数据项的数量无关。这减少了计算负担,例如,相对于需要PIR服务器针对每个请求的数据项扫描数据库一次的过程,返回请求的数据项的值所需的处理器循环的数量。这还减少了响应于请求的时延,这对于其中要求服务器快速响应——例如以毫秒为单位——的实施方式至关重要。例如,提供用于与网页和/或其他电子资源一起显示的数字组件或关联数据的延迟可能导致客户端设备处的页面加载错误,或者使电子资源的部分即使在资源的其他部分被显示在客户端设备上之后仍然未被填充。而且,随着向客户端设备提供数字组件的延迟增加,当数字组件被递送到客户端设备时,电子资源很可能将不再被显示在客户端设备处,从而对用户与电子资源的体验产生负面影响。此外,提供数字组件的延迟可能导致数字组件的失败递送——例如,如果当数字组件被接收时电子资源不再被显示在客户端设备处——以及在尝试数字组件的失败递送时的浪费的网络带宽两者。
在附图和以下说明书中阐述了本说明书中所描述的主题的一个或多个实施例的细节。本主题的其他特征、方面和优点将根据说明书、附图和权利要求书而变得显而易见。
附图说明
图1是其中MPC集群的服务器接收对数据的请求并响应于请求提供数据的示例环境的框图。
图2是用于响应于请求提供数据的示例过程的泳道图。
图3是用于响应于请求提供数据的示例过程的流程图。
图4是示例计算机系统的框图。
各个附图中相同的附图标记和标记指示相同的元件。
具体实施方式
一般而言,本文档描述了用于在使用PIR技术从多方计算(MPC)系统批量检索信息时保护数据安全性和数据隐私的系统和技术。密码技术使得例如Web浏览器的应用能够从托管在同一服务器或服务器组(例如,在安全的MPC集群中的服务器组)中的一个或多个数据库批量检索大量数据项,例如密钥值对,而不削弱隐私保护或数据安全。例如,密码技术防止欺诈地(或未经授权)获得对数据项的请求和/或包括数据项的响应的服务器和实体标识正在请求的数据项、所返回的数据项的值、和/或正在请求的数据项的数量或为其返回值的数据项的数量。批量检索还减少了从客户端设备发送的例如超文本传输协议(HTTP)请求的请求的数目、发送到客户端设备的响应的数量以及相关联的带宽/电池消耗。
图1是示例环境100的框图,其中MPC集群130的服务器接收对数据的请求并响应于该请求提供数据。环境100包括数据通信网络105,诸如局域网(LAN)、广域网(WAN)、因特网、移动网络或其组合。数据通信网络105将客户端设备110连接到安全MPC集群130的服务器,并且还可以将数据提供者150连接到MPC集群130的服务器。
客户端设备110是能够通过网络105进行通信的电子设备。示例客户端设备110包括个人计算机、服务器计算机、移动通信设备,例如智能电话和/或平板计算机、以及可以通过网络105发送和接收数据的其他设备。客户端设备还可以包括数字助理设备,其通过麦克风接受音频输入并通过扬声器输出音频输出。当数字助理检测到激活麦克风以接受音频输入的“热词(hotword)”或“热短语(hotphrase)”时,数字助理可以被置于监听模式(例如,准备接受音频输入)。数字助理设备还可以包括相机和/或显示器以捕获图像并视觉地呈现信息。数字助理可以以不同形式的硬件设备来实现,不同形式的硬件设备包括可穿戴设备(例如,手表或眼镜)、智能手机、扬声器设备、平板设备或另一硬件设备。客户端设备还可以包括数字媒体设备,例如插入电视或其他显示器以将视频流式传输到电视、游戏设备或虚拟现实系统的流式传输设备。
游戏设备是一种使用户能够参与游戏应用的设备,例如,其中,用户具有对游戏应用中显示的一个或多个角色、化身或其他渲染的内容的控制。游戏设备通常包括计算机处理器、存储器设备和控制器接口(物理或视觉渲染的),其使得用户能够控制由游戏应用渲染的内容。游戏设备可以本地存储和执行游戏应用,或者执行至少部分由云服务器存储和/或服务的游戏应用(例如,在线游戏应用)。类似地,游戏设备可以与执行游戏应用的游戏服务器接口并将游戏应用“流式传输”到游戏设备。游戏设备可以是平板设备、移动电信设备、计算机或执行除执行游戏应用之外的其他功能的另一设备。
客户端设备110可以包括应用112,诸如Web浏览器和/或本机应用,以促进通过网络105发送和接收数据。本机应用是针对特定平台或特定设备开发的应用(例如,具有特定操作系统的移动设备)。应用112还可以包括基于从MPC集群130接收到的数据来选择要在客户端设备110处显示的内容的应用。可选地,诸如Web浏览器的应用112可以包括用于选择内容以在客户端设备110处显示的模块或其他代码。如下文更详细描述的,应用112可以通过向MPC集群130发送请求114来请求来自MPC集群130的数据。尽管操作可以被描述为由客户端设备110执行,这样的操作可以由在客户端设备110上运行的应用112来执行。
安全MPC集群130包括两个服务器计算机,MPC1 132A和MPC2132B,它们被配置为使用2-服务器PIR技术来执行安全MPC过程,以提供响应于从客户端设备110接收到的请求的数据项的值。虽然示例MPC集群130包括两个MPC服务器,但是只要MPC集群130包括多于一个服务器,也可以使用更多的服务器。例如,MPC集群130可以包括三个服务器、四个服务器或另一适当数量的服务器。
计算系统MPC1和MPC2可以由不同的实体操作。以该方式,每个实体可能不具有对由应用112请求的数据项或请求的项的数量的访问。例如,服务器MPC1或MPC2中的一个可以由不同于数据提供者150的可信方操作。例如,行业团体、政府团体或浏览器开发者可以维护和操作服务器MPC1和MPC2中的一个。另一服务器可以由这些组中的不同一组来操作,使得不同的可信方操作每个服务器MPC1和MPC2。优选地,操作不同服务器MPC1和MPC2的不同方没有动机串通危害数据隐私。在一些实施方式中,服务器MPC1和MPC2在架构上是分离的并且被监视以在执行本文档中描述的安全MPC过程之外不彼此通信。
MPC1和MPC2可以各自分别存储一个或多个数据库134A和134B。每个数据库134A和134B可以以密钥值对的形式存储数据项,每个密钥值对包括标识数据项的密钥和数据项的值。每个密钥在给定数据库内是唯一的,使得单个数据库中没有两个数据项具有相同的密钥。
每个服务器MPC1和MPC2的数据库134A和134B可以是相同的。也就是说,MPC1可以存储与MPC2相同的数据库。每个数据库134A和134B可以具有例如使用名称或其他适当的标识符来标识数据库的标识符。例如,每个数据库可以存储特定类别的数据,并且数据库的标识符可以是该类别。存储在每个数据库134A和134B中的密钥和值可以是明文,例如,而不是密文。明文是未加密形式的文本,例如,未经过计算标记、特殊格式化或以代码或数据编写的文本,包括二进制文件。也就是说,明文是无需密钥或其他解密设备或其他解密过程可以查看或使用的形式。
服务器MPCl和MPC2可以从数据提供者150接收数据库134A和134B(或者要存储在数据库134A和134B中的数据。例如,每个数据提供者150可以将包括以密钥值对形式的数据项的数据152提供给MPC1和MPC2。
应用112可以通过向服务器MPCl和/或MPC2之一或两者提交请求114来请求来自安全MPC集群130的数据项的值。为了防止服务器MPC1和MPC2能够标识应用正在为其请求值的数据项,应用112可以使用密码技术来对请求的数据项的密钥进行编码并将编码的密钥划分成多个份额。应用112然后可以向MPC1提供经编码的密钥的份额以及向MPC2提供另一份额的密钥。份额可以是秘密份额或使用分布式点函数生成的密钥,如下所述。使用分布式点函数生成的密钥也被称为DPF密钥,以区别于数据项的密钥。
在一些实施方式中,应用112使用MPC2的公钥对MPC2的编码密钥进行加密,并向MPC1提供包括MPC1的编码密钥和MPC2的加密的编码密钥的单个请求114。然后,MPC1可以向MPC2提供加密的编码密钥。MPC2可以使用其私钥来解密加密的编码密钥,该私钥与例如数学上链接到用于加密MPC2的编码密钥的公钥相对应。以该方式,仅将单个请求发送到服务器之一(MPC1),同时仍然防止服务器MPC1和MPC2两者具有对编码密钥的两个份额的访问。这减少了在通过网络105发送请求114时消耗的带宽量,同时维持数据安全和数据隐私保证。
服务器MPC1和MPC2可以使用编码密钥的份额来执行安全MPC过程,例如安全2PC过程,以获得与编码密钥对应的请求值的相应份额并且将包括请求值的份额的一个或多个响应116发送到应用112。在一些实施方式中,每个服务器MPC1和MPC2向应用112发送包括其值的份额的相应响应116。在一些实施方式中,MPC1发送包括应用112可以将其组装成具有实际值的实际响应的值的模糊阵列的单个响应116。下面参考图2和图3描述用于响应于请求提供数据的示例过程。
在一些实施方式中,应用112被配置为在用于请求数据项的值的批量处理和用于请求数据项的值的单独处理之间进行选择。例如,当对于其值被请求的密钥的数量满足阈值时,例如,通过满足或超过阈值,应用112可以选择批量处理。在单独的过程中,应用112可以使用传统的单服务器PIR技术向具有单独密钥的单个服务器发送请求。
图2是用于响应于请求提供数据的示例过程200的泳道图。过程200的操作可以由例如MPC集群130的MPC1和MPC2的MPC集群的服务器、例如在客户端设备110上运行的应用112的在客户端设备上运行的应用、以及例如数据提供者150的数据提供者的计算机来执行。过程200的操作还可以被实现为存储在一个或多个计算机可读介质上的指令,该计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使所述一个或多个数据处理装置执行过程200的操作。
数据提供者150向MPC集群(202)的服务器MPC1提供数据。数据可以包括以密钥值对形式或数据库或包括密钥值对的其他适当数据结构形式的数据项。MPC1可以将数据本地存储在数据库中。
数据提供者150向MPC集群(204)的另一服务器MPC2提供数据。数据可以包括以密钥值对形式或数据库或包括密钥值对的其他适当数据结构形式的数据项。MPC2可以将数据本地存储在数据库中。提供给MPC2的数据可以与提供给MPC1的数据相同。服务器MPC1和MPC2可以存储数据库并响应从客户端设备接收的对存储在数据库中的值的请求。
在该示例中,每个服务器MPC1和MPC2可以存储m个数据库,其中m是具有2或更大的值的任何整数。每个数据库i可以包括ni个唯一密钥,其中0≤i<m。每个密钥在每个数据库内都是唯一的,使得每个密钥标识数据库内的一个值。每个值都可以是以不透明字节阵列的形式。对于第i个数据库中的值,字节阵列的最大长度——例如,就字节数量而言——是si。字节阵列是数据字节的阵列并且可以包括任何类型的数据。
应用112确定获取存储在由服务器MPCl和MPC2托管的数据库中的数据项的值(206)。例如,使用机器学习模型执行机器学习计算的应用112可能需要数据项的值以用于即将进行的计算。在该示例中,应用112可以标识将在即将到来的计算中使用的值的密钥。
在另一示例中,应用112可以标识例如在诸如网页、流式传输视频等的另一电子资源内显示数字组件的机会。一些资源、应用页面、流线型视频播放器或其他应用内容可以包括用于显示数字组件的数字组件槽。如贯穿本文档所使用的,短语“数字组件”指的是数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一内容单元)。数字组件可以被电子地存储在物理存储器设备中作为单个文件或文件集合,并且数字组件可以采用视频文件、音频文件、多媒体文件、图像文件或文本文件的形式并且包括广告信息,使得广告就是数字组件类型。例如,数字成分可以是旨在补充网页内容、应用内容(例如,应用页面)或由应用112显示的其他资源的内容。更具体地,数字组件可以包括以下与资源内容相关的数字内容,例如,数字组件可能涉及与网页内容相同的主题,或者涉及相关主题。因此,提供数字组件可以补充并总体上增强网页或应用内容。
在该示例中,应用112可以从服务器MPCl和MPC2请求候选数字组件的数据。数字组件的数据可以包括数字组件本身,例如以包括图像、文本和/或视频和/或资源定位符或可用于下载来自例如网络服务器的网络位置的数字组件的其他参考的创意的形式。
数字组件的数据还可以包括用于选择数字组件以在客户端设备处显示的选择标准。数字组件的选择标准可以包括数字组件有资格分发的一个或多个对应的基于兴趣的用户组中的每一个的组标识符。在此示例中,例如响应于用户被分类为对与基于兴趣的用户组对应的主题感兴趣,可以向已分配给对应的基于兴趣的用户组的至少一个的用户显示数字组件。例如,可以将被确定对主题集合感兴趣的用户分配到与主题对应的用户组。可以为每个用户组分配与每个其他用户组的组标识符不同的唯一组标识符。选择标准还可以包括表示数字组件提供者愿意提供以交换用于显示数字组件——例如与一个或多个对应主题相关的资源——的量的选择值。
数字组件的数据可以是字节阵列的形式。在由服务器MPC1和MPC2存储和维护的数据库中,密钥可以是组标识符,并且每个密钥的值可以是聚合数据阵列,该聚合数据阵列包括在其选择标准中包括组标识符的每个数字组件的数据阵列。以此方式,应用112可以基于用户在用户组中的成员资格,例如基于用户被分类为对用户组的主题感兴趣来请求有资格向应用112的用户显示的数字组件。
在该示例中,数据提供者150可以是数字组件提供者。每个数字组件提供者可以向服务器MPC1和MPC2提供数字组件的数据阵列。例如,数字组件提供者可以为每个数字组件提供数据阵列以及标识数字组件有资格的用户组的密钥。在另一示例中,每个数字组件提供者可以提供包括密钥和值的数据库,其中每个密钥的值包括有资格向作为与该密钥对应的用户组的成员的用户分发的每个数字组件的数据阵列。
应用112确定生成批量请求(208)。应用112可以基于要请求其值的密钥的数量来确定是生成批量请求还是对单独数据项生成一个或多个单独请求。例如,应用112可以将请求的密钥的数量与阈值进行比较。如果请求的密钥的数量——例如,通过满足或超过阈值——满足阈值,则应用112生成批量请求。如果不是,则应用112可以向例如单个PIR服务器发送针对每个密钥的单独请求。
应用112将密钥编码成字节阵列(210)。当应用112确定从MPC集群130请求数据时,应用112可以标识要从MPC集群130请求的数据的密钥并且将所标识的密钥编码成字节阵列。所标识的密钥可以包括任何数量的密钥。
在一些情况下,批量请求可以包括多个数据库的密钥。在这样的情况下,应用112可以为每个数据库生成字节阵列。换句话说,应用112可以将请求划分成子请求并为每个子请求生成字节阵列,其中每个子请求针对不同的数据库。
每个字节阵列包括由MPC集群130存储的密钥值对的密钥。字节阵列可以是概率数据结构的形式。例如,字节阵列可以是布谷鸟过滤器的形式,其包括密钥或表示密钥的数据。
对密钥进行编码使每个服务器MPC1和MPC2能够扫描整个数据库一次,但仍然检索字节阵列中编码的密钥的所有值,而不向MPC1或MPC2泄漏任何信息。字节阵列也是一种可以以减少传输密钥时的带宽消耗和时延的方式通过网络简洁地传输到MPC1和/或MPC2的数据结构。
请求(或子请求)的字节阵列可以通过各种方式配置。例如,存在其中可以将密钥放置在字节阵列中的一个、两个、三个或更多可能的位置的场境。请求或子请求的字节阵列可以被称为请求字节阵列。使k表示可能位置的数量,其中k∈{1,2,3}。如下所述,正确选择k的值能够平衡服务器侧处理成本和应用带宽消耗,同时仍然满足适用的数据安全和隐私要求。
请求字节阵列可以被配置为使得每个密钥只能放置在请求字节阵列中的一个位置,即当k=1时。这可能通过选择将密钥映射到[0,z-1]的散列函数来实现,其中z是字节阵列的大小,即字节阵列中的位置的数目。为了避免同一数据库的同一批次检索中的多个密钥被映射到同一阵列位置的散列冲突,应用112可以被配置为使用完美散列函数技术,其中应用112随机或伪随机地选择散列函数参数,直到应用112找到有效的完美散列函数。有效的散列函数是将每个密钥放置在字节阵列中的唯一位置的函数。这个找到完美散列函数的过程可以在多项式时间内执行。
当密钥可以被放置在多个位置之一时,即,k>1,字节阵列可以是布谷鸟过滤器的形式。为了生成布谷鸟过滤器,应用112使用多个散列函数来将密钥分配给布谷鸟过滤器中的位置。应用112可以尝试通过将散列函数应用于密钥来使用散列函数将密钥放入布谷鸟过滤器中。如果由散列函数输出的位置中的至少一个位置是空的,则应用112可以将密钥存储在空位置之一中。如果由所有散列函数输出的位置都被占用,则应用112可以选择位置之一并且用密钥替换该位置中的值。散列函数的数量可以等于k的值。
无论k的值如何,构造的字节阵列中的条目的数目与批量检索请求中的密钥的数目成正比。密钥的数目与字节阵列中的条目的数目之间的比率可以称为负载因子。一般来说,在k值从1增加到3(或者甚至更大)时,最大实践负载因子增加到90+%。在需要非常强的隐私保护和/或数据安全性的情况下,可能期望防止服务器MPC1和MPC2获知批量请求中的密钥的数目。如果是,则应用112(或其开发者)可以在字节阵列中定义多个可允许的条目数目。对于每个请求,应用112可以例如随机地或伪随机地选择一个可允许的、大于批量请求中的密钥的数目的阵列大小。在这样的情况下,实际负载因子从k值的最大实践负载因子开始降低,这使得在每次尝试中更有可能使用随机算法成功构造完美的散列函数或布谷鸟过滤器。当负载因子增加时,传输请求字节阵列所需的带宽成比例地减少。然而,应用112可能需要更多的尝试和更长的时间来构造请求字节阵列。
为了进一步的数据隐私,应用112可以被配置为从多个概率数据结构大小中选择并随机挑选一个以防止MPC知道请求中的密钥的数目。也就是说,应用112可以被配置为例如针对每个请求周期性地、随机地等来调整请求的k值。
请求字节阵列中的每个项可以是密钥本身。然而,这样做同时要求服务器MPC1和MPC2在数据库中的密钥与请求字节阵列中包含的密钥之间执行安全的多方相等测试将需要在MPC1和MPC2之间进行多次往返计算。这可能显著增加计算成本,例如处理器循环的数量、时延和带宽消耗。
应用112将每个请求字节阵列划分成份额(212)。这防止MPC1和MPC2学习请求中的密钥,并减少计算成本、时延和带宽消耗。应用112可以将每个请求字节阵列划分成每个服务器MPC1和MPC2的相应份额。也就是说,在2PC实施方式中,应用112可以将每个请求字节阵列划分成两个份额,针对服务器MPC1和MPC2各一个。
在一些实施方式中,应用112使用秘密份额密码技术将每个请求字节阵列划分成秘密份额。在该示例中,应用112可以生成第一字节阵列,其对于每个密钥包括第一字节阵列中的特定位置中的密钥的第一秘密份额。应用112还生成第二字节阵列,其对于每个密钥包括第二字节阵列的特定位置中的密钥的第二秘密份额。也就是说,第一秘密份额和第二秘密份额在两个字节阵列中位于相同位置,这可以与密钥在请求字节阵列中的原始位置相同。应用112可以生成MPC1的第一字节阵列和MPC2的第二字节阵列。
在一些实施方式中,应用112使用分布式点函数来划分每个请求阵列。分布式点函数是密码技术,其使多个分布式过程能够对份额的信息执行操作,而无需向任何一方泄露信息。在该示例中,应用112可以使用分布式点函数来为存储在请求数据阵列的每个位置中的项生成两个DPF密钥。也就是说,应用112为每个请求的密钥生成两个DPF密钥,针对服务器MPC1和MPC2各一个。
应用112(或另一实体,诸如应用112的开发者)和/或MPC集群130(或运行MPC集群130的各方)可以生成生成函数(DPF.Gen)和评估函数(DPF.Eval)作为分布式点函数使得给定输入x,函数DPF.Gen返回密钥对(k0,k1)和DPF.Eval(k0,i)XOR DPF.Eval(kI,i)=(x==i)。如贯穿本文档中所使用的,“XOR”是指按位异或运算函数值,“==”表示相等检查以检查两个操作数是否相等。因此,DPF.Eval(k0,i)与DPF.Eval(k1,i)的按位异或可以被用于确定项i是否与输入x匹配。也就是说,DPF.Gen为输入x生成DPF密钥对(k0,k1),并且DPF.Eval用于使用DPF密钥对(k0,k1)而不是输入x来评估项i是否与输入x匹配。以该方式,任何实体都无法在不访问k1的情况下单独从k0推断出输入x,反之亦然。
应用112可以使用生成函数(DPF.Gen)来针对请求字节阵列中的每个位置生成两个DPF密钥。这样做时,应用112取决于字节阵列相对于请求的密钥的数量的大小,为每个请求的密钥以及请求字节阵列中的可能的一些随机密钥生成DPF密钥对。例如,如果字节阵列具有120个位置“p”并且正在请求100个密钥,则应用112将为100个请求的密钥和20个随机密钥生成DPF密钥。以该方式,MPC1和MPC2都无法自己区分用于检索目的的真实密钥和被使用于填充请求字节阵列的间隙的随机密钥。
对于请求字节阵列中的给定请求密钥,应用112可以计算DPF.Gen(key)=(k0,k1),其中k0是给定请求密钥的第一DPF密钥,并且k1是给定请求密钥的第二DPF密钥。应用112可以生成包括每个请求的密钥的第一DPF密钥的第一字节阵列和包括每个请求的密钥的第二DPF密钥的第二字节阵列。以该方式,只有两个字节阵列之一的任何一方都无法获得请求的密钥的值,从而保护了数据隐私和数据安全。
在一些实施方式中,DPF密钥各自是12×z字节,其中z是请求的密钥的位长度。如果应用112正在请求每个z位的n个密钥,则应用112可以发送n×2×12×z字节,加上诸如数据库标识符的任何附加数据。例如,为了发送对每个24位的100个密钥的批量请求,如果使用二进制编码,则应用112可以发送56.2千字节(KB)到MPC1,或者发送以Web安全Base64编码的75KB。
应用112向MPC1发送批量请求(214)。批量请求可以包括每个子请求的第一字节阵列和第二字节阵列。为了防止MPC1访问第二字节阵列,应用112可以使用MPC2的加密密钥——例如,公钥——来加密每个第二字节阵列。以该方式,只有MPC2可以使用与公钥对应的解密密钥——例如私钥——来解密第二字节阵列。MPC1可以将加密的第二字节阵列发送到MPC2。然后,MPC2可以使用其解密密钥来解密加密的第二字节阵列。
在一些实施方式中,应用112向MPC1发送包括第一字节阵列的第一批量请求。应用112还将包括第二字节阵列的第二批量请求发送到MPC2。
在任一实施方式中,批量请求可以包括标识与每个字节阵列对应的数据库的数据。如上所述,每个子请求以及因此每个字节阵列对可以查询由MPC1和MPC2存储的特定数据库。包括标识每个字节阵列的数据库的数据使得MPC1和MPC2能够查询适当的数据库。
MPC1和MPC2处理批量请求(216)。MPC1和MPC2处理批量请求中的每个子请求以获得表示每个子请求的请求的密钥的值的数据。然而,由于请求的密钥的值可能是机密信息,因此服务器MPC1和MPC2都无法以明文形式获得任何请求的密钥的值。MPC1和MPC2可以例如通过由子请求的数据库标识符来标识数据库以针对与子请求对应的数据库来处理每个子请求。
数据库中的每个密钥(也被称为数据库密钥)可以位于请求字节阵列中的k个位置之一,例如与子请求对应的第一字节阵列和第二字节阵列的k个位置之一。k个位置由用于生成请求字节阵列的散列函数{hash0,...hashk-1}定义。MPC1和MPC2可以通过使用数据库密钥的值评估散列函数来确定每个数据库密钥的k个可能位置。
数据库密钥由批量请求指定,即,如果DPF.Eval(k0,i)XOR DPF.Eval(kI,i)对于任何i∈[0,k-1]为TRUE(真),则该密钥是请求的密钥,其中(k0,k1)=DPF.GEN(key)并且DPF.Gen和DFP.Eval位于阵列位置{hash0(key),...hashk-1(key)}中的一个。在这些关系中,项i表示两个字节阵列中阵列位置0和k-1之间的阵列位置之一中的请求的密钥。因此,当被应用于(i)为数据库密钥生成的密钥对(k0,k1)和(ii)请求的密钥的值的评估函数的XOR为TRUE时,数据库密钥是请求的密钥。
完美散列(针对k=1)和布谷鸟过滤器(针对k>1)的应用用于至少两个目的。这将DPF.Gen和DPF.Eval调用的数量从p(即,请求字节阵列中的位置数量)减少到k,其中k<<p,这减少了处理批量请求所需的计算资源,例如处理器循环,并减少提供批量请求结果的时延。当通过信息理论PIR组合时,MPC1和MPC2以与密钥在请求字节阵列中出现的次序相同的次序共同返回与请求的密钥对应的值。
为了防止MPC1和MPC2获取对所请求的密钥的访问,MPC1和MPC2可以使用安全MPC过程对数据库中的每个密钥执行此评估。此安全MPC过程的结果是MPC1对于每个数据库密钥具有表示数据库密钥是否位于请求字节阵列中的k个可能位置中的每一个中的匹配数据的第一秘密份额。也就是说,对于可以在请求字节阵列中找到数据库密钥的k个可能位置中的每一个,MPC1具有表示数据库密钥是否位于该位置的匹配数据的第一秘密份额。类似地,对于可以在请求字节阵列中找到数据库密钥的k个可能位置中的每一个,MPC2具有表示数据库密钥是否位于该位置的匹配数据的第二秘密份额。
对于每个数据库密钥,MPC1和MPC2各自计算请求字节阵列中可以找到数据库密钥的k个位置。对于k个位置中的每一个,MPC1从第一个字节阵列中计算DPF.Eval(k0,key)以得到值0或1,其中k0是正在评估的当前位置中的密钥,并且key是数据库密钥。这导致MPC集群130是否应当返回与PIR响应中的特定阵列位置中的数据库密钥对应的数据库值——例如,(key,value)是否在数据库中——的第一XOR秘密份额。如果该值为1,MPC1将会将该值与PIR响应中特定阵列位置中的现有值进行XOR。如果该值为0,MPC1将跳过此特定阵列位置的XOR。
类似地,对于k个位置中的每一个,MPC2从第一字节阵列计算DPF.Eval(k1,key)以获得0或1的值,其中k1是正在评估的当前位置中的密钥并且key是数据库密钥。该结果是MPC集群130是否应当返回与PIR响应中的特定阵列位置中的数据库密钥对应的数据库值——例如,(key,value)是否在数据库中——的第二XOR秘密份额。如果该值为1,MPC2将会将该值与PIR响应中特定阵列位置中的现有值进行XOR。如果该值为0,MPC2将跳过此特定阵列位置的XOR。
MPC1和MPC2然后可以使用PIR批量检索过程来基于这些秘密份额生成表示数据库中的每个请求的密钥的值的相应结果“结果1”和“结果2”。结果可以是——例如,具有与请求字节阵列相同的大小和结构的——字节阵列的形式,并且可以被称为结果字节阵列。
响应中的两个请求字节阵列和两个结果字节阵列(结果1和结果2)具有相同的长度。两个结果字节阵列中的第i个条目是与请求的密钥对应的数据库值的XOR秘密份额,如果该条目是随机密钥,则第i个条目为零。
为了生成结果字节阵列,对于请求字节阵列中的每个位置,MPC1收集其DPF函数对于存储在该阵列位置中的值(例如,请求的密钥或空值)被评估为TRUE的所有数据库密钥。MPC1选择可以被散列到特定位置并且DPF.Eval(k0,key)==TRUE的所有密钥,其中k0是由应用112寄存入第一字节阵列的位置中的请求的密钥。MPC1可以针对可以被散列到阵列位置的每个数据库密钥,计算数据库中存储的值的按位XOR,并且对于该阵列位置,对应的DPF函数被评估为TRUE。由于每个值都是字节阵列,因此该XOR运算的结果是字节阵列。这个结果字节阵列是针对在请求字节阵列中该位置的MPC1的结果。MPC1可以将此结果存储在结果1中与正在被评估的请求字节阵列中的位置相同的位置。也就是说,对于请求字节阵列中的第一个位置,MPC1可以将XOR运算的结果字节阵列存储在结果1的第一个位置中。MPC1可以对请求字节阵列中的每个位置执行此过程,以用与每个请求的密钥对应的数据库值的XOR结果来填充结果1。MPC2还对请求字节阵列中的每个位置执行相同的过程,以用与第二字节阵列的每个请求的密钥对应的数据库值的XOR结果来填充结果2。
在一些实施方式中,MPC1将结果1发送到应用112并且MPC2将结果2发送到应用112。为了减少带宽消耗,MPC2可以向MPC1发送乱码响应(218)。以该方式,只有MPC1向应用112发送响应,这减少了客户端设备带宽消耗。乱码响应可以是结果2的混淆版本,例如使用掩码,使得MPC1无法访问明文形式的结果2。
在使用乱码响应的实施方式中,应用112可以例如随机地或伪随机地为每个批量请求选择随机数(nonce)。应用112可以将随机数发送到服务器MPC1或MPC2之一。在该示例中,应用112将随机数发送到MPC2。应用112和MPC2使用相同的算法独立地计算密码掩码并为请求阵列中的每个位置输入随机数。在此示例中,字节阵列中第j个位置的掩码的第i位是PRF(nonce,i,j),其中PRF表示对nonce、i和j执行的加密伪随机函数。掩码大小与数据库中的最长值相同。应用112和MPC2两者都对MPC1或任何其他实体严格保密随机数和掩码。为了发送请求的密钥的数据库值,MPC2将结果2中的每个阵列元素与对应掩码之间的按位XOR的结果,即result2[j]XOR mask[j],作为乱码响应发送到MPC1。
MPC1发送表示请求的密钥的值的响应(220)。如上所述,MPC1可以将响应1发送到应用112,并且MPC2可以将响应2发送到应用112。如果使用乱码响应,则MPC1可以替代地发送结果1中的每个阵列元素与乱码响应中的对应阵列元素之间的按位XOR的结果,即result1[j]XOR(result2[j]XOR mask)。
应用112组装实际响应(222)。实际响应包括批量请求的每个子请求的每个请求的密钥的实际数据库值。如果数据库值是数字组件的字节阵列并且请求的密钥是用户组标识符,则对于每个请求的用户组标识符,实际响应将包括在其选择标准中包括所请求的用户组标识符的每个数字组件的字节阵列。也就是说,如果请求字节阵列的位置1包括用户组A的密钥(例如,以两个字节阵列中的DPK密钥的形式),则位置1的实际响应将包括有资格分发给用户组A中的用户的数据库中的每个数字组件(例如,在其选择标准中包括用户组A的每个数字组件)的字节阵列。
如果应用112从MPC1接收到结果l并从MPC2接收到结果2,则应用可以通过按元素确定结果l和结果2——即对于结果l阵列和结果2阵列中的每个对应位置的按位XOR——来组装实际响应。这产生成其中在每个位置处包括与请求的密钥对应的数据库值的阵列(或者如果数据库中不存在请求的密钥,则为全0的字节阵列),请求的密钥的DPF密钥被存储在请求阵列中的该位置处。
如果使用乱码响应,则应用112可以计算从MPC1接收的结果与由应用112计算的掩码之间的按位XOR,即,result1 XOR(result 2XOR mask)XOR mask。在数学上,这相当于result 1XOR result 2。这些XOR运算在相等长度的阵列之间。每个阵列中的元素中的每一个是字节阵列。
应用112转换实际响应(224)。应用112可以将实际响应转换成可以被使用于进一步处理的格式或数据结构。例如,应用112可以将实际响应转换成可由脚本、工作集或其他类型的代码、模块或引擎容易地消耗的JavaScript对象表示法(JSON)格式。在特定示例中,应用112可以将实际响应转换成JSON文件,该JSON文件标识针对每个用户组有资格的数字组件以及从MPC1和MPC2接收的数字组件的选择标准和/或其他数据。
应用112基于实际响应执行动作(226)。应用112可以使用从数据库获得的数据来执行各种功能。在数字组件被请求的示例中,应用112可以选择数字组件并显示该数字组件。例如,应用112可以使用实际响应的数字组件的选择标准来选择数字组件。
图3是用于响应于请求提供数据的示例过程300的流程图。过程300的操作可以由以下来执行:MPC集群的服务器,例如MPC集群130的MPC1和MPC2;在客户端设备上运行的应用,例如在客户端设备110上运行的应用112;以及例如数据提供者150的数据提供者的计算机。过程300的操作还可以被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使所述一个或多个数据处理装置执行过程300的操作。
接收批量请求(310)。客户端设备可以将批量请求发送到MPC集群的第一MPC服务器,例如MPC1。批量请求可以包括其值为字节阵列的第一阵列以及可选地包括加密的第二字节阵列。字节阵列的阵列可以被编码为单个字节阵列。对于多个请求的密钥中的每个请求的密钥,第一字节阵列可以包括请求的密钥的第一秘密份额。如果MPC1接收到加密的第二字节阵列,则MPC1可以将加密的第二字节阵列发送到第二MPC服务器,例如MPC2。MPC2可以解密第二字节阵列。在另一示例中,客户端设备可以将第二字节阵列发送到MPC2。在任一示例中,对于多个请求的密钥中的每个请求的密钥,第二字节阵列可以包括请求的密钥的第二秘密份额。
第一MPC服务器(MPC1)通过处理每个数据库密钥来处理批量请求,以生成指示数据库密钥是否与多个请求的密钥中的至少一个请求的密钥匹配的匹配数据的第一秘密份额(320)。MPC1可以使用安全MPC过程与MPC2协作处理批量请求。例如,MPC1和MPC2可以如上面参考图2的操作216和218所描述的那样处理批量请求以生成表示数据库密钥是否与请求的密钥匹配的XOR秘密份额。由MPC1生成的XOR秘密份额可以被称为匹配数据的第一秘密份额,并且由MPC2生成的XOR秘密份额可以被称为匹配数据的第二秘密份额。
第一MPC服务器(MPC1)使用每个数据库密钥的匹配数据的每个第一秘密份额来生成一个或多个结果,这些结果表示与和多个请求的密钥中的至少一个请求的密钥匹配的每个数据库密钥对应的数据库值(330)。如上面参考图2的操作216所描述的。如图2所示,MPC1和MPC2可以分别生成结果“结果1”和“结果2”,其表示数据库中每个请求的密钥的值。
第一MPC服务器(MPC1)将一个或多个结果发送到客户端设备(340)。例如,MPC1可以将结果1发送到客户端设备并且MPC2可以将结果2发送到客户端设备。在另一示例中,MPC2可以使用客户端设备具有解密密钥的加密密钥来加密结果2。然后,MPC2可以将结果2发送到MPC1并且MPC1可以将结果1和加密的结果2发送到客户端设备。然后,客户端设备可以组合结果,如上面参考图2的操作226所描述的,以获得明文形式的数据库值。
图4是可用于执行上述操作的示例计算机系统400的框图。系统400包括处理器410、存储器420、存储设备430和输入/输出设备440。组件410、420、430和440中的每一者可以例如使用系统总线450互连。处理器410能够处理用于在系统400内执行的指令。在一些实施方式中,处理器410是单线程处理器。在另一实施方式中,处理器410是多线程处理器。处理器410能够处理存储在存储器420中或存储设备430上的指令。
存储器420在系统400内存储信息。在一个实施方式中,存储器420是计算机可读介质。在一些实施方式中,存储器420是易失性存储单元。在另一实施方式中,存储器420是非易失性存储单元。
存储设备430能够为系统400提供海量存储。在一些实施方式中,存储设备430是计算机可读介质。在各种不同的实施方式中,存储设备430可以包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)或某个其他大容量存储设备。
输入/输出设备440为系统400提供输入/输出操作。在一些实施方式中,输入/输出设备440可以包括以下中的一者或多者:网络接口设备,例如以太网卡;串行通信设备,例如RS-232端口;和/或无线接口设备,例如802.11卡。在另一实施方式中,输入/输出设备可以包括被配置为接收输入数据并将输出数据发送到外部设备460——例如键盘、打印机和显示设备——的驱动器设备。然而,也可以使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管已经在图4中描述了示例处理系统但可以利用其他类型的数字电子电路系统,或利用计算机软件、固件或硬件——包括本说明书中所公开的结构及其结构等效物,或利用它们中的一者或多者的组合来实现本说明书中所描述的主题和功能操作的实施方式。
可以利用数字电子电路系统,或利用计算机软件、固件或硬件——包括本说明书中所公开的结构及其结构等效物,或利用它们中的一者或多者的组合来实现本说明书中所描述的主题和操作的实施例。本说明书中所描述的主题的实施例可以被实现为一个或多个计算机程序,即,编码在一个或多个计算机存储介质上以供数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。可替代地或另外,程序指令可以编码在人工生成的传播信号,例如机器生成的电气、光学或电磁信号,生成该信号是为了对用于传输至合适的接收器装置以供数据处理装置执行的信息进行编码。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备,或它们中的一者或多者的组合,或被包括在其中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个分离的物理组件或介质(例如多个CD、磁盘或其他存储设备)。
本说明书中所描述的操作可以被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上的或从其他源接收到的数据进行的操作。
术语“数据处理装置”涵盖了用于处理数据的所有种类的装置、设备和机器,该所有种类的装置、设备和机器包括:例如,可编程处理器、计算机、片上系统或前述各者中的多种或组合。装置可以包括专用逻辑电路系统,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置还可以包括为探讨中的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时间环境、虚拟机或它们中的一者或多者的组合的代码。装置和执行环境可以实现各种不同的计算模型基础设施,诸如Web服务、分布式计算和网格计算基础设施。
可以用任何形式的编程语言——包括编译语言或解译语言、声明性语言或程序语言——来编写计算机程序(也称为程序、软件、软件应用、脚本或代码),并且可以按照任何形式——包括作为独立式程序或模块、组件、子例程、对象或适合用于计算环境的其他单元——来部署计算机程序。计算机程序可以但并非必须与文件系统中的文件对应。可以将程序存储在保持其他程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中,或存储在专用于探讨中的程序的单个文件中,或存储在多个协作文件(例如存储一个或多个模块、子程序或部分代码的文件)中。可以将计算机程序部署为在一个计算机上执行或在位于一个站点处或分布跨多个站点分布并且通过通信网络互连的多个计算机上执行。
可以通过一个或多个可编程处理器来进行本说明书中所描述的进程和逻辑流程,该一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并且生成输出来进行动作。也可以通过专用逻辑电路系统——例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)——来进行进程和逻辑流程,并且装置也可以被实现为该专用逻辑电路系统。
适合执行计算机程序的处理器包括:例如,通用微处理器和专用微处理器两者。一般而言,处理器将接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的必要元件是用于根据指令来进行动作的处理器和用于存储指令和数据的一个或多个存储器设备。一般而言,计算机还将包括用于存储数据的一个或多个海量存储设备——例如磁盘、磁光盘或光盘,或计算机可以操作地耦合以从用于存储数据的一个或多个海量存储设备接收数据或将向其传送数据或进行两者。然而,计算机无需具有这样的设备。此外,计算机可以被嵌入在另一设备,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备(例如通用串行总线(USB)闪存驱动器),仅举几例。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括:例如,半导体存储器设备,例如EPROM、EEPROM和闪速存储器设备;磁盘,例如内部硬盘或可移除盘;磁光盘;以及CD-ROM盘和DVD-ROM盘。处理器和存储器可以由专用逻辑电路系统补充或可以并入专用逻辑电路系统中。
为了提供与用户的交互,可以在计算机上实现本说明书中所描述的主题的实施例,该计算机具有:用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器;以及键盘和指向设备,例如鼠标或轨迹球,用户可以通过该键盘和该指向设备来向计算机提供输入。其他种类的设备还可以用于提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以用任何形式——包括声输入、语音输入或触觉输入——来接收来自用户的输入。另外,计算机可以通过向用户所使用的设备发送文档并且从用户所使用的设备接收文档,例如通过响应于从Web浏览器接收到的请求而向在用户的客户端设备上的Web浏览器发送网页)来与用户交互。
本说明书中所描述的主题的实施例可以被实现在:包括后端组件的计算系统,例如作为数据服务器;或包括中间件组件的计算系统,例如应用服务器;或包括前端组件的计算系统,例如具有图形用户界面或Web浏览器的客户端计算机,用户可以通过其来与本说明书中所描述的主题的实施方式交互;或包括一个或多个这样的后端组件、中间件组件或前端组件的任何组合的计算系统中。可以通过例如通信网络的任何形式或介质的数字数据通信来将系统的组件互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、网际网(例如因特网)以及点对点网络(例如自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。借助在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。在一些实施例中,服务器将数据(例如HTML页面)传输至客户端设备(例如为了向与客户端设备交互的用户显示数据并且从与客户端设备交互的用户接收用户输入)。可以从在服务器处的客户端设备接收在客户端设备处生成的数据(例如用户交互的结果)。
虽然本说明书包含了许多具体实施细节,但不应该将这些细节视为对任何发明或可能被要求保护的内容的范围的限制,而是作为针对特定发明的特定实施例的特征的描述。在本说明书中在分离的实施例的场境下描述的某些特征还可以组合地实现在单个实施例中。相反,在单个实施例的场境下描述的各种特征也可以分离地或按照任何合适的子组合实现在多个实施例中。此外,尽管上面可能将特征描述为以某些组合来起作用并且甚至最初如此要求保护,但在一些情况下可以从组合中删除来自要求保护的组合的一个或多个特征,并且要求保护的组合可以涉及子组合或子组合的变化。
类似地,虽然在附图中按照特定次序描绘了操作,但不应该将其理解为需要按照所示的特定次序或按照相继的次序来进行这样的操作,或需要进行所有所示的操作以实现期望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,不应该将在上述实施例中的各种系统组件的分离理解为在所有实施例中需要这样的分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
因此,已经描述了本主题的特定实施例。其他实施例在以下权利要求书的范围内。在一些情况下,在权利要求书中叙述的动作可以按照不同的次序来进行并且仍然可以实现期望的结果。另外,在附图中描绘的进程不一定需要所示的特定次序或相继次序以实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。

Claims (14)

1.一种计算机实现的方法,包括:
由多方计算MPC服务器集群中的第一MPC服务器从客户端设备接收用于检索存储在一个或多个数据库中的多个数据库值的批量请求,所述批量请求包括第一字节阵列,所述第一字节阵列针对多个请求的密钥中的每个请求的密钥包括所述请求的密钥的第一秘密份额,其中,每个数据库包括多个数据项,每个数据项包括数据库密钥和对应的值;
由所述第一MPC服务器处理每个数据库密钥以生成匹配数据的第一秘密份额,所述匹配数据指示所述数据库密钥是否与所述多个请求的密钥中的至少一个请求的密钥匹配;
由所述第一MPC服务器使用每个数据库密钥的所述匹配数据的每个第一秘密份额来生成一个或多个结果,所述一个或多个结果表示与和所述多个请求的密钥中的至少一个请求的密钥匹配的每个数据库密钥对应的数据库值;以及
将所述一个或多个结果发送至所述客户端设备。
2.根据权利要求1所述的计算机实现的方法,其中,所述集群的第二MPC服务器接收第二字节阵列,所述第二字节阵列对于所述多个请求的密钥中的每个请求的密钥包括所述请求的密钥的第二秘密份额。
3.根据权利要求2所述的计算机实现的方法,其中,所述第一MPC服务器和所述第二MPC服务器协作地执行安全MPC操作以生成所述一个或多个结果和一个或多个附加结果,所述一个或多个结果表示与和所述至少一个请求的密钥匹配的每个数据库密钥对应的数据库值,所述一个或多个附加结果表示与和所述至少一个请求的密钥匹配的每个数据库密钥对应的数据库值,其中,所述第二MPC服务器将所述一个或多个附加结果发送到所述客户端设备。
4.根据权利要求2所述的计算机实现的方法,其中:
每个请求的密钥的所述第一秘密份额包括由所述客户端设备使用分布式点函数的生成函数来生成的第一分布式点函数密钥;以及
每个请求的密钥的所述第二秘密份额包括由所述客户端设备使用所述分布式点函数的所述生成函数来生成的第二分布式点函数密钥。
5.根据任一前述权利要求所述的计算机实现的方法,其中,由所述第一MPC服务器处理每个数据库密钥以生成指示所述数据库密钥是否与所述多个请求的密钥中的至少一个请求的密钥匹配的匹配数据的第一秘密份额包括,针对每个数据库密钥:
标识所述第一字节阵列中的所述数据库密钥的每个潜在位置;以及
对于每个潜在位置,使用所述分布式点函数的评估函数来确定所述匹配数据的相应第一秘密份额。
6.根据任一前述权利要求所述的计算机实现的方法,其中,由所述第一MPC服务器使用每个数据库密钥的所述匹配数据的每个第一秘密份额来生成表示与和所述多个请求的密钥中的至少一个请求的密钥匹配的每个数据库密钥对应的数据库值的一个或多个结果包括:
对于每个数据库密钥的每个潜在位置:
确定所述匹配数据的相应第一秘密份额是否具有为1的值;以及
响应于确定所述匹配数据的相应第一秘密份额具有为1的值,将所述匹配数据的所述相应第一秘密份额和所述第一字节阵列的所述潜在位置中的现有值之间的XOR运算的结果确定为所述潜在位置的数据库值的第一秘密份额。
7.根据任一前述权利要求所述的计算机实现的方法,其中,生成所述一个或多个结果包括生成包括第一结果字节阵列的第一结果,所述第一结果字节阵列对于所述数据库中存在的所述多个请求的密钥中的每个请求的密钥包括表示所述请求的密钥的值的对应字节阵列。
8.根据权利要求7所述的计算机实现的方法,其中,对于在所述数据库中未找到的所述多个请求的密钥中的每个请求的密钥,所述第一结果包括为0的值。
9.根据权利要求8所述的计算机实现的方法,其中,生成所述一个或多个结果包括从所述MPC服务器集群中的第二MPC服务器接收表示对第二结果字节阵列和掩码执行的按位XOR运算的结果的乱码响应,其中,所述第二结果字节阵列针对所述多个请求的密钥中的每个请求的密钥包括表示所述请求的密钥的值的对应字节阵列。
10.根据权利要求9所述的计算机实现的方法,其中,生成所述一个或多个结果包括对所述第一结果字节阵列和所述乱码响应计算按位XOR运算。
11.根据权利要求9所述的计算机实现的方法,其中,所述掩码由所述客户端设备和所述第一MPC服务器使用密码算法和针对所述第一字节阵列中的每个位置的输入随机数来生成。
12.一种系统,包括:
一个或多个处理器;以及
存储指令的一个或多个存储装置,所述指令在由所述一个或多个处理器执行时使所述一个或多个处理器执行任一前述权利要求所述的方法。
13.一种承载指令的计算机可读介质,所述指令在被一个或多个处理器执行时使所述一个或多个处理器执行根据权利要求1至11中的任一项所述的方法。
14.一种包括指令的计算机程序产品,所述指令在被一个或多个计算机执行时使所述一个或多个计算机执行根据权利要求1至11中任一项所述的方法的步骤。
CN202380011603.9A 2022-05-03 2023-05-02 使用隐私信息检索和安全多方计算的隐私安全批量检索 Pending CN117355834A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL292731A IL292731A (en) 2022-05-03 2022-05-03 Privacy-secure batch retrieval through private information retrieval and secure multi-party computation
IL292731 2022-05-03
PCT/US2023/020693 WO2023215290A1 (en) 2022-05-03 2023-05-02 Privacy secure batch retrieval using private information retrieval and secure multi-party computation

Publications (1)

Publication Number Publication Date
CN117355834A true CN117355834A (zh) 2024-01-05

Family

ID=86609489

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202380011603.9A Pending CN117355834A (zh) 2022-05-03 2023-05-02 使用隐私信息检索和安全多方计算的隐私安全批量检索

Country Status (4)

Country Link
EP (1) EP4320540A1 (zh)
CN (1) CN117355834A (zh)
IL (1) IL292731A (zh)
WO (1) WO2023215290A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117857039A (zh) * 2024-03-04 2024-04-09 浪潮(北京)电子信息产业有限公司 多方安全计算方法、装置、设备及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117857039A (zh) * 2024-03-04 2024-04-09 浪潮(北京)电子信息产业有限公司 多方安全计算方法、装置、设备及介质
CN117857039B (zh) * 2024-03-04 2024-05-28 浪潮(北京)电子信息产业有限公司 多方安全计算方法、装置、设备及介质

Also Published As

Publication number Publication date
IL292731A (en) 2023-12-01
EP4320540A1 (en) 2024-02-14
WO2023215290A1 (en) 2023-11-09

Similar Documents

Publication Publication Date Title
US20230214684A1 (en) Privacy preserving machine learning using secure multi-party computation
EP4283919A2 (en) Using secure multi-party computation to improve content selection process integrity
US11843672B2 (en) Privacy preserving centroid models using secure multi-party computation
EP4081971B1 (en) Using secure mpc and vector computations to protect access to information in content distribution
US20230188329A1 (en) Using secure multi-party computation and probabilistic data structures to protect access to information
EP4014427B1 (en) Online privacy preserving techniques
Taha et al. An improved security schema for mobile cloud computing using hybrid cryptographic algorithms
JP7471450B2 (ja) セキュアマルチパーティ計算の性能の向上
JP7440667B2 (ja) セキュアマルチパーティ計算を使用したフレキシブルなコンテンツ選択プロセス
CN117355834A (zh) 使用隐私信息检索和安全多方计算的隐私安全批量检索
JP7475492B2 (ja) 機密情報を保護するためのマルチパーティ計算およびk-匿名性技法の使用
WO2023196016A1 (en) Secure computation using multi-party computation and a trusted execution environment
JP2023549009A (ja) セキュアマルチパーティ計算を使用した暗号学的に安全な制御
JP7425222B2 (ja) セキュアマルチパーティ計算を使用したプライバシー保持測定
US20240313953A1 (en) Efficient garbled circuit protocol for secure multi-party computation
CN106447474B (zh) 基于匹配度的在线安全多属性逆向拍卖方法
CN106447473B (zh) 基于匹配度的在线安全多正相关属性逆向拍卖方法
CN116368488A (zh) 用于隐私保护的本地化密码技术

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination