有效的不经意置换

文档序号:1786096 发布日期:2019-12-06 浏览:13次 >En<

阅读说明:本技术 有效的不经意置换 (effective inadvertent replacement ) 是由 凯文·亚萨卡 萨尔瓦尔·帕特尔 杰赛普·佩尔夏诺 于 2018-01-10 设计创作,主要内容包括:一种用于不经意地移动在存储器硬件(114)中所存储的N个数据块(102)的方法(700),包括将存储器硬件的存储器位置(118)组织为大致上&lt;Image he="64" wi="75" file="DDA0002247494290000011.GIF" imgContent="drawing" imgFormat="GIF" orientation="portrait" inline="no"&gt;&lt;/Image&gt;个数据桶(350),每个数据桶(350)包含&lt;Image he="66" wi="76" file="DDA0002247494290000012.GIF" imgContent="drawing" imgFormat="GIF" orientation="portrait" inline="no"&gt;&lt;/Image&gt;个数据块,以及分配与存储器硬件中的新的存储器位置相关联的大致上&lt;Image he="66" wi="76" file="DDA0002247494290000013.GIF" imgContent="drawing" imgFormat="GIF" orientation="portrait" inline="no"&gt;&lt;/Image&gt;个缓冲桶(360)。每个缓冲桶与在客户端(104)所分配的用于存储缓存的置换的数据块的相对应的缓存槽(370)相关联。方法进一步包括向客户端迭代地提供大致上&lt;Image he="67" wi="75" file="DDA0002247494290000014.GIF" imgContent="drawing" imgFormat="GIF" orientation="portrait" inline="no"&gt;&lt;/Image&gt;个数据块。客户端被配置为对每个相对应的接收的数据桶内的大致上&lt;Image he="67" wi="76" file="DDA0002247494290000015.GIF" imgContent="drawing" imgFormat="GIF" orientation="portrait" inline="no"&gt;&lt;/Image&gt;个数据块应用随机置换以生成置换的数据块,以及为每个置换的数据块确定相对应的缓冲桶和相对应的缓存槽。(A method (700) for inadvertently moving N blocks of data (102) stored in memory hardware (114) includes organizing memory locations (118) of the memory hardware into substantially upper data buckets (350), each data bucket (350) containing a block of data, and allocating substantially upper buffer buckets (360) associated with new memory locations in the memory hardware. Each buffer bucket is associated with a corresponding buffer slot (370) allocated at the client (104) for storing the cached permuted data blocks. The method further includes iteratively providing substantially the last data block to the client. The client is configured to apply a random permutation to substantially the last data block within each corresponding received data bucket to generate permuted data blocks, and to determine a corresponding buffer bucket and a corresponding buffer slot for each permuted data block.)

有效的不经意置换

技术领域

本公开涉及不经意地(obliviously)移动在存储器上所存储的数据块。

背景技术

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

发明内容

本公开的一个方面提供了一种用于将数据块不经意地移动到存储器硬件上的新的存储器位置的方法。方法包括在数据处理硬件从客户端接收置换(permutation)请求,以不经意地移动在与数据处理硬件进行通信的存储器硬件中所存储的N个数据块。N个数据块中的每一个与客户端相关联,并且被存储在存储器硬件的相对应的存储器位置。响应于接收到置换请求,方法包括通过数据处理硬件将存储器硬件的存储器位置划分为个数据桶。每个数据桶包含个数据块。方法还包括通过数据处理硬件分配存储器硬件中的新的存储器位置,用于存储N个数据块,以及通过数据处理硬件初始化与新的存储器位置相关联的个缓冲桶。每个缓冲桶与在客户端所初始化的相对应的缓存槽相关联。方法进一步包括从数据处理硬件向客户端迭代地提供个数据桶。响应于接收到每个数据桶,客户端被配置为:对相对应的数据桶内的个数据块应用随机置换,以确定与每个置换的数据块相关联的相对应的存储器硬件的新的存储器位置和相对应的缓冲桶;将每个置换的数据块提供到相对应的缓存槽中;将高达阈值的置换的数据块从每个缓存槽喷射(spray)到相对应的缓冲桶中;以及将任何剩余的置换的数据块存储在相对应的缓存槽中。

本公开的实施方式可以包括以下可选特征中的一个或多个。在一些示例中,大致上(substantially)包括值的范围,诸如在N0.1和N0.75之间。其他范围也是可能的。在其他示例中,大致上包括:N0.5,其提供具有一个往返(round-trip)的算法);N1/3,其提供具有2个往返的算法;以及N0.20,其提供具有4个往返的算法。相对较小的值可能不太有用,因为N可能不切实际地(impractically)大。对于相对较大的值,算法中的增益也可能不太有用。在一些实施方式中,客户端通过以下方式对相对应的数据桶内的个数据块应用随机置换:对在相对应的数据桶内所接收的个数据块中的每一个进行解密;对个数据块中的每一个进行重新加密;以及对重新加密的个数据块应用随机置换。随机置换可以包括基于由客户端随机选择的高级加密标准密钥,使用对数据处理硬件隐藏的随机位(random bit)在客户端对重新加密的个数据块进行洗牌(shuffe)。

在一些示例中,独立于当前被存储在相对应的缓存槽内的置换的数据块的数量,随机地选择从每个缓存槽所喷射的置换的数据块的阈值。在至少一个迭代期间,从至少一个缓存槽所喷射的置换的数据块的阈值可以不同。当相对应的缓存槽包含至少阈值的置换的数据块时,客户端可以从相对应的客户端缓存喷射等于阈值的数个置换的数据块。

在一些实施方式中,客户端进一步被配置为:在客户端将每个置换的数据块提供给相对应的缓存槽中之后,识别包含小于阈值的数个置换的数据块的至少一个缓存槽;以及基于阈值与相对应的缓存槽内的置换的数据块的数量之间的差异,将数个虚假(dummy)块喷射到相对应的缓冲桶中。客户端可以在将每个虚假块喷射到相对应的缓冲桶中之前对每个虚假块进行加密。

在一些示例中,从数据处理硬件向客户端迭代地提供个数据桶包括:从客户端迭代地接收请求下载数据桶中的一个的桶下载请求;以及响应于接收到每个桶下载请求,将相对应的数据桶上传到客户端。在客户端将所有置换的数据块从所有缓存槽喷射到相对应的缓冲桶中之后,方法可以包括通过数据处理硬件从存储器硬件解除分配所有数据桶。在客户端将所有置换的数据块从所有缓存槽喷射到相对应的缓冲桶中之后,方法可以包括:通过数据处理硬件从存储器硬件解除分配所有数据桶;以及从数据处理硬件向客户端迭代地提供个缓冲桶。响应于接收到每个缓冲桶,客户端可以被配置为:从相对应的缓冲桶移除任何虚假块;对相对应的缓冲桶内的数据块进行重新排序;以及将缓冲桶上传到分布式系统。

本公开的另一方面提供了一种用于将数据块不经意地移动到存储器硬件上的新的存储器位置的系统。系统包括客户端设备,与客户端设备进行通信的分布式系统的数据处理硬件,以及与数据处理硬件进行通信的存储器硬件。存储器硬件存储指令,当在数据处理硬件上执行指令时,指令使得数据处理硬件进行操作。操作包括从客户端设备接收置换请求,以不经意地移动在与数据处理硬件进行通信的存储器硬件中所存储的N个数据块,N个数据块中的每一个与客户端设备相关联,并且被存储在存储器硬件的相对应的存储器位置。响应于接收到置换请求,操作包括将存储器硬件的存储器位置划分为个数据桶。每个数据桶包含个数据块。操作还包括分配存储器硬件中的新的存储器位置,用于存储N个数据块,以及初始化与新的存储器位置相关联的个缓冲桶。每个缓冲桶与在客户端设备所初始化的相对应的缓存槽相关联。操作还包括向客户端设备迭代地提供个数据桶。响应于接收到每个数据桶,客户端设备被配置为:对相对应的数据桶内的个数据块应用随机置换,以确定与每个置换的数据块相关联的相对应的存储器硬件的新的存储器位置和相对应的缓冲桶;将每个置换的数据块提供到相对应的缓存槽中;将高达阈值的置换的数据块从每个缓存槽喷射到相对应的缓冲桶中;以及将任何剩余的置换的数据块存储在相对应的缓存槽中。

