使用差异隐私的不经意访问的制作方法

文档序号:19734709发布日期:2020-01-18 04:20阅读:308来源:国知局
使用差异隐私的不经意访问的制作方法

本公开涉及使用差异隐私不经意访问存储在存储器中的数据块。



背景技术:

企业和个人正使用分布式存储系统(即,云存储服务)将数据存储在存储器上,覆盖多个存储器位置。这些企业和个人中有许多将他们的数据加密之后才将数据上传到分布式存储系统。为了使用云存储服务提供的基本功能,诸如对所存储的数据执行搜索查询,需要企业提供对云存储服务的明文访问。结果,尽管云存储服务提高了便利性和成本优势,但许多政府和诸如卫生、金融和法律的敏感私营部门或不愿使用云存储服务。另外,仅加密可能不足以确保数据隐私性,因为单单了解数据访问模式就能提供有关数据的大量信息而无需解密数据。

附图说明

图1a是用于不经意地执行对存储在分布式系统的非暂时性数据存储上的数据块的查询的示例性系统的示意图。

图1b是用于允许一个或多个客户端不经意地执行对存储在分布式存储系统的非暂时性数据存储上的数据块的查询的示例系统的示意图。

图2a和图2b是用于不经意地执行存储在单个服务器或多个服务器的非暂时性数据存储上的查询的示例差异隐私(dp)隐私信息检索(pir)例程的示意图。

图3a至图3d是用于不经意地执行存储在分布式系统的非暂时性数据存储上的查询的示例dp不经意随机访问存储器(o-ram)例程的示意图。

图4a至图4c是用于将加密形式的数据块不经意地输入到分布式系统的非暂时性数据存储上的示例dp不经意存储例程的示意图。

图5a至图5d是在客户端设备上执行以执行对数据块的查询的示例dp不经意存储指令的示意图。

图6提供通过将加密形式的数据块输入到对应的桶中并执行对数据块的查询来初始化二元树的示例算法。

图7是示例反向指数树的示意图。

图8提供通过将加密形式的数据块输入到对应的n个桶中并执行对数据块的查询来初始化反向指数树的示例算法。

图9是可以用于实施本文所述的系统和方法的示例计算设备的示意图。

各图中相似的附图标记指示相似的元素。



技术实现要素:

本公开的一个方面提供一种用于使用差异隐私的不经意(oblivious)访问的方法。所述方法包括:通过客户端设备的数据处理硬件,执行指令以执行对数据块的查询。所述方法也包括:在下载阶段期间,通过所述数据处理硬件,确定所述数据块是否被存储在驻存于所述客户端设备的存储器硬件上的块存储区中。当所述数据块被存储在所述块存储区中时,所述方法进一步包括:通过所述数据处理硬件,从所述块存储区中移除所述数据块;通过所述数据处理硬件,向与所述数据处理硬件通信的分布式系统发送伪查询;以及通过所述数据处理硬件,丢弃从所述分布式系统中检索到的随机数据块。伪查询检索存储在所述分布式系统的存储器中的随机数据块。在覆写阶段期间,所述方法也包括:通过所述数据处理硬件,对从所述块存储区中移除的数据块或从所述分布式系统的存储器中检索到的数据块执行读取操作或写入操作。所述方法进一步包括:通过所述数据处理硬件,基于概率,确定是将当前版本的数据块存储在驻存于所述客户端设备的存储器硬件上的块存储区中还是存储在所述分布式系统的存储器上。当所述当前版本的数据块被存储在所述块存储区中时,所述方法包括:通过所述数据处理硬件,向所述分布式系统发送伪查询,以检索存储在所述分布式系统的存储器中的另一个随机数据块;通过所述数据处理硬件,解密检索到的随机数据块;通过所述数据处理硬件,以刷新的随机性将所述随机数据块重新加密;以及通过所述数据处理硬件,将重新加密的随机数据块重新上传到所述分布式系统的存储器上。

本公开的实施方式可以包括以下任选特征中的一个或多个。在一些实施方式中,当所述数据块在所述下载阶段期间未被存储在所述块存储区中时,所述方法包括:通过所述数据处理硬件,向所述分布式系统发送真查询,以从所述分布式系统的存储器中检索所述数据块。当在所述覆写阶段期间对所述数据块执行读取操作或写入操作时,所述方法也可以包括通过用新版本的数据块更新所述数据块来执行写入操作。在一些配置中,所述概率小于(c/n),其中c为所述块存储区的存储容量,n为由所述数据处理硬件外包以存储在所述分布式系统上的数据块的数目。

在一些示例中,当所述当前版本的数据块在所述覆写阶段期间未被存储在块存储区中时,所述方法也包括以下步骤:通过所述数据处理硬件,向所述分布式系统发送真查询,以从所述分布式系统的存储器中检索所述数据块;通过所述数据处理硬件,加密所述当前版本的数据块;以及通过所述数据处理硬件,将所加密当前版本的数据块上传到所述分布式系统的存储器上。在此,所述方法可以进一步包括:丢弃从所述分布式系统的存储器中检索到的数据块。

本公开的另一方面提供一种用于使用差异隐私的不经意访问的方法。所述方法包括:通过客户端设备的数据处理硬件,执行指令以对数据块执行查询。在下载阶段期间,所述方法包括:通过所述数据处理硬件,确定所述数据块是否被存储在驻存于所述客户端设备的存储器硬件上的块存储区中。当数据块被存储在块存储中时,所述方法也包括:通过所述数据处理硬件,从所述块存储区中移除所述数据块;通过所述数据处理硬件,向与所述数据处理硬件通信的分布式系统发送伪查询;以及通过所述数据处理硬件,丢弃从所述分布式系统中检索到的随机数据桶。伪查询下载存储在所述分布式系统的存储器中的两个随机数据桶,每个数据桶包括多个数据块。在覆写阶段期间,所述方法进一步包括:通过所述数据处理硬件,对从所述块存储区中移除的数据块或从所述分布式系统的存储器中检索到的对应数据桶所获得的数据块执行读取操作或写入操作。所述方法也包括:通过所述数据处理硬件,基于概率,确定是将当前版本的数据块存储在所述块存储区中还是存储在所述分布式系统的存储器上。当所述当前版本的数据块被存储在所述块存储区中时,所述方法包括:通过所述数据处理硬件,向所述分布式系统发送伪查询,以下载存储在所述分布式系统的存储器中的另两个随机数据桶,每个数据桶包括多个数据块;通过所述数据处理硬件,解密所述随机数据桶内的全部数据块;通过所述数据处理硬件,以刷新的随机性将所述随机数据桶内的数据块重新加密;以及通过所述数据处理硬件,将包括重新加密的数据块的随机数据桶重新上传到所述分布式系统的存储器上。

