用于提供隐私信息检索的系统、方法和装置与流程

文档序号:11519511阅读:410来源:国知局
用于提供隐私信息检索的系统、方法和装置与流程

相关申请

本申请要求2015年3月23日提交的题为“systems,methods,andapparatustoprovideprivateinformationretrieval(用于提供隐私信息检索的系统、方法和装置)”的美国专利申请序列号14/665,064的优先权。美国专利申请序列号14/665,064的全文通过引用结合于此。

本公开总体上涉及网络安全,并且更具体地,涉及用于提供隐私信息检索的系统、方法和装置。



背景技术:

用户通过提出请求(通常经由通信网络,例如互联网)来访问服务器的数据库记录。服务器和/或数据库记录可由除提出请求的人以外的实体来控制。

附图说明

图1是根据本公开的教导所构建的示例系统的框图,所述系统用于通过使用可信处理单元提供隐私信息检索。

图2是根据本公开教导所构建的另一示例系统的框图,所述系统用于通过使用多个可信处理单元提供隐私信息检索。

图3展示了通过使用以树结构进行设置的受保护散列飞地和受保护数据飞地来隐私地访问数据库中的记录的示例。

图4是表示示例机器可读指令的流程图,所述机器可读指令可以被执行以便实现图1和/或2的示例系统,从而产生一个或多个受保护数据飞地,以提供数据库的隐私信息检索。

图5是表示示例机器可读指令的流程图,所述机器可读指令可以被执行以便实现图1和/或2的示例系统,从而服务针对数据库隐私信息检索的请求。

图6是表示示例机器可读指令的流程图,所述机器可读指令可以被执行以便实现图1和/或2的示例系统,从而接收和处理伪请求。

图7是表示示例机器可读指令的流程图,所述机器可读指令可以被执行以便实现图1和/或2的示例系统,从而接收和响应请求。

图8是示例处理器平台的框图,所述示例处理器平台能够执行图4和/或7的指令,以实现图1和/或2的可信处理单元、示例数据飞地生成器、示例记录检索器和/或示例受保护数据飞地。

图9是示例处理器平台的框图,所述示例处理器平台能够执行图4的指令,以实现图1和/或2的不可信处理单元、不可信存储设备、不可信代码、数据库、数据、记录和/或示例隐私信息检索管理器。

图10是示例处理器平台的框图,所述示例处理器平台能够执行图4、5、6和/或7的指令,以实现图2的可信处理单元、示例散列飞地生成器、示例受保护散列飞地和示例请求处理器。

附图并非按比例绘制。在适当的情况下,附图和随附书面描述中将使用相同或相似的参考数字来表示相同或类似部分。

具体实施方式

隐私信息检索(pir)允许用户检索数据库服务器中的项,但不对服务器揭示检索了哪一项。一个示例是专用dns服务器(例如,包括dns主机名和ip地址的简单表的数据库),所述专用dns服务器在不知道查询中指定了哪个主机名并且不知道返回了哪个ip地址的情况下,返回主机名对应的ip地址。

已知的pir方案包括:1)向请求客户端返回整个数据库;2)使用加密方案;以及3)使用可信协处理器执行不经意随机存取存储器(oram)协议。由于需要不可接受的高查询延迟和/或传输带宽,三个已知方案当前均不切实际。因网络限制,向请求客户端返回整个数据库是不切实际的,并且随着数据库变得更大,这一方案更加不切实际。此外,由于高计算要求和由此导致的查询延迟,使用加密方案是不切实际的。与另外两个已知技术相比,尽管当前已知的oram协议更加实际,但也遭受相对高的查询延迟,并受到单个用户的限制。

本文公开的示例使用可信处理单元,所述可信处理单元能够保护大量存储器,以提供数据库的隐私信息检索。在公开的示例中,将待查询的数据库复制到一个或多个受保护数据飞地,所述一个或多个受保护数据飞地由相应的可信处理单元保护。在当数据库大小小于受可信处理单元保护的最大存储器大小时的示例中,可以使用一个可信处理单元来提供数据库隐私信息检索。

在其他示例中,当数据库大小大于受一个可信处理单元保护的最大存储器大小时,将数据库分割成多个受保护数据飞地,所述多个受保护数据飞地由相应的可信处理单元保护。在一些示例中,所述多个受保护数据飞地以树结构进行设置,其中,所述受保护数据飞地是叶节点。在树结构中,实现受保护散列飞地的可信处理单元是支节点。所述受保护散列飞地存储数据,指示经过树结构的可发现数据库中任何记录的路径(例如,指示哪些受保护数据飞地(和相应的可信处理单元)存储了所请求的记录)。

如在本文中所使用的,当应用于存储的数据或记录时,术语“可访问”指代以明文形式(即,未加密)可读的性质,这与仅以密文形式(即,加密形式)可读相反。即使以加密形式存储数据,只要实体能够立即解密数据(例如,实体具有解密密钥),而不求助于加密破解方法(例如,暴力破解、基于字典的攻击或其他破解方法),则实体可访问数据或记录。换言之,如果实体“可访问”数据或记录,即使以加密形式存储数据或记录,通过拥有相应的加密密钥和解密算法,实体能够了解或获得数据或记录。相反,如果实体无法访问数据,即使实体能够确定被物理存储的比特和/或字节序列,实体无法确定明文或未加密数据。

尽管本文的示例响应于访问数据库数据的请求,请求不会致使实际查询数据库本身,这是因为此类查询会允许数据库所有者知道被访问的数据。相反,使用数据库的数据副本来提供被请求的数据。

本文公开的示例改善了用于提供隐私信息检索的请求延迟,但不降低数据检索的安全性。因此,本文公开的示例减少了请求器所消耗的处理资源,同时等待隐私信息检索请求的响应。相对于一些已知隐私信息检索方案,本文公开的示例通过减少传输数据的量来保持带宽,用以仅传输所请求的记录(而不是整个数据库)。进一步,相对于一些其他已知隐私信息检索方案,本文公开的示例使用较少的处理资源和/或带宽来检索所请求的数据,并且向请求器提供所请求的数据(而不是使用大量处理资源来执行oram技术)。

图1是示例系统100的框图,用于通过使用可信处理单元提供隐私信息检索。图1的示例系统100接收和响应来自一个或多个请求器102的数据请求。在图1的示例中,系统100经由通信网络104(例如互联网)与(多个)请求器进行通信。图1的示例系统100可以包括但不限于一个或多个个人计算机、服务器、笔记本计算机、移动通信设备(例如,蜂窝手机、智能电话等),和/或任何其他计算设备和/或计算设备的组合。所述数据可以包括任何内容和/或可以任何形式存储。数据请求(及其相应的响应)可符合任何过去、现在和/或将来的通信协议,例如,超文本传输协议(http)或http安全(https)。

图1的示例系统100包括可信处理单元106、不可信处理单元108和不可信存储设备110。在一些示例中,可信处理单元106和不可信处理单元108是在相同的处理器或处理设备中实现的。例如,可信处理单元106可通过在处理器中实例化可信执行环境来实现。通过使用来自公司的软件防护扩展(sgx)指令,可创建示例可信执行环境。在一些其他示例中,可信处理单元106是与不可信处理单元108不同的处理器。

图1的示例可信处理单元106包括数据飞地生成器112、记录检索器114和受保护数据飞地116。示例不可信存储设备110存储不可信代码118和包括数据122的数据库120,其中,(多个)请求器102期望访问数据122。

在图1的示例中,(多个)请求器102期望隐私地访问数据库120的数据,但是不信任不可信代码118。因此,(多个)请求器102期望隐私信息检索,其中,在不可信处理单元108或不可信代码无法辨别或推断被访问的记录的情况下,(多个)请求器可以访问一个或多个记录。例如,(多个)请求器102可能担心不可信代码118可能包含软件,所述软件可能试图配置请求器,以用于不期望的营销目的,和/或利用对查询和/或被访问的记录的知识,以用于更多恶意目的。因此,(多个)请求器102期望不可信处理单元108不能访问(多个)请求的内容,和/或不能访问(多个)记录,其中,响应于(多个)请求,访问所述(多个)记录和/或向(多个)请求器102提供所述(多个)记录。

如下面更详细描述的,可信处理单元106构建受保护数据飞地116,以包含存储在数据库120中的数据122;接收来自(多个)请求器102的(多个)请求;以及向(多个)请求器102提供所请求的数据,而不可信处理单元108(其可执行不可信代码118)不能访问请求或不能访问响应于请求而向(多个)请求器102发送的数据。