该方面可以包括以下可选特征中的一个或多个。在一些实施方式中,客户端设备通过以下方式对相对应的数据桶内的个数据块应用随机置换:对在相对应的数据桶内所接收的个数据块中的每一个进行解密;对个数据块中的每一个进行重新加密;以及对重新加密的个数据块应用随机置换。随机置换可以包括基于由客户端设备随机选择的高级加密标准密钥,使用对数据处理硬件隐藏的随机位在客户端设备对重新加密的个数据块进行洗牌。

在一些示例中,独立于当前被存储在相对应的缓存槽内的置换的数据块的数量,随机地选择从每个缓存槽所喷射的置换的数据块的阈值。在至少一个迭代期间,从至少一个缓存槽所喷射的置换的数据块的阈值可以不同。当相对应的缓存槽包含至少阈值的置换的数据块时,客户端设备可以从相对应的客户端缓存喷射等于阈值的数个置换的数据块。

在一些实施方式中,客户端设备进一步被配置为:在客户端设备将每个置换的数据块提供给相对应的缓存槽中之后,识别包含小于阈值的数个置换的数据块的至少一个缓存槽;以及基于阈值与相对应的缓存槽内的置换的数据块的数量之间的差异,将数个虚假块喷射到相对应的缓冲桶中。客户端设备还可以被配置为在将每个虚假块喷射到相对应的缓冲桶中之前对每个虚假块进行加密。

在一些示例中,向客户端设备迭代地提供个数据桶包括:从客户端设备迭代地接收请求下载数据桶中的一个的桶下载请求;以及响应于接收到每个桶下载请求,将相对应的数据桶上传到客户端设备。操作可以进一步包括,在客户端设备将所有置换的数据块从所有缓存槽喷射到相对应的缓冲桶中之后,从存储器硬件解除分配所有数据桶。操作可以进一步包括,在客户端设备将所有置换的数据块从所有缓存槽喷射到相对应的缓冲桶中之后:从存储器硬件解除分配所有数据桶;以及向客户端迭代地提供个缓冲桶。响应于接收到每个缓冲桶,客户端可以被配置为:从相对应的缓冲桶移除任何虚假块;对相对应的缓冲桶内的数据块进行重新排序;以及将缓冲桶上传到分布式系统。

本公开的另一方面提供了一种用于不经意地移动在与数据处理硬件进行通信的存储器硬件中所存储的N个数据块的方法。N个数据块中的每一个与客户端相关联并且被存储在存储器硬件的相对应的存储器位置。方法包括通过数据处理硬件将存储器硬件的存储器位置组织为大致上个数据桶。每个数据桶包含大致上个数据块。方法还包括通过数据处理硬件分配与存储器硬件中的新的存储器位置相关联的大致上个缓冲桶。每个缓冲桶与在客户端所分配的用于存储缓存的置换的数据块的相对应的缓存槽相关联。方法进一步包括从数据处理硬件向客户端迭代地提供大致上个数据桶。响应于接收到每个数据桶,客户端被配置为对相对应的数据桶内的大致上个数据块应用随机置换以生成置换的数据块,以及为每个置换的数据块确定相对应的缓冲桶和相对应的缓存槽。对于每个缓冲桶,客户端被配置为确定要被喷射到缓冲桶中的数据块的数量,以及用于从以下中的至少一个选择要被喷射到缓冲桶中的数据块的策略:相对应的置换的数据块;来自相对应的缓存槽的缓存的置换的数据块;或者虚假数据块。客户端进一步被配置为:根据策略将选择的数据块喷射到缓冲桶中;将任何未选择的置换的数据块存储在它们相对应的缓存槽中;以及将任何选择的缓存的置换的数据块从它们相对应的缓存槽移除。

本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,客户端通过以下方式对相对应的数据桶内的大致上个数据块应用随机置换:对在相对应的数据桶内所接收的大致上个数据块中的每一个进行解密;对大致上个数据块中的每一个进行重新加密;以及对重新加密的大致上个数据块应用随机置换。随机置换可以包括,使用对数据处理硬件隐藏的加密安全随机密钥,在客户端对重新加密的大致上个数据块进行洗牌。

在一些示例中,独立于与缓冲桶相对应的置换的数据块的数量,确定要被喷射到缓冲桶中的数据块的数量。在相同的迭代期间,要被喷射到一个缓冲桶中的数据块的数量与要被喷射到另一桶中的数据块的数量不同。在单独的迭代之间,要被喷射到一个缓冲桶中的数据块的数量与要被喷射到另一桶中的数据块的数量不同。选择要被喷射到缓冲桶中的数据块可以遵循严格的优先级顺序,包括:第一,从相对应的置换的数据块中选择;第二,从来自相对应的缓存槽的缓存的置换的数据块中选择;以及第三,选择虚假数据块。客户端可以在将每个虚假块喷射到相对应的缓冲桶中之前,对每个虚假块进行加密。

在一些实施方式中,从数据处理硬件向客户端迭代地提供大致上个数据桶包括:从客户端迭代地接收请求下载数据桶中的一个的桶下载请求;以及响应于接收到每个桶下载请求,向客户端发送相对应的数据桶。在客户端将所有置换的数据块从所有缓存槽喷射到相对应的缓冲桶中之后,方法可以包括通过数据处理硬件从存储器硬件解除分配所有数据桶。在客户端将所有置换的数据块从所有缓存槽喷射到相对应的缓冲桶中之后,方法还可以包括从数据处理硬件向客户端迭代地提供大致上个缓冲桶。响应于接收到每个缓冲桶,客户端可以被配置为:从相对应的缓冲桶移除任何虚假块;对相对应的缓冲桶内的数据块进行排序;以及将缓冲桶上传到数据处理硬件。

本公开的另一方面提供了一种用于在分布式系统中不经意地移动N个数据块的系统。N个数据块中的每一个与客户端相关联并且被存储在分布式系统的相对应的存储器位置。系统包括与客户端相关联的客户端设备,与客户端设备进行通信的分布式系统的数据处理硬件,以及与数据处理硬件进行通信的存储器硬件。存储器硬件存储指令,当在数据处理硬件上执行指令时,指令使得数据处理硬件进行操作。操作包括将存储器硬件的存储器位置组织为大致上个数据桶,分配与存储器硬件中的新的存储器位置相关联的大致上个缓冲桶,以及从数据处理硬件向客户端设备迭代地提供大致上个数据桶。每个数据桶包含大致上个数据块。每个缓冲包与在客户端设备所分配的用于存储缓存的置换的数据块的相对应的缓存槽相关联。响应于接收到每个数据桶,客户端被配置为对相对应的数据桶内的大致上个数据块应用随机置换以生成置换的数据块,以及为每个置换的数据块确定相对应的缓冲桶和相对应的缓存槽。对于每个缓冲桶,客户端被配置为确定要被喷射到缓冲桶中的数据块的数量,以及用于从以下中的至少一个选择要被喷射到缓冲桶中的数据块的策略:相对应的置换的数据块;来自相对应的缓存槽的缓存的置换的数据块;或者虚假数据块。客户端还被配置为:根据策略将选择的数据块喷射到缓冲桶中;将任何未选择的置换的数据块存储在它们相对应的缓存槽中;以及将任何选择的缓存的置换的数据块从它们相对应的缓存槽移除。

该方面可以包括以下可选特征中的一个或多个。在一些实施方式中,客户端设备通过以下方式对相对应的完整桶内的大致上个数据块应用随机置换:对在相对应的数据桶内所接收的大致上个数据块中的每一个进行解密;对大致上个数据块中的每一个进行重新加密;以及对重新加密的大致上个数据块应用随机置换。随机置换可以包括,使用对数据处理硬件隐藏的加密安全随机密钥,在客户端对重新加密的大致上个数据块进行洗牌。

在一些示例中,独立于与缓冲桶相对应的置换的数据块的数量,确定要被喷射到缓冲桶中的数据块的数量。在相同的迭代期间,要被喷射到一个缓冲桶中的数据块的数量与要被喷射到另一桶中的数据块的数量不同。在单独的迭代之间,要被喷射到一个缓冲桶中的数据块的数量与要被喷射到另一桶中的数据块的数量不同。选择要被喷射到缓冲桶中的数据块可以遵循严格的优先级顺序,包括:第一,从相对应的置换的数据块中选择;第二,从来自相对应的缓存槽的缓存的置换的数据块中选择;以及第三,选择虚假数据块。客户端设备可以进一步被配置为在将每个虚假块喷射到相对应的缓冲桶中之前,对每个虚假块进行加密。

