CN112400171A - 采用亚线性公钥操作的私有信息检索 - Google Patents

采用亚线性公钥操作的私有信息检索 Download PDF

Info

Publication number
CN112400171A
CN112400171A CN201880095465.6A CN201880095465A CN112400171A CN 112400171 A CN112400171 A CN 112400171A CN 201880095465 A CN201880095465 A CN 201880095465A CN 112400171 A CN112400171 A CN 112400171A
Authority
CN
China
Prior art keywords
data blocks
data
storage device
sums
partition
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.)
Granted
Application number
CN201880095465.6A
Other languages
English (en)
Other versions
CN112400171B (zh
Inventor
沙瓦·帕特尔
凯文·杨
朱塞佩·佩尔夏诺
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 CN112400171A publication Critical patent/CN112400171A/zh
Application granted granted Critical
Publication of CN112400171B publication Critical patent/CN112400171B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/602Providing cryptographic facilities or services
    • 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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Medical Informatics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

方法(500)包括通过执行私有批量求和检索指令(200)来计算来自不可信存储设备(150)的数据块(102)的c个总和O,以初始化客户端设备(120)上的客户端状态(250)c个总和O。每个计算出的总和O存储在客户端设备的存储器硬件(122)上,并且包括正好k个数据块的对应子集S的总和。所述方法还包括查询指令(300),通过遍历数据块的c个总和O中的每一个来识别不包括查询块Bq的c个总和O之一,指示服务将不可信存储设备伪随机地划分为多个分区并对每个分区中的数据块求和以确定对应的加密数据块总和(302),以检索存储在不可信存储设备上的查询块Bq的c个总和O。

Description

采用亚线性公钥操作的私有信息检索
技术领域
本公开涉及采用亚线性加密操作的私有信息检索。
背景技术
企业和个人正在使用分布式存储系统(例如,云存储服务)将数据存储在位于多个存储器位置上的存储器中。为了使用云存储服务提供的基本功能(例如对存储的数据执行搜索查询),企业需要向云存储服务提供纯文本访问。由此,虽然云存储服务提高了便利性和成本优势,许多政府和敏感的私营部门(例如卫生,金融和法律)仍不愿使用云存储服务。例如,用户的数据访问模式可以提供有关数据和/或用户的大量信息。
私有信息检索(PIR)方案允许用户从一个或多个存储设备检索数据,而不会向托管一个或多个存储设备的服务器透露有关用户或检索到的数据的任何信息。对于PIR,服务器存储设备通常不受保护,而且,私有信息被一组允许从整个存储设备下载数据的用户从公共存储设备或服务器存储设备中检索。尽管用户可以简单地从服务器存储设备下载所有内容,而不会透露访问模式,但是当不得不从跨多个存储设备的云存储服务下载所有内容时,将花费很长时间。此外,允许访问多个用户的传统的PIR方案一般要求用户是无状态的,以便允许同步的且独立的查询而没有用户之间的碰撞或冲突。由于用户不保持任何状态,因此这些传统的PIR方案在计算上很昂贵,需要服务器对具有n个块的数据库执行Ω(n)加密操作。
发明内容
在具有多个客户端的单服务器私有信息检索(PIR)系统中,服务器将在存储资源上存储一组纯文本数据块。当服务器负责生成和存储数据块时,从存储资源中检索特定数据块的客户端希望保证服务器将无法识别客户端检索了哪个数据块。例如,纯文本数据块可以包括服务器为不同应用的多样性而生成和分发的机器学习模型。如果客户端在该纯文本中检索到机器学习模型,则服务器以及最终与服务器相关联的实体将能够在没有PIR提供的保证的情况下了解有关客户端的重要私有信息。
在使用两个或多个服务器的现有PIR协议中,每个服务器共同负责托管纯文本数据以提供多个客户端的访问,假设服务器是非冲突的,即,服务器没有相互共享信息。但是,在现实情况下,多服务器PIR协议是不可行的,因为与共同托管纯文本数据的服务器相关联的不同实体可能成为彼此的竞争者。另一方面,采用单服务器的现有PIR协议要求客户端设备不保持状态,以确保客户端设备可以同时彼此独立地访问纯文本数据块。但是,随着诸如智能电话的现代客户端设备允许应用存储100MB的数据,由于单个服务器必须执行的加密操作的数量,无状态客户端的需求既浪费又计算量巨大。
本文的实施例针对采用异步客户端存储模型的单服务器PIR例程,其中允许每个客户端独立于其他客户端的状态而保持状态。因此,在对存储在服务器管理的存储资源上的纯文本数据块执行查询之后,客户端设备可以独立于其他客户端设备的状态来更新其状态。类似地,当客户端的状态丢失时,只有该客户端需要与服务器执行计算以重新获得该状态。由于允许客户端利用它们的本地存储来彼此独立保持状态,因此单服务器PIR例程通过最小化确保数据块以对服务器不经意的方式被检索所需的加密操作的数量,极大地提高了计算效率。例如,一百万个加密操作(求幂)需要几分钟的CPU时间,而一百万个纯文本操作(例如,加法/异或)需要的时间少于一秒。
尽管不经意随机存取存储器(RAM)协议还使用本地客户端存储器来提高效率,但不经意RAM协议经常会轻易地牺牲从多个客户端执行查询的能力。例如,使用本地客户端存储器的不经意RAM协议要求客户端具有同步状态,这样不仅查询客户端需要更新状态,所有其他非查询客户端也必须更新状态。其后果是,为了保持客户端状态同步,客户端需要互相通信,或者服务器必须跟踪每个客户端的状态,从而导致服务器的更大的存储成本。而且,大多数不经意RAM协议不允许客户端并行访问存储资源,或者对于并行的不经意RAM协议要求客户端到客户端通信。
另一方面,双倍高效PIR协议实现更快的计算时间,但要以信任所有客户端以便共享私钥和彼此诚实为代价。例如,双倍高效PIR协议避免通过使用平滑的本地可解码代码(例如,Reed-Muller代码)对每个存储资源元素执行操作,但是需要使用指定的客户端模型,该模型要求每个客户端共享单个私钥来查询存储资源。在多个客户端共享单个私钥的情况下,单个客户端向服务器泄漏私钥会使服务器确定所有客户端的所有查询索引。此外,双倍高效PIR协议必须存储poly(N,q)数据库大小才能安全地处理q个查询。q个查询后,必须由单个客户端私下重新初始化数据库,并且必须将新密钥提供给所有客户端。通过允许客户端保持状态,本公开的单服务器PIR例程避免了在多个客户端之间重新初始化,并且在特定客户端执行q个查询之后,仅该客户端必须与服务器一起更新状态以继续有效的查询,而其他客户端保持其状态,并且可以自由继续查询。本公开的一个方面提供了一种用于使用私有信息检索(PIR)在不可信存储设备上不经意地检索数据块的方法。该方法包括通过执行私有批量求和检索指令以计算来自不可信存储设备的数据块的c个总和O,由客户端设备的数据处理硬件在客户端设备上初始化客户端状态,每个计算出的总和O存储在客户端设备的存储器硬件上,包括正好k个数据块的相应子集S的总和。指示管理不可信存储设备的服务将n个数据块的不可信存储设备伪随机地分割成
Figure BDA0002887563580000031
个分区,每个分区包含k+1个数据块,并对
Figure BDA0002887563580000032
个分区中的k+1个数据块进行求和,以确定
Figure BDA0002887563580000033
个分区中每个分区对应的加密数据块总和,
Figure BDA0002887563580000034
个分区中的一个包括固定分区,该固定分区包括数据块的已识别的、不包含查询块Bq的c个总和O;从管理不可信存储设备的服务器中检索包括固定分区的
Figure BDA0002887563580000035
个分区的加密数据块之和;解密存储在客户端设备的存储器硬件上的、已识别的数据块的c个总和O,并从中减去加密数据块的总和,以获得查询块Bq。该方法还包括由数据处理硬件(124)确定查询(q)的数量是否超过查询阈值,以及当查询(q)的数量超过查询阈值时,由数据处理硬件(124)重新初始化时的客户端状态。
本公开的实施例可以包括以下可选特征中的一个或多个。在一些实施例中,执行私有批量求和检索指令以计算数据块的c个总和O包括:将存储在不可信存储设备上的每个数据块流式传输到客户端设备,所述不可信存储设备存储n个数据块;将从不可信存储设备流式传输的、选定的数据块分配给相应的数据块的c个子集S中的子集S;以及通过对分配给相应子集S的、选定的数据块求和来计算数据块的每一个c个总和O。在其他实施例中,执行私有批量求和检索指令以计算数据块的c个总和O包括从不可信存储设备下载m个数据块,以计算用于存储在存储器硬件上的数据块的c个总和O。此处,客户端设备下载的m个数据块的数量等于k个数据块的数量与数据块的c个总和O的数量之间的乘积。
甚至在其他实施例中,执行私有批量求和检索指令以计算数据块的c个总和O包括:从客户端设备向管理不可信存储设备的服务发送私有信息检索请求,以从每个k桶中检索t数据块,私有信息请求使得服务将每个t数据块作为相应的私有信息检索结果加密和存储在不信任存储设备上;生成加法同态加密的向量;将加法同态加密的向量上传到不可信存储设备,加法同态加密的向量使得管理不可信存储设备的服务使用加法同态加密的向量在私有信息检索结果上执行加法同态加密的计算,加法同态加密计算对应于数据块的相应c个总和O的密文值;以及从管理不可信存储设备的服务接收和解密密文,以获取对应的数据块的c个总和O。加法同态加密计算包括点乘计算。附加地或可替代地,t可以等于1。
在一些示例中,指示管理不可信存储设备的服务伪随机地将具有n个数据块的不可信存储设备划分为n/(k+1)个分区包括:生成伪随机排列分区密钥(κ)的向量,该向量包括用于伪随机地将不可信存储设备的n个数据块划分为n/(k+1)个分区的指令;以及从客户端设备向管理包括该伪随机排列分区密钥的向量的不可信存储设备的服务发送请求,该请求导致该服务伪随机地将不可信存储设备的n个数据块划分为具有以下n/(k+1)个分区之一的、包括固定分区的n/(k+1)个分区:该固定分区包含已确定的不包括查询块Bq的c个总和O个数据块。伪随机分区包括二维矩阵,其中每一行包括对应的分区,每一列包括针对每个分区中的k+1个块中的相应一个而递增生成的伪随机排列。
本公开的一个方面提供了一种用于使用私有信息检索(PIR)在不可信存储设备上不经意地检索数据块的方法。该系统包括客户端设备的数据处理硬件和与该数据处理硬件通信的客户端设备的存储器硬件。该操作还包括执行查询指令,以通过以下步骤检索存储在不可信存储设备上的查询块Bq:遍历存储在存储器硬件上的c个总和O个数据块的中的每一个,以识别c个总和O个数据块中不包括查询块Bq中的一个;指示管理不可信存储设备的服务伪随机地将具有n个数据块的不可信存储设备划分为
Figure BDA0002887563580000041
个分区,每个分区包含k+1个数据块,并且对每个
Figure BDA0002887563580000042
分区中的k+1个数据块求和,以确定对应的加密数据块对于每个
Figure BDA0002887563580000043
分区的总和,
Figure BDA0002887563580000044
个分区之一包括固定分区,该固定分区包括数据块的已识别的、不包括查询块Bq的c个总和O个;从管理不可信存储设备的服务中检索包括固定分区的
Figure BDA0002887563580000045
个分区的加密数据块的总和;解密存储在用户端设备的存储器硬件上的、已识别的数据块的c个总和O,并从中减去加密数据块的总和,以获得查询块Bq。该方法还包括确定查询(q)的数量是否超过查询阈值,以及当查询(q)的数量超过查询阈值时,重新初始化时的客户端状态。
本公开的一个方面可以包括以下可选特征中的一个或多个。在一些实施例中,执行私有批量求和检索指令以计算数据块的c个总和O;将存储在不可信存储设备上的每个数据块流式传输到客户端设备,所述不可信存储设备存储n个数据块;将从不可信存储设备流传输的选择的数据块分配给数据块的c个子集S中的相应子集S;通过求和分配给相应子集S的所选数据块的总和来计算数据块的每个c个总和O。在其他实施例中,执行私有批量求和检索指令以计算数据块的c个总和O的和包括从不可信存储设备下载m个数据块,以计算数据块的c个总和O的和以存储在存储器硬件上。此处,客户端设备下载的m个数据块的数量等于k个数据块的数量与数据块的c个总和O的和的数量之间的乘积。
甚至在其他实施例中,执行私有批量求和检索指令以计算数据块的c个总和O包括:从客户端设备向管理不可信存储设备的服务发送私有信息检索请求,以从每个k桶中检索t数据块,私有信息请求使得服务将每个t数据块作为相应的私有信息检索结果加密和存储在不可信存储设备上;生成加法同态加密的向量;将加法同态加密的向量上传到不可信存储设备,加法同态加密的向量使得管理不可信存储设备的服务使用加法同态加密的向量在私有信息检索结果上执行加法同态加密的计算,加法同态加密计算对应于数据块的相应c个总和O的密文值;以及从管理不可信存储设备的服务接收和解密密文,以获取对应的数据块的c个总和O。加法同态加密计算包括点乘计算。附加地或可替代地,t可以等于1。
在一些示例中,指示管理不可信存储设备的服务伪随机地将具有n个数据块的不可信存储设备划分为
Figure BDA0002887563580000051
个分区包括:生成伪随机排列分区密钥(κ)的向量,该向量包括用于伪随机地将不可信存储设备的n个数据块划分为
Figure BDA0002887563580000052
个分区的指令;以及从客户端设备向管理不可信存储设备的服务发送请求,所述请求包括该伪随机排列分区密钥的向量,该请求使得该服务将n个数据块的不可信存储设备伪随机地划分为
Figure BDA0002887563580000053
个分区,其中所述
Figure BDA0002887563580000054
个分区中的一个包括固定分区,该固定分区包含数据块的已识别的、不包括查询块Bq的c个总和O。伪随机分区包括二维矩阵,其中每一行包括对应的分区,每一列包括针对每个分区中的k+1个块中的相应一个而递增生成的伪随机排列。
在附图和以下说明中阐述了本公开的一种或多种实施例的细节。根据说明书和附图以及权利要求书,其他方面,特征和优点将是显而易见的。
附图说明
图1A是一个示例性私有信息检索系统的示意图,该系统允许多个保持状态的客户端设备对存储在分布式系统的非暂时性数据存储器上的数据块进行不经意的访问。
图1B是一个示例性私有信息检索系统的示意图,该系统允许多个保持状态的客户端设备对存储在分布式系统的非暂时性数据存储器上的数据块进行不经意的访问。
图2A是示例性私有批量求和检索指令的示意图,该指令将整个数据库从不可信存储设备流式传输到保持状态的客户端设备。
图2B是示例性私有批量求和检索指令的示意图,该指令从分布式系统的不可信存储设备下载特定数量的数据块到保持状态的客户端设备。
图2C-2E是示例性私有批量求和检索例程的示意图,该例程使用来自客户端设备的批量代码将分布式系统的不可信存储设备编码为指定数量的桶,每个桶包含统一数量的数据块。
图3A-3C是在客户端设备上执行示例性查询指令以明显地检索存储在分布式系统的不可信存储设备上的数据块的示意图;
图4A提供了用于生成伪随机分区密钥的向量的示例性算法。
图4B提供了用于使用由客户端设备生成的伪随机分区密钥的向量来对数据库分区的示例性算法。
图4C提供了用于通过执行私有批量代码例程来初始化客户端设备状态的示例性算法。
图4D提供了用于执行查询指令以不经意地从不可信存储设备检索查询块的示例性算法。
图4E提供了用于生成伪随机功能密钥的示例性算法。
图4F提供了使用由客户端设备生成的伪随机分区密钥来对数据库分区以及解压缩固定分区的示例性算法。
图5是关于使用私有信息检索从不可信存储设备中不经意地检索数据块的方法的操作的示例性布置的流程图。
图6是可用于实施本文描述的系统和方法的示例性计算设备的示意图。
各个附图中相同的参考符号指示相同的元件。
具体实施方式
本文中的实施例是针对单服务器私有信息检索(PIR)例程的,该例程允许各自具有异步状态的多个客户端设备不经意地检索存储在由服务提供商管理的不可信存储器上的数据块。不可信存储器可以包括分布式存储系统的存储资源,该分布式存储系统的存储资源在客户端设备可访问的云环境中执行。存储在不可信存储器上的数据块是公知且未加密的(例如,纯文本)。因此,具有多个具有独立存储(例如,异步状态)的客户端设备的单服务器PIR例程有效地隐藏了来自不可信存储器的公知且未加密的数据的访问模式。在一示例中,管理存储资源(例如,不可信存储器)的服务提供商可以生成机器学习模型以分发给客户端设备。此处,服务器提供商可以将生成的机器学习模型作为数据块存储在存储资源上,并且客户端设备可以使用有关客户端的私有信息来查询特定的机器学习模型。单服务器PIR例程防止分发机器学习模型的服务提供商获知客户端设备检索了哪个机器学习模型。在另一个示例中,经历出厂重置的客户端设备经常检查客户端设备是否与企业集团或个人相关联。客户端设备的制造商(或在客户端设备上执行的操作系统或其他软件的提供者)可以将一组企业标识符和关联的客户端标识符存储为纯文本。当客户端设备属于特定企业集团时,虽然可能需要额外的操作来完成出厂重置,但是单服务器PIR例程确保当客户端设备不属于企业集团时,与客户端设备相关联的客户端标识符不会被泄漏给制造商。
异步状态是指每个客户端设备相对其他客户端设备具有独立的存储器,以允许客户端设备在执行对存储在不可信存储器上的数据的查询之后彼此独立地更新其状态。类似地,当客户端设备决定释放状态时,所有其他客户端设备的查询相对于管理不可信存储器的服务器保持隐藏。为了构造单服务器PIR例程并在以后提供更有效的在线查询,客户端设备首先通过执行私有批量求和检索例程来初始化其状态,然后执行受限的伪随机分区指令,当客户端设备执行对存储在不可信存储器中的数据块的查询时,该伪随机分区指令允许客户端设备将固定分区转达给管理不可信存储器的服务。
图1A和1B描述了示例系统100,该示例系统100用于在分布式系统140上存储公知的和未加密的n个数据块(B)102,并且允许保持异步状态250的多个客户端设备120,120a-n使用私有信息检索(PIR)来不经意地检索数据块(B)102以隐藏访问模式,同时保留客户端设备120在数据块(B)102上的搜索功能。由此,客户端设备120可能不拥有数据块102,并且数据块102的内容在配置中对公众是可用的。与客户端10相关联的客户端设备120(例如,计算机)经由网络130与具有可伸缩/弹性非暂时性存储摘要150的分布式系统140通信。客户端设备120可以包括关联的存储器硬件122和关联的数据处理硬件124。当执行查询指令300以查询存储在存储抽象150上的数据块(B)102时,每个客户端设备120可以利用关联的存储器硬件122来保持状态250,以存储一个或多个数据块(B)102。存储摘要150(例如,文件系统,数据存储等)覆盖在存储资源114上,以允许一个或多个客户端设备120可扩展地使用存储资源114。
在一些实施例中,分布式系统140执行管理对存储摘要150的访问的计算设备112(例如,服务器)。例如,服务器可以以纯文本在存储摘要上生成和存储数据块,并且客户端设备120可以从存储摘要150中以纯文本检索数据块102。尽管所示示例描述了具有与客户端设备120关联的受信侧的系统100通过网络130与与分布式系统140相关联的不可信侧进行通信,但是系统100可以可替代地在具有可信计算设备(CPU)和不可信数据存储器的大型企业内部网中实施。与分布式系统140或数据存储相关联的不可信侧被视为“诚实但好奇的”,因此,计算设备112诚实地遵循该协议,但是可以使用分布式系统140泄漏的信息来执行任何概率多项式时间算法,以获得补充说明。
在一些实施例中,分布式系统100包括资源110,110a-z。资源110可以包括硬件资源和软件资源。硬件资源110可以包括计算设备112(也称为数据处理设备和数据处理硬件)或非暂时性存储器114(也称为存储器硬件和存储资源)。软件资源110可以包括软件应用,软件服务,应用编程接口(API)或其他类似的资源。软件资源110可以驻留在硬件资源110中。例如,软件资源110可以存储在存储器硬件114中,或者硬件资源110(例如,计算设备112)可以正在执行软件资源110。
软件应用(即,软件资源110)可以是引起计算设备执行任务的计算机软件。在一些示例中,软件应用可以被称为“应用”,“app”或“程序”。示例应用包括,但不限于,系统诊断应用,系统管理应用,系统维护应用,文字处理应用,电子表格应用,消息传递应用,媒体流应用,社交网络应用和游戏应用。
存储器硬件114、122可以是用于临时或永久地存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备112和/或客户端设备120(即,客户端设备120的数据处理硬件124)使用的物理设备。存储器硬件114、122可以是易失性和/或非易失性的可寻址半导体存储器。非易失性存储器的示例包括,但不限于,闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,例如引导程序)。易失性存储器的示例包括,但不限于,随机存取存储器(RAM),不经意随机访问存储器(ORAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),相变存储器(PCM),以及盘或带。
网络130可以包括各种类型的网络,诸如局域网(LAN),广域网(WAN)和/或因特网。尽管网络130可以表示远程网络(例如,因特网或WAN),但是在一些实施例中,网络130包括较短范围的网络,例如局域网(LAN)。在一些实施例中,网络130使用标准通信技术和/或协议。因此,网络130可以包括使用诸如以太网,无线保真(WiFi)(例如,802.11),全球微波接入互通性(WiMAX),3G,长期演进(LTE),数字用户线(DSL),异步传输模式(ATM),无限带宽,PCIExpress高级交换,蓝牙,低功耗蓝牙(BLE)等技术的链接。类似地,在网络130上使用的联网协议可以包括多协议标签交换(MPLS),传输控制协议/因特网协议(TCP/IP),用户数据报协议(UDP),超文本传输协议(HTTP),简单邮件传输协议(SMTP),文件传输协议(FTP)等。通过网络130交换的数据可以使用包括超文本标记语言(HTML),可扩展标记语言(XML)等的技术和/或格式来表示。此外,可以使用常规加密技术对所有或部分链接进行加密,例如安全套接字层(SSL),传输层安全性(TLS),虚拟专用网络(VPN),互联网协议安全性(IPsec)等。在其他示例中,网络130使用定制的和/或专用的数据通信技术来代替上述技术或在其之上使用。
数据块102对应于数据的原子单位,并且每个数据块102的大小为B字节。例如,用于在分布式系统上存储的B的典型值可能是64KB到256B。符号n表示与一个或多个存储资源114相关联并且使用PIR存储在存储摘要150上的数据块102的数量。n个数据块(B)102中的每一个都存储在跨存储器硬件114覆盖的存储摘要150的对应存储位置118,118a–n(图1B)中。具体地,n个数据块(B)102与PIR存储器相关联,由此n个数据块(B)102被存储在一个或多个存储资源114上,并且未被加密并且可供公众使用。例如,未加密的公共数据块(B)可以与由分布式系统140生成的机器学习模型相关联并可供客户端设备120下载。
为了提供对由分布式系统140的存储摘要150(例如,数据库)存储的公共已知的纯文本数据块102的更有效的查询,每个客户端设备120通过执行私有批量求和检索(BSR)指令200来初始化对应的状态250,该指令200使得客户端设备120计算来自存储摘要150的数据块120的c个总和O,以存储在客户端设备120的存储器硬件122上。此处,计算c个总和O中的每一个包括正好为k个数据块120的对应子集S的总和。在一些实施例中,每个客户端设备120在计算每个数据块102的c个总和O1,O2,...,OC之前,生成并应用随机排列(π1,π1,...,πk)到相应的子集S1,S2,...,SC中的每个k块。客户端设备120可以在停机时间(例如,夜间)内初始化状态250并执行私有BSR指令200,以便在以后的时间提供对数据块102的更有效的查询。在执行阈值数量的查询之后,每个客户端设备120独立于其他客户端设备120的状态250而重新初始化其状态250,而不会中断其他客户端设备120的查询。
客户端设备120可以基于一个或多个因素来选择不同的私有BSR指令200,这些因素包括但不限于数据库的大小(例如,n个数据块102的数量),计算要求和/或带宽要求。例如,私有BSR指令200可以包括流式传输私有BSR指令200a,200(图2A),该指令从存储摘要150流传输每n个数据块102,并且将选择的数据块102分配给对应的c个子集S以计算每个数据块的c个总和O。在其他示例中,私有BSR指令200包括批量私有BSR指令200b,200(图2B),该指令从存储摘要150下载m个数据块102以计算数据块的c个总和O。在其他示例中,私有BSR指令200包括批量代码私有BSR指令200c,200(图2C-2E),该指令将存储摘要150划分为k个桶,并且对于每个待计算的数据块102的c个总和O,从k个桶中的每一个中下载t个数据块,以计算数据块102的相应总和O,以存储在存储器硬件122上(即,在状态250内)。通常,流式传输私有BSR指令200a对于较小尺寸的数据库是最有效的,而批量代码私有BSR指令200c对于较大尺寸的数据库是最有效的。批量私有BSR指令200b可以在中型数据库上提供最佳查询效率。
初始化状态250之后,客户端设备120执行查询指令300,以不经意地检索存储在存储摘要200上的查询块Bq。此处,客户端设备120在对应的状态250中遍历搜索,以识别不包括查询块Bq的c个总和O个中的一个。识别出不包括查询块Bq的c个总和O,客户端设备120可以发送分区请求320,该分区请求320指示管理存储摘要150的服务(例如,服务器)160伪随机地将n个数据块的存储摘要划分为
Figure BDA0002887563580000101
个分区350,每个分区350包含k+1个数据块并对
Figure BDA0002887563580000102
个分区中的每一个中的k+1个数据块求和,以确定
Figure BDA0002887563580000103
个分区中的每一个的对应的加密数据块总和302。
Figure BDA0002887563580000104
个分区的分区350包括二维矩阵。有利的是,分区请求320将包括所识别的c个总和O的固定分区嵌入到
Figure BDA0002887563580000105
个分区中的一个,由此所识别的c个总和O被嵌入到二维矩阵的随机行(例如,第r行)中。不经意地,服务160可以返回加密的数据块总和302,该加密的数据块总和302包括用于c个总和O数据块102(即,k个数据块)的所识别的c个总和O的固定分区以及查询块Bq(例如,+1块)。响应于接收加密的数据块总和302,客户端设备120(例如,经由数据处理硬件124)解密以及从存储在客户端设备120的数据块的已识别的c个总和O中减去加密数据块的总和302,以获得查询块Bq。因此,通过执行指令300,客户端设备120能够检索数据块Bq,而不会泄露数据块102的内容也不会泄露客户端设备120对分布式系统140执行的查询的顺序。服务160可以在数据处理硬件112上执行。
参考图1B,在一些实施例中,分布式存储系统140包括松散耦合的存储器主机110,110a-z(例如,计算机或服务器),每个存储器主机具有计算资源112(例如,一个或多个处理器或中央处理单元(CPU)),该计算资源112与可以用于缓存数据的存储资源114(例如,存储器硬件,存储器硬件,闪存,动态随机存取存储器(DRAM),相变存储器(PCM)和/或盘)通信。存储摘要150覆盖在存储资源114上,以允许一个或多个客户端设备120,120a-n可扩展地使用存储资源114。客户端设备120可以通过网络130(例如,经由远程过程调用(RPC))与存储器主机110通信。计算资源112可以执行服务160。
在一些实施例中,分布式存储系统140是“单侧的”,当客户端设备120执行指令300来对数据块102执行查询(q)时,消除了用于响应来自客户端设备120的查询的任何服务器作业以从存储摘要150检索数据块102的需要。“单侧”是指可以通过硬件而不是通过在存储器主机110的CPU112上执行的软件来完成对存储器主机110的大多数请求处理的方法。与单侧分布式缓存系统有关的其他概念和特征可以在美国专利9,164,702中找到,该专利在此全文引入作为参考。
分布式系统140可以在远程存储器主机110(例如,存储摘要200)的存储资源114(例如,存储器硬件)的周围不经意地移动数据块102,并且经由RPC或经由支持远程直接内存访问(RDMA)的网络接口控制器(NIC)116从远程存储器主机110获取数据块102。网络接口控制器116(也称为网络接口卡,网络适配器或LAN适配器)可以是将计算设备/资源112连接到网络130的计算机硬件组件。存储器主机110a-z和客户端设备120均可以具有用于网络通信的网络接口控制器116。在硬件资源110的物理处理器112上执行的指令300向网络接口控制器116注册了存储器114的一组远程直接存储器可访问区域/位置118A-N。每个存储器位置118被配置为存储对应的数据块102。
图2A提供了示例性流式传输私有BSR指令200a,其在客户端设备120上执行以流式传输PIR存储摘要114、150(例如,存储摘要/数据库)的全部内容,以便计算数据块102的c个总和O,其中,每个总和正好包含k个数据块。为了初始化n个数据块102的流式传输,客户端设备102可以向管理PIR存储摘要150的服务160发送流式请求202。由于所有n个数据块102都被流式传输,指令200a不必向服务器160隐藏客户端设备120访问了哪些数据块102。客户端设备120可以将流式传输中的所选定的数据块102分配给数据块102的c子集中的子集S1,S2,...,SC中的对应子集。此后,客户端设备120通过对分配给对应子集S1,S2,...,SC(例如,输入)的选定的k个数据块求和来计算每个c个总和O1,O2,...,OC(例如,输出)。对于每个子集S,客户端设备120可以进一步将对应的随机排列应用于子集S中包括的每个数据块B1,B2,...,Bk。存储在客户端设备的存储器硬件122上的数据块的总数m等于子集S的总数c乘以分配给每个子集的数据块的数量k。流式传输私有BSR指令200a可以在客户端设备120处使用O(n)带宽,O(m)加法和O(c)本地存储器。
图2B提供了在客户端设备120上执行的示例性批量私有BSR指令200b,该指令使得客户端设备120发送下载请求204以从PIR存储摘114,150下载正好m个数据块,以便计算数据块102的c个总和O,每个和正好包含k个数据块。因此,尽管流式传输私有BSR指令200b从PIR存储摘要114、150流式传输所有n个数据块,但是批量私有BSR指令200b仅下载组装客户端状态250的c个子集S所需的m个数据块102。由于客户端设备下载的m个数据块的数量等于k个数据块的数量与数据块的c个总和O的数量之间的乘积,因此指令200b将k个数据块正好分配给数据块102的c子集中的子集S1,S2,......,SC中的相应的一个。此后,客户端设备120通过对分配给对应子集S1,S2,...,SC(例如,输入)的选定的k个数据块求和来计算每个c个总和O1,O2,...,OC(例如,输出)。对于每个子集S,客户端设备120还可以进一步将对应的随机排列应用于子集S中包含的每个数据块B1,B2,...,Bk。批量私有BSR指令200b可以使用O(mlogn+λ+mB)带宽和O(n)计算。
图2C-2E提供了在客户端设备120上执行的示例性批量代码私有BSR指令200b,其将n个数据块102的PIR存储摘要114,150分区/分割/分段为k个桶260,并且,对于每个要计算的存储在客户端设备120上的数据块102的c个总和O,从k个桶260中的每一个桶下载t个数据块,以计算数据块102的相应总和O。当客户端设备120在批量代码私有BSR指令200b的执行期间初始化状态250时,较小的桶260细分存储摘要150以增加带宽。客户端设备120在分布式系统140处划分的k个桶260的数量是基于安全性和/或带宽需求可调整的。在所示的示例中,存储摘要150的n个数据块102被划分为四个桶260,260a-d从而使得四个桶250,260a-d共同包括N个(例如,16个)数据块102A-102N。此外,使用编码功能对每个k个桶260内的数据块102进行加密。
图2C示出了客户端设备通过向服务160发送批量代码262来初始化指令200b,从而使得服务160将存储摘要150划分为k个桶250a-d,并使用编码功能来对出现在所有k个桶中的N个块102进行编码。批量代码262确保对于具有最多m个项目的任何子集S来说,分配给相应子集S的一组块102可以通过读取k个存储桶260中的最多t个项目来检索。此处的实施例将t设置为等于1(1)。在一些示例中,批量代码262包括杜鹃批量代码。客户端设备120可以包括与数据处理硬件124通信以提供批量代码262的加密模块305。加密模块305可以包括在数据处理硬件124上执行的软件,或者可以包括与数据处理硬件124通信的单独的硬件。图2C还进一步示出了客户端设备120的状态250,其初始化以针对第一和第二子集S1,S2准确地检索k个数据块,例如,c等于两个子集S。尽管仅通过示例示出了两个子集,但是其他示例可以包括多于两个的子集。
图2D示出了在执行批量代码私有BSR指令200c的同时,客户端设备120向服务160发送PIR请求264以从第一子集S1的k个桶260a-260d的每一个中下载t个数据块102。虽然未示出,为了输入到第二子集S2,客户端设备120还发送相应的PIR请求264以从k个桶中的每一个下载t个数据块102。响应于接收PIR请求264,服务加密并存储从k个桶260中检索的每个t数据块102,作为与第一子集S1相关联的对应的私有信息检索结果r1,r2,r3,r4。因此,结果被存储在分布式系统140的存储资源114上。在所示的示例中,t等于1,从而使得服务160从存储桶1260a随机下载,加密和存储块2,作为PIR结果r1;从存储桶2260b下载,加密和存储块7,作为PIR结果r2;从桶3260c下载,加密和存储块12,作为PIR结果r3;以及从存储桶4260d下载,加密和存储块15,作为PIR结果r4
在发送PIR请求304以从第一子集S1的每个存储桶260下载t个数据块102之后,客户端设备生成加法同态加密的向量266,并上传加法同态加密的向量(e1,e2,e3,e4)266到分布式系统140(例如,存储摘要150)。在一些示例中,当且仅当要计算的和Oi需要来自第i个存储桶260的块102作为和的一部分,同态加密ej是对1(1)加密,否则同态加密ej是对零(0)加密。加法同态加密的向量(e1,e2,e3,e4)266使得服务160使用加法同态加密的向量(e1,e2,e3,e4),在与第一子集S1相关联的私有信息检索结果r1,r2,r3,r4上执行加法同态加密计算268。加法同态加密计算268对应于对应的数据块的c个总和O的密文值。加法同态加密允许服务160执行加法同态加密计算268,以使得从k个存储桶260下载的编码结果可以进行求和计算,从而减轻与执行加密操作相关的计算成本。加法同态加密计算包括点乘计算。此后,服务160将对应的数据块的c个总和O(例如,图2D的示例中的和O1)的密文值返回到客户端设备120,并且客户端设备120解密密文值以计算数据块中的c个总和O(例如,图2D的示例中的和O1),用于存储在本地存储器硬件122上以初始化状态250。重复该过程以对要计算的数据块计算每个c个总和O。
图3A-3C提供了在客户端设备120上执行的示例性查询指令300,该指令用于在通过执行图2A-2E中的私有BSR指令200来初始化状态250之后从存储摘要150中检索查询块Bq。图3A示出了客户端设备120遍历存储在存储器硬件122上的数据块1-2的c个总和O中的每个,以识别不包括查询块Bq的c个总和O中的一个。在所示的示例中,客户端设备120在识别出第三个和O3不包括查询块Bq时,停止对c个总和O的遍历。和O1,O2和Oc都包含查询块Bq。存储摘要150包括具有n个数据块102,102a-n的数据库。本公开中的存储摘要150的数据库可以包括具有以1至n排序的整数的在线部分总和数据结构,以允许部分总和的高效结构,更新项以及有效地选择值。
图3B示出了客户端设备120在识别不包括查询块Bq的c个总和O(例如,总和O3)之后生成密钥κ(PRPartition.GenerateKey(n,k+1,S))的向量。图4A提供了用于生成密钥κ(PRPartition.GenerateKey(n,k+1,S))的向量的示例性算法400a。由客户端设备120在查询指令200的执行期间生成的密钥κ的向量包括用于将n个数据块的不可信存储设备伪随机地划分为每个包含k+1个数据块102的
Figure BDA0002887563580000141
个分区350的指令。更具体地,
Figure BDA0002887563580000142
个分区350包括受约束的、伪随机分区的二维矩阵,使得分区之一是固定分区,其包括所确定的不包括查询块Bq的数据块的c个总和O(例如,总和O3)。因此,以从存储摘要150和管理存储摘要150的服务160无视的方式,将密钥κ的向量将与不包括查询块Bq的数据块的所标识的c个总和O(例如,总和O3)相对应的子集S(例如,子集S3)嵌入分区350的随机的第r行,以作为固定分区。有利的是,客户端设备120可以生成密钥κ的向量,以用于本地地分区存储摘要150,而无需在分布式系统140处进行任何计算。
客户端设备120指示服务160执行有条件的伪随机划分,以利用节省空间的表示来采样给定大小的数据的随机子集。即,密钥κ的向量通过生成随机密钥/种子κ并使用集合{F(κ,1),...,F(κ,k)},在[n]个整数(例如,数据块102)的存储摘要150(例如,数据库102)上使用伪随机排列族。作为结果,请求320使得服务160将[n]个整数划分为大小为k+1的
Figure BDA0002887563580000151
组整数,作为二维矩阵,其中每一行将代表对应的分区。二维矩阵初始化为空,并且是伪随机排列,用于选择一行以随机选择的顺序嵌入输入子集S。[n]个整数中的剩余元素可以随机分配到空矩阵。
Figure BDA0002887563580000152
个分区之一固定为正好有k个数据块102的输入子集S。该固定的输入子集S对应于本地存储在客户端设备120的存储器硬件122上的数据块102的计算的c个总和O中的一个。具体地,CPP指令300的执行通过选择一个枢轴来保证固定输入子集S对应于由BSR指令200预先计算的c个总和O中的一个,这样,在枢轴,...,枢轴
Figure BDA0002887563580000153
处产生的排列的
Figure BDA0002887563580000154
个分区之一是所需的固定输入子集S。因此,固定输入子集S将对应于对
Figure BDA0002887563580000155
指数的排列的评估。
在一些示例中,为了找出与固定元素s相关的枢轴,可以将枢轴设置为π-1(s)–r,其中r是从
Figure BDA0002887563580000156
中随机选出的,以确保s将出现在生成的子集中。仅当围绕固定元素生成的大小为
Figure BDA0002887563580000157
的随机子集中不包含输入子集中的任何其他元素时,采样才会成功。随机子集不包含输入子集元素的概率可以描述如下:
Figure BDA0002887563580000158
基于这种方法,排列键可以表示矩阵的每一列的子集,从而所有列子集都正好包含来自嵌入矩阵的一行的固定输入子集S的一个元素。此外,所有列子集必须成对不相交。在一些示例中,指令300生成用于所有可能的剩余项目上的伪随机排列的随机密钥。伪随机排列li:=F(K,i)的评估映射到第li大的剩余元素。从排列π选出的大小为k的子集只是包含第l1,...,lk个最大剩余元素的集合,从而确保所有将来的采样子集与任何在先的固定列子集不相交。由于具有确保采样子集不相交的功能,每个列子集可以通过使用恒定数量的样本来生成。
虽然显式存储所有未使用的元素需要线性存储,但是指令300仅需要了解输入子集中剩余的未使用项。特别地,需要了解关于未使用项的数量,这些未使用项的数量对于每个剩余的输入子集元素而言值较小,被定义为排名。输入子集的各项按已排序的顺序存储,以使索引i的特定总和将等于输入子集的第i个最大成员的排名。初始化数据结构时,差异将存储在已排序输入子集的相邻元素之间,以确保可以通过执行部分和查询来检索排名。从一组未使用的元素中删除一个元素需要将所有输入子集元素中比被删除元素大的元素的排名降低一。这可以通过简单地从输入子集中最小项目的索引中减去一个大于要删除的元素的索引来实现。作为结果,所有更大的输入子集元素的排名也将降低一。从输入子集中找到大于被删除元素的最小元素需要一个单独的PartialSums.Select操作,而检索排名和更新条目则分别需要PartialSums.Sum操作和PartialSums.Update操作。整个数据结构仅需要为每个输入子集项存储一个条目,这意味着存储需求与输入子集的大小呈线性关系。
继续参考图3B,客户端设备120向服务160发送请求320,该请求320包括伪随机排列分区密钥κ的向量。当服务160接收到请求320时,请求320使得服务160将n个数据块102的存储摘要150伪随机地分区(PRPartition.GetPartition(κ))为
Figure BDA0002887563580000161
个分区350,其中
Figure BDA0002887563580000162
个分区350之一包括固定的包括已标识的不包括查询块Bq的数据块102的c个总和O(例如,总和O3)的分区。图4B提供了示例性算法400b,该算法400b用于使用伪随机排列分区密钥κ的向量将存储摘要150伪随机地分区为
Figure BDA0002887563580000163
个分区350。在所示的示例中,
Figure BDA0002887563580000164
个分区350中的第三分区P3包括:固定分区,其包括查询块Bq;以及已识别的不包括查询块Bq的数据块102的c个总和O(例如,总和O3)。此处,第三分区P3包括已识别的数据块102的c个总和O的k个块和一个包括查询块Bq的附加块。第三分区P3对应于表示
Figure BDA0002887563580000165
个分区350的二维矩阵的第三行。服务160对PIR存储摘要150(例如,数据库)的伪随机分区进一步包括服务160对每个分区350中的k+1个数据块求和以确定对应的加密数据块对于每个分区P1,P2,...,P(n/k+1)的总和T1,T2,...,T(n/k+1)302。
图3C示出了服务160不经意地返回第三分区P3的加密数据块总和T3302,该加密数据块总和T3302包括已识别的数据块102的c个总和O的k个块和一个包括查询块Bq的附加块。响应于接收到加密的数据块总和T3302,客户端设备120解密该加密的数据块总和T3302,检索不包括查询块Bq的数据块102的已识别的c个总和O(例如,总和O3),并从识别出的k个数据块102的c个总和O3中减去解密后的数据块总和T3302,以得到查询块Bq
图4C提供了示例性算法400c,该算法用于通过执行上述说明中提出的私有BSR指令200、200a,200b,200c之一来初始化客户端状态250。图4D提供了用于执行查询(q)以检索查询块Bq的示例算法400d。示例算法400d包括:PRPartition.GenerateKey(n,k+1,S)步骤,该步骤用于在客户端设备120上本地生成伪随机分区密钥κ的向量;以及后续的PRPartition.GetPartition(κ)步骤,该步骤用于使用伪随机分区密钥κ的向量伪随机地分区PIR存储。
在其他实施方式中,将受约束的伪随机分区替换为使用伪随机函数的不经意地受约束分区。子例程可以通过从给出任意种子/密钥κ的n个数据块102的存储摘要150中提取大小为m的块的有序对象,来评估连续输入的伪随机函数(PRF)直到遇到m个不同的值,从而生成不经意地受约束的分区。给定一组由种子/密钥κ生成的集合Tκ,该例程可以将Tκ的第r个元素固定为任意值,从而使得重新定向的子集的第r个值为i,其余的m–1个元素为随机值。作为这样一个随机受约束子集,可以通过对随机κ采样,生成Tκ以及将第r个元素固定到表示
Figure BDA0002887563580000171
个分区350的二维矩阵中来生成。此处,采样只需要了解受约束子集中剩余的未使用项,因为仅需要进行检查以确定随机生成的受约束子集是否与固定子集之外的受约束子集进行交互。换句话说,采样只需要了解未使用数量的值,这些值小于每个剩余受约束子集元素的值。该了解对应于每个受约束子集元素的曲柄。这样,只有受约束子集和所有未使用项目中的相应排名才需要显式存储。因此,一旦固定了列子集,就必须更新所有输入子集元素的排名,以反映出不再使用的所有固定项。也就是说,所有受约束子集元素的排名必须按列子集中的所有较小项降序。结果是,用于生成明显的受约束分区的子例程仅需要O(k)存储来维持排名。
用于生成不经意地受约束的分区的例程可以包括用于生成密钥的生成密钥步骤(OCP.GenerateKey)和用于提取固定分区的提取分区步骤(OCP.ExtractPartition)。图4E提供了用于生成密钥的OCP.GenerateKey步骤的示例算法400e,图4F提供了用于提取固定分区的示例算法400f。在一些实施例中,用于执行查询指令300以检索数据块Bq的示例性算法400d可以用伪随机函数的不经意地受约束的分区来替换伪随机分区,而不脱离本公开的范围。此处,算法400d可以用于生成密钥的OCP.GenerateKey步骤(图4E)替换PRPartition.GenerateKey(n,k+1,S)步骤(图4A),以及替换随后的具有提取分区的步骤OCP.ExtractPartition(图4F)的PRPartition.GetPartition(κ)(图4B)步骤,以不经意地将PIR存储器分区并基于PRF密钥提取固定分区。
图5是用于方法500的操作的示例性布置的流程图,该方法500使用私有信息检索(PIR)来检索以纯文本形式存储在不可信存储设备114、150上的公共已知数据块102。不可信存储设备可以包括一个或多个在分布式系统140上实现存储摘要150的存储设备114。不可信存储设备114、150可以是存储可用于多个客户端设备访问的公共已知和未加密的数据块的任何数据存储或数据库。PIR方面保证不可信存储设备150或管理存储设备150的服务160不必学习从存储设备150的访问模式或数据检索。每个客户端设备120的数据处理硬件124可以通过执行存储在存储器硬件122上的指令来执行方法500的操作。在操作502中,方法502包括通过执行私有批量求和检索指令200来初始化客户端设备120上的客户端状态250,以计算来自不可信存储设备150的数据块102的c个总和O,每个计算出的总和O存储在客户端设备120的存储器硬件122中并且包括正好k个数据块102的对应子集S的总和。
在操作504中,方法500包括执行查询指令300以通过遍历存储在存储器硬件124上的数据块102的每一个c个总和O来检索存储在不可信存储设备150上的查询块Bq,以识别不包括查询块Bq的c个总和O中的一个。在操作506中,查询指令300的执行还进一步包括指示管理不可信存储设备150的服务160将n个数据块的不可信存储设备150伪随机地划分为每个包含k+1个数据块102的
Figure BDA0002887563580000181
个分区350,并对每个
Figure BDA0002887563580000182
分区350中的k+1个数据块求和,以确定每一个
Figure BDA0002887563580000183
个分区350对应的加密数据块的总和302,
Figure BDA0002887563580000184
个分区350中的一个包括固定分区,该固定分区包括已识别的、不包括查询块Bq的c个总和O个数据块。操作506可以通过图4A和图4B所示的算法400a,400b,基于受约束的伪随机分区,或者通过如图4E和4F所示的算法400e,400f,基于不经意地受约束的分区,来生成分区350。
在操作508中,查询指令300的执行还进一步包括从管理不可信存储设备150的服务中检索包括固定分区的
Figure BDA0002887563580000185
个分区的加密数据块总和302。在操作510中,查询指令300的执行还进一步包括从存储在客户端设备120的存储器硬件122上的、已识别的c个总和O个数据块中解密并减去加密的数据块总和302,以获得查询块Bq。该方法可以包括:确定查询(q)的数量是否超过查询阈值,以及当查询(q)的数量超过查询阈值时,重新初始化客户端状态250。
图6是可用于实现本文描述的系统和方法的示例性计算设备600(例如,数据处理硬件)的示意图。计算设备600旨在表示各种形式的数字计算机,例如膝上型计算机,台式计算机,工作站,个人数字助理,服务器,刀片服务器,大型机和其他适当的计算机。此处所示的组件,它们的连接和关系以及它们的功能仅是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实现。
计算设备600包括处理器610,存储器620,存储设备630,连接到存储器620的高速接口/控制器640和高速扩展端口650以及连接到低速总线670和存储设备630的低速接口/控制器660。组件610、620、630、640、650和660中的每个组件都通过各种总线互连,并且可以安装在通用主板上或视情况以其他方式安装。处理器610可以处理用于在计算设备600内执行的指令,包括存储在存储器620中或存储在存储设备630上的指令,以在诸如耦合到高速接口640显示器680的外部输入/输出设备上显示用于图形用户界面(GUI)的图形信息。在其他实施方式中,可以适当地使用多个处理器和/或多个总线,以及多个存储器和存储器的类型。而且,可以连接多个计算设备600,每个设备提供部分必要操作(例如,作为服务器库,一组刀片服务器或多处理器系统)。
存储器620在计算设备600内存储非暂时存储信息。存储器620可以是计算机可读介质,易失性存储单元或非易失性存储单元。非暂时性存储器620可以是用于临时地或永久地存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备600使用的物理设备。非易失性内存的示例包括,但不限于,闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器存储器(EEPROM)(例如,通常用于固件,例如引导程序)。易失性存储器的示例包括,但不限于,随机存取存储器(RAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),相变存储器(PCM),以及磁盘或磁带。
存储设备630(例如,存储器硬件)能够为计算设备600提供大容量存储。在一些实施例中,存储设备630是计算机可读介质。在各种不同的实施例中,存储设备630可以是软盘设备,硬盘设备,光盘设备或磁带设备,闪存或其他类似的固态存储设备,或设备阵列,包括在存储区域网络或其他配置中的设备。在另外的实施例中,计算机程序产品有形地体现在信息载体中。该计算机程序产品在执行时包含执行一种或多种方法的指令,例如上述方法。信息载体是计算机或机器可读介质,例如存储器620,存储设备630或处理器610上的存储器。
高速控制器640管理计算设备600的带宽密集型操作,而低速控制器660管理较低带宽密集型操作。这种职责分配仅是示例性的。在一些实施例中,高速控制器640耦合到存储器620,显示器680(例如,通过图形处理器或加速器)和高速扩展端口650之类可以接受各种扩展卡(未示出)。在一些实施例中,低速控制器660耦合到存储设备630和低速扩展端口670。包括各种通信端口(例如,USB,蓝牙,以太网,无线以太网)的低速扩展端口670可以耦合到一个或多个输入/输出设备,例如键盘,定点设备,扫描仪或网络设备(如交换机或路由器),例如通过网络适配器。
如图所示,计算设备600可以以多种不同的形式实现。例如,它可以被实现为标准服务器600a或多组所述的服务器600a,被实现为膝上型计算机600b或被实现为机架服务器系统600c的一部分。
软件应用程序(即,软件资源)可以指引起计算设备执行任务的计算机软件。在一些示例中,软件应用可以被称为“应用(application)”,“应用(app)”或“程序”。示例应用程序包括,但不限于,系统诊断应用程序,系统管理应用程序,系统维护应用程序,文字处理应用程序,电子表格应用程序,消息传递应用程序,媒体流应用程序,社交网络应用程序和游戏应用程序。
可以在数字电子和/或光学电路,集成电路,专门设计的ASIC(专用集成电路),计算机硬件,固件,软件和/或其组合中实现本文所述的系统和技术的各种实现。这些各种实现方式可以包括在一个或多个计算机程序中的实现,该程序可以在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用的或通用的,耦合以从中接收数据和指令,以及向存储系统传输至少一个输入设备和至少一个输出设备的数据和指令。
这些计算机程序(也称为程序,软件,软件应用程序或代码)包括用于可编程处理器的机器指令,以及可以以高级过程和/或面向对象的编程语言和/或以汇编/机器语言的形式实现。如本文所使用的,术语“机器可读介质”和“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品,非暂时性计算机可读介质,装置和/或设备(例如,磁盘,光盘,存储器,可编程逻辑器件(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路执行,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。例如,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或所述两种存储器接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备(例如,磁盘,磁光盘或光盘)以从所述存储设备接收数据或将数据传输所述存储设备或两者兼而有之。但是,计算机不必具有此类设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器,介质和存储设备,包括例如半导体存储设备,例如EPROM,EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CDROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,可以在具有显示设备的计算机上实现本公开的一个或多个方面,该显示设备例如为CRT(阴极射线管),LCD(液晶显示器)监视器或用于向用户显示信息的触摸屏以及可选的键盘和指点设备,例如鼠标或轨迹球,用户可以通过它们向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互。例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈,听觉反馈或触觉反馈;以及可以以任何形式接收来自用户的输入,包括声音,语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户进行交互,例如,响应于从Web浏览器收到的请求,通过发送网页到用户客户端设备上的Web浏览器。
已经描述了许多实施方式。然而,将理解的是,可以在不脱离本公开的精神和范围的情况下进行各种修改。因此,其他实施例在所附权利要求的范围内。

Claims (22)

1.一种方法(500),其特征在于,包括:
由客户端设备(120)的数据处理硬件(124)通过执行私有批量求和检索指令(200)来计算来自不可信存储设备(150)的数据块(102)的c个总和O,以初始化所述客户端设备(120)上的客户端状态(250),每一个计算出的总和O存储在所述客户端设备(120)的存储器硬件(122)上,并且包括正好k个数据块(102)的对应子集S的总和;
由所述数据处理硬件(124)执行查询指令(300),以通过下列步骤检索存储在所述不可信存储设备(150)上的查询块Bq
遍历存储在所述存储器硬件(124)上的所述数据块(102)的所述c个总和O中的每一个,以识别c个总和O中不包括所述查询块Bq的一个;
指示管理所述不可信存储设备(150)的服务(160)将n个数据块的所述不可信存储设备(150)伪随机地划分为
Figure FDA0002887563570000011
个分区(350),所述
Figure FDA0002887563570000012
个分区(350)中的每个包含k+1个数据块(102),并对所述
Figure FDA0002887563570000013
个分区(350)中的每个中的所述k+1个数据块(102)求和,以确定所述
Figure FDA0002887563570000014
个分区(350)中的每个的对应加密数据块总和(302),所述
Figure FDA0002887563570000015
个分区(350)中的一个包括固定分区,所述固定分区包括数据块的已识别的、不包括所述查询块Bq的c个总和O;
从管理所述不可信存储设备(150)的所述服务中检索包括所述固定分区的所述
Figure FDA0002887563570000016
个分区的所述加密数据块总和(302);以及
解密存储在所述客户端设备(120)的所述存储器硬件(122)上的、已识别的数据块的c个总和O,并从中减去所述加密数据块总和(302),以获得所述查询块Bq;由所述数据处理硬件(124)确定查询(q)的数量是否超过查询阈值;以及
当所述查询(q)的数量超过所述查询阈值时,由所述数据处理硬件(124)重新初始化所述客户端状态(250)。
2.根据权利要求1所述的方法(500),其特征在于,执行所述私有批量求和检索指令(200)来计算数据块的c个总和O包括:
将存储在所述不可信存储设备(150)上的每个数据块(102)流式传输到所述客户端设备(120),所述不可信存储设备(150)存储有n个数据块;
将从所述不可信存储设备(150)流式传输的选定的数据块(102)分配给数据块的c个子集S中的对应子集S;以及
通过对分配给所述对应子集S的所述选定的数据块(102)求和来计算数据块的每个c个总和O。
3.根据权利要求1或2所述的方法(500),其特征在于,执行所述私有批量求和检索指令(200)以计算所述数据块的c个总和O包括,从所述不可信存储设备(150)下载m个数据块(102)以计算用于存储在所述存储器硬件(122)上的所述数据块(102)的c个总和O。
4.根据权利要求3所述的方法(500),其特征在于,由所述客户端设备(120)下载的m个数据块(102)的数量等于k个数据块(102)的数量与c的总和的数量之间的乘积。
5.根据权利要求1-4中任一项所述的方法(500),其特征在于,执行所述私有批量求和检索指令(200)以计算所述数据块(102)的c个总和O包括:
将n个数据块(102)的所述不可信存储设备(150)划分为k个桶(260);以及
对于要计算的所述数据块(102)的每一个c个总和O,从所述k个存储桶(160)中的每一个中下载t个数据块(102),以计算用于存储在所述存储器硬件(122)上的数据块(102)的对应总和O。
6.根据权利要求5所述的方法(500),其特征在于,对于要计算的数据块(102)的每一个c个总和O,从所述k个存储桶(160)中的每一个中下载t个数据块(102)包括:
从所述客户端设备(120)向管理所述不可信存储设备(150)的服务(160)发送私有信息检索请求(264),以从所述k个存储桶(260)中的每一个中检索所述t个数据块(102),所述私有信息请求(264)使得所述服务(160)加密每个t数据块(102),并将其作为对应的私有信息检索结果存储在所述不可信存储设备(150)上;
产生加法同态加密的向量(266);
将所述加法同态加密的向量(266)上传到所述不可信存储设备(150),所述加法同态加密的向量(266)使管理所述不可信存储设备(150)的所述服务(160)使用所述加法同态加密的向量(266)在所述私有信息检索结果上执行加法同态加密计算(268),所述加法同态加密计算(268)对应于数据块的所述对应c个总和O的密文值;以及
从管理所述不可信存储设备(150)的所述服务(160)接收和解密密文,以获得数据块(102)的对应c个总和O。
7.根据权利要求6所述的方法(500),其特征在于,所述加法同态加密计算(268)包括点乘计算。
8.根据权利要求5所述的方法(500),其特征在于,t等于1。
9.根据权利要求1至8中的任一项所述的方法(500),其特征在于,初始化所述客户端设备(120)上的所述客户端状态(250)包括,在计算所述数据块(102)的c个总和O之前,为正好k个数据块(102)的每个子集S生成伪随机排列(π)。
10.根据权利要求1至9中的任一项所述的方法(500),其特征在于,指示管理所述不可信存储设备(150)的服务(160)将n个数据块的所述不可信存储设备(150)伪随机地划分为
Figure FDA0002887563570000031
个分区(350)包括:
生成伪随机排列分区密钥(κ)的向量,所述向量包括用于将n个数据块的所述不可信存储设备(150)伪随机地划分为
Figure FDA0002887563570000032
个分区(350)的指令;以及
从所述客户端设备(120)向管理所述不可信存储设备(150)的所述服务(160)发送请求(320),所述请求(320)包括所述伪随机排列分区密钥(κ)的向量,所述请求(320)使得所述服务(160)将n个数据块(102)的所述不可信存储设备(150)伪随机地划分为所述
Figure FDA0002887563570000033
个分区(350),其中所述
Figure FDA0002887563570000034
个分区(350)中的一个包括所述固定分区,所述固定分区包括数据块(102)的所述已识别的不包含所述查询块Bq的c个总和O。
11.根据权利要求1-10中的任一项所述的方法(500),其特征在于,所述伪随机分区(350)包括二维矩阵,其中,每一行包括对应的分区,并且每一列包括针对每个分区中的k+1个块(102)中的对应一个而递增生成的伪随机排列。
12.一种系统(600),其特征在于,包括:
客户端设备(120)的数据处理硬件(124);
与所述数据处理硬件(124)通信的所述客户端设备(120)的存储器硬件(122),所述存储器硬件(122)存储指令,所述指令在由所述数据处理硬件(124)执行时使得所述数据处理硬件(124)执行以下操作:
通过执行所述私有批量求和检索指令(200)来计算来自不可信存储设备(150)的数据块(102)的c个总和O,以初始化所述客户端设备(120)上的客户端状态(250),c个总和O每个计算出的总和O存储在所述客户端设备(120)的所述存储器硬件(122)中,并且包括正好k个数据块(102)的对应子集S的总和;
执行查询指令(300),以通过下列步骤检索存储在所述不可信存储设备(150)上的查询块Bq
遍历存储在存储器硬件(124)上的所述数据块(102)的所述c个总和O中的每一个,以识别c个总和O中不包括所述查询块Bq的一个;
指示管理所述不可信存储设备(150)的服务(160)将n个数据块的所述不可信存储设备(150)伪随机地划分为
Figure FDA0002887563570000041
个分区(350),所述
Figure FDA0002887563570000042
个分区(350)中的每个包含k+1个数据块(102),并且对所述
Figure FDA0002887563570000043
个分区(350)中的每个中的所述k+1个数据块(102)求和,以确定所述
Figure FDA0002887563570000044
个分区(350)中的每个的对应加密数据块总和(302),所述
Figure FDA0002887563570000045
个所述分区(350)中的一个包括固定分区,所述固定分区包括数据块的已识别的、不包括所述查询块Bq的c个总和O;
从管理所述不可信存储设备(150)的所述服务中检索包括所述固定分区的所述
Figure FDA0002887563570000046
个分区的加密数据块总和(302);以及
解密存储在所述客户端设备(120)的所述存储器硬件(122)上的已识别的数据块的c个总和O,并从中减去加密的数据块总和(302),以获得所述查询块Bq
确定查询(q)的数量是否超过查询阈值;以及
当所述查询(q)的数量超过所述查询阈值时,重新初始化所述客户端状态(250)。
13.根据权利要求12所述的系统(600),其特征在于,执行所述私有批量求和检索指令(200)以计算数据块的c个总和O包括:
将存储在所述不可信存储设备(150)上的每个数据块(102)流式传输到所述客户端设备(120),所述不可信存储设备(150)存储有n个数据块;
将从所述不可信存储设备(150)流式传输的选定的数据块(102)分配给数据块的c个子集S中的对应子集S;以及
通过对分配给所述对应子集S的所述选定的数据块(102)求和来计算数据块的每个c个总和O。
14.根据权利要求12或13所述的系统(600),其特征在于,执行私有批量求和检索指令(200)以计算所述数据块的c个总和O包括,从所述不可信存储设备(150)下载m个数据块(102)以计算用于存储在所述存储器硬件(122)上的所述数据块(102)的c个总和O。
15.根据权利要求14所述的系统(600),其特征在于,由所述客户端设备(120)下载的m个数据块(102)的数量等于k个数据块(102)的数量与c个总和O的数量之间的乘积。
16.根据权利要求12-15中的任一项所述的系统(600),其特征在于,执行所述私有批量求和检索指令(200)以计算所述数据块(102)的c个总和O包括:
将n个数据块(102)的所述不可信存储设备(150)划分为k个桶(260);以及
对于要计算的所述数据块(102)的每一个c个总和O,从所述k个存储桶(160)中的每一个中下载t个数据块(102),以计算用于存储在所述存储器硬件(122)上的数据块(102)的对应总和O。
17.根据权利要求16所述的系统(600),其特征在于,对于要计算的所述数据块(102)的每一个c个总和O,从所述k个存储桶(160)中的每一个中下载t个数据块(102)包括:
从所述客户端设备(120)向管理所述不可信存储设备(150)的服务(160)发送私有信息检索请求(264),以从所述k个存储桶(260)中的每一个中检索所述t个数据块(102),所述私有信息请求(264)使得所述服务(160)加密每个t数据块(102),并将其作为对应的私有信息检索结果存储在所述不可信存储设备(150)上;
产生加法同态加密的向量(266);
将所述加法同态加密的向量(266)上传到所述不可信存储设备(150),所述加法同态加密的向量(266)使管理所述不可信存储设备(150)的所述服务(160)使用所述加法同态加密的向量(266)在所述私有信息检索结果上执行加法同态加密计算(268),所述加法同态加密计算(268)对应于数据块的对应c个总和O的密文值;以及
从管理所述不可信存储设备(150)的所述服务(160)接收和解密密文,以获得数据块(102)的对应c个总和O。
18.根据权利要求17所述的系统(600),其特征在于,所述加法同态加密计算(268)包括点乘计算。
19.根据权利要求16所述的系统(600),其特征在于,t等于1。
20.根据权利要求12-19中的任一项所述的系统(600),其特征在于,初始化所述客户端设备(120)上的所述客户端状态(250)包括在计算所述数据块(102)的c个总和O之前,为正好k个数据块(102)的每个子集S生成伪随机排列(π)。
21.根据权利要求12-20中的任一项所述的系统(600),其特征在于,指示管理所述不可信存储设备(150)的服务(160)将n个数据块的所述不可信存储设备(150)伪随机地划分为
Figure FDA0002887563570000061
个分区(350)包括:
生成伪随机排列分区密钥(κ)的向量,所述向量包括用于将n个数据块的所述不可信存储设备(150)伪随机地划分为
Figure FDA0002887563570000062
个分区(350)的指令;以及
从所述客户端设备(120)向管理所述不可信存储设备(150)的所述服务(160)发送请求(320),所述请求(320)包括所述伪随机排列分区密钥(κ)的向量,所述请求(320)使得所述服务(160)将n个数据块(102)的所述不可信存储设备(150)伪随机地划分为所述
Figure FDA0002887563570000063
个分区(350),其中所述
Figure FDA0002887563570000064
个分区(350)中的一个包括所述固定分区,所述固定分区包括数据块(102)的所述已识别的不包含所述查询块Bq的c个总和O。
22.根据权利要求12至21中任一项所述的系统(600),其特征在于,所述伪随机分区(350)包括二维矩阵,其中,每一行包括对应的分区,并且每一列包括针对每个分区中的k+1个块(102)中的对应一个而递增生成的伪随机排列。
CN201880095465.6A 2018-05-07 2018-05-07 采用亚线性公钥操作的私有信息检索的方法和系统 Active CN112400171B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/031369 WO2019216872A1 (en) 2018-05-07 2018-05-07 Private information retrieval with sublinear public-key operations

Publications (2)

Publication Number Publication Date
CN112400171A true CN112400171A (zh) 2021-02-23
CN112400171B CN112400171B (zh) 2024-04-09

Family

ID=62245440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880095465.6A Active CN112400171B (zh) 2018-05-07 2018-05-07 采用亚线性公钥操作的私有信息检索的方法和系统

Country Status (6)

Country Link
US (2) US11593516B2 (zh)
EP (1) EP3776317B1 (zh)
JP (1) JP7000601B2 (zh)
KR (1) KR102308066B1 (zh)
CN (1) CN112400171B (zh)
WO (1) WO2019216872A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11489659B2 (en) * 2019-10-30 2022-11-01 Via Science, Inc. Multiple data source secure data processing
CN115269938B (zh) * 2022-09-22 2023-02-14 深圳市洞见智慧科技有限公司 基于同态加密的关键词匿踪查询方法、系统及相关装置
US11977657B1 (en) * 2023-02-22 2024-05-07 Lorica Cybersecurity Inc. Method and system for confidential repository searching and retrieval

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102629924A (zh) * 2012-03-30 2012-08-08 上海交通大学 一种多服务器环境下的隐私信息检索方法
CN103250161A (zh) * 2010-10-27 2013-08-14 苹果公司 用于处理私有元数据的方法
US8635465B1 (en) * 2012-03-28 2014-01-21 Emc Corporation Counter-based encryption of stored data blocks
US20170034272A1 (en) * 2015-07-31 2017-02-02 International Business Machines Corporation Data transfer priority levels
US20170124348A1 (en) * 2014-06-26 2017-05-04 Telefonaktiebolaget Lm Ericsson (Publ) Privacy-preserving querying mechanism on privately encrypted data on semi-trusted cloud
CN107992582A (zh) * 2017-12-07 2018-05-04 深圳大学 一种基于锯齿解码的私有信息检索方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5890151A (en) * 1997-05-09 1999-03-30 International Business Machines Corporation Method and system for performing partial-sum queries on a data cube
US7620625B2 (en) * 2004-05-20 2009-11-17 Ntt Docomo, Inc. Method and apparatus for communication efficient private information retrieval and oblivious transfer
JP2006210964A (ja) * 2005-01-24 2006-08-10 National Institute Of Information & Communication Technology エルガマル暗号による情報授受伝達方法及び装置
JP4837362B2 (ja) * 2005-10-31 2011-12-14 株式会社エヌ・ティ・ティ・データ データ検索システム、情報処理装置、データ検索方法、及び、プログラム。
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US10374807B2 (en) * 2014-04-04 2019-08-06 Hewlett Packard Enterprise Development Lp Storing and retrieving ciphertext in data storage
US9990367B2 (en) * 2015-07-27 2018-06-05 Sas Institute Inc. Distributed data set encryption and decryption
US10402372B2 (en) * 2015-07-27 2019-09-03 Sas Institute Inc. Distributed data storage grouping
US10229285B2 (en) * 2016-03-22 2019-03-12 International Business Machines Corporation Privacy enhanced central data storage

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103250161A (zh) * 2010-10-27 2013-08-14 苹果公司 用于处理私有元数据的方法
US8635465B1 (en) * 2012-03-28 2014-01-21 Emc Corporation Counter-based encryption of stored data blocks
CN102629924A (zh) * 2012-03-30 2012-08-08 上海交通大学 一种多服务器环境下的隐私信息检索方法
US20170124348A1 (en) * 2014-06-26 2017-05-04 Telefonaktiebolaget Lm Ericsson (Publ) Privacy-preserving querying mechanism on privately encrypted data on semi-trusted cloud
US20170034272A1 (en) * 2015-07-31 2017-02-02 International Business Machines Corporation Data transfer priority levels
CN107992582A (zh) * 2017-12-07 2018-05-04 深圳大学 一种基于锯齿解码的私有信息检索方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DAN BONEH等: "Remote Oblivious Storage: Making Oblivious RAM Practical", Retrieved from the Internet <URL:https://dspace.mit.edu/bitstream/handle/1721.1/62006/MIT-CSAIL-TR-2011-018.pdf> *
EMIL STEFANOV等: "Multi-Cloud Oblivious Storage", COMPUTER & COMMUNICAITONS SECRUITY, pages 247 - 258 *
ZHAO CHANG等: "Oblivious RAM: A Dissection and Experimental Evaluation", PROCEEDINGS OF THE VLDB ENDOWMENT, vol. 9, no. 12, pages 1113 - 1124 *

Also Published As

Publication number Publication date
JP7000601B2 (ja) 2022-01-19
WO2019216872A1 (en) 2019-11-14
US20210192076A1 (en) 2021-06-24
JP2021521490A (ja) 2021-08-26
EP3776317B1 (en) 2022-07-06
US20230185960A1 (en) 2023-06-15
EP3776317A1 (en) 2021-02-17
CN112400171B (zh) 2024-04-09
KR20200142588A (ko) 2020-12-22
KR102308066B1 (ko) 2021-09-30
US11593516B2 (en) 2023-02-28

Similar Documents

Publication Publication Date Title
US20230169201A1 (en) Encrypted Search Cloud Service with Cryptographic Sharing
JP7124182B2 (ja) 差分プライバシーを備える忘却型アクセス
US20220277099A1 (en) Encrypting data records and processing encrypted records without exposing plaintext
CN107430668B (zh) 用于个人设备和云数据的安全分布式备份
US20230185960A1 (en) Private Information Retrieval with Sublinear Public-Key Operations
Pitchai et al. Searchable encrypted data file sharing method using public cloud service for secure storage in cloud computing
Davidson et al. Frodopir: Simple, scalable, single-server private information retrieval
Villari et al. Data reliability in multi-provider cloud storage service with rrns
CN110622142B (zh) 高效不经意的云存储
Lam et al. Gpu-based private information retrieval for on-device machine learning inference
Yang et al. Tunable encrypted deduplication with attack-resilient key management
EP3616068B1 (en) Efficient oblivious permutation
Lentini et al. A comparison of data fragmentation techniques in cloud servers
Pandithurai et al. A noval approach of drops with NTRU in cloud

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
GR01 Patent grant
GR01 Patent grant