图1的示例可信处理单元106执行可信代码(例如,信任不会修改代码的一组已知功能),以实现数据飞地生成器112和/或记录检索器114。在一些其他示例中,数据飞地生成器112和/或记录检索器114是使用硬件来实现的(例如,无论是期望还是不期望的,本质上无法修改数据飞地生成器112和/或记录检索器114的功能)。可以通过对照已知可信散列或签名来检查实现数据飞地生成器112和/或记录检索器114的散列或计算机代码签名,建立对数据飞地生成器112和/或记录检索器114的信任。

图1的示例数据飞地生成器112生成受保护数据飞地116,以存储受保护数据124。受保护数据124是数据库120中的数据122的副本,所述数据被保护以免于未授权(例如,不可信)实体的访问。示例可信处理单元106在受保护存储器(例如,存储设备(如ram))内实现受保护数据飞地116。在一些示例中,通过加密自数据库120获得的数据122和在不可信存储器(例如,不可信存储设备110)中仅存储受保护数据124,可信处理单元106在存储器中保护受保护数据124。加密时,不可信处理单元108不能访问受保护数据124。示例可信处理单元106还阻止不可信处理单元108确定可信处理单元106访问的受保护数据124的部分。

图1的示例记录检索器114经由网络104接收来自(多个)请求器102的请求。记录检索器114处理所述请求,以确定受保护数据飞地116中的一个或多个记录。例如,当接收到的来自请求器102的请求是针对具体且可标识的记录(例如,记录标识符)时,记录检索器114访问受保护数据124中标识的记录。另外或者可替换地,当请求是基于准则集查询记录时,示例记录检索器114确定受保护数据飞地116中哪一个记录满足查询。记录检索器114经由网络向请求器102返回记录。

在图1的示例中,不可信处理单元108无法访问或监控记录检索器114对受保护数据飞地116的记录请求。另外,对来自请求器102的请求和来自记录检索器114的响应进行加密,以防止不可信处理单元108访问和/或监控请求和响应。通过消除不可信处理单元108能够监控或推断被(多个)请求器102访问的记录的方式,示例可信处理单元106提供对数据库120中数据122的隐私信息检索。

图2是示例系统200的框图,用于通过使用可信处理单元提供隐私信息检索。图2的示例系统200接收和响应来自一个或多个请求器102的对示例数据库120中数据201的请求。在图2的示例中,系统200经由图1的通信网络104与(多个)请求器102进行通信。与图1的示例相比,在图2的示例中,可信处理单元受限于能够被保护的数据量,并且数据库120中数据201的量大于能够由单个可信处理单元保护的阈值数据量。因此,在图2的示例中,在多个可信处理单元202-206之间分割数据库中的数据,以保护整个数据201。

在图2的示例中,可信处理单元202-206中的每一个保护数据库120中数据201的相应部分。在图2的示例中,可信处理单元202-206保护的数据构成数据201的全部。在一些其他示例中,可信处理单元202-206保护的数据构成数据201的部分,其中,针对所述部分,(多个)请求器102期望或可能期望进行隐私信息检索。如下面更详细地说明的,当接收到对数据201的请求时,可信处理单元202-206中的每一个接收对一个或多个记录的实际请求或伪请求,所述一个或多个记录由可信处理单元202-206保护。如在本文中所使用的,“伪请求”是指对请求的响应不是用于响应数据请求(例如,无需对伪请求进行响应)。例如,可从可信处理单元216向可信处理单元202发送伪请求,以遮掩可信处理单元216正在向可信处理单元218发送数据请求的事实。对伪请求和实际请求进行加密,以使不可信处理单元108无法确定任意给定请求是实际请求还是伪请求,并因此无法确定从中请求记录的可信处理单元202-206。

通过向可信处理单元202-206中的每一个发送请求,无论是真实请求还是伪请求,相对于不可信实体,(多个)请求器102对数据201的访问被遮掩,其中,通过可信处理单元可以访问数据的一部分。相反,在图2的系统中,伪请求用于遮掩哪一个可信处理单元202-206正在响应于请求而提供(多个)记录。

在图2的示例系统200中,可信处理单元202-206中的每一个包括图1的数据飞地生成器112a、112b、112c的实例和记录检索器114a、114b、114c的实例,并且生成受保护数据飞地116a、116b、116c的实例。可信处理单元202中的可信数据飞地116a存储来自示例数据201的第一记录子集208。类似地,可信处理单元204中的可信数据飞地116b存储来自示例数据201的第二记录子集210,并且可信处理单元204中的可信数据飞地116c存储来自示例数据201的第三记录子集212。示例数据201还包括第四记录子集214,所述第四记录子集的讨论如下文。总之,存储在图2的受保护数据飞地116a-116c中的记录208-214包括数据库120中数据201的全部。

图2的示例系统200进一步包括额外可信处理单元216、218,以提供对受可信处理单元202-206保护的记录208-214的访问,并针对不可信服务器220掩盖任何针对(多个)请求器102所请求和/或访问的记录208-214的指示。如下面更详细描述的,示例可信处理单元216、218帮助组织可信处理单元202-206以有效且隐私地获得(多个)请求器102所请求的记录。在图2的示例中,可信处理单元202-206、216、218均是单独的物理设备。

图2的示例可信处理单元216、218均包括受保护散列飞地222a、222b和请求处理器224a、224b。在下面参考可信处理器单元216对示例受保护散列飞地222和示例请求处理器224进行描述。对示例受保护散列飞地222和示例请求处理器224的描述同样适用于图2的可信处理单元218。

在一些示例中,受保护散列飞地222a、222b要求的由可信处理器单元216、218存储和保护的数据量相对较小。在某些这种示例中,实现受保护散列飞地222a、222b的可信处理器单元216、218还可以实现受保护数据飞地。例如,图2的可信处理单元218还实现受保护数据飞地116d,所述受保护数据飞地能够存储来自数据201的记录(例如,记录214)。

图2的示例可信处理单元202-206、216、218被实现为单独的处理设备,所述处理设备能够通过交换请求和/或响应进行通信。例如,可信处理单元202-206、216、218可以是单独的服务器或其他计算设备,所述服务器或其他计算设备经由直接连接和/或经由网络与一个或多个其他可信处理单元202-206、216、218进行通信。

示例不可信服务器220包括不可信处理单元(例如,图1的不可信处理单元108)和不可信存储设备(例如,图1的不可信存储设备110)。图1的不可信存储设备110包括图1的示例不可信代码118和示例不可信数据库120。图2的不可信数据库120包括数据201,其中,(多个)请求器102期望隐私访问所述数据。图2的示例系统200经由可信处理单元202-206、216、218提供对不可信服务器220的数据库120中数据201的隐私信息检索(例如,隐私访问),而不可信处理单元108或更具体地不可信服务器220无法确定或推断针对数据201的请求内容(例如,请求记录208-214)或在可信处理单元202-206、218中访问记录208-214。

如图1的示例所示,(多个)请求器102想要隐私地访问数据库120的数据,但是不信任不可信代码118。例如,(多个)请求器102可能担心不可信代码118可能包含软件,所述软件可能试图配置请求器,以用于不期望的营销目的或用于更多恶意目的。因此,(多个)请求器102期望不可信处理单元108无法访问(多个)请求的内容,和/或能够监控(多个)记录208-214,其中,响应于(多个)请求,访问所述(多个)记录和/或向(多个)请求器102提供所述(多个)记录。

为了提供隐私信息检索,如图2所示,以树结构对示例可信处理单元202-206、216、218进行配置(例如,逻辑设置)。在树结构中,将实现受保护数据飞地116的可信处理单元202-206配置为叶节点,并将实现受保护散列飞地222的可信处理单元216、218配置为支节点。

可信处理单元216接收来自请求器102的请求226,请求对受保护数据飞地216中的一个或多个记录208-214进行隐私信息检索。示例请求226可能被请求器102用作请求系统200提供对数据120的访问(例如,经由对web服务器的请求)。将请求226重新定向到可信处理单元216,而不是定向到包含原数据库120的不可信服务器220,以针对请求226提供隐私信息检索。