本公开的实施方式可以包括以下任选特征中的一个或多个。在一些配置中,当所述数据块在所述下载阶段期间未被存储在所述块存储区中时,所述方法包括:通过所述数据处理硬件,向所述分布式系统发送真查询,以从所述分布式系统的存储器中下载一对数据桶;通过所述数据处理硬件,解密所述两个数据桶内的全部数据块;以及通过所述数据处理硬件,确定所述两个数据桶中的一个是否包括数据块。在此,响应于所述真查询从所述分布式系统中下载的每个数据桶包括多个数据块以及与所述数据块的标识符相关联的对应密码标识符。在这些配置中,当所述数据桶中的一个包括所述数据块时,所述方法进一步包括:通过所述数据处理硬件,从对应的数据桶中移除所述数据块;以及通过所述数据处理硬件,丢弃所述数据桶中剩余的数据块。

在一些示例中,所述数据块的标识符包括字符串。在所述覆写阶段期间对所述数据块执行读取操作或写入操作也可以包括通过用新版本的数据块更新所述数据块来执行写入操作。所述概率可以小于(c/n),其中c为所述块存储区的存储容量,n为由所述数据处理硬件外包以存储在所述分布式系统上的数据块的数目。

在一些实施方式中,当所述当前版本的数据块在所述覆写阶段期间未被存储在块存储区中时,所述方法包括:通过所述数据处理硬件,向所述分布式系统发送真查询,以从所述分布式系统的存储器中下载一对数据桶。在此,响应于所述真查询从所述分布式系统中下载的每个数据桶包括多个数据块以及与所述数据块的标识符相关联的对应密码标识符。在该实施方式中,当所述当前版本的数据块在所述覆写阶段期间未被存储在块存储区中时,所述方法也包括:通过所述数据处理硬件,解密所述数据桶内的全部数据块;通过所述数据处理硬件,用所述当前版本的数据块替换所述数据桶中的一个内的先前版本的数据块;通过所述数据处理硬件,将所述数据桶内包括所述当前版本的数据块的全部数据块重新加密;以及通过所述数据处理硬件,将包括重新加密的数据块的数据桶上传到所述分布式系统的存储器上。

本公开的又一方面提供一种用于使用差异隐私的不经意访问的方法。所述方法包括:通过客户端设备的数据处理硬件,执行指令以执行存储在服务器上的对数据块的查询。所述方法也包括:发送对于存储在所述服务器上的k个块的第一下载请求,所述k个块不包括所查询的数据块;以及发送对于所查询的数据块和k-1个其他块的第二下载请求。所述方法进一步包括:从所述服务器,接收所述第一下载请求的k个块的第一下载序列;以及从所述服务器,接收所述第二下载请求的所查询的数据块和k-1个其他块的第二下载序列。

本公开的实施方式可以包括以下任选特征中的一个或多个。在一些示例中,所述服务器不可信并且存储多个未加密的公众可用的数据块。所述方法可以包括:通过所述数据处理硬件,丢弃从所述服务器接收到的第一下载序列的k个块。附加地或替代地,所述方法也可以包括:通过所述数据处理硬件,丢弃从所述服务器接收到的第二下载序列的k-1个其他块。k值可以是基于大于零的安全参数和错误概率。

具体实施方式

尽管不经意随机存取存储器(o-ram)可能将客户端访问模式隐藏到存储在不可信存储器上的客户端拥有且客户端加密的数据,但因与o-ram相关联的大带宽开销和/或大客户端存储需求而限制了o-ram的普遍开发。在许多情景下,确保数据内容和访问模式保持完全隐藏的o-ram安全保证过强。例如,隐藏关于可能已经通过其他渠道泄漏的访问模式的信息(例如,关于数据的用户/客户端的先验知识)可能毫无意义。因此,如果实际上只有一小组查询是敏感的,则也不必要隐藏完整的访问序列。本文的实施方式是针对使用差异隐私访问存储在不可信存储器上的数据块,以便通过放宽一些不必要的安全性要求而实现按指数级减少带宽开销。差异隐私访问可以与o-ram和不经意存储(os)一起使用,以便不经意地执行对存储在由服务提供者管理的不可信存储器上的数据块的查询。不可信存储器可以引起跨分布式系统(例如,云环境)的多个存储器位置覆盖的存储抽象,并且客户端可以跨存储器位置存储加密数据块。不可信存储器也可以存储未加密的公知数据块。在这些情景下,差异隐私访问可以与隐私信息检索(pir)一起使用,以隐藏来自不可信存储器的公知且未加密的数据的访问模式。

图1a和图1b描绘了示例系统100,用于将由客户端104拥有的n个数据块(b)102存储在分布式系统140上并且使用差异隐私访问来不经意执行对数据块(b)102的查询以隐藏访问模式,同时保留客户端104对数据块102的搜索功能。与客户端104相关联的客户端设备120(例如,计算机)经由网络130与具有可扩展/弹性的非暂时性存储抽象150的分布式系统140进行通信。客户端设备120可以包括相关联的存储器硬件122和相关联的数据处理硬件124。存储抽象150(例如,键/值存储、文件系统、数据存储等)覆盖在存储资源114上,以允许一个或多个客户端设备120可扩展使用存储资源114。

系统100可以任选地跨一个或多个存储资源114存储公知且未加密的n个数据块102。因此,客户端设备120可能不拥有数据块102,并且数据块102的内容在配置中对公众可用。然而,当从一个或多个存储资源114中检索数据块102时,使用差异隐私访问可以类似地隐藏访问模式。

在一些实施方式中,分布式系统140执行计算设备112,其管理对存储抽象150的访问。例如,客户端设备120可以将数据块102加密并存储在存储抽象150上以及从存储抽象150检索并解密数据块102。虽然所示的示例描绘了系统100,该系统具有与客户端设备120相关联的可信侧,该可信侧经由网络130和与分布式系统140相关联的不可信侧进行通信,但系统100可以替代地在具有可信计算设备(cpu)和不可信数据存储的大型内联网上实施。与分布式系统140或数据存储相关联的不可信侧被视为“诚实而好奇(honest-but-curious)”,因为计算设备112诚实地遵循协议,但可能使用分布式系统140泄漏的信息执行任何概率多项式时间算法来获得其他见解。

在一些实施方式中,分布式系统100包括资源110、110a-110z。资源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)、无限带宽(infiniband),pciexpress高级交换、蓝牙、低功耗蓝牙(ble)等技术的链接。类似地,在网络130上使用的联网协议能够包括多协议标签交换(mpls)、传输控制协议/因特网协议(tcp/ip)、用户数据报协议(udp)、超文本传输协议(http)、简单邮件传送协议(smtp)、文件传送协议(ftp)等。能够使用包括超文本标记语言(html)、可扩展标记语言(xml)等技术和/或格式来表示通过网络130交换的数据。此外,能够使用诸如安全套接字层(ssl)、传输层安全性(tls)、虚拟专用网络(vpn)、因特网协议安全(ipsec)等常规加密技术对全部或一些链接进行加密。在其他示例中,网络130使用定制和/或专用的数据通信技术来代替或增补上述技术。