在一些示例中,从数据处理硬件向客户端设备迭代地提供大致上个数据桶包括:从客户端迭代地接收请求下载数据桶中的一个的桶下载请求;以及响应于接收到每个桶下载请求,向客户端发送相对应的数据桶。操作还可以包括,在客户端设备将所有置换的数据块从所有缓存槽喷射到相对应的缓冲桶中之后,从存储器硬件解除分配所有数据桶。操作可以进一步包括,在客户端设备将所有置换的数据块从所有缓存槽喷射到相对应的缓冲桶中之后,向客户端设备迭代地提供大致上个缓冲桶。响应于接收到每个缓冲桶,客户端设备可以被配置为:从相对应的缓冲桶移除任何虚假块;对相对应的缓冲桶内的数据块进行排序;以及将缓冲桶上传到数据处理硬件。

在下面的附图和说明书中阐述了本公开的一个或多个实施方式的细节。根据说明书和附图,以及根据权利要求书,其他方面、特征和优势将是显而易见的。

附图说明

图1是用于不经意地移动在分布式系统的非暂时性数据存储器上所存储的数据块的示例系统的示意图。

图2是用于允许一个或多个客户端不经意地移动在分布式存储系统的非暂时性数据存储器上所存储的数据块的示例系统的示意图。

图3A-3J是用于不经意地移动在存储器硬件上所存储的数据块的示例不经意置换例程的示意图。

图4A和4B是用于重新校准在存储器硬件上所存储的缓冲桶的示例重新校准处理的示意图。

图5是用于在客户端设备应用不经意地洗牌的示例算法。

图6是用于在客户端设备应用不经意地洗牌的示例算法。

图7是不经意地移动在存储器硬件上所存储的数据块的方法的操作的示例布置的示意图。

图8是执行不经意置换例程的示例计算设备的示意图。

相同的附图标记和各个附图指示相同的元素。

具体实施方式

此处的实施方式指向使用不经意随机存取存储器(O-RAM)来隐藏对在不受信任的存储器上所存储的客户端拥有和客户端加密的数据的客户端访问模式。不受信任的存储器可以包括被覆盖在分布式系统的多个存储器位置中的存储抽象。不受信任的存储器可以被划分为多个桶,每个桶包含相等数量的数据块,并且客户端可以从不受信任的存储器迭代地一次下载一个桶,并且对驻留在下载的桶中的数据块应用随机置换。随机置换可以将来自下载的桶的每个数据块分配给不受信任的存储器上的新的存储器位置,该新的存储器位置对于不受信任的存储器的服务提供商(例如,云服务提供商)是不经意的。此外,客户端可以进一步使用客户端侧密钥在本地对数据块进行解密和加密,而不用给予服务提供商对数据的纯文本访问。实施方式进一步包括在将数据块上传到它们的新的存储器位置之前,在客户端的本地存储器中初始化缓存槽用于存储置换的数据块。每个缓存槽可以用作对不受信任的存储器的新的存储器位置的扩展,并且因此减少了将置换的数据块从客户端上传到不受信任的存储器所需的开销和带宽。

图1示出了示例系统100,该示例系统100用于将由客户端104所拥有的数据块102存储在分布式系统140上,并且在分布式系统140周围不经意地移动数据块102以隐藏访问模式,同时保留客户端104在数据块102上的搜索功能。与客户端104相关联的客户端设备120(例如,计算机)经由网络130与具有可伸缩/弹性的非暂时性存储抽象150的分布式系统140进行通信。客户端设备120可以包括相关联的存储器硬件122。存储抽象150(例如,键/值存储、文件系统、数据存储等)被覆盖在存储资源114上,以允许由一个或多个客户端设备120可伸缩地使用存储资源114。

在一些实施方式中,分布式系统140执行计算设备112,该计算设备112管理对存储抽象150的访问。例如,客户端设备120可以对数据块102进行加密并且将数据块102存储在存储抽象150上,以及从存储抽象150检索数据块102并且对数据块102进行解密。尽管所示的示例示出了具有与客户端设备120相关联的受信任侧的系统100经由网络130和与分布式系统140相关联的不受信任侧进行通信,但是系统100可以可替代地被实施在具有受信任的计算设备(CPU)和不受信任的数据存储的大型内联网上。

在一些实施方式中,分布式系统100包括资源110、110a-z。资源110可以包括硬件资源110和软件资源110。硬件资源110可以包括计算设备112(也被称为数据处理设备和数据处理硬件)或非暂时性存储器114(也被称为存储器硬件)。软件资源110可以包括软件应用、软件服务、应用程序接口(API)等。软件资源110可以驻留在硬件资源110中。例如,软件资源110可以被存储在存储器硬件114中,或者硬件资源110(例如,计算设备112)可以正在执行软件资源110。

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

存储器硬件114、122可以是用于临时或永久地存储程序(例如,指令的序列)或数据(例如,程序状态信息)以由计算设备112和/或客户端设备120使用的物理设备。存储器硬件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)、PCI Express高级交换、蓝牙、低功耗蓝牙(BLE)等。类似地,在网络132上所使用的网络协议可以包括多协议标签交换(MPLS)、传输控制协议/互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、文件传输协议(FTP)等。通过网络130所交换的数据可以使用包括超文本标记语言(HTML)、可扩展标记语言(XML)等的技术和/或格式来表示。另外,可以使用常规加密技术,诸如安全套接层(SSL)、传输层安全(TLS)、虚拟专用网络(VPN)、互联网协议安全(IPsec)等,来对所有或一些链接进行加密。在其他示例中,代替上述内容或除了上述内容之外,网络130使用自定义和/或专用数据通信技术。

数据块102与数据的原子单位相对应,并且每个数据块102具有B个字节大小。例如,用于在分布式系统上存储的B的典型值可以是64KB到256B。符号N表示与客户端104相关联并且使用不经意随机存取存储器(O-RAM)在存储抽象150上所存储的数据块102的总数。因此,N可以指代存储抽象150上的O-RAM的容量。N个数据块102中的每一个被存储在存储器硬件114中所覆盖的存储抽象150的相对应的存储器位置118、118A-N(图2)。

虽然传统的加密方案提供了机密性,但是传统的加密方案没有有效地隐藏数据访问模式,该数据访问模式可能向不受信任的分布式系统140透露非常敏感的信息。此外,仅当客户端104向分布式系统140提供对加密的数据102的纯文本访问时,传统的加密方案才允许客户端104搜索在分布式系统140上所存储的数据102。当客户端设备120产生数据102时,客户端设备120被认为是受信任的。在一些实施方式中,客户端设备120和分布式系统140执行不经意置换例程300,用于在存储抽象150周围不经意地移动加密的数据块102,以对分布式系统140完全地隐藏数据访问模式(其中数据块102被读/写)。

不经意置换例程300的执行需要(4+ε)N个块访问,而仅需要在客户端存储器122的个存储容量。例程300可以实现大约2.2N的带宽,以提供等于对在存储抽象150上所存储的数据的大约个访问(例如,读访问或写访问)的摊销成本。

在不受信任侧,分布式系统140可以从受信任的客户端设备120接收不经意置换请求302,以启动不经意置换例程300。例如,不经意置换例程300可以使得分布式系统140分配用于存储重新置换的数据块102的存储抽象150的新的存储器位置118,并且将存储抽象150组织/划分/分割为多个数据桶350、350a-n。在一些实施方式中,不经意置换例程300将存储抽象150组织为n个数据桶350,每个数据桶350包含n个数据块102,由此值n等于N个数据块102的平方根(即,)。例如,例程可以通过将存储器位置118划分为大致上n个数据桶350来组织存储抽象150,每个数据桶350包含大致上n个数据块102。在一些示例中,通过在先前的不经意置换例程300期间在客户端设备120所进行的置换,将n个数据块102随机地分配给每个数据桶350。因此,对于不受信任的分布式系统140,将存储抽象150划分为n个数据桶350是模糊的/不经意的。当分布式系统140和客户端设备120在执行不经意置换例程300期间正在进行置换操作时,较小的数据桶350细分存储抽象150的O-RAM以增加带宽。此外,不经意置换例程300可以分配与新的存储器位置118相关联的大致上n个缓冲桶360、360a-n。