图2的示例受保护散列飞地222a、222b计算数据请求的散列(例如,根据请求中包含的信息),以确定可信处理单元202-206中存储所请求的(多个)记录208-214的(多个)可信处理单元,和/或确定可信处理单元202-206、218中能够检索到所请求的(多个)记录208-214的(多个)可信处理单元。如受保护数据飞地116一样,示例受保护散列飞地222被保护以免于除相应可信处理单元216、218以外的实体访问,受保护散列飞地222在所述可信处理单元中实现或执行。在图2的示例中,受保护散列飞地222a、222b中的每一个执行不同的散列算法,以确定可信处理单元202-206、2166中的(多个)可信处理单元,其中,响应于所接收的请求,向所述(多个)可信处理单元发送请求。例如,受保护散列飞地222a执行第一散列算法,所述第一散列算法计算是否可以从可信处理单元202或可信处理单元216中检索记录208-214,并且受保护散列飞地222b执行第二散列算法,所述第二散列算法计算是否可以从可信处理单元204或可信处理单元206中检索记录208-214。

在一些其他示例中,受保护散列飞地222a、222b执行相同的散列算法,所述散列算法计算可信处理单元202-206中可以找到所请求的(多个)记录的(多个)可信处理单元。可由受保护散列飞地222a、222b执行的示例散列算法采用映射方案,所述映射方案将记录208、210、212和214映射到可信处理单元202-206、218中相应的(多个)可信处理单元。

受保护散列飞地222a使用散列算法将记录208-214分类为两个或更多桶,其中,每个桶对应于相应的可信处理单元202-206、218,可信处理单元216可向所述可信处理单元请求记录。例如,受保护散列飞地222a可以将记录208-214分类为两个桶,所述两个桶对应于可信处理单元202(例如,针对记录208)和可信处理单元218(例如,针对记录210、212、214)。

在一些示例中,受保护散列飞地222a将记录208-214分类为多个桶,所述多个桶对应于位于树结构叶节点处的可信处理单元202-206,然后合并所述桶,所述桶被位于树结构支节点处的另一个可信处理单元访问(例如,可信处理单元218)。例如,受保护散列飞地222a可以针对可信处理单元202-206产生不同的桶,所述可信处理单元对应于树结构的叶节点;将散列算法应用于数据201,以确定将记录208-214分配给所述桶中相应的桶;并且合并所述桶,所述桶对应于经由可信处理单元218访问的可信处理单元204和206。

当示例请求处理器224a接收(多个)记录的请求(例如,来自请求器102和/或来自另一个可信处理单元216、218)时,请求处理器224a访问受保护散列飞地222a,以确定树结构中待检索所请求的(多个)记录的位置。请求处理器224a在树结构的下一级中,向确定的可信处理单元202-206、216、218发送针对所请求的(多个)记录的请求。响应于请求处理器224a发送的请求,请求处理器224a还接收来自可信处理单元202-206、216、218的响应,其中,所接收到的响应包括所请求的记录。请求处理器224a然后向从中接收请求的可信处理单元216、218或请求器102返回响应。

在图2的示例中,请求处理器224a接收请求226。请求处理器224a通过将散列函数(或算法)应用于请求226中的准则来处理请求226。例如,请求处理器224a应用散列函数,所述散列函数用于在受保护散列飞地222a中将记录208-214分类为多个桶,以确定所请求的(多个)记录对应的可信处理单元202-206。基于所述散列函数,示例请求处理器224a确定所请求的记录对应于可信处理单元218(例如,能够在204、206中发现所请求的记录210、212)。示例请求处理器224a向可信处理单元218发送针对所请求的(多个)记录的请求228。示例请求228被加密,并指定响应请求226所需的期望(多个)记录。

示例请求处理器224b接收来自请求处理器224a的请求228,并通过将散列函数应用于请求228来确定所请求的记录。如上述描述的请求处理器224a一样,请求处理器224b可以应用相似或相同的过程。例如,请求处理器224b访问受保护散列飞地222b,以确定所请求的记录在记录210中,所述记录对应于可信处理单元204。基于所述确定,请求处理器224b向示例可信处理单元204发送请求230。在图2的示例中,对请求230进行加密。

示例记录检索器114b接收请求230,并访问请求230中指定的(多个)记录210。示例记录检索器114b然后向传输请求230的可信处理单元218传输响应232。示例请求处理器224b接收响应232,所述响应包括所访问的(多个)记录210。请求处理器224b解密响应232,并加密请求228的响应234,所述响应包括所访问的(多个)记录210。请求处理器224b向可信处理单元216发送响应234。示例请求处理器224a接收响应234,所述响应包括所访问的(多个)记录210。请求处理器224a解密响应234,并加密请求226的响应236,所述响应包括所访问的(多个)记录210。请求处理器224a向请求器102发送响应236。通过提供所请求的(多个)记录210,并使不可信服务器220不能确定任何关于请求226、所访问的(多个)记录210或响应236的信息,响应236完成了请求器102的隐私信息检索过程。

除请求226、228、230和响应232、234、236外,示例可信处理单元202-206、216、218传输伪请求238、240和响应的伪响应242、244,以遮掩实际请求226-230和实际响应232-236(例如,访问和向请求器102返回所请求的数据的请求和响应)。例如,在可信处理单元216生成待传输到可信处理单元218的请求228后,可信处理单元216还生成待传输到可信处理单元202的伪请求238。类似地,在可信处理单元218生成待传输到可信处理单元204的请求230后,可信处理单元218还生成待传输到可信处理单元206的伪请求240。示例伪请求238、240可以包括信息,所述信息指示伪请求238、240可以通过花费最少的处理资源来引起伪响应242、244。在一些其他的示例中,伪请求238、240可以包括记录请求,并且忽略或丢弃伪响应242、244中包含的数据,以利于使用包含所请求的(多个)记录的响应232、234中的信息。

在请求(多个)记录214的示例中,示例请求处理器224b向可信处理单元204、206两者发送伪请求,以遮掩正在请求存储在受保护数据飞地216d的记录214的事实。当请求处理器224b接收来自可信处理单元204、206的伪响应时,示例请求处理器224b可以忽略所述伪响应,并将响应中所请求的(多个)记录214包括在可信处理单元216中。

在一些示例中,可信处理单元202-206、216、218接收的请求226-230、238、240的形式相同,从而使得记录检索器114和请求处理器224可以使用相同的请求格式。类似地,可信处理单元202-206、216、218传输的示例响应232-236、242、244的形式相同,从而使得记录检索器114和请求处理器224可以使用相同的响应格式来响应请求。如上所述,伪请求和/或伪响应可以包括指示符(例如,伪比特),所述指示符指示是否需要请求或响应,以检索一个或多个记录。通过标识伪请求和/或伪响应,(多个)可信处理单元202-206可以花费较少的处理周期来生成请求的伪响应,这是因为当收到伪请求时,记录检索器114不需要查询受保护数据飞地116。

假设不可信服务器220可访问可信处理单元202-206、216、218之间的连接。为了遮掩可信处理单元202-206、216、218之间的请求和/或响应内容,对示例请求226-230、伪请求238、240、响应232-236和/或伪响应242、244进行加密。由于是在可信处理单元202-206、216、218之间进行通信时加密请求226-230、238、240和响应232-236、242、244,不可信服务器220不能确定请求226-230、238、240中哪些是伪请求,或响应232-236、242、244中哪些是伪响应。任何监控可信处理单元202-206、216、218之间连接的实体将观察到,来自请求器102的请求导致在整个树结构中传递请求和响应(例如,在可信处理单元202-206、216、218的每个连接对之间)。

图2的示例系统200还包括隐私信息检索管理器246。示例隐私信息检索管理器246确定可从中请求数据(例如,记录)的数据库120的大小(以字节为单位)。当隐私信息检索管理器246确定数据库120的大小等于或小于阈值大小(例如,等于或小于可由一个可信处理单元保护的数据最大量),隐私信息检索管理器246配置单个可信处理单元,以生成受保护数据飞地,以包括数据201。例如,隐私信息检索管理器246可以实例化图1的系统100,其中,实现受保护数据飞地116的单个可信处理单元106可以使用与不可信服务器220相同的计算设备或使用不同的计算设备来实现。

在另一方面,当隐私信息检索管理器246确定数据库120的大小大于阈值大小(例如,大于可由一个可信处理单元保护的数据最大量),隐私信息检索管理器246配置多个可信处理单元(例如,可信处理单元202-206),以实现多个受保护数据飞地116,所述多个受保护数据飞地足以保护数据库120中的数据201的量(以字节为单位)。例如,当数据201的量大于可由一个可信处理单元保护的数据的量的两倍,但是小于可由一个可信处理单元保护的数据的最大量的三倍,隐私信息检索管理器246配置三个可信处理单元202-206、218,用于执行数据飞地生成器112、记录检索器114和/或受保护数据飞地116,以保护不同集合的记录208-214。