数据块102对应于数据的基元单位并且各自具有大小均为b个字节。例如,用于存储在分布式系统上的b的典型值可以是64kb到256b。符号n表示与客户端104相关联(或在隐私信息检索中与一个或多个存储资源114相关联)并使用不经意随机存取存储器(o-ram)或不经意存储(os)存储在存储抽象150上的数据块102的总数。如下详述,os可以使用与o-ram相同的框架(即,文字记录和安全定义),区别在于os考虑的自然扩展是数据块102由唯一字符串标识符而不是如由o-ram使用的简单索引标识符来标识。因此,n可以是指存储抽象150上的o-ram或os的容量。n个数据块102中的每个被存储在跨存储器硬件114覆盖的存储抽象150的对应存储器位置118、118a–118n(图1b)。在一些实施方式中,n个数据块102与隐私信息检索(pir)存储相关联,由此n个数据块102被存储在一个或多个存储资源114上并且未加密而对公众可用。

虽然传统的加密方案提供了机密性,但传统的加密方案无法有效地隐藏数据访问模式,而数据访问模式可能将非常敏感的信息透露给不可信的分布式系统140。而且,只有客户端104向分布式系统140提供对数据102的明文访问时,传统的加密方案才允许客户端104搜索存储在分布式系统140上的加密数据102。随着客户端设备120始发数据102,客户端设备120被认为是可信的。

在一些实施方式中,客户端设备120和分布式系统140执行不经意置换例程450,以便将加密数据块102围绕存储抽象150不经意地移动,以对分布式系统140完全隐藏数据访问模式(读取/写入哪些数据块102)。譬如,不经意置换例程450可以促使分布式系统140分配存储抽象150的新存储器位置118,以便存储以阵列a排列的重新置换的n个数据块102并且/或者将存储抽象150组织/划分/分区成多个数据桶350。在一些实施方式中,不经意置换例程450将存储抽象150组织成n个数据桶350,它们各自包含θ(loglogn)个存储器位置118,使得每个数据桶350能够存储一个或多个真实数据块102以及一个或多个虚拟(dummy)数据块103。在这些实施方式中,存储抽象150包括等于θ(nloglogn)的总容量。

在可信侧,客户端设备120可以使用一对伪随机函数f1、f2和对应的标识符id一次从分布式系统140迭代地下载两个数据桶350,并且在执行不经意置换例程450时在存储器硬件122上分配块存储区(stash)370。对于接收到的每个数据桶350,客户端设备120对对应的数据桶350内的数据块102解密并应用随机置换以生成置换的数据块,并且为每个置换的数据块102确定对应的缓存桶360。执行不经意置换例程以使加密数据块102围绕存储抽象150不经意地移动的其他细节能够参阅于2017年4月27日提交的美国专利申请62/490,804,其全部内容通过引用并入本文。在一些实施方式中,客户端设备120进一步通过从一对桶350下载数据块102来初始化本地存储硬件122中的不经意混洗,并且在解密/重新加密数据块102之后使用新选择的伪随机函数f'1、f'2根据新随机选择的置换而混洗重新加密的数据块102。此后,客户端设备120基于新选择的伪随机函数f'1、f'2将重新置换的数据块102上传到对应的缓存桶360。完成混洗之后,可以删除旧的桶350。当不经意置换例程450在客户端设备120和分布式系统140上执行时,可能发生这种不经意混洗。不经意混洗围绕存储抽象150的n个数据块102的其他细节能够参阅于2017年5月19日提交的美国专利申请62/508,523,其全部内容通过引用并入本文。

在一些实施方式中,当客户端设备120需要访问(读取/写入)存储在存储抽象150上的加密的数据块102时,客户端设备120处的数据处理硬件124执行指令300、400以执行对数据块102的查询(q)。通过执行指令300、400,客户端设备120能够检索数据块102,而不会揭示数据块102的内容以及客户端设备120对分布式系统140执行的查询(q)的顺序。查询(q)由两个阶段组成:(1)下载阶段;(2)覆写阶段,使得分布式系统140不知道对应的操作是读取还是写入。另外,对指令300、400的执行消除从分布式系统140读取/写入哪些数据块102。当客户端设备120执行对数据块102的对应查询(q)时,指令300、400的执行需要在客户端设备120与分布式系统140之间往返两次。譬如,每个查询(q)包括下载阶段和覆写阶段,因此与写入操作相关联的覆写块的内容无关于下载阶段期间的下载块的内容。因此,能够使用一次往返请求两个块,并且可以使用第二次往返将覆写块上传回存储抽象150。

参照图1b,在一些实施方式中,分布式存储系统140包括松弛耦合的存储器主机110、110a-110z(例如,计算机或服务器),它们各自的计算资源112(例如,一个或多个处理器或中央处理单元(cpu))与可以用于缓存数据的存储资源114(例如,存储器硬件、存储器硬件、快闪存储器、动态随机存取存储器(dram)、相变存储器(pcm)和/或磁盘)进行通信。覆盖在存储资源114上的存储抽象150允许一个或多个客户端设备120、120a-120n可扩展使用存储资源114。客户端设备120可以通过网络130(例如,经由远程过程调用(rpc))与存储器主机110进行通信。

在一些实施方式中,分布式存储系统140是“单侧的”,当客户端设备120执行指令300、400以执行对数据块102的查询(q)时,无需任何服务器作业来响应来自客户端设备120的真实和/或虚拟查询302、402/304、404而从存储抽象150中检索数据块102和/或虚拟数据块103。“单侧的”是指可以通过硬件而不是通过在存储器主机110的cpu12上执行的软件来完成对存储器主机110的大多数请求处理的方法。与单侧的分布式缓存系统有关的其他概念和特征能够参阅美国专利9,164,702,其全部内容通过引用并入本文。

分布式系统140可以使数据块102围绕远程存储器主机110(例如,存储抽象200)的存储资源114(例如,存储器硬件)不经意地移动,并且经由rpc或经由支持远程直接存储器存取(rdma)的网络接口控制器(nic)116从远程存储器主机110获取数据块102。网络接口控制器116(又称为网络接口卡、网络适配器或lan适配器)可以是将计算设备/资源112连接到网络130的计算机硬件组件。存储器主机110a-110z和客户端设备120均可以具有用于网络通信的网络接口控制器116。在硬件资源110的物理处理器112上执行的指令300、400和/或不经意置换例程450向网络接口控制器116注册存储器114的一组可远程直接存储器存取的区域/位置118a-118n。每个存储器位置118被配置成存储对应的数据块102。

在一些实施方式中,当客户端设备120执行指令300、400以执行对数据块102的查询(q)并且确定数据块102被本地存储在客户端设备120的存储器硬件122处的块存储区370上时,客户端设备120从块存储区370中检索数据块102并且向nic116发送伪查询304、404,以便检索随机块102(或包括真和/或伪块102、103的随机数据桶350),以隐藏从本地存储器硬件122处的块存储区370中检索数据块102。客户端设备120可以丢弃根据伪查询304、404下载的随机块102。另一方面,如果客户端设备120确定数据块102被存储在存储抽象150上,则客户端设备120可以向nic116发送真查询302、402,以便从存储抽象150中检索对应的数据块102。