在一些示例中,大致上包括值的范围,诸如在N0.1和N0.75之间。其他范围也是可能的。在其他示例中,大致上包括:N0.5,其提供具有一个往返(round-trip)的算法);N1 /3,其提供具有2个往返的算法;以及N0.20,其提供具有4个往返的算法。相对较小的值可能不太有用,因为N可能不切实际地大。对于相对较大的值,算法中的增益也可能不太有用。

在受信任侧,客户端设备120可以从分布式系统140一次一个迭代地下载n个数据桶350中的每一个,并且在执行不经意置换例程300时在存储器硬件122上分配大致上n个缓存槽370、370a-n。每个缓存槽370与由例程300在分布式系统140所分配的相对应的缓冲桶360相关联。对于接收到的每个数据桶350,客户端设备120对相对应的数据桶350内的n个数据块102应用随机置换以生成置换的数据块,并且确定每个置换的数据块102的相对应的缓冲桶360和相对应的缓存槽。客户端设备120可以将每个置换的数据块102提供给与相对应的缓冲桶360相关联的相对应的缓存槽370。在此,缓存槽370可以将最近置换的数据块102临时地存储在客户端设备120的存储器硬件122,直到数据块102被上传/发送到分布式系统140用于存储在新的存储器位置118。一些数据块102可以在下载后续的数据桶350的下一迭代之前,从它们各自的缓存槽370上传到相对应的新的存储器位置118。在一些示例中,缓存槽370在任何给定时间共同地提供n个置换的数据块102的存储容量。然而,在客户端设备120的存储器硬件122可以另外地存储其他状态和信息,诸如是用于认证、加密和伪随机置换的加密密钥。

在当前迭代期间,对于每个缓冲桶360,客户端设备120进一步被配置为确定要被喷射到缓冲桶360中的数据块的数量,以及用于从以下中的至少一个选择要被喷射到缓冲桶360中的数据块的策略:相对应的置换的数据块102、来自相对应的缓存槽370的缓存的置换的数据块102;或者虚假数据块103。随后,客户端设备120可以根据策略将选择的数据块喷射/逐出(evict)(即,上传)到缓冲桶360中,将任何未选择的置换的数据块存储在它们相对应的缓存槽中,并且将任何选择的缓存的置换的数据块102从它们相对应的缓存槽370移除。在一些实施方式中,用于选择要被喷射到每个相对应的缓冲桶360中的数据块的数量的策略遵循严格的优先级顺序,该优先级顺序包括:第一,从相对应的置换的数据块102中选择;第二,从来自相对应的缓存槽370的缓存的置换的数据块102中选择;以及第三,选择虚假数据块103。

在一些示例中,要被喷射到缓冲桶360中的数据块的数量对应于阈值k,该阈值k可以是独立于与缓冲桶360相对应的置换的数据块的数量的任何值。因此,阈值k可以是独立于当前驻留在客户端设备120(即,被存储在缓存槽370中)的数据块102的数量的任何值。阈值k必须足够大,使得客户端设备120在任何给定时间点永远不会存储超过n个数据块102。然而,阈值k还必须足够小,以使得未选择的数据块102从喷射迭代中剩余(leftover)并且存储在相对应的缓存槽370中。例如,较大的阈值k(例如,k>O(log N/log log N))导致在置换之后所有数据块102被选择并且以非常高的概率(但是不能保证)被喷射,而没有使得剩余/未选择的块存储在客户端缓存槽370中。阈值k可以在每个迭代期间改变,或者可以以重复或非重复的方式每第i个迭代改变。任何未选择的数据块102在当前喷射迭代期间不被喷射并且可以被存储在它们相对应的缓存槽370中,直到后续的喷射迭代(即,在客户端设备120随后下载一个或多个数据桶350之后)。在一些示例中,在相同的迭代期间,要被喷射到一个缓冲桶360中的数据块(即,选择的数据块)的数量与要被喷射到另一缓冲桶360中的数据块的数量不同。此外,在单独的迭代之间,要被喷射到一个缓冲桶360中的数据块的数量可以与要被喷射到另一桶360中的数据块的数量不同。

在一些示例中,当缓存槽370包括零个数据块102或小于阈值k的数个数据块102时,例程300使得客户端设备120喷射一个或多个虚假块103以弥补在k与相对应的缓存槽370内的数据块102的数量之间的差异。因此,喷射的“数据块的数量”可以包括所有置换的数据块102、所有虚假块103、或者一个或多个置换的数据块102与一个或多个虚假块103的组合。在一些示例中,客户端设备120在一系列两个或多个喷射迭代中喷射高达阈值k。例如,客户端设备120可以在三(3)个连续的喷射迭代期间喷射一(1)个数据块102(例如,或者当数据块102不可用时为虚假块103),然后当阈值k等于值1.25时在第四迭代期间喷射两(2)个数据块102(例如,或者如果少于两个数据块102可用,则为至少一个虚假块102)。类似地,等于1.5的阈值k可以导致客户端设备120每隔一个迭代喷射一(1)个数据块102,然后喷射两(2)个数据块102。客户端设备120可以标记或追加(pre-pend)数据块102和/或虚假块103,使得可以识别虚假块103用于在重新校准阶段400(图4A和4B)期间移除虚假块103。

在对来自相对应的下载的桶350的n个数据块102应用随机置换之后,根据策略选择要被喷射到每个缓冲桶中的数据块,将选择的数据桶喷射到它们相对应的缓冲桶360中,并且在缓存槽370存储任何未选择的置换的数据块102,客户端设备120可以下载下一n数据桶350,并且在下一迭代期间重复应用如上所述的随机置换和喷射/存储。在下载最后的n数据桶350并且对与其相关联的n个数据块102应用随机置换之后,客户端设备120根据策略将选择的数据块102的数量喷射到它们相对应的缓冲桶360中。现在所有N个数据块被随机地分配给在存储器114中所分配并且驻留在相对应的缓冲桶360内的它们相对应的新的存储器位置118,不经意置换例程300可以使得分布式系统140解除分配数据桶350与旧的/陈旧的(stale)存储器位置118相关联。

在每个喷射迭代期间,每个缓冲桶360内的数据块102和/或虚假块103的数量增加。在最后的喷射迭代(即,第n个喷射迭代)之后,n个缓冲桶360中的每一个的容量包括n个数据块102,以及当相对应的缓存槽370内的数据块102的数量小于阈值k时,被喷射以补偿迭代的任何虚假块103。在一些实施方式中,不经意置换例程300包括重新校准阶段400(图4A和4B),由此客户端设备120从分布式系统140一次一个迭代地下载n个缓冲桶360中的每一个。因此,重新校准阶段400包括n个迭代或回合。在一些示例中,客户端设备120在当前迭代期间过滤并且移除在从分布式系统140所下载的相对应的缓冲桶360内所包含的所有虚假块103。另外,客户端设备120可以对相对应的缓冲桶360内的每个数据块102再次进行解密和重新加密,然后在将相对应的缓冲桶360上传回分布式系统140之前正确地对数据块102进行排序。在重新校准每个缓冲桶360之后,不经意置换例程300已经成功地置换了N个项目,而没有向分布式系统140透露置换的任何部分。因此,数据块102的重新加密阻止了分布式系统140基于数据块102的内容来链接数据块102的能力。

参考图2,在一些实施方式中,分布式存储系统140包括松散耦接的存储器主机110、110a-z(例如,计算机或服务器),每个存储器主机具有与可以用于缓存数据的存储资源114(例如,存储器硬件、存储器硬件、闪存、动态随机存取存储器(DRAM)、相变存储器(PCM)和/或盘)进行通信的计算资源112(例如,一个或多个处理器或中央处理单元(CPU))。在存储资源114上所覆盖的存储抽象150允许由一个或多个用户设备120、120a-n可伸缩地使用存储资源114。用户设备120可以通过网络130(例如,经由远程过程调用(RPC))与存储器主机110进行通信。

在一些实施方式中,分布式存储系统140是“单侧的”,消除了当执行不经意置换例程300时需要任何服务器作业来响应来自用户设备120的RPC以在存储抽象150周围不经意地移动数据块102。“单侧的”是指可以以硬件而不是通过在存储器主机110的CPU112上所执行的软件来完成对存储器主机110的大多数请求处理的方法。与单侧的分布式缓存系统有关的其他概念和特征可以在美国专利9,164,702中找到,该美国专利通过引用被完全结合在本文中。