示例隐私信息检索管理器246还配置一个或多个可信处理单元216、218,用于实现受保护散列飞地222,以组织实现受保护数据飞地116的可信处理单元202-206。例如,隐私信息检索管理器246基于树结构中多个期望的级别和树结构中多个受保护数据飞地,选择多个受保护散列飞地。为了配置示例可信处理单元216、218,隐私信息检索管理器246配置可信处理单元216、218,用于执行受保护散列飞地222和请求处理器224。

图3示出了示例树结构300,所述树结构包括受保护散列飞地302和受保护数据飞地304-316,以提供隐私信息检索。与以上参考图2的系统200描述的示例树结构相比,图3的示例树结构300使能受保护散列飞地302涉及两个以上受保护数据飞地304-316。为了清楚起见,以下参考受保护散列飞地302和受保护数据飞地304-316对图3的示例进行描述,并省略对可信处理单元的讨论。但是,应当理解的是,图3的示例受保护散列飞地302和受保护数据飞地304-316是使用以上参考图1和2描述的可信处理单元(例如图1和/或2的可信处理单元106、202-206、216、218)来实现的。

图3的示例受保护数据飞地304-316包括相应的记录318-330子集,其中,结合来说,所述记录构成数据库中的记录的整体,树结构300提供对所述数据库的隐私信息检索。使用字母a-u来指定记录318-330子集中的示例记录。示例受保护散列飞地302存储一组桶332(例如,桶1-7),所述桶将记录(或散列值)映射到受保护数据飞地304-316(例如,受保护数据飞地1-7)。

图3的示例受保护散列飞地302接收记录b的请求334,所述记录存储在受保护数据飞地304中。示例受保护散列飞地302解密请求334,并通过将散列函数应用于请求334和/或使用查找表来执行查找来处理所述请求。在一些示例中,其中,基于记录a-u的一个或多个内容,在受保护数据飞地304-316之间划分记录a-u,受保护散列飞地302解析请求334中包含的查询,以确定受保护数据飞地304-316中哪一个存储了对应于所述查询的(多个)记录a-u。

在一个示例中,散列函数的结果指示受保护数据飞地304存储了期望的记录b(例如,散列函数产生对应于桶1的值)。在一些其他示例中,受保护数据飞地304-316中的多个可以存储一个或多个期望的记录。示例受保护散列飞地302发送请求336,向受保护数据飞地304指示期望的记录b。在一些示例中,受保护散列飞地302重复请求334(例如,请求334中的内容),并在将受保护数据飞地304标识为应向其定向请求336的受保护数据飞地后,将请求334的副本作为请求336进行发送。受保护散列飞地302在传输之前加密请求336。

示例受保护散列飞地302还生成并向示例受保护数据飞地306-316传输伪请求340,所述示例受保护数据飞地不包括期望的记录b。示例伪请求340可以包括伪指示符(例如,伪比特)和/或伪数据,所述伪指示符和/或伪数据向受保护数据飞地306-316指示,将不会使用伪请求340的响应。在其他示例中,受保护散列飞地302还生成伪请求340,以请求包含在受保护数据飞地306-316中的相应记录d-u。在向受保护数据飞地306-316传送伪请求340之前对其进行加密。

示例受保护数据飞地304接收和解密请求336,并确定所请求的是记录b。示例受保护数据飞地304获得记录b,并向受保护散列飞地302传输响应342,所述受保护散列飞地包括记录b。受保护数据飞地304在传输之前加密响应338。

示例受保护数据飞地306-316接收和解密伪请求340。响应于伪请求340,受保护数据飞地306-316中的每一个加密和传输相应的伪响应342。当伪请求340包括伪指示符(例如,伪比特)时,示例伪响应342包括伪指示符(例如,与伪请求340中的伪指示符相似或相同)。可替换地,当伪请求340是用于记录的请求时,示例伪响应342包括所请求的记录。

示例受保护散列飞地302接收来自受保护数据飞地304响应338和来自受保护数据飞地306-316的伪响应342。受保护散列飞地302解密响应338和伪响应342,确定响应338包含所请求的记录b,并确定伪响应342不包含任何所请求的记录。在受保护数据飞地304将实际请求作为伪请求340进行发送的示例中,受保护散列飞地302可以维护受保护数据飞地304-316表,其中,从所述受保护数据飞地期望记录和/或期望伪响应。在某些这种示例中,受保护散列飞地302忽略或丢弃接收到的伪响应342,而不解密伪响应342,并且任何不可信实体(例如,图1和/或2的不可信处理单元108和/或不可信服务器220)无法监控受保护散列飞地302处置伪响应342。

示例受保护散列飞地302生成请求334的响应344,其中,响应344包括所请求的记录b。受保护散列飞地302加密和传输响应344,以向请求器提供记录b。

图3的示例树结构300要求实现受保护散列飞地302的可信处理单元比图2的任一可信处理单元216、218传输、接收和处理更多的请求和响应。因此,实现受保护散列飞地302的可信处理单元可能要求更多计算资源以处理请求。但是,与具有3级或更多级的树结构(例如,图2的二进制树结构)相比,示例两级树结构300节省带宽,但使用相同数量的受保护数据飞地(例如,七个受保护数据飞地),这是因为在受保护散列飞地之间传输请求或响应很少或不存在。与具有相同数量受保护数据飞地的二进制树结构相比,示例树结构300还要求更少的可信处理单元。

虽然在图1、2和3中说明了实现所公开的系统100、200的示例方式,但是可以以任何其它方式对图1、2和3中所说明的元素、过程和/或设备中的一个或更多个进行组合、划分、重新布置、省略、消除和/或实现。进一步地,示例可信处理单元106、202-206、216、218、示例数据飞地生成器112、示例记录检索器114、示例受保护数据飞地116、304-316、示例受保护散列飞地222、302、示例请求处理器224、示例隐私信息检索管理器246和/或更具体地图1和/或2的示例系统100、200可以由硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,示例可信处理单元106、202-206、216、218、示例数据飞地生成器112、示例记录检索器114、示例受保护数据飞地116、304-316、示例受保护散列飞地222、302、示例请求处理器224、示例隐私信息检索管理器246和/或更具体地示例系统100、200的任何项能够通过一个或更多个模拟或数字电路、逻辑电路、可编程处理器、专用集成电路(asic)、可编程逻辑装置(pld)和/或现场可编程逻辑装置(fpld)来实现。在阅读本专利的装置或系统权利要求项的任何项以包括纯软件和/或固件实现时,示例可信处理单元106、202-206、216、218、示例数据飞地生成器112、示例记录检索器114、示例受保护数据飞地116、304-316、示例受保护散列飞地222、302、示例请求处理器224、和/或示例隐私信息检索管理器246的至少一项由此明确定义为包括诸如存储器、数字多功能磁盘(dvd)、压缩磁盘(cd)、blu-ray磁盘等存储软件和/或固件的有形计算机可读存储设备或存储磁盘。更进一步地,图1和/或2的示例系统100、200可以包括一个或多个元素、过程和/或设备(除了在图1和/或2中所展示的那些之外或代替那些)、和/或可以包括多于所展示的元素、过程和设备中的任何一项或其全部。

在图4、5、6和7中示出了表示示例机器可读指令的流程图,用于实现图1和/或2的示例系统100、200。在该示例中,机器可读指令包括用于由处理器(例如,以下结合图8、9和10所讨论的在示例处理器平台800、900、1000中示出的处理器812、912、1012)来执行的程序。程序可被实施在存储在有形计算机可读存储介质(例如,与处理器812、912、1012相关联的cd-rom、软盘、硬盘驱动器、数字通用盘(dvd)、蓝光盘、或存储器)上的软件中,但是整个程序和/或其部分可替代地可由设备而不是处理器812、912、1012实现和/或实施在固件或专用硬件中。进一步地,尽管参考在图4、5、6和7中所展示的流程图对示例程序进行了描述,但是可以可替代地使用实现图1和/或2的示例系统100、200的许多其他方法。例如,可以改变框的执行顺序和/或可以改变、消除或组合所描述的一些框。