图2a和图2b提供示例性差异隐私-信息检索(dp-ir)指令200,该指令在客户端设备120上执行以执行对存储在一个或多个合谋(colluding)存储资源114(图2a)或多个非合谋(non-colluding)存储资源中的一个(图2b)上的数据块102的下载请求202、204。不同于o-ram和os,假设n个数据块102的内容被包括任何对手在内的各方获知。在这种情况下,不可信服务器在提供对客户端设备120的访问之前生成n个数据块。典型地,pir客户端设备120是无状态的,因为数据块102是未加密的,并且它们的存储器位置是公众可用的。

对于生成并存储n个数据块102的单个服务器110(例如,单个存储资源114),图2a示出客户端设备120执行dp-ir指令200以从存储资源114a下载块b3102。这里,块b3对应于存储在单个存储资源114a上的九n个块b1-b9中的一个。客户端设备120可以调出与所查询的块102相关联的索引i(例如,i=1,2,3,...,或9)。dp-ir指令200包括对于恒定错误概率α具有安全参数ε的差异隐私,其渐近紧迫于下限。安全参数ε可以大于或等于零,并且错误概率α可以大于零。为了隐藏对下载的块b3的访问模式,dppir指令200通过对不包括块b3的k个块以概率α执行下载请求202并且对块b3和k-1个其他块以另一个概率1-α执行下载请求204而伪装真查询。因此,每个下载请求202、204正请求存储在存储资源114上的n个数据块102之间的正好k个带宽块。下载请求202、204可以按任何顺序出现,以隐藏块b3是客户端设备120想要下载的实际查询的块b3的事实。k值是基于安全参数ε和错误概率α的函数。譬如,k可以表示如下:

在单个服务器示例中,客户端设备120接收与错误概率α相关联的第一下载序列212(返回不包括所查询的块b3的k个块b1、b2、b5)以及与错误概率1-α相关联的第二下载序列214(用于块b3和k-1个其他块b6、b9)。客户端设备120可以在接收第一下载序列212之前或之后接收第二下载序列214。在与错误概率α相关联的第一下载序列212中返回的k个块b1、b2、b5以及在与错误概率1-α相关联的第二下载序列214中的k-1个其他块b6、b9可以各自通过在客户端设备120上执行的dp-ir指令200被统一随机选择。

在一些实施方式中,操作多个服务器110、110a-110n的实体或组织(例如,各自与相应的服务器110相关联的又两个存储资源114、114a-114n)包括破坏服务器中的一部分t的服务器之一。在这种情况下,当从相互合谋的各种存储资源114a-114n下载数据块102时,为了隐藏客户端设备120的访问模式,图2a示出客户端设备120执行dp-ir指令200以通过将下载请求202、204发送到统一随机选择的存储资源114,而不是从所有合谋的存储资源114a-114n中分开且均分地请求块b3来下载块b3(或另一个块bi)。相应地,为了在多重合谋的服务器设置中隐藏对下载的块b3的访问模式,dppir指令200通过对不包括块b3的k个块执行概率α的下载请求202并且对块b3和其他k-1个块执行概率1-α的其他下载请求204而伪装真查询,它们被发送到统一随机选取的存储资源114。响应于从客户端设备接收到下载请求202、204中的每个,统一随机选取的存储资源114以与上述关于单个服务器设置相同的方式针对不包括所查询的块b3的k个块b1、b2、b5返回与错误概率α相关联的对应下载序列212并且针对块b3和k-1个其他块b6、b9返回与错误概率1-α相关联的对应下载序列214。

参照图2b,客户端设备120从互不信任并因此互不共享信息的多个非合谋服务器110(例如,两个以上存储资源114)中的一个中查询数据块bq102。譬如,非合谋服务器110可能由客户端设备120可访问但因契约关系或其他因素而互不共享信息的单独实体所拥有。每个非合谋服务器110可以与一个非交互对手相关联,以使每个服务器110可以监视对其对应的存储资源114执行的所有存储器访问模式。为了隐藏对下载的块bq的访问模式,dppir指令200通过执行发送到非合谋存储资源114中的每个的请求从每个存储资源114下载正好c个随机带宽块的对应下载请求224来伪装真查询。对于存储所查询的块bq的存储资源114,对应下载请求224是针对所查询的块bq和c-1个其他块。对于剩余的存储资源114,每个对应下载请求224是针对不包括所查询的块bq的c个块。每个非合谋存储资源114的c值是基于安全参数ε、非合谋服务器的总数d以及存储在每个存储资源114上的数据块102的对应数目n。譬如,对于每个非合谋存储资源114,c可以表示如下:

在一些实施方式中,o-ram允许客户端设备120跨分布式系统140的存储抽象150将客户端拥有且客户端加密的数据块102隐私地存储在对应存储器位置118上。与示例图2a和图2b的dp-ir相比,客户端设备120使用私钥将存储在o-ram中的数据块102加密,并且与每个数据块102相关联的存储器位置118对不可信分布式系统140隐藏。图3a至图3d示出示例差异隐私-不经意随机存取存储器(dp-oram)指令300,该指令300在客户端设备120上执行以执行查询(q)来访问(读取/写入)存储在存储抽象150上的加密的数据块102,而不会揭示数据块102的内容以及客户端设备120对分布式系统140执行查询(q)的顺序。查询(q)由两个阶段组成:(1)下载阶段;(2)覆写阶段,使得分布式系统140不知道对应的操作是读取还是写入,并且当不存在所查询的数据块bi时揭示丢失。在客户端设备120(例如,在数据处理硬件124上)执行的dp-oram指令300可以首先使用加密模块305生成长度k的私钥k、k1、k2,初始化n个空块时隙(例如,空存储器位置118)的存储抽象150上的阵列a,并且初始化客户端设备120的存储器硬件122上的块存储区370。阵列a的每个空块时隙可以包括对应的索引ai。每个空块时隙可以任选地初始填充有虚拟块(例如,加密等于零的块)。

在一些示例中,客户端设备120和分布式系统140执行不经意置换例程450,以促使分布式系统140分配存储抽象150的新存储器位置118,用于存储置换或重新置换的数据块102并且将存储抽象150组织/划分、分区成许多m个数据桶350、350a-n。每个数据桶350可以存储指定数目的n个数据块102。在一些示例中,数据块102通过先前不经意置换例程450期间在客户端设备120处执行的伪随机置换π而被随机分配给每个数据桶350,以使将存储抽象150划分成m个数据桶350对不可信分布式系统140是混淆的/不经意的。当分布式系统140和客户端设备120在执行不经意置换例程450和指令300期间执行置换操作时,更小的数据桶350细分存储抽象150的o-ram以增加带宽。基于安全性和/或带宽要求,在分布式系统140处初始化的m个数据桶350的数目是可调谐的。