分布式系统140可以在远程存储器主机110(例如,存储抽象150)的存储资源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。例程300进一步分配新的存储器位置118以存储由客户端设备120所置换的每个相对应的数据块102。一旦重新置换了所有数据块102并且过滤和移除了虚假块103,例程300就可以解除分配陈旧的存储器位置118,从该陈旧的存储器位置118不经意地移除重新置换的数据块102。例如,客户端设备120可以当喷射到相对应的缓冲桶360中时标记数据块102和/或虚假块103,使得可以识别虚假块103用于在重新校准阶段400期间移除。

在一些实施方式中,客户端设备120传送不经意置换请求302,以指示硬件资源110的数据处理硬件112执行不经意置换例程300,用于将在存储器114所存储的数据块102不经意地移动到新的存储器位置118。例程300可以将新的存储器位置118划分为n个数据桶350,每个数据桶350包含n个数据块102,并且客户端设备120可以在分布式系统140上发出桶下载请求304,以一次一个地下载每个数据桶350。NIC 116可以从存储抽象150检索请求的数据桶350和相对应的n个数据块102,并且向客户端设备120提供请求的数据桶350。单独地下载数据桶350允许客户端设备120一次仅对n个数据块102应用随机置换,以减少客户端设备120上的负载以及减少在客户端存储器硬件122(即,在缓存槽370内)所存储的数据的量。在每个喷射迭代期间,客户端设备120可以将高达阈值k的数据块102和/或虚假块103喷射到与在分布式系统140的新的存储器位置118相关联的相对应的缓冲桶360中。

图3A-3J提供在客户端设备120和分布式系统140上执行以不经意地移动在分布式系统140上所存储的数据块102的示例不经意置换例程300。参考图3A,客户端设备120向分布式系统140传送不经意置换请求302,用于不经意地移动在O-RAM存储抽象150上所存储的数据块102A-N,该O-RAM存储抽象150被覆盖在分布式系统140的存储器硬件114上。数据块102A-N可以由客户端设备120拥有和使用客户端侧密钥来加密,并且可以经由查询搜索,而不用给予分布式系统140的服务提供商对存储的数据的纯文本访问。为了简单起见,N个数据块102等于十六(16)。在一些示例中,客户端104对应于企业或企业的雇员。分布式系统140将存储抽象150的当前存储器位置118划分/分割为n个数据桶350a、350b、350c、350n,每个数据桶包含n个数据块102。因此,当前存储器位置118被划分/分割为四(4)个数据桶350a-350n,每个数据桶包含四(4)个数据块102。在所示的示例中,数据块1-4驻留在第一数据桶350a中,数据块5-8驻留在第二数据桶350b中,数据块9-12驻留在第三数据桶350c中,并且数据块13-16驻留在第四数据桶350n中。分布式系统140进一步在存储抽象150中分配新的存储器位置118,用于在置换之后存储N个块102,并且初始化与新的存储器位置118相关联的n个缓冲桶360a、360b、360c、360d。客户端设备120同时在客户端存储器硬件122中分配/初始化n个缓存槽370a、370b、370c、370n,每个缓存槽与存储抽象150的相对应的缓冲桶360a、360b、360c、360n相关联。客户端设备120可以向分布式系统140传送桶下载请求304,请求下载数据桶350中的一个,并且对驻留在请求的数据桶350中的n个数据块102应用随机置换。每当客户端设备120准备好对驻留在下一数据桶350中的n个数据块102应用随机置换时,客户端设备120可以迭代地发送桶下载请求304。

客户端设备120可以执行加密模块305或访问加密模块305以随机地选择高级加密标准(AES)密钥,用于在对数据块102应用随机置换以及对数据块102进行加密、解密和重新加密时使用。因此,加密模块305可以提供随机生成的密钥(例如,AES密钥),用于将数据块102不经意地移动到存储抽象150的新的存储器位置118,而没有向分布式系统140透露置换。在一些示例中,随机生成的密钥是临时的,并且每当数据块102被重新置换时,随机地生成新的密钥。

参考图3B,分布式系统140响应于接收到桶下载请求304,向客户端设备120提供第一数据桶350a。在所示的示例中,数据桶350a包含n个数据块102(块1-4)。响应于从分布式系统140接收到数据桶350a,客户端设备120对n个数据块102(块1-4)应用随机置换,以确定与每个置换的数据块102相关联的相对应的新的存储器位置118A-N和相对应的缓冲桶360a-n。在一些示例中,客户端设备120通过对在第一数据桶350a内所接收的n个数据块102中的每一个进行解密和重新加密并且对重新加密的n个数据块102应用随机置换,来应用随机置换。例如,客户端设备120可以使用从加密模块305(图3A)所提供的随机生成的密钥(即,AES密钥)来对分布式系统140混淆置换。在一些示例中,由客户端设备120所应用的随机置换包括使用对分布式系统140隐藏的加密安全随机密钥来对重新加密的n个数据块(块1-4)进行洗牌。

此外,客户端设备120随机地选择阈值k,用于在将重新置换的数据块102喷射到在分布式系统140的存储器硬件114的它们被分配的缓冲桶360中时使用。可以独立于当前被存储在客户端设备120的数据,即,独立于每个缓存槽370的负载,并且独立于与每个缓冲桶360相对应的置换的数据块102的数量,而随机地选择阈值k。对于每个缓冲桶360,客户端设备120可以执行单独的处理/例程以确定要被喷射到缓冲桶中的数据块的数量(例如,阈值k),以及用于从以下中的至少一个选择要被喷射到缓冲桶中的数据块的策略:相对应的置换的数据块;来自相对应的缓存槽的缓存的置换的数据块;或者虚假数据块。在一些示例中,当客户端设备120对重新加密的数据块102应用随机置换时,客户端设备120执行用于确定要被喷射到每个缓冲桶360中的数据块的数量的单独的处理/例程。阈值k必须足够大以防止被本地存储在客户端存储器硬件122的缓存槽370的数据块102的数量超过值n(即,在所示的示例中,n=4个数据块102)。在图3A-3J的示例不经意置换例程300中,阈值k等于1.25,使得在n个喷射迭代(即,n=4)期间被喷射到缓冲桶360中的数据块102和/或虚假块103的序列为1,1,1,2。然而,可以使用在n个迭代期间实现等于1.25的阈值k的任何序列。

在对数据块102(块1-4)进行置换之后,客户端设备120将每个置换的数据块102提供到客户端存储器硬件122的相对应的缓存槽370中。在所示的示例中,第二缓存槽C2 370b接收块1、3和4,并且第四缓存槽C4 370n接收块2。在当前迭代期间,第一缓存槽C1 370a和第三缓存槽C3 370c不接收任何数据块102,因为对第一数据桶350a所应用的随机置换没有向与第一缓冲桶360a和第三缓冲桶360c相关联的任何新的存储器位置118分配任何数据块102。

参考图3C,客户端设备120执行第一喷射迭代(也被称为喷射回合),以将高达阈值k的置换的数据块102(块1-4)从每个缓存槽370喷射/逐出到相对应的缓冲桶360中。因为在示例中阈值k等于1.25,所以客户端设备120将在第一喷射迭代(以及第二和第三喷射迭代(图3E和3G))期间从每个缓存槽370a、370b、370c、370n喷射高达一(1)个数据块102。在一些示例中,当相对应的缓存槽370至少包含阈值k的置换的数据块时,客户端设备120从相对应的缓存槽370喷射等于阈值k(即,选择的数据块的数量)的数个置换的数据块102。例如,因为第二缓存槽C2 370b当前正在存储三个数据块102,所以客户端设备120将一(1)个数据块102(块1)从第二缓存槽C2 370b喷射/逐出到第二缓冲桶360b中。同样,因为第四缓存槽C4370d当前正在存储一个数据块102,所以客户端设备120将一(1)个数据块102(块2)从第四缓存槽C4 370d喷射/逐出到第四缓冲桶360n中。