如上所述,可以使用存储在有形计算机可读存储介质(例如,信息可被存储在其中持续任何时长(例如,持续延长时间段、永久地、短暂片刻、暂时地缓冲、和/或高速缓存信息)的硬盘驱动器、闪存存储器、只读存储器(rom)、致密盘(cd)、数字多功能盘(dvd)、缓存、随机存取存储器(ram)和/或任何其他存储设备或存储盘)上的经编码指令(例如计算机和/或机器可读指令)来实现图4、5、6和7的示例过程。如在此所使用的,术语有形计算机可读存储介质被明确定义为包括任何类型的计算机可读存储介质设备和/或存储盘并且排除传播的信号和传输媒体。如在此所使用的,术语“有形计算机可读存储介质”和“有形机器可读存储介质”可互换使用。此外或可替代地,可以使用存储在非瞬态计算机和/或机器可读介质(诸如信息可被存储在其中持续任何时长(例如,持续延长时间段、永久地、短暂片刻、暂时地缓冲、和/或高速缓存信息)的硬盘驱动器、闪存、只读存储器、致密盘、数字通用盘、高速缓存、随机存取存储器和/或任何其他存储设备或存储盘)上的经编码指令(例如,计算机和/或机器可读指令)实现图4、5、6和7的示例过程。如在此所使用的,术语非瞬态计算机可读介质被明确定义为包括任何类型的计算机可读存储设备和/或存储光盘并且排除传播的信号和传输媒体。如在此所使用的,当短语“至少”被用作权利要求前序部分中的过渡术语时,其与术语“包括”是开放式的相同的方式是开放式的。

图4是表示示例机器可读指令400的流程图,所述机器可读指令可以被执行以便实现图1和/或2的系统,从而产生一个或多个受保护数据飞地116,以提供数据库120的隐私信息检索。图4的示例指令400可以由图2中系统200的示例隐私信息检索管理246来实现,并且通过使用一个或多个可信处理单元,示例指令400使能提供隐私信息检索。下面将参考图2的系统200描述示例指令400。

示例隐私信息检索管理器246确定可从中请求记录的数据库的大小(以字节为单位)(框402)。例如,隐私信息检索管理器246可以查询不可信服务器220,以请求数据库120中数据201的数据大小。隐私信息检索管理器246确定数据201的大小是否大于阈值大小(框404)。例如,隐私信息检索管理器246可以比较数据201的大小和可由可信处理单元保护的数据最大量。

当数据201的大小不大于阈值大小(框404),示例隐私信息检索管理器246配置可信处理单元,以实例化受保护数据飞地(例如,图1的受保护数据飞地116)(框406)。例如,当数据201的大小小于或等于可由可信处理单元保护的数据最大量,示例隐私信息检索管理器246配置图1的可信处理单元106,用于实现数据飞地生成器112、记录检索器114和受保护数据飞地116。示例数据飞地生成器112在受保护数据飞地116中存储数据库记录(例如,数据201)(框408)。当数据201存储(例如,拷贝)在受保护数据飞地116中时,仅可信处理单元106能够访问受保护数据飞地116中所存储的数据(例如,记录),或了解受保护数据飞地116中被访问的数据部分(例如,记录)。

当数据201的大小不大于阈值大小(框404),示例隐私信息检索管理器246配置多个可信处理单元,以实例化相应的受保护数据飞地(框410)。例如,当数据201的量大于可由可信处理单元保护的最大量时,隐私信息检索管理器246配置图2中每一个可信处理单元202-206,以实现相应的数据飞地生成器112、相应的记录检索器114和相应的受保护数据飞地116。

示例数据飞地生成器112a-112c基于对数据库记录进行散列,将数据库记录208-214分类到受保护数据飞地116a-116d(框412)。例如,隐私信息检索管理器246可以为数据飞地生成器112a指定(多个)散列值,其中,当数据库120的(多个)记录208与所述(多个)散列值匹配时,所述(多个)散列值使得数据飞地生成器112a包括相应受保护数据飞地116a中的多个)记录208。

示例隐私信息检索管理器246还配置一个或多个可信处理单元216、218,以实例化受保护散列飞地222(框414)。例如,隐私信息检索管理器246基于已经实例化的受保护数据飞地116的数量和基于期望的树结构级别数量,确定待使用的受保护散列飞地222数量。在图2的示例中,隐私信息检索管理器246配置可信处理单元216、218,用于实现相应的受保护散列飞地222和相应的请求处理器224。作为配置的一部分,生成受保护散列飞地222a-222b,以实现用于实例化图2中受保护数据飞地116的相应(多个)散列函数和/或(多个)散列值。

示例隐私信息检索管理器246将用于受保护数据飞地116和受保护散列飞地222的可信处理单元202-206、216、218组织为树结构,受保护数据飞地116作为所述树结构的叶节点(框416)。例如,隐私信息检索管理器246可以配置图2的请求处理器224,以向指定的可信处理单元传输请求。在一些示例中,隐私信息检索管理器246通过向受保护散列飞地222提供配置信息(例如,散列算法信息),将可信处理单元202-206、216、218组织为树结构。例如,受保护散列飞地222a可以存储桶,所述桶指示可以通过可信处理单元202的请求或可信处理单元218的请求来检索所请求的记录。

在组织可信处理单元(框416),或在一个受保护数据飞地存储数据库记录(框408)后,图4的示例指令400结束。

图5是表示示例机器可读指令500的流程图,所述机器可读指令可以被执行以便实现图1和/或2的示例系统100、200,从而服务针对数据库隐私信息检索的请求。下面参考图2的示例可信处理单元216描述示例指令500。

图2的示例请求处理器224a确定是否已经接收到访问数据库记录的请求(框502)。例如,请求处理器224a可以接收来自请求器102的请求226,所述请求器指定来自数据库120的一个或多个记录208-214。如果未接收到访问数据库记录的请求(框502),请求处理器224a重复框502以等待请求。

当接收到请求226时(框502),示例请求处理器224a生成所请求记录的散列,以确定从中请求所请求记录的可信处理单元(框504)。例如,所请求记录的散列可以产生与受保护散列飞地222a中多个桶中的一个桶相匹配的值,其中,所述桶对应于可信处理单元202和218。请求处理器224a向确定的可信处理单元218传输所请求记录的请求(例如,图2的请求228)(框506)。在一些示例中,传输的请求228包括与接收到的请求226相似或相同的内容。在一些示例中,传输所述请求进一步包括在传输之前加密请求228。

示例请求处理器224a还向(多个)可信处理单元而不是确定的可信处理单元218传输一个或多个伪请求(框508)。例如,当向可信处理单元218发送请求228时,示例请求处理器224a还产生和向可信处理单元202传输伪请求238。

请求处理器224a确定是否已经接收到伪响应(框510)。例如,请求处理器224a可以确定是否已经收到接标记为伪响应的响应242,和/或是否已经从向其发送伪请求的可信处理单元接收到响应。当已经接收伪响应242时(框510),示例请求处理器224a丢弃伪响应242。

在丢弃伪响应242后(框512),或当还未接收到伪响应时(框510),示例请求处理器224a确定是否已经接收到所请求的数据库记录(例如,来自可信处理单元218)(框514)。当还未接收到所请求的数据库记录时(框514),示例请求处理器224a确定请求是否已经超时(框516)。如请求还未超时(框516),控制返回至框508以继续等待所请求的数据库记录。如请求已经超时(框516),示例请求处理器224a向请求器返回错误响应(框518)。例如,当请求处理器224a在允许时间内还未接收到请求228的响应时,请求处理器224a通知请求器102请求226导致错误。

当已经接收到所请求的数据库记录时(例如,在来自可信处理单元218的响应234中)(框514),示例请求处理器224a向请求器102传输接收到的记录(框520)。例如,请求处理器224a向请求器102传输接收到的记录,作为请求226的响应236。示例请求处理器224a在传输之前对图2的响应236进行加密。

图6是表示示例机器可读指令600的流程图,所述机器可读指令可以被执行以便实现图1和/或2的示例系统200,从而接收和处理伪请求。下面将参考图2的请求处理器224b描述图6的示例指令600。但是,示例指令600可以由任何不在树结构最高级的请求处理器224来实现(例如,指令600不能由图2的示例请求处理器224a来实现)。

示例请求处理器224b确定是否已经收到伪请求(框602)。如上所讨论的,伪请求意在用于遮掩数据请求,和/或阻止扣除数据访问的标识和/或模式。如还未接收到伪请求(框602),示例请求处理器224b重复框602以等待伪请求(可与图5的框502同时或交替执行)。