块存储区370在客户端设备120的存储器硬件122上占据的空间/大小/容量等于c,并且每个数据块102具有存储在块存储区370(除存储抽象150之外)中的概率p。块存储区370的容量c可基于安全性和/或带宽需求来调谐。譬如,增加块存储区370的容量c提高安全性,但代价是增加带宽。数据块存储在块存储区370中的概率p可以表示如下。

dp-oram指令300进一步促使客户端设备120使用私钥k来加密每个数据块102并且基于置换π将每个加密的数据块bi102迭代地上传到存储抽象150上的对应的随机选择的空块时隙ai,使得每个加密的数据块102的实际位置对分布式系统140隐藏。此外,因为客户端设备120使用客户端拥有的私钥k在可信侧将数据块102加密,所以存储在存储抽象150上的n个数据块102的内容对于分布式系统150也是未知的。客户端设备120可以通过应用与所请求的数据块102相关联的置换π与对应索引i来简单地访问存储在存储抽象150上的对应数据块102。

参照图3a,当数据块(bi)102被存储在客户端设备120的存储器硬件122上的块存储区370中时,数据处理硬件124在下载阶段期间执行对数据块(bi)102的查询(q)。bi可以对应于加密并存储在存储抽象150的阵列a上的n个数据块1-16中的任何一个。由于数据块bi102以概率p存储在块存储区370中,因此数据处理硬件124从块存储区370中移除所请求的数据块(bi)102并且将伪查询304发送到不可信分布式系统140以下载存储在存储抽象150上的一些随机数据块102,以混淆从块存储区370检索数据块(bi)。在所示的示例中,伪查询304从存储在存储抽象150上的n个块102的阵列a的第三数据桶350c中随机选择并下载块11。在此,伪查询304从存储抽象150中请求a[j],其中统一随机选取j(例如,在所示的示例中,j等于“11”)。在根据伪查询304接收到下载的数据块(例如,块11)之后,数据处理硬件124可以简单地丢弃数据块102,因为客户端设备120仅随机下载该块,以混淆从块存储区370中实际检索数据块(bi)。因此,不可信分布式系统140不知道是响应于真查询302还是伪查询304而下载所检索的块(例如,块11)。数据处理硬件124可以对从块存储区370中检索到的数据块(bi)执行读取操作或写入操作,并且在覆写阶段期间以概率p将当前版本的数据块(bi)存储在块存储区370中或将其存储在存储抽象150中。

另一方面,图3b示出当数据块(bi)102未被本地存储在客户端设备120的存储器硬件122上的块存储区370中时,数据处理硬件124在下载阶段期间执行对数据块(bi)102的查询(q)。由于数据块bi102未被存储在块存储区370中,因此数据处理硬件124将真查询302发送到不可信分布式系统140,以下载存储在存储抽象150上的数据块bi。在所示的示例中,bi对应于存储抽象150的第二数据桶350b中的块6。在此,真查询302从存储抽象150中请求a[i],其中i(例如,在所示的示例中,i等于“6”)对应于客户端设备120想要访问的数据块(bi)102的索引/标识符。响应于根据真查询302检索/下载数据块bi102,数据处理硬件124解密块bi。譬如,数据处理硬件124可以访问本地存储在加密模块305上的私钥k以解密块6的内容。客户端设备120可以(例如,在存储器硬件122中)保存检索到的块bi(例如,块6)。