在一些实施方式中,置换例程300还识别包含小于阈值k的数个置换的数据块102的任何缓存槽370,并且基于在阈值k与相对应的缓存槽370内的置换的数据块102的数量之间的差异将数个虚假块103喷射/逐出到相对应的缓冲桶360中。因此,虚假块103表示无意义的数据块,以不向分布式系统140透露在当前迭代期间缓存槽370是空的。因为第一缓存槽C1 370a和第三缓存槽C3 370c当前没有存储任何数据块102,所以客户端设备120将一个虚假块103喷射/逐出到第一缓冲桶360a和第三缓冲桶360c的每一个中。类似于数据块102,客户端设备120可以对虚假块103进行加密。虚假块103可以驻留在缓存槽370中,或者可以在需要时在每个喷射迭代期间由客户端设备生成。虚假块103的发送是安全措施,以对不受信任的分布式系统140隐藏在存储抽象150中所存储的数据块102的使用期限(age)。另外,作为对分布式系统140上的可链接性攻击的安全措施,加密的虚假块103的发送隐藏在每个喷射迭代期间哪些缓存槽370包含数据块102以及哪些缓存槽370是空的。

缓存槽370允许将各自与分配的缓冲桶360相关联的最近置换的数据块102临时地存储在客户端设备120本地,直到例程300准备好将数据块102喷射/逐出到它们相对应的缓冲桶360中。缓存槽370a-n共同地为客户端设备120提供队列,该队列将每个置换的数据块102映射到在分布式系统140的存储抽象150的相对应的新的存储器位置118。因此,当前驻留在缓存槽370中的一个中的每个数据块102对应于与新的存储器位置118相关联的最新版本,该新的存储器位置118对于分布式系统140是不经意的。

参考图3D,响应于从客户端设备120接收到下一桶下载请求304,分布式系统140向客户端设备120提供第二数据桶350b用于下一迭代。在所示的示例中,第一缓冲桶360a和第三缓冲桶360c包含虚假块103,第二缓冲桶360b包含数据块102(块1),并且第四缓冲桶360d包含在先前喷射迭代期间从客户端缓存槽370所逐出的数据块102(块2)。此外,客户端设备120被配置为将任何剩余的置换的数据块102存储在它们相对应的缓存槽370中,该剩余的置换的数据块102在一个或多个先前喷射迭代之后被留下(left over)。在所示的示例中,第二缓存槽C2 370b正在临时地存储从先前喷射迭代所留下的两个置换的数据块102(块3和4)。

下载的第二桶350b包含n个数据块102(块5-8)。与第一桶350a一样,置换例程300使得客户端设备120对n个数据块102(块5-8)应用随机置换,以确定与每个置换的数据块102相关联的相对应的新的存储器位置118A-N和相对应的缓冲桶360a-n。在此,客户端设备120对每个数据块(块5-8)进行解密和重新加密,并且通过基于先前的或新的随机生成的密钥(即,AES密钥)使用对分布式系统隐藏的随机位,在本地对重新加密的数据块102的顺序进行洗牌,来对重新加密的数据块102应用随机置换。此后,客户端设备120将每个置换的数据块102提供到客户端存储器硬件122的相对应的缓存槽370中。在所示的示例中,第一缓存槽C1 370a接收块6和8,第三缓存槽C3 370c接收块5,并且第四缓存槽C4 370n接收块7。在当前迭代期间,第二缓存槽C2 370b不接收任何数据块102,因为对第二数据桶350b所应用的随机置换没有向与第二缓冲桶360b相关联的任何新的存储器位置118分配任何数据块102。

参考图3E,客户端设备120执行第二喷射迭代,以将高达阈值k的置换的数据块102(块3-8)从每个缓存槽370喷射/逐出到相对应的缓冲桶360中。因为在示例中阈值k等于1.25,以提供1,1,1,2的迭代喷射序列,所以在当前第二喷射迭代期间客户端设备120将从每个缓存槽370a、370b、370c、370n喷射高达一(1)个数据块。例如,客户端设备120将数据块(块6)从第一缓存槽C1 370a喷射/逐出到第一缓冲桶360b中,将数据块(块3)从第二缓存槽C2 370b喷射/逐出到第二缓冲桶360b中,将数据块102(块5)从第三缓存槽C3 370c喷射/逐出到第三缓冲桶360c中,并且将数据块102(块7)从第四缓存槽C4 370n喷射/逐出到第四缓冲桶360n中。

参考图3F,响应于从客户端设备120接收到下一桶下载请求304,分布式系统140向客户端设备120提供第三数据桶350c用于下一迭代(即,第三迭代)。第一缓冲桶360a包含一个虚假块103和一个数据块(块6),第二缓冲桶360b当前包含两个数据块(块1和3),第三缓冲桶360c包含一个虚假块103和一个数据块(块5),并且第四缓冲桶360n包含两个数据块(块2和7)。此外,客户端设备120被配置为将任何剩余的置换的数据块102存储在它们相对应的缓存槽370中,该剩余的置换的数据块102在一个或多个先前喷射迭代之后被留下。在所示的示例中,第一缓存槽C1 370a临时地存储一个数据块102(块8),并且第二缓存槽C2370b临时地存储从一个或多个先前喷射迭代所留下的一个数据块102(块4)。

响应于接收到包含n个数据块102(块9-12)的下载的第三桶350c,置换例程300使得客户端设备120对n个数据块102(块9-12)应用随机置换,以确定与每个置换的数据块102相关联的相对应的新的存储器位置118A-N和相对应的缓冲桶360a-n。在此,客户端设备120对每个数据块(块9-12)进行解密和重新加密,并且通过基于先前的或新的随机生成的密钥(即,AES密钥)使用对分布式系统隐藏的加密安全随机密钥,在本地对重新加密的数据块102的顺序进行洗牌,来对重新加密的数据块102应用随机置换。此后,客户端设备120将每个置换的数据块102提供到客户端存储器硬件122的相对应的缓存槽370中。在所示的示例中,第一缓存槽C1 370a接收块11和12,第三缓存槽C3 370c接收块10,并且第四缓存槽C4370n接收块9。与第二迭代一样(仅出于巧合和示例),第二缓存槽C2 370b在当前第三迭代期间不接收任何数据块102,因为对第三数据桶350c所应用的随机置换没有向与第二缓冲桶360b相关联的任何新的存储器位置118分配任何数据块102。

参考图3G,客户端设备120执行第三喷射迭代,以将高达阈值k的置换的数据块102(例如,块4和8-12)从每个缓存槽370喷射/逐出到相对应的缓冲桶360中。因为在示例中阈值k等于1.25,以提供1,1,1,2的迭代喷射序列,所以在当前第三喷射迭代期间客户端设备120将从每个缓存槽370a、370b、370c、370n喷射高达一(1)个数据块。例如,客户端设备120将数据块(块8)从第一缓存槽C1 370a喷射/逐出到第一缓冲桶360a中,将数据块(块4)从第二缓存槽C2 370b喷射/逐出到第二缓冲桶360b中,将数据块102(块10)从第三缓存槽C3370c喷射/逐出到第三缓冲桶360c中,并且将数据块102(块9)从第四缓存槽C4 370n喷射/逐出到第四缓冲桶360n中。客户端设备120可以选择将最新置换的数据块102中的一个(块11或块12)喷射到第一缓冲桶360a中,而不是将缓存的置换的数据块102(块8)从第一缓存槽C1 370a喷射到第一缓冲桶360a中。

参考图3H,响应于从客户端设备120接收到下一桶下载请求304,分布式系统140向客户端设备120提供第四且最终数据桶350c用于最后的迭代(即,第四迭代)。第一缓冲桶360a包含一个虚假块103和两个数据块(块6和8),第二缓冲桶360b当前包含三个数据块(块1、3和4),第三缓冲桶360c包含一个虚假块103和两个数据块(块5和10),并且第四缓冲桶360n包含三个数据块(块2、7和9)。此外,客户端设备120被配置为将任何剩余的置换的数据块102存储在它们相对应的缓存槽370中,该剩余的置换的数据块102在一个或多个先前喷射迭代之后被留下。在所示的示例中,第一缓存槽C1 370a临时地存储从先前喷射迭代所留下的两个数据块102(块11和12)。因此,根据策略,块11和12对应于先前未选择的数据块。