当接收到伪请求时(框602),示例请求处理器224b向位于树结构下一级的可信处理单元传输伪请求(框604)。由于在请求处理器224b接收的伪请求不是将向请求器提供的数据请求,示例请求处理器224b向位于树结构下一更低级(例如,靠近叶节点的下一级)的所有可信处理单元传输伪请求。在图2的示例中,当请求处理器224b接收伪请求时,请求处理器224b生产并向可信处理单元204和206传输伪请求。

示例请求处理器224b确定是否已经接收到来自位于树结构下一级的所有可信处理单元的伪响应(框606)。例如,示例请求处理器224b可以确定是否所有向其传输伪请求的可信处理单元204和206已经返回伪响应。当已经接收到位于树结构下一级的少于所有可信处理单元时(框606),示例请求处理器224b确定是否发生伪请求超时(框608)。如请求还未超时(框608),控制返回至框606以继续等待来自可信处理单元204、206的伪响应。

如请求已经超时(框608),或当已经接收到来自位于树结构下一级的所有可信处理单元204、206的伪响应时(框606),示例请求处理器224b向请求器传输伪响应(框610)。在图2的示例系统200中,请求处理器224b向从中接收伪请求的可信处理单元216发送伪响应。图6的示例指令600于是结束。

图7是表示示例机器可读指令700的流程图,所述机器可读指令可以被执行以便实现图1和/或2的示例系统100、200,从而接收和响应请求。下面将参考图2的记录检索器114a描述图7的示例指令700。但是,示例指令700可以由图1和/或2中任一记录检索器114来实现。

图2的示例记录检索器114a确定是否已经接收到访问数据库记录的请求(框702)。例如,记录检索器114a可以接收来自可信处理单元216和/或来自请求器102的请求226,所述请求器指定来自数据库120的一个或多个记录208,所述数据库存储在相应的受保护数据飞地116a。如已经接收到访问记录的请求(框702),示例记录检索器114a访问来自受保护数据飞地116a的所请求的(多个)记录208(框704)。记录检索器114a向请求器(例如,从中接收到针对(多个)记录208的请求的实体)传输响应,所述响应包括所请求的(多个)记录208(框706)。

在传输所述响应后(框706),或当还未接收到访问数据库记录的请求时(框702),示例记录检索器114a确定是否已经接收到伪请求(框708)。如已经接收到伪请求(框708),示例记录检索器114a向请求器返回伪响应(框710)。例如,响应于接收具有伪指示符的伪请求,记录检索器114a可以传输具有伪指示符的响应。在图2的示例中,从记录检索器114a将框706中发送的响应和/或框710中发送的响应发送至可信处理单元216。

在传输所述伪响应后(框710),或当还未接收到伪请求时(框708),图7的示例指令700结束。

图8是示例处理器平台800的框图,所述示例处理器平台能够执行图4和/或7的指令,用于实现图1和/或2的可信处理单元106、示例数据飞地生成器112、示例记录检索器114和/或示例受保护数据飞地116。处理器平台800可以是例如服务器、个人计算机或任何其他类型到计算设备。

所展示的示例的处理器平台800包括处理器812。所展示的示例的处理器812是硬件。例如,处理器812可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器或控制器实现。图8的示例处理器812可以实现图1和/或2的可信处理单元106、示例数据飞地生成器112和/或示例记录检索器114。例如,处理器812可以执行软件防护扩展(sgx)或另一个可信执行环境实施方式,以安全地实现可信处理单元106、示例数据飞地生成器112和/或示例记录检索器114。

所展示的示例的处理器812包括本地存储器813(例如,缓存)。所示示例的处理器812经由总线818与包括易失性存储器814和非易失性存储器816的主存储器通信。易失性存储器814可以由同步动态随机存取存储器(sdram)、动态随机存储存储器(dram)、rambus动态随机存取存储器(rdram)和/或任何其他类型的随机存取存储器设备实现。非易失性存储器816可以由闪存和/或任何期望类型的存储器设备实现。对主存储器814、816的访问由存储器控制器控制。