参照图3c,在覆写阶段期间,数据处理硬件124在客户端设备120的存储器硬件122上以概率p将当前版本的数据块(bi')存储在块存储区370中。覆写阶段是继对应的下载阶段之后,在该下载阶段中,从块存储区370(图3a)或从存储抽象150(图3b)检索先前版本的数据块(bi)。在一些示例中,客户端设备120对在下载阶段期间检索到的数据块(bi)执行写入操作,以用新版本(bi')更新数据块。如本文所用,用新版本bi'更新bi的先前版本可以包括用新版本bi'替换并丢弃先前版本bi。在这些示例中,在覆写阶段期间,以概率p将更新的新版本(bi')存储在块存储区370中。在其他示例中,客户端设备120仅对下载阶段期间检索到的数据块(bi)执行读取操作。在这些示例中,存储在块存储区370中的当前版本与下载阶段期间检索到的版本保持不变。

为了对不可信分布式系统140混淆以概率p将当前版本的数据块(bi')存储在块存储区370中,数据处理硬件124将另一个伪查询304发送到不可信分布式系统140,以下载存储在存储抽象150上的一些随机数据块102。在所示的示例中,伪查询304从存储在存储抽象150上的n个块102的阵列a的第二数据桶350b中随机选择并下载块8。在此,伪查询304从存储抽象150中请求a[j],其中统一随机选取j(例如,在所示的示例中,j等于“8”)。在根据伪查询304接收下载的数据块(例如,块8)之后,数据处理硬件124以随机刷新对块进行解密和重新加密,然后将重新加密的数据块(例如,块8)上传回分布式系统140的存储抽象150上。在此,数据处理硬件124仅重新加密数据块(例如,块8)而不更改内容,以使分布式系统140不知道是响应于伪查询304还是真查询302而上传块来进行读取/写入访问。换而言之,数据处理硬件124无法得知重新加密的数据块102是否因覆写而包括更新的内容或者内容是否不变。

另一方面,在当前版本的数据块(bi')未被存储在块存储区370中时,图3d示出客户端设备120(例如,在数据处理硬件124中)保存当前版本的数据块(bi'),而数据处理硬件124将真查询302发送到不可信分布式系统140,以从存储抽象150中检索对应的数据块(bi)(例如,块6)。此后,数据处理硬件124加密当前版本的数据块(bi')并将其上传到分布式系统140,以便存储在存储抽象150上,并且丢弃根据真查询302检索到的先前版本的对应数据块(bi)。在一些示例中,当前版本的数据块(bi')对应于在对下载阶段期间检索到的先前版本的数据块(bi)执行写入操作之后由客户端设备120更新的新版本的块6。在其他示例中,当客户端设备120仅对下载阶段期间检索到的数据块(bi)执行读取操作时,将当前版本的数据块(bi')(例如,块6)上传到分布式系统140除了刷新计算的密文(例如,不同的加密)之外保持对应丢弃的数据块bi不变。因此,由于客户端设备120使用私钥在本地以刷新方式加密数据块(bi'),因此不可信分布式系统140不知道所上传的当前版本的数据块(bi')的内容是否改变。

尽管图3a至图3d的o-ram构造要求由客户端104外包的n个数据块102中的每个都具有唯一的块标识符i,但不经意存储(os)构造允许通过字符串标识数据块102。而且,os协议必须处理涉及与任何当前存储的块都不相对应的标识符的操作(读取/写入),以使对手无法获知操作是涉及存储抽象150上当前存储的数据块102还是不存在的数据块(即,块错过了)。在一些实施方式中,通过将[n]中的唯一索引分配给n个块中的每个的位置图存储在客户端设备120上(例如,存储器硬件122中)而将dp-oram构造/协议转变成dp-os构造/协议。在此,位置图将每个块标识符转换为对应的索引,以允许剩余的查询完全遵循前文讨论的dp-oram。然而,由于存储位置图在客户端方面需要很大存储量,因此这些实施方式可能不切实际。为了缓解客户端必须存储块标识符(例如,字符串)到对应索引的一对一位置图,本文的实施方式是针对使用伪随机函数(prf)将块标识符从小域转换为索引。由于prf需要存储单个密钥,因此与存储位置图相比,显著减少对客户端的存储需求。

图4a至图4c示出示例差异隐私的不经意存储(dp-os)指令400,其在客户端设备120上执行以初始化客户端设备120和分布式系统140以便将n个数据块102以加密形式存储在存储抽象150上。图5a至图5d示出客户端设备120执行dp-os指令400以执行查询(q)来访问(读取/写入)存储在存储抽象150上的加密的数据块102中的一个,而不对分布式系统140揭示数据块102的内容以及客户端设备120执行查询(q)的顺序。

参照图4a,数据处理硬件124执行dp-os指令400促使客户端设备120使用从加密模块305获取的一个或多个私钥来加密n个数据块102中的每个,初始化客户端设备120的存储器硬件122上的块存储区370,并且以概率p将加密数据块102的子集存储在块存储区370中。可以使用上述等式3来表达概率p。正如oram,客户端设备120处的块存储区370具有存储o(c)个块的容量,这可以基于安全性和带宽要求来调谐。客户端设备120(例如,数据处理硬件124)当执行指令400时附加地初始化标识符存储区372,用于存储与存储在块存储区370中的每个数据块102相对应的唯一字符串标识符id。

每个数据块102包括表示为字符串的对应标识符id。在dp-os的初始化期间,指令400进一步促使客户端设备120随机生成prff1,f2,而分布式系统140初始化具有标签1-n的n个桶350、350a-n,它们各自具有正好m个用于存储对应加密的块102、103的存储器时隙。在所示的示例中,每个桶350的存储器时隙m的数目表示如下:

m=θ(loglogn)(4)

相应地,对应桶350中的每个存储器时隙m存储加密形式的真实数据块102或加密形式的虚拟数据块103。当初始化n个桶350时,每个桶350可以初始填充有虚拟块103。每个块102、103的元数据和内容将被存储在一起,并且每个块102、103可以包括指示该块是真实块还是伪块(即,虚拟块)的对应标签。分布式系统140可以存储n对桶标识符的位置图355并且将posmap[i]表示为第i对。

客户端设备120被进一步配置成存储用于加密/解密数据块102的加密密钥以及均需要存储附加密钥k1、k2的prff1,f2。为了方便起见,替代使用f1(k1,x)和f2(k2,x),可以丢弃密钥参数。显而易见的是,使用由客户端设备120生成并存储在其上的prff1,f2确保具有标识符idi的数据块bi将始终位于标记为f1(idi)和f2(idi)的两个桶中的一个中或者存储在块存储区370中。如本文所用,为了方便起见,f(idi)是指对(f1(idi),f2(idi))。

在加密块之后,初始化n个桶350a-350n并随机生成prff1,f2,指令400促使数据处理硬件124迭代n个数据块102中的每个,以便不经意地存储在分布式系统140的存储抽象150上。对于与放置数据块(bi)相对应的当前迭代,图4b示出数据处理硬件124使用prff1,f2来返回/下载具有索引为s1=f1(idi)和s2=f2(idi)的一对数据桶350,然后解密所下载的数据桶s1、s2内的全部块102、103,以确定这两个桶中的哪一个负载最少。如本文所用,负载最少的桶是指具有最少量真实数据块102的数据桶。在所示的示例中,数据桶s2的负载最少,因为数据桶s1包括更多的真实数据块102(例如,数据桶s1包括一个真实数据块102,数据桶s2包括零个真实数据块102)。相应地,数据处理硬件124用当前迭代的数据块(bi)替换负载最少的桶s2中的虚拟块103中的一个。可以丢弃被替换的虚拟块103。另一方面,如果所下载的数据桶s1、s2中的每个包括相等数目的虚拟块103,则客户端设备120可以随机选取任何一个桶来输入数据块(bi)102。

在某些情景下,特别是在后期的迭代中,当数据桶350充满真实数据块102时,当前迭代的两个桶s1=f1(idi)和s2=f2(idi)可能不包括任何虚拟块103,从而使桶完全充满并且平等地载有真实数据块102。在这些情景下,指令400将简单地失败并终止,以便将下载两个新桶,以识别负载最少的桶来输入目前正处理的数据块(bi)。

图4c示出数据处理硬件124以刷新的随机性重新加密所下载的桶s1、s2内的全部块102、103,然后将桶s1、s2在存储抽象150内相同的位置重新上传回分布式系统140中。可以以概率p将bi存储在块存储区370中。对于剩余概率(即,1–(c/n)),将bi丢弃。分布式系统140可以进一步设置位置图posmap[i]等于f(idi),f(idi)是指对(f1(idi),f2(idi))。

在通过将n个数据块102以加密形式不经意地存储在存储抽象150上并将数据块102的子集以概率p存储在块存储区370中来初始化dp-os之后,图5a示出当数据块(bi)102被存储在客户端设备120的存储器硬件122上的块存储区370中时,数据处理硬件124执行指令400以在下载阶段期间执行对数据块(bi)102的查询(q)。查询(q)包括块bi的标识符id以及对块的操作(读取/写入)。当操作是写入操作时,表示当前版本的新块也可以包括在查询(q)内。在此,数据处理硬件124查询块存储区370以确定存储于其中的数据块bi102,或者数据处理硬件124查询标识符存储区372以定位与数据块bi102相关联的对应标识符id(例如,字符串)。数据处理硬件124从块存储区370中删除数据块bi102。数据块bi102以概率p存储在块存储区370中(和/或id被存储在标识符存储区372中),因此数据处理硬件124将伪查询404发送到不可信分布式系统140以下载存储在存储抽象150上的两个随机数据桶350,以混淆从块存储区370检索数据块(bi)。在所示的示例中,伪查询404随机下载桶1和桶3。客户端设备120可以简单地丢弃两个随机下载的桶350(例如,桶1和桶3)和它们相应的内容。

另一方面,图5b示出当数据块(bi)未存储在本地的块存储区370中并且对应的标识符id也未在客户端设备120的标识符存储区372中时,数据处理硬件124在下载阶段期间执行对数据块(bi)102的查询(q)。由于数据块bi102未存储在块存储区370中(标识符id也不在标识符存储区372中),因此数据处理硬件124将真查询402发送到不可信分布式系统140以下载具有索引为s1=f1(idi)和s2=f2(idi)的一对数据桶350,然后解密所下载的数据桶s1、s2内的全部块102、103,以确定数据块(bi)是否存储在桶s1、s2中的一个中。数据处理硬件124可以通过访问本地存储在加密模块305上的私钥来解密每个桶中的全部块102、103。在所示的示例中,数据处理硬件124从所下载的桶s1中找到并移除数据块(bi)。移除的数据块(bi)可以在客户端设备120上暂时性存储在存储器硬件122中,并且可以丢弃每个下载的桶s1、s2中的剩余块102、103。在一些情景下(未示出),当在返回的桶s1、s2中未找到块(bi)时,对块(bi)的查询402导致错过。在这些情景下,覆写阶段包括客户端设备120对两个随机选取的桶执行伪覆写,使得客户端设备120不会向不可信分布式系统140揭示不存在的块(bi)的错过。

参照图5c,在一些实施方式中,当在图5b的下载阶段期间对块(bi)的查询402导致指示不存在块(bi)的错过时,数据处理硬件124将与错过相关联的标识符id添加到标识符存储区372。为了混淆将标识符id添加到标识符存储区372并且不向不可信分布式系统140揭示不存在块(bi),数据处理硬件124将伪查询404发送到不可信分布式系统140,以下载存储在存储抽象150上的两个随机数据桶350(例如,桶1和桶3)。然后,数据处理硬件124以刷新的随机性解密并重新加密随机下载的桶内的全部块102、103,之后将桶(例如,桶1和桶3)在存储抽象150内相同的位置上传回分布式系统140。对两个随机桶进行下载、解密和重新加密称为伪覆写,用以对分布式系统140隐藏错过的块,因为随机下载的桶(例如,桶1和桶3)的内容尚未改变(除刷新计算的密文(例如,不同的加密)之外)。因此,不可信分布式系统140不知道是响应于真查询402还是伪查询404而下载检索到的数据桶(例如,桶1和桶3)。

在其他实施方式中,当存在数据块(bi)时,图5c也示出在覆写阶段期间,数据处理硬件124在客户端设备120的存储器硬件122上以概率p将当前版本的数据块(bi)存储在块存储区370中。覆写阶段是继对应的下载阶段之后,在该下载阶段中,从块存储区370(图5a)或从存储抽象150(图5b)检索数据块(bi)。在一些示例中,客户端设备120对在下载阶段期间检索到的数据块(bi)执行写入操作,以用新版本的数据块(bi')更新该数据块(bi)。在这些示例中,在覆写阶段期间,以概率p将更新的新版本的数据块(bi')存储在块存储区370中。在其他示例中,客户端设备120仅对下载阶段期间检索到的数据块(bi)执行读取操作。在这些示例中,存储在块存储区370中的当前版本与下载阶段期间检索到的版本保持不变。

为了对不可信分布式系统140混淆以概率p将当前版本的数据块(bi')存储在块存储区370中,数据处理硬件124将伪查询404发送到不可信分布式系统140,以下载存储在存储抽象150上的两个随机数据桶350(例如,桶1和桶3)。然后,数据处理硬件124以刷新的随机性解密并重新加密随机下载的桶内的全部块102、103,之后将桶(例如,桶1和桶3)在存储抽象150内相同的位置上传回分布式系统140。对两个随机桶进行下载、解密和重新加密称为伪覆写,用以隐藏将当前版本的数据块(bi')存储在块存储区370中,因为随机下载的桶(例如,桶1和桶3)的内容尚未改变(除刷新计算的密文(例如,不同的加密)之外)。因此,不可信分布式系统140不知道是响应于真查询402还是伪查询404而下载检索到的数据桶(例如,桶1和桶3)。

另一方面,在当前版本的数据块(bi')以剩余概率1–(c/n)未存储在块存储区370中时,图5d示出客户端设备120(例如,在数据处理硬件124中)保存当前版本的数据块(bi'),而数据处理硬件124将真查询402发送到不可信分布式系统140,以下载具有索引为s1=f1(idi)和s2=f2(idi)的一对数据桶350。在接收到数据桶s1、s2后,数据处理硬件124解密全部块102、103,将桶s1、s2中的对应一个桶中的先前版本的数据块(bi)替换为新版本的数据块(bi'),并且以刷新的随机性重新加密数据桶s1、s2内的全部块102、103,包括新版本的数据块(bi')。然后,数据处理硬件124在存储抽象150内的相同位置将桶s1、s2重新上传回分布式系统140。

为了使块存储区370的大小保持较小,在dp-os指令400执行θ(nlogn)个查询(q)之后,指令400可以通过随机选取新种子(k'1,k'2)(即,通过生成新的prff1',f2'并重置标识符存储区372)并且基于新种子将块102重新分配到缓存桶360来使用块混洗(例如,通过执行不经意置换例程450)刷新系统。在此,分布式系统140维持与每个数据块102相关联的密钥列表。因此,对于每个密钥,下载与密钥(k1,k2)相关联的两个桶350,解密块102、103以定位并重新加密对应的数据块102。此后,下载并解密与密钥(k'1,k'2)相关联的两个缓存桶360,并且将数据块102添加到两个桶350中的负载最少的桶,之后将这两个桶350重新加密并重新上传回分布式系统140。相应地,在指令400执行n个查询(q)之后,混洗缓存初始化新块和标识符存储区370、372,基于新的prff1',f2'将旧桶350中的全部数据块102移动到新数据桶360中,并且删除旧数据桶350。当执行混洗缓存时,客户端设备120可以使用存储在数据处理硬件124上的posmap。

在一些实施方式中,dp-os使用重叠l个桶的散列方案,其中n个数据块102中的每个与唯一有限字符串标识符k1-kn相关联并散列到l个桶中的一个内。l个桶可能被外包给不可信分布式系统140,并且每个桶可以包括相同的大小,使得分布式系统140无法推断出有关标识符k1-kn的值的信息。散列方案被配置为隐藏数据块102的标识符k1-kn的值。散列方案可以使用二元树或反向指数树,其中叶节点占据0级,并且层级朝向树根递增。树根占据树的最大级。

对于具有n<l<2n个叶的二元树,树的每个节点可以存储正好一个块102。该树可以初始填充有虚拟块103,诸如加密为零的块。树叶能够从左到右编号为1至l,并且每个叶可以对应于l个桶中的一个。在此,第i个桶可以包括存储在从第i个叶到树根的唯一路径上的节点中的全部块。此外,客户端设备120可以任选地使块存储区370保持存储从树中溢出的块。图6提供通过以加密形式将数据块102输入到对应的l个桶中并执行对数据块(bi)的查询(q)来初始化二元树的示例算法600。

可以通过存储的数据块的数目n和选择的数目d将反向指数树参数化。图7示出具有n=7个数据块和d=2个选择的示例反向指数树700。当遍历该树时,每级的子级数目按指数级别成倍增加。对于l个层级,全部节点在1级处至多具有c1:=d个子级,而全部节点在2级处至多具有c2=(c1)2:=d2个子级。在第i级,全部节点至多具有ci=(ci-1)2:=(d2)i-1。零级将不具有叶节点。全部大于零的第i级可以表示如下:

在每级仅有一个节点出现在第[log2logdn]级之后,该树可能停止。第i级的每个节点从左到右标记为1至ni。在第i级大于或等于1时,节点j{1,...,ni}将在第i+1级上具有标记为(j–1)·ci+1至j·ci的ci个子节点。每个大于或等于零的第i级上的每个节点ni可能因舍入而少于ci个子节点。反向指数树进一步包括n个桶,第i个桶(1<i<n)包括从根到叶节点的唯一路径上标记为i的全部节点。客户端设备120可以任选地存储块存储区370以存储溢出块102。图8提供通过以加密形式将数据块102输入到对应的n个桶中并执行对数据块(bi)的查询(q)来初始化反向指数树的示例算法800。

图9是可以用于实施本文中描述的系统和方法的示例计算设备900(例如,数据处理硬件)的示意图。计算设备900意图表示各种形式的数字计算机,诸如膝上型计算机、桌面型计算机、工作站、个人数字助理、服务器、刀片服务器、主机以及其他适当的计算机。本图所示的组件、它们的连接和关系以及它们的功能意在仅为示例性,而非意在限制本文所述和/或所要求保护的本发明的实施方式。

计算设备900包括处理器910、存储器920、存储设备930、连接至存储器920和高速扩展端口950的高速接口/控制器940以及连接至低速总线970和存储设备930的低速接口/控制器960。组件910、920、930、940、950和960中的每个使用各种总线互联,并且可以被安装在公共母板上或者酌情以其他方式安装。处理器910能够处理用于在计算设备900内执行的指令,包括存储在存储器920中或者存储设备930上的指令,以对诸如耦合至高速接口940的显示器980的外部输入/输出设备上的图形用户界面(gui)显示图形信息。在其他实施方式中,可以酌情使用多个处理器和/或多个总线与多个存储器和存储器类型。此外,可以连接多个计算设备900,每个设备提供所需操作的多个部分(例如,服务器阵(serverbank)、刀片服务器组或者多处理器系统)。

存储器920在计算设备900内非暂时性地存储信息。存储器920可以是计算机可读介质、易失性存储器单元或者非易失性存储器单元。非暂时性存储器920可以是用于临时性或永久性存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备900使用的物理设备。非易失性存储器的示例包括但不限于快闪存储器和只读存储器(rom)/可编程只读存储器(prom)/可擦除可编程只读存储器(eprom)/电可擦除可编程只读存储器(eeprom)(例如,通常用于诸如引导程序的固件)。易失性存储器的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)以及磁盘或磁带。

存储设备930(例如,存储器硬件)能够为计算设备900提供大容量存储。在一些实施方式中,存储设备930是计算机可读介质。在各种不同的实施方式中,存储设备930可以是软盘设备、硬盘设备、光盘设备或者磁带设备、快闪存储器或者其他类似的固态存储器设备、或者设备的阵列,包括存储区域网络或者其他配置中的设备。在附加实施方式中,计算机程序产品有形地体现为信息载体。计算机程序产品包含指令,所述指令当被执行时执行一个或多个方法,诸如上述那些方法。信息载体是计算机或机器可读介质,诸如存储器920、存储设备930或者处理器910上的存储器。

高速控制器940管理用于计算设备900的带宽密集(bandwidthintensive)操作,而低速控制器960管理较低的带宽密集操作。这样的职责分配仅为示例性。在一些实施方式中,高速控制器940耦合至存储器920、显示器980(例如,通过图形处理器或者加速器)以及可以接受各种扩展卡(未示出)的高速扩展端口950。在一些实施方式中,低速控制器960耦合至存储设备930和低速扩展端口970。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口970可以耦合至一个或多个输入/输出设备,诸如键盘、定点设备、扫描仪或者诸如通过例如网络适配器的交换机或者路由器的网络设备。

如图所示,计算设备900可以通过数种不同的形式来实现。例如,它可以被实施为标准服务器900a或多次实施为一组这样的服务器900a、实施为膝上型计算机900b或者实施为机架服务器系统900c的一部分。

软件应用(即,软件资源)可以是指促使计算设备执行任务的计算机软件。在一些示例中,软件应用可以称为“应用”、“app”或“程序”。示例应用包括但不限于系统诊断应用、系统管理应用、系统维护应用、文字处理应用、电子制表应用、消息接发应用、媒体流应用、社交网络应用和游戏应用。

非暂时性存储器可以是用于临时性或永久性存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备使用的物理设备。非暂时性存储器可以是易失性和/或非易失性可寻址半导体存储器。非易失性存储器的示例包括但不限于快闪存储器和只读存储器(rom)/可编程只读存储器(prom)/可擦除可编程只读存储器(eprom)/电可擦除可编程只读存储器(eeprom)(例如,通常用于诸如引导程序的固件)。易失性存储器的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)以及磁盘或磁带。

本文所述的系统和技术的各种实施方式可以在数字电子和/或光学线路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合中来实现。这些各种实施方式可以包括可编程系统上的可执行和/或可解释的一个或多个计算机程序中的实施方式,所述可编程系统包括耦合以从存储系统接收数据和指令并且向存储系统发送数据和指令的、可以是专用或通用的至少一个可编程处理器、存储系统、至少一个输入设备以及至少一个输出设备。

这些计算机程序(也被称作程序、软件、软件应用或者代码)包括用于可编程处理器的机器指令,并且能够以高级程序语言和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文中所使用,术语“机器可读介质”以及“计算机可读介质”是指用于将机器指令和/或数据提供给可编程处理器的任意计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(pld)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于将机器指令和/或数据提供给可编程处理器的任意信号。

本说明书所述的过程和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行运算并且生成输出来执行功能。过程和逻辑流程也能够由例如fpga(现场可编程门阵列)或asic(专用集成电路)的专用逻辑电路来执行。举例而言,适于执行计算机程序的处理器包括通用微处理器和专用微处理器以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将接收来自只读存储器或随机存取存储器或者这两者的指令和数据。计算机的基本元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器设备。一般地,计算机也会包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或者可操作地与其耦合以从其接收数据、向其传送数据或者两者兼具。然而,计算机不必具有这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括:半导体存储器设备,例如,eprom、eeprom和闪存设备;磁盘,例如,内置硬盘或可移动盘;磁光盘;以及cdrom盘和dvd-rom盘。处理器和存储器能够辅以专用逻辑电路或并入其中。

为提供与用户的交互,本公开的一个或多个方面能够在计算机上来实施,该计算机具有用于将信息显示给用户的显示设备,例如crt(阴极射线管)、lcd(液晶显示器)监视器或触摸屏,以及任选地用户能够借以向计算机提供输入的键盘和定点设备,例如鼠标或跟踪球。其他种类的设备也能够被使用于提供与用户的交互;例如,提供给用户的反馈能够是任何类型的感觉反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且来自用户的输入能够以任何形式来接收,包括声音、语音或者触觉输入。此外,计算机能够通过向用户使用的设备发送文件并自其接收文件而与用户相交互;例如,通过响应于从web浏览器接收到的请求而将web页面发送到用户的客户端设备上的web浏览器。

本文描述了数种实施方式。但可以理解,在不脱离本公开的精神和范围的情况下,可以作出各种修改。相应地,其他实施方式落入所附权利要求的范围内。

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