响应于接收到包含n个数据块102(块13-16)的下载的第四桶350n,置换例程300使得客户端设备120对n个数据块102(块13-16)应用随机置换,以确定与每个置换的数据块102相关联的相对应的新的存储器位置118A-N和相对应的缓冲桶360a-n。在此,客户端设备120对每个数据块(块13-16)进行解密和重新加密,并且通过基于先前的或新的随机生成的密钥(即,AES密钥)使用对分布式系统隐藏的加密安全随机密钥,在本地对重新加密的数据块102的顺序进行洗牌,来对重新加密的数据块102应用随机置换。此后,客户端设备120将每个置换的数据块102提供到客户端存储器硬件122的相对应的缓存槽370中。在所示的示例中,第二缓存槽C2 370b接收块15,第三缓存槽C3 370c接收块14和16,并且第四缓存槽C4370n接收块13。第一缓存槽C1 370a在当前第四迭代期间不接收任何数据块102,因为对第四数据桶350n所应用的随机置换没有向与第一缓冲桶360a相关联的任何新的存储器位置118分配任何数据块102。

参考图3I,客户端设备120执行最终的第四喷射迭代,以将高达阈值k的置换的数据块102(例如,块11-14)从每个缓存槽370喷射/逐出到相对应的缓冲桶360中。因为在示例中阈值k等于1.25,以提供1,1,1,2的迭代喷射序列,所以在当前第四喷射迭代期间客户端设备120将从每个缓存槽370a、370b、370c、370n喷射高达两(2)个数据块。例如,客户端设备120将数据块(块11和12)从第一缓存槽C1 370a喷射/逐出到第一缓冲桶360b中,将数据块(块15)从第二缓存槽C2 370b喷射/逐出到第二缓冲桶360b中,将数据块102(块14和16)从第三缓存槽C3 370c喷射/逐出到第三缓冲桶360c中,并且将数据块102(块13)从第四缓存槽C4 370n喷射/逐出到第四缓冲桶360n中。在所示的示例中,在第四迭代期间置换例程300识别出第二缓存槽C2 370b和第四缓存槽C4 370n中的每一个各自包含一个数据块102,因此需要当前喷射迭代喷射虚假块103以弥补在最后的喷射迭代期间与等于“2”的阈值k的差异。因此,例程300使得客户端设备120将一个虚假块103和一个数据块(块15)一起喷射/逐出到第二缓冲桶360b中,并且将一个虚假块103和一个数据块(块13)一起喷射/逐出到第四缓冲桶360n中。因此,虚假块103对分布式系统140混淆了缓存槽370b、370n各自仅包含一个数据块102的事实。

在最终的喷射迭代之后,由在客户端设备120上执行的不经意置换例程300所置换的所有数据块102从客户端存储器硬件122的缓存槽370被逐出,并且现在驻留在它们相对应的缓冲桶360中。然而,其他示例可以包括在最后的喷射迭代之后仍然存储一些置换的数据块102的缓存槽370。在这些示例中,在重新校准阶段400期间,被留下并且被存储在它们相对应的缓存槽370的任何剩余的置换的数据块102可以与先前被喷射到相对应的缓冲桶360中的数据块102进行组合。图3J示出置换例程300,该置换例程300使得客户端设备120向分布式系统140发送/传送解除分配桶请求306,以从在分布式系统140的存储器硬件114上所覆盖的O-RAM存储抽象150解除分配陈旧的/旧的数据桶350a-350n中的每一个。在所示的示例中,缓冲桶360a-n中的每一个包含n个置换的数据块102(例如,n=4)以及一个或多个虚假块103。不经意置换例程300可以进一步包括重新校准处理400(图4A和4B),该重新校准处理400在个体的基础上(on an individual basis)迭代地重新校准虚拟桶360a-n中的每一个,以过滤和移除所有虚假块,并且根据应用的置换对数据块102进行排序。

图4A和4B提供在客户端设备120和分布式系统140上执行的示例重新校准处理400,以重新校准包含数据块102的最新置换的虚拟桶360a-n。参考图4A,客户端设备120可以向分布式系统140传送缓冲桶下载请求404,该缓冲桶下载请求404请求下载在置换例程300期间被填充有置换的数据块102和至少一个虚假块103的缓冲桶360中的一个,并且重新校准请求的缓冲桶360以仅包括根据应用的置换所排序的分配的数据块104。每当客户端设备120准备好重新校准下一缓冲桶360时,客户端设备120可以迭代地发送缓冲桶下载请求404。因此,每个请求404可以识别请求的缓冲桶360,用于从分布式系统140下载。在所示的示例中,客户端设备120发送桶下载请求404以下载第一缓冲桶360a,用于在重新校准处理的第一重新校准迭代期间下载。

参考图4B,重新校准处理400使得分布式系统140响应于从客户端设备120接收到请求第一缓冲桶360a的缓冲桶下载请求404而向客户端设备120提供第一缓冲桶360a。缓冲桶360a包括在图3A-3J的不经意置换例程300的n个喷射迭代期间从第一客户端缓存槽C1370a所喷射/逐出的n个数据块102(块6、8、11、12)和一个虚假块103。响应于从分布式系统140接收到缓冲桶360a,客户端设备120通过首先过滤和移除任何虚假块103,然后对在相对应的缓冲桶360a内所接收的n个数据块102(块6、8、11、12)中的每一个进行解密/重新加密,来重新校准缓冲桶360a。在移除虚假块103并且对n个数据块102再次进行重新加密的情况下,客户端设备120可以根据在执行不经意置换处理300期间所应用的随机置换来对重新加密的数据块(块6、8、11、12)进行排序,以完成缓冲桶360a的重新校准。此后,客户端设备120将仅包括n个数据块102的重新校准的缓冲桶360a上传到分布式系统140的O-RAM存储抽象150,用于存储在存储器硬件114的每个相对应的新的存储器位置118A-N上。客户端设备120然后可以向分布式系统140迭代地发送/传送下一缓冲桶下载请求404,用于在个体的基础上迭代地重新校准剩余的缓冲桶360b、360c、360n中的每一个。

图3A-3J的不经意置换处理300需要客户端存储器硬件122具有O(n)个存储块。图5提供用于当客户端存储器硬件122作为O(n)个存储块的容量时应用不经意地洗牌的示例算法500。在一些实施方式中,置换处理300以递归方式执行,从而消除客户端存储器硬件122具有O(n)个存储块的需求。如此处所使用的,“O”是渐近复杂度的符号。在此,可以增加数据桶350的容量/大小,以减少在存储抽象150的数据桶350的总数,并且减少在客户端存储器硬件122所需的存储容量。例如,假设客户端存储器硬件122具有n=logN·ω(1)的容量并且给定了|A|个项目的输入,以递归地和不经意地洗牌(RecursiveObvShuffle),例程300可以将A拆分为个桶,每个桶包含n个数据块102,并且将缓冲桶360拆分为n个缓冲桶,每个缓冲桶包含r个项目。此后,客户端设备120可以迭代地喷射数据块。然而,因为r大于n(r>n),所以重新校准处理400可能不执行,因此客户端设备120不能够从单个缓冲桶360下载所有项目。代替地,在已知所有项目被喷射到适当的缓冲桶360中的情况下,客户端设备可以对大小等于r的较小实例执行RecursiveObvShuffle。客户端可以重复多次,直到实例足够小以进行下载。图6提供用于当客户端存储器硬件122作为n=logN·ω(1)的容量时应用不经意地洗牌的示例算法600。另外,使用阈值k的较小值(但是仍然大于零)会增加客户端存储容量,使得在每个喷射迭代期间较少的数据块102被喷射到它们相对应的缓冲桶360中,并且缓存槽370变大。

图7示出用于将数据块102不经意地移动到存储器硬件114上的新的存储器位置118的方法700。在框702,方法700包括在数据处理硬件112从客户端(即,客户端设备120)接收置换请求,以不经意地移动在与数据处理硬件112进行通信的存储器硬件114中所存储的N个数据块102。N个数据块102中的每一个与客户端104相关联,并且被存储在存储器硬件114的相对应的存储器位置118、118A-N中。

在框704,方法700包括通过数据处理硬件112将存储器硬件114的存储器位置118组织为n个数据桶350、350a-n。在此,并且每个数据桶350包含n个数据块102。在框706,方法700包括通过数据处理硬件112分配存储器硬件114中的新的存储器位置118,用于存储N个数据块102。在框708,方法包括通过数据处理硬件112初始化与新的存储器位置118相关联的缓冲桶360、360a-n。每个缓冲桶360与在客户端设备120所初始化的相对应的缓存槽370、370a-n相关联。