所展示的示例的处理器平台800还包括接口电路820。接口电路820可以由任何类型的接口标准(如以太网接口、通用串行总线(usb)和/或pci总线接口来实现。

在所展示的示例中,一个或多个输入设备822连接至接口电路820。(多个)输入设备822准许用户将数据和命令输入到处理器812中。输入设备可以由例如音频传感器、麦克风、照相机(静态或视频)、键盘、按钮、鼠标、触摸屏、跟踪垫、轨迹球、隔离点和/或语音标识系统实现。

一个或多个输出设备824也连接至所展示的示例的接口电路820。输出设备824可由例如显示设备(例如发光二极管(led)、有机发光二极管(oled)、液晶显示器、阴极射线管显示器(crt)、触摸屏、触觉输出设备、发光二极管(led)、打印机和/或扬声器)来实现。因而,所展示的示例的接口电路820典型地包括图形驱动卡、图形驱动器芯片或图形驱动器处理器。

所展示的示例的接口电路820还包括通信设备(例如,发射器、接收器、收发器、调制解调器和/或网络接口卡)以便经由网络826(例如,以太网连接、数字用户线(dsl)、电话线、同轴电缆、蜂窝电话系统等)促进与外部机器(例如,任何种类的计算设备)的数据交换。

所展示的示例的处理器平台800还包括用于存储软件和/或数据的一个或多个大容量存储设备828。这种大容量存储设备828的示例包括软盘驱动器、硬盘驱动器、致密盘驱动器、蓝光碟驱动器、raid系统和数字多功能盘(dvd)驱动器。图8的示例易失性存储器814和/或示例大容量存储设备828可以实现图1和/或2的受保护数据飞地116、受保护数据124和/或数据122、201。

图4和/或7的经编码指令832可以存储在大容量存储设备828中、在易失性存储器814中、在非易失性存储器816中和/或可移除的有形计算机可读存储介质(诸如cd或dvd)上。

图9是示例处理器平台900的框图,所述示例处理器平台能够执行图4的指令,以实现图1和/或2的不可信处理单元108、不可信存储设备110、不可信代码118、数据库120、数据122、201、记录208-214和/或示例隐私信息检索管理器246。处理器平台900可以是例如服务器、个人计算机或任何其他类型到计算设备。

所展示的示例的处理器平台900包括处理器912。所示示例的处理器912是硬件。例如,处理器912可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器或控制器实现。图9的示例处理器912可以实现图1和/或2的不可信处理单元108和/或隐私信息检索管理器246。

所展示的示例的处理器912包括本地存储器913(例如,缓存)。所示示例的处理器912经由总线918与包括易失性存储器914和非易失性存储器916的主存储器通信。易失性存储器914可以由同步动态随机存取存储器(sdram)、动态随机存储存储器(dram)、rambus动态随机存取存储器(rdram)和/或任何其他类型的随机存取存储器设备实现。非易失性存储器916可以由闪存和/或任何期望类型的存储器设备实现。对主存储器914、916的访问由存储器控制器控制。

所展示的示例的处理器平台900还包括接口电路920。接口电路920可以由任何类型的接口标准(如以太网接口、通用串行总线(usb)和/或pci总线接口来实现。

在所展示的示例中,一个或多个输入设备922连接至接口电路920。(多个)输入设备922准许用户将数据和命令输入到处理器912中。输入设备可以由例如音频传感器、麦克风、照相机(静态或视频)、键盘、按钮、鼠标、触摸屏、跟踪垫、轨迹球、隔离点和/或语音标识系统实现。

一个或多个输出设备924也连接至所展示的示例的接口电路920。输出设备924可由例如显示设备(例如发光二极管(led)、有机发光二极管(oled)、液晶显示器、阴极射线管显示器(crt)、触摸屏、触觉输出设备、发光二极管(led)、打印机和/或扬声器)来实现。因而,所展示的示例的接口电路920典型地包括图形驱动卡、图形驱动器芯片或图形驱动器处理器。

所展示的示例的接口电路920还包括通信设备(例如,发射器、接收器、收发器、调制解调器和/或网络接口卡)以便经由网络926(例如,以太网连接、数字用户线(dsl)、电话线、同轴电缆、蜂窝电话系统等)促进与外部机器(例如,任何种类的计算设备)的数据交换。

所展示的示例的处理器平台900还包括用于存储软件和/或数据的一个或多个大容量存储设备928。这种大容量存储设备928的示例包括软盘驱动器、硬盘驱动器、致密盘驱动器、蓝光碟驱动器、raid系统和数字多功能盘(dvd)驱动器。图9的示例易失性存储器914和/或示例大容量存储设备928可以实现图1和/或2的不可信存储设备110、受保护数据飞地116、不可信代码118、数据库120、数据122、201和/或记录208-214。

图4的经编码指令932可以存储在大容量存储设备928中、在易失性存储器914中、在非易失性存储器916中和/或可移除的有形计算机可读存储介质(诸如cd或dvd)上。

图10是示例处理器平台1000的框图,所述示例处理器平台能够执行图4、5、6和/或7的指令,以实现图2的可信处理单元216、218、示例受保护散列飞地222和示例请求处理器224。处理器平台1000可以是例如服务器、个人计算机或任何其他类型到计算设备。

所展示的示例的处理器平台1000包括处理器1012。所展示的示例的处理器1012是硬件。例如,处理器1012可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器或控制器实现。图10的示例处理器1000可以实现可信处理单元216、218、示例受保护散列飞地222和/或示例请求处理器224。

所展示的示例的处理器1012包括本地存储器1013(例如,缓存)。所示示例的处理器1012经由总线1018与包括易失性存储器1014和非易失性存储器1016的主存储器通信。易失性存储器1014可以由同步动态随机存取存储器(sdram)、动态随机存储存储器(dram)、rambus动态随机存取存储器(rdram)和/或任何其他类型的随机存取存储器设备实现。非易失性存储器1016可以由闪存和/或任何期望类型的存储器设备实现。对主存储器1014、1016的访问由存储器控制器控制。

所展示的示例的处理器平台1000还包括接口电路1020。接口电路1020可以由任何类型的接口标准(如以太网接口、通用串行总线(usb)和/或pci总线接口来实现。

在所展示的示例中,一个或多个输入设备1022连接至接口电路1020。(多个)输入设备1022准许用户将数据和命令输入到处理器1012中。输入设备可以由例如音频传感器、麦克风、照相机(静态或视频)、键盘、按钮、鼠标、触摸屏、跟踪垫、轨迹球、隔离点和/或语音标识系统实现。

一个或多个输出设备1024也连接至所展示的示例的接口电路1020。输出设备1024可由例如显示设备(例如发光二极管(led)、有机发光二极管(oled)、液晶显示器、阴极射线管显示器(crt)、触摸屏、触觉输出设备、发光二极管(led)、打印机和/或扬声器)来实现。因而,所展示的示例的接口电路1020典型地包括图形驱动卡、图形驱动器芯片或图形驱动器处理器。

所展示的示例的接口电路1020还包括通信设备(例如,发射器、接收器、收发器、调制解调器和/或网络接口卡)以便经由网络1026(例如,以太网连接、数字用户线(dsl)、电话线、同轴电缆、蜂窝电话系统等)促进与外部机器(例如,任何种类的计算设备)的数据交换。

所展示的示例的处理器平台1000还包括用于存储软件和/或数据的一个或多个大容量存储设备1028。这种大容量存储设备1028的示例包括软盘驱动器、硬盘驱动器、致密盘驱动器、蓝光碟驱动器、raid系统和数字多功能盘(dvd)驱动器。

图4、5、6和/或7的经编码指令1032可以存储在大容量存储设备1028中、在易失性存储器1014中、在非易失性存储器1016中和/或可移除的有形计算机可读存储介质(诸如cd或dvd)上。

示例1是一种系统,所述系统包括:第一可信处理单元,所述第一可信处理单元用于存储数据的第一部分,从而使得除所述第一可信处理单元以外的实体无法访问所述数据在所述第一可信处理单元中的所述第一部分;第二可信处理单元,所述第二可信处理单元用于存储所述数据的第二部分,从而使得除所述第二可信处理单元以外的实体无法访问所述数据在所述第二可信处理单元中的所述第二部分;以及第三可信处理单元,所述第三可信处理单元用于确定在请求中所指定的数据元素存储在所述第一可信处理单元中;从所述第一可信处理单元请求所述数据元素;向所述第二可信处理单元发送伪请求;以及向请求器发送所述数据元素。

示例2包括如示例1所述的主题,其中,所述第二可信处理单元响应于所述伪请求而向所述第三可信处理单元发送伪响应。

示例3包括如示例2所述的主题,其中,所述伪请求包括第一伪指示符,并且所述伪响应包括第二伪指示符。

示例4包括如示例2所述的主题,其中,所述伪请求指定存储在所述第二可信处理单元中的第二数据元素,并且所述第三可信处理单元用于丢弃所述伪响应。

示例5包括如示例1所述的主题,其中,所述第三可信处理单元从所述第一可信处理单元请求所述数据元素,从而使得仅所述第一可信处理单元和所述第三可信处理单元能够标识从所述第一可信处理单元请求的所述数据元素。

示例6包括如示例1所述的主题,其中,所述第一可信处理单元包括数据飞地生成器,所述数据飞地生成器用于在第一存储设备的第一部分中创建受保护数据飞地,所述第一存储设备由所述第一可信处理单元保护;以及在所述受保护数据飞地中存储所述数据的所述第一部分。

示例7包括如示例6所述的主题,其中,所述数据飞地生成器用于通过以下方式标识属于所述数据的有待存储于所述受保护数据飞地中的所述第一部分的数据元素:将函数应用于所述数据元素;以及比较a)应用所述函数而得到的值与b)对应于所述第一可信处理单元且与对应于所述第二可信处理单元的第二值不同的第一值。

示例8。如示例1所述的系统,其中,所述第三可信处理单元包括受保护散列飞地,所述受保护散列飞地用于将所述数据的数据元素分类为第一数据桶或第二数据桶,所述第一数据桶对应于所述第一可信处理单元,并且所述第二数据桶对应于所述第二可信处理单元。

示例9。如示例8所述的系统,其中,所述第三可信处理单元进一步包括请求处理器,所述请求处理器用于:基于所述受保护散列飞地对在所述请求中所指定的所述数据元素执行散列函数并且判定所述散列函数的结果对应于所述第一桶还是所述第二桶,从所述第一可信处理单元请求在所述请求中所指定的所述数据元素。

示例10。如示例1所述的系统,进一步包括第四可信处理单元,所述第四可信处理单元用于:确定在所述请求中所指定的所述数据元素可经由所述第三可信处理单元访问,并且不可经由第五可信处理单元访问;以及从所述第三可信处理单元请求所述数据元素,从而使得仅所述第四可信处理单元和所述第三可信处理单元能够标识从所述第三可信处理单元请求的所述数据元素,所述第四可信处理单元是相对于所述第三可信处理单元的请求器。

示例11是一种方法,所述方法包括:使用可信处理单元,生成受保护数据飞地以存储数据库中的数据的副本,所述受保护数据飞地中的每一个仅可由所述可信处理单元中生成所述受保护数据飞地的相应可信处理单元访问;响应于在所述可信处理单元中的第一可信处理单元处接收针对所述数据中的记录的第一请求,使用所述可信处理单元来确定所述受保护数据飞地中哪一个包含所述记录;在所述可信处理单元之间发送第二请求,以从所述受保护数据飞地中的所述确定的受保护数据飞地中检索所述记录;向所述可信处理单元中与所述受保护数据飞地中不包含所述记录的受保护数据飞地相对应的可信处理单元发送伪请求;以及向请求器发送所述记录。

示例12包括如示例11所述的主题,其中,在所述受保护数据飞地之间分割所述数据。

示例13包括如示例11所述的主题,其中,所述数据库存储在具有处理器的计算设备上,并且所述生成所述受保护数据飞地包括生成所述受保护数据飞地,以防止所述处理器访问存储所述受保护数据飞地的存储器部分。

示例14包括如示例13所述的主题,其中,在所述处理器无法确定所请求的所述记录的情况下以及所述处理器无法确定存储所述记录的所述受保护数据飞地的情况下,确定所述受保护数据飞地中包含所述记录的受保护数据飞地,发送所述一个或多个第二请求,并且向所述请求器发送所述记录。

示例15包括如示例11所述的主题,进一步包括:确定所述数据库的大小;以及基于所述可信处理单元之一所能够保护的阈值数据量而确定用于存储所述数据的所述副本的所述受保护数据飞地的数量。

示例16包括如示例11所述的主题,其中,生成所述数据飞地中的第一数据飞地包括:使用所述可信处理单元中的第二可信处理单元来加密所述数据的一部分;以及将所述加密数据存储在第一存储器中,所述数据在所述第一存储器中的所述一部分仅可由所述可信处理单元中的所述第二可信处理单元访问。

示例17包括如示例11所述的主题,其中,所述受保护数据飞地包括所述数据库的整体。

示例18包括如示例11所述的主题,进一步包括:在所述可信处理单元中的第二可信处理单元处生成受保护散列飞地,所述受保护散列飞地指示向所述受保护数据飞地的多个受保护数据飞地分配所述数据。

示例19包括如示例18所述的主题,其中,确定所述受保护数据飞地中哪一个包含所述记录包括:对所述第一请求执行散列函数,以生成散列值;以及在所述受保护散列飞地中查找所述散列值,以确定所述受保护数据飞地中包含所述记录的所述受保护数据飞地。

示例20包括如示例18所述的主题,其中,确定所述受保护数据飞地中哪一个包含所述记录包括:对所述第一请求执行散列函数,以生成散列值;以及在所述受保护散列飞地中查找所述散列值,以确定两个可信处理单元中哪一个在通向所述受保护数据飞地中包含所述记录的所述受保护数据飞地的路径内。

示例21包括如示例18所述的主题,进一步包括:以树结构配置所述可信处理单元,其中,所述可信处理单元中与所述受保护数据飞地中的所述多个受保护数据飞地相对应的多个可信处理单元是所述树结构的叶节点,并且所述可信处理单元中与所述受保护散列飞地相对应的所述第二可信处理单元是支节点。

示例22是一种有形计算机可读介质,包括计算机可读指令,所述计算机可读指令当被执行时使第一处理器至少:生成受保护数据飞地,以在可信执行环境内存储数据,所述受保护数据飞地中的每一个仅可由所述可信执行环境中存在所述受保护数据飞地的相应可信执行环境访问;响应于在所述可信执行环境中的第一可信执行环境处接收针对所述数据中的记录的第一请求,确定所述受保护数据飞地中哪一个包含所述记录;在可信执行环境之间发送第二请求,以从所述受保护数据飞地中的所述确定的受保护数据飞地中检索所述记录;向所述可信执行环境中与所述受保护数据飞地中不包含所述记录的多个受保护数据飞地相对应的所述多个可信执行环境发送伪请求;以及向请求器发送所述记录。

示例23包括如示例22的主题,其中,所述数据是数据库中存储的第二数据的副本,并且在所述受保护数据飞地之间分割所述第二数据,以在所述受保护数据飞地中存储所述数据。

示例24包括如示例23的主题,其中,所述指令进一步使所述第一处理器:确定所述第二数据的大小;并且基于比较所述第二数据的所述大小与所述可信执行环境之一所能够保护的阈值数据量,确定用于存储所述数据的所述受保护数据飞地的数量。

示例25包括如示例23所述的主题,其中,所述数据库存储在具有第二处理器的计算设备上,并且所述指令使所述第一处理器通过生成所述受保护数据飞地以防止所述第二处理器访问存储所述受保护数据飞地的存储器部分来生成所述受保护数据飞地。

示例26包括如示例25所述的主题,其中,在所述第二处理器无法确定所请求的所述记录的情况下以及所述第二处理器无法确定存储所述记录的所述受保护数据飞地的情况下,所述指令使所述第一处理器确定所述受保护数据飞地中包含所述记录的受保护数据飞地,发送所述一个或多个第二请求,并且向所述请求器发送所述记录。

示例27包括如示例23所述的主题,其中,所述多个受保护数据飞地包括所述数据库的整体。

示例28包括如示例22所述的主题,其中,通过使用可信执行环境中一个可信执行环境来加密数据的一部分,并将加密数据存储在第一存储器中,所述指令使所述第一处理器生成所述数据飞地中的第一数据飞地,仅所述可信执行环境中第一可信执行环境可以解密形式访问所述数据在所述第一存储器中的所述一部分。

示例29包括如示例22所述的主题,其中,所述指令进一步使所述第一处理器在所述可信执行环境中第二可信执行环境中生成受保护散列飞地,所述受保护散列飞地指示向所述受保护数据飞地的多个受保护数据飞地分配所述数据。

示例30包括如示例29所述的主题,其中,通过对所述第一请求执行散列函数,以生成散列值;以及在所述受保护散列飞地中查找所述散列值,以确定所述受保护数据飞地中包含所述记录的所述受保护数据飞地,所述指令使所述第一处理器确定所述受保护数据飞地中哪一个包含所述记录。

示例31包括如示例29所述的主题,其中,通过对所述第一请求执行散列函数,以生成散列值;以及在所述受保护散列飞地中查找所述散列值,以确定两个可信执行环境中哪一个在通向所述受保护数据飞地中包含所述记录的所述受保护数据飞地的路径内,所述指令使所述第一处理器确定所述受保护数据飞地中哪一个包含所述记录。

示例32包括如示例29所述的主题,其中,所述指令进一步使所述第一处理器以树结构配置所述可信执行环境,其中,所述可信执行环境中与所述受保护数据飞地的所述多个受保护数据飞地相对应的多个可信执行环境是所述树结构的叶节点,并且所述可信执行环境中与所述受保护散列飞地相对应的所述第二可信执行环境是支节点。

示例33是一种装置,包括:处理器,所述处理器用于执行第一代码;计算机可读存储器,所述计算机可读存储器用于实现受保护数据飞地;数据飞地生成器,所述数据飞地生成器用于实例化所述存储器中的所述受保护数据飞地,并且用于在所述受保护数据飞地中存储数据,所述处理器或所述第一代码不可访问所述受保护数据飞地;以及记录检索器,所述记录检索器用于:响应于接收针对所述数据中的记录的请求而访问所述受保护数据飞地中的记录;以及向请求器发送响应,所述响应包括所述记录,从而使得所述处理器不可访问所述请求和所述响应。

示例34包括如示例33所述的主题,其中,所述数据飞地生成器加密所述数据。

示例35包括如示例33所述的主题,其中,所述处理器是不可信任的,并且所述数据飞地生成器将所述受保护数据飞地存储在所述计算机可读存储器中。

示例36包括如示例33所述的主题,其中,所述记录检索器解密所述请求。

示例37包括如示例33所述的主题,其中,所述记录检索器加密所述响应。

示例38是一种方法,所述方法包括:确定包含数据的数据库的大小;使用可信处理单元生成受保护数据飞地,以便当所述数据库的所述大小小于阈值大小时存储所述数据,所述受保护数据飞地仅可由生成所述受保护数据飞地的所述可信处理单元访问;响应于在所述可信处理单元处接收针对所述数据中的记录的请求,访问所述受保护数据飞地中的所述记录;以及向请求器发送所述记录。

示例39包括如示例38所述的主题,其中,生成所述受保护数据飞地包括加密所述数据。

示例40包括如示例38所述的主题,进一步包括:在与不可信处理单元共享的存储器中存储所述受保护数据飞地。

示例41包括如示例38所述的主题,进一步包括解密所述请求。

示例42包括如示例38所述的主题,其中,向所述请求器发送所述记录包括:加密对所述请求的响应,所述响应包含所述请求;以及向所述请求器发送所述响应。

示例43是一种有形计算机可读存储介质,包括第一计算机可读指令,所述第一计算机可读指令当被执行时使第一处理器至少:确定包含数据的数据库的大小;使用可信执行环境生成受保护数据飞地,以便当所述数据库的所述大小小于阈值大小时存储所述数据,所述受保护数据飞地仅可由所述可信执行环境访问;响应于接收针对所述数据中的记录的请求,访问所述受保护数据飞地中的所述记录;以及向请求器发送所述记录。

示例44包括如示例43的主题,其中,所述第一指令使所述处理器通过加密所述数据来生成所述受保护数据飞地。

示例45包括如示例43的主题,其中,所述处理器是不可信处理器,并且所述第一指令进一步使所述处理器在与所述不可信处理单元执行的第二指令共享的存储器中存储所述受保护数据飞地。

示例46包括如示例43所述的主题,其中,所述第一指令进一步使所述处理器解密所述请求。

示例47包括如示例43所述的主题,其中,所述第一指令进一步使所述处理器:加密对所述请求的响应,所述响应包含所述请求;并且向所述请求器发送所述响应。

虽然在此已经公开了某些示例方法、装置和制品,但是本专利的覆盖范围不限于此。相反,本专利覆盖完全落入本专利的权利要求书的范围内的所有方法、装置和制品。

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