在框710,方法包括从数据处理硬件112向客户端设备120迭代地提供n个数据桶。例如,客户端设备120可以发送每个数据桶350的桶下载请求304。响应于接收到每个数据桶350,客户端设备120被配置为(1)对相对应的数据桶350内的n个数据块102应用随机置换,以确定与每个置换的数据块102相关联的相对应的新的存储器位置118和相对应的缓冲桶360;提供每个置换的;将每个置换的数据块102提供到相对应的缓存槽370中;将高达阈值k的置换的数据块102从每个缓存槽370喷射到相对应的缓冲桶360中;以及将任何剩余的置换的数据块102存储在相对应的缓存槽370中。

图8是可以用于实施本文档中所描述的系统和方法的示例计算设备800的示意图。计算设备800旨在表示各种形式的数字计算机,诸如是膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。此处所示的组件,它们的连接和关系以及它们的功能仅意味着是示例性的,并不意味着限制本文档中所描述和/或所要求保护的发明的实施方式。

计算设备800包括处理器810(例如,数据处理硬件112)、存储器820、存储设备830、连接到存储器820和高速扩展端口850的高速接口/控制器840、以及连接到低速总线870和存储设备830的低速接口/控制器860。计算设备800可以驻留在客户端设备120和/或分布式系统140。组件810、820、830、840、850和860中的每一个使用各种总线来互连,并且可以被安装在通用主板上或以其他适当的方式被安装。处理器810可以处理用于在计算设备800内执行的指令,包括在存储器820中或存储设备830上所存储的指令,以在外部输入/输出设备上显示用于图形用户界面(GUI)的图形信息,该外部输入/输出设备诸如是被耦接到高速接口840的显示器880。在其他实施方式中,多个处理器和/或多个总线可以适当地与多个存储器和存储器类型一起使用。而且,可以连接多个计算设备800,其中每个设备提供必要操作的部分(例如,作为服务器阵列(server bank)、一组刀片服务器、或多处理器系统)。

存储器820(例如,存储器硬件)在计算设备800内非暂时性地存储信息。存储器820可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时性存储器820可以是用于临时或永久地存储程序(例如,指令的序列)或数据(例如,程序状态信息)以由计算设备800使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,诸如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及盘或带。

存储设备830能够提供用于计算设备800的大容量存储。在一些实施方式中,存储设备830是计算机可读介质。在各种不同的实施方式中,存储设备830可以是软盘设备、硬盘设备、光盘设备或带设备,闪存或其他类似的固态存储器设备,或设备的阵列,包括在存储区域网络或其他配置中的设备。在其他实施方式中,计算机程序产品被有形地体现在信息载体中。计算机程序产品包含指令,当该指令被执行时,进行一个或多个方法,诸如是上述那些方法。信息载体是诸如存储器820的计算机或机器可读介质、存储设备830、或处理器810上的存储器。

高速控制器840管理计算设备800的带宽密集操作,而低速控制器860管理较低的带宽密集操作。这样的职责的分配仅是示例性的。在一些实施方式中,高速控制器840被耦接到存储器820、显示器880(例如,通过图形处理器或加速器)以及高速扩展端口850,该高速扩展端口850可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器860被耦接到存储设备830和低速扩展端口870。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口870可以例如通过网络适配器被耦接到一个或多个输入/输出设备,该一个或多个输入/输出设备诸如是键盘、指示设备、扫描仪或者诸如交换机或路由器的网络设备。

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

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

这些计算机程序(也被已知为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级的面向过程和/或面向对象的编程语言、和/或以汇编/机器语言来实施。如此处所使用的,术语“机器可读介质”和“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(PLD)),该可编程处理器包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。

本说明书中所描述的主题的实施方式和功能操作可以以数字电子电路来实施,或者以包括本说明书中所公开的结构及其结构等同物的计算机软件、固件或硬件来实施,或者以它们中的一个或多个的组合来实施。此外,本说明书中所描述的主题可以被实施为一个或多个计算机程序产品,即,计算机可读介质上所编码的一个或多个计算机程序指令的模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或者它们中的一个或多个的组合。术语“数据处理装置”、“计算设备”和“计算处理器”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或者多个处理器或计算机。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。传播的信号是人工生成的信号,例如,机器生成的电、光或电磁信号,该信号被生成为对信息进行编码,用于传送到合适的接收器装置。

计算机程序(也被已知为应用、程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言来编写,包括编译或解释的语言,并且它可以以任何形式来部署,包括作为独立程序或者作为模块、组件、子例程或适用于计算环境的其他单元。计算机程序不一定与文件系统中的文件相对应。程序可以被存储在保持其他程序或数据(例如,被存储在标记语言文档中的一个或多个脚本)的文件的一部分中,被存储在专用于所讨论程序的单个文件中,或者被存储在多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署为在一个计算机或多个计算机上执行,该多个计算机位于一个站点或者分布在多个站点并且通过通信网络互连。

本说明书中所描述的处理和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来进行,以通过对输入数据进行操作并且生成输出来进行功能。处理和逻辑流程也可以由专用逻辑电路进行,并且装置也可以被实施为专用逻辑电路,该专用逻辑电路例如是FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

例如,适用于执行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的基本元件是用于进行指令的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,或者可操作地被耦接为从该大容量存储设备接收数据或向该大容量存储设备传输数据,或者这两者,该大容量存储设备例如是磁盘、磁光盘或光盘。然而,计算机不必具有这样的设备。此外,计算机可以被嵌入在另一设备中,例如仅举几例,移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或者被并入专用逻辑电路中。

为了提供与用户的交互,本公开的一个或多个方面可以被实施在具有显示设备并且可选地具有键盘和指示设备的计算机上,显示设备例如是CRT(阴极射线管)监视器、LCD(液晶显示器)监视器或用于向用户显示信息的触摸屏,指示设备例如是鼠标或轨迹球,用户可以通过键盘和指示设备向计算机提供输入。其他种类的设备也可以用于提供与用户的交互;例如,向用户所提供的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向由用户所使用的设备发送文档以及从由用户所使用的设备接收文档来与用户进行交互;例如,通过响应于从用户的客户端设备上的网页浏览器所接收的请求而向网页浏览器发送网页。

本公开的一个或多个方面可以被实施在计算系统中,该计算系统包括后端组件,例如,作为数据服务器,或者包括中间件组件,例如,应用服务器,或者包括前端组件,例如,具有图形用户界面或网页浏览器的客户端计算机,用户可以通过图形用户界面或网页浏览器与本说明书中所描述的主题的实施方式进行交互,或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过数字数据通信的任何形式或介质来互连,例如,通信网络。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网(例如,因特网)以及对等网络(例如,自组织对等网络)。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端与服务器的关系通过在各自计算机上运行并且彼此具有客户端-服务器关系的计算机程序而出现。在一些实施方式中,服务器向客户端设备传送数据(例如,HTML页面)(例如,用于向与客户端设备进行交互的用户显示数据以及从与客户端设备进行交互的用户接收用户输入)。可以从在服务器的客户端设备接收在客户端设备所生成的数据(例如,用户交互的结果)。

虽然本说明书包含许多细节,但是这些细节不应该被解释为对本公开或可能被要求保护的范围的限制,而是应该被解释为对本公开的特定实施方式特定的特征的描述。本说明书中在单独实施方式的情境中所描述的某些特征也可以组合地在单个实施方式中实施。相反,在单个实施方式的情境中所描述的各种特征也可以单独地或以任何合适的子组合在多个实施方式中被实施。此外,尽管上面可以将特征描述为以某些组合起作用并且甚至最初如这样要求保护,但是在一些情况下,可以从要求保护的组合中删除来自该组合的一个或多个特征,并且要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序示出了操作,但是这不应该被理解为要求以所示的特定顺序或按顺序进行这样的操作,或者进行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上面所描述的实施例中的各种系统组件的分离不应该被理解为在所有实施例中都要求这样的分离,并且应该理解的是,描述的程序组件和系统通常可以被集成在单个软件产品中或者被打包到多个软件产品中。

已经描述了数个实施方式。然而,应该理解的是,在不脱离本公开的精神和范围的情况下,可以进行各种修改。因此,其他实施方式在以下权利要求的范围内。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:静默活动页面迁移错误

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类