一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用可信环境进行不经意传输的方法和装置与流程

2022-10-26 19:29:37 来源:中国专利 TAG:

使用可信环境进行不经意传输的方法和装置
1.相关申请的交叉引用
2.本技术要求于2020年3月11日提交的序列号为16/816,120、发明名称为“使用可信环境进行不经意传输的方法和装置(methods and apparatuses for oblivious transfer using trusted environment)”的美国专利申请的优先权,其内容通过全文引用并入本文。
技术领域
3.本发明涉及用于安全传输电子数据的方法和装置,例如数据的不经意传输,这可以包括使用可信环境,例如可信执行环境。


背景技术:

4.通过网络(例如互联网)分发的内容可以从第三方服务器提供,第三方服务器既不由数据的发布者操作和控制,也不由预期的接收者(例如消费者)操作和控制。例如,包括视频的数据对象(data object,do)可以在内容交付网络(content delivery network,cdn)服务或云托管提供商的帮助下分发到按需视频互联网资源客户。
5.由于第三方服务器为实际的内容请求提供服务,所以服务器的运营商能够看到接收者所请求的特定do,这意味着这种分发不能保证接收者的数据消费隐私。在接收者池向公众开放的情况下,例如按需视频互联网资源,在分发之前对数据进行加密无法解决这个问题。
6.在学术文献中,从服务器运营商获得数据隐私的问题以更一般的形式称为不经意传输(oblivious transfer,ot)或私有信息检索(private information retrieval,pir)。
7.解决ot问题的一个方案系列是向第三方服务器添加可信环境,例如可信执行环境(trusted execution environment,tee)硬件。在tee中执行的一些计算操作受到服务器运营商的保护。因此,tee的用户可以混淆服务器运营商在每个特定内容请求中请求的特定do。但是,这种方法存在一个问题,即分布式do的总大小通常远大于tee中的可用内存,这阻碍了实际实现。最好提供一种方法来改进tee的使用,以实现do的安全和私有分发。


技术实现要素:

8.在本文描述的各种示例中,提供了有助于保护用于从第三方服务器进行的内容传输的数据隐私的方法和装置。使用可信环境,例如tee。所公开的示例可以实现实际实现,因为计算和存储器成本相对低于其它方法。
9.在一些方面,本发明描述了一种用于服务器内的可信环境的方法。所述方法包括:将标识请求的数据对象的数据对象标识符接收到所述可信环境中,所述请求的数据对象作为多个对应数据块存储在相应的多个数据桶中,所述数据对象标识符用标识所述相应数据桶内所述多个对应数据块中的每个数据块的信息进行编码;其中,分配的数据桶已经分配给所述可信环境,并且与所述分配的数据桶对应的数据流接收到所述可信环境中,所述数据流包括存储在所述分配的数据桶中的所有数据块;使用编码信息确定所述数据流中的哪
个数据块是从所述分配的数据桶流传输的对应数据块;将所述对应数据块从所述可信环境中发送到所述服务器。
10.在一些示例中,所述方法还包括将所述数据流从所述服务器接收到所述可信环境中。
11.在一些示例中,标识所述多个对应数据块的所述编码信息可以是多个指纹值,每个指纹值可以唯一标识相应数据桶内的相应的对应数据块。
12.在一些示例中,确定所述对应数据块可以包括:从所述数据对象标识符中确定正确的指纹值,所述正确的指纹值标识所述分配的数据桶的所述对应数据块;为所述数据流中所述数据块中的每个数据块确定所述指纹值;将所述数据流中所述数据块中的每个数据块的所述指纹值与所述正确的指纹值进行比较,以确定所述对应数据块。
13.在一些示例中,所述数据对象标识符还可以用用于对所述对应数据块进行排序以恢复所述请求的数据对象的信息进行编码。
14.在一些示例中,确定所述数据块中的哪个数据块是所述对应数据块可以包括:使用用于对所述对应数据块进行排序的所述信息来确定标识所述分配的数据桶的所述对应数据块的所述信息。
15.在一些示例中,用于对所述对应数据块进行排序的所述编码信息可以是置换令牌。
16.在一些示例中,所述方法还可以包括:将所述数据对象标识符作为加密的数据对象标识符接收到所述可信环境中;使用所述可信环境的私钥对所述数据对象标识符进行解密;将所述对应数据块作为加密的对应数据块从所述可信环境中发送到所述服务器。
17.在一些示例中,所述方法还可以包括执行以下步骤:接收所述数据对象标识符;确定所述对应数据块;以及对于第一接收数据对象标识符和第二接收数据对象标识符,至少部分并行地发送所述对应数据块。
18.在一些示例中,所述数据流可以包括压缩数据,并且所述方法还可以包括对所述压缩数据进行解压缩。
19.在一些方面,本发明描述了一种用于发布服务器的方法。所述方法包括:对于多个数据对象中的每个给定数据对象:将所述给定数据对象划分为多个对应数据块;基于每个对应数据块与分配给所述相应数据桶的任何其它数据块的相似性,将所述多个对应数据块中的每个数据块分配给多个数据桶中的相应的一个数据桶;其中,所有数据对象的所有数据块被分配给所述多个数据桶中的一个数据桶;对于每个给定数据对象,生成用于从所述多个数据桶中恢复所述给定数据对象的数据对象标识符,所述数据对象标识符用标识相应数据桶内所述多个对应数据块中的每个数据块的信息进行编码,所述数据对象标识符还用用于对所述对应数据块进行排序以恢复所述请求的数据对象的信息进行编码;将每个数据桶压缩成相应的压缩数据集;发布所述压缩数据集和所述生成的数据对象标识符。
20.在一些示例中,分配给每个相应数据桶的所述数据块可以在每个相应数据桶内根据相似性排序。
21.在一些示例中,生成所述数据对象标识符可以包括:对于每个给定数据桶,为分配给所述给定数据桶的每个数据块确定指纹值,所述指纹值唯一标识所述给定数据桶内的每个相应数据块;对于每个给定数据对象,将每个相应的对应数据块的所述指纹值编码在所
述数据对象标识符中。
22.在一些示例中,生成所述数据对象标识符可以包括:对于每个给定数据对象:确定桶顺序,每个对应数据块根据所述桶顺序分配给相应数据桶;生成表示所述桶顺序的置换令牌;将所述置换令牌编码在所述数据对象标识符中。
23.在一些示例中,每个数据桶可以已经分配了来自每个数据对象的单个对应数据块。
24.在一些示例中,每个数据桶可以使用自适应统计编码压缩进行压缩。
25.在一些方面,本发明描述了一种用于电子设备的方法。所述方法包括:响应于对数据对象的查询,接收多个数据块;从与所述数据对象关联的数据对象标识符中确定用于对所述数据块进行排序以恢复所述数据对象的信息;对所述数据块进行重新排序以恢复所述数据对象。
26.在一些示例中,所述方法还包括:发送对所述数据对象的所述查询,所述查询包括所述数据对象标识符。
27.在一些示例中,在所述查询中发送的所述数据对象标识符可以用标识相应数据桶内所述多个数据块中的每个数据块的信息进行编码,所述数据对象标识符还可以用用于对所述数据块进行排序的所述信息进行编码。
28.在一些示例中,确定用于对所述数据块进行排序的所述信息可以包括编码在所述数据对象标识符中的置换令牌。
29.在一些示例中,所述方法还可以包括:接收所述多个数据块作为多个加密数据块;使用私钥对所述多个加密数据块进行解密。
附图说明
30.现在通过示例参考示出本技术的示例性实施例的附图,其中:
31.图1是可以实现本文公开的示例的示例性简化系统的框图;
32.图2是可用于实现本文描述的示例的示例性服务器的框图;
33.图3是可用于实现本文描述的示例的示例性电子设备的框图;
34.图4是表示现有内容分发方案的信令图;
35.图5是本文描述的示例提供的用于生成数据对象标识符的示例性方法的流程图;
36.图6a至图6e是实施图5的方法的示例性步骤的示意图;
37.图7是本文描述的示例提供的表示内容分发示例的信令图;
38.图8是在图7的操作的上下文中由服务器执行的示例性方法的流程图;
39.图9是在图7的操作的上下文中由tee执行的示例性方法的流程图;
40.图10是在图7的操作的上下文中由客户端电子设备执行的示例性方法的流程图。
41.不同附图中可以使用相同的附图标记来表示相同的组件。
具体实施方式
42.在本文公开的示例中,描述了有助于使用可信的安全中间环境从服务器传输内容并从服务器的运营商实现数据隐私的方法和装置。所公开的方法可以使用针对每个服务请求相当低的计算和内存成本来实现,这可以使这种方案实现经济上可行的商业化。为了帮
助理解本发明,首先描述图1至图3。
43.图1示出了包括网络105的示例性系统100。为了便于理解,在本示例中简化了系统100;通常,系统100中的实体和组件可以比图1所示的实体和组件更多。网络105可以是任何形式的网络(例如,内联网、互联网、p2p网络、wan和/或lan),并且可以是公共网络。系统100可用于分发由发布者108发布并存储在第三方数据中心(在本示例中为服务器110)上的内容。发布者108可以是发布者服务器,在本文称为发布者108。内容通过网络105上的无线通信从服务器110分发到电子设备(electronic device,ed)150。虽然图1中未示出,但发布者108与服务器110之间的通信也可以通过网络105或另一个网络(可以是私有网络或公共网络),或者可以通过有线连接。如下文进一步描述的,可信的安全环境(例如可信执行环境(trusted execution environment,tee)130)存在于服务器110中。虽然图1示出了服务器110内的单个tee 130,但应该理解,服务器中可以有多个tee 130。
44.图2是服务器110的简化示例的框图。可以使用适合于实现本发明中描述的实施例的其它示例,这些示例可以包括与下文描述的那些组件不同的组件。虽然图2示出了每个组件的单个实例,但是在服务器110中可能存在每个组件的多个实例。
45.服务器110可以包括一个或多个处理设备114,例如处理器、微处理器、数字信号处理器、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、专用逻辑电路、专用人工智能处理器单元,或其组合。服务器110还可以包括一个或多个可选输入/输出(input/output,i/o)接口116,这些可选i/o接口116可以支持与一个或多个可选输入设备118和/或可选输出设备120连接。
46.在所示的示例中,一个或多个输入设备118(例如,键盘、鼠标、麦克风、触摸屏和/或小键盘)和一个或多个输出设备120(例如,显示器、扬声器和/或打印机)示出为可选且在服务器110外部。在其它示例中,可能不存在任何输入设备118和输出设备120,在这种情况下,可能不需要i/o接口116。
47.服务器110可以包括一个或多个网络接口122,用于与网络105、ed 150或系统100中的其它实体或节点进行有线或无线通信。一个或多个网络接口122可以包括用于网络内和/或网络间通信的有线链路(例如,以太网线)和/或无线链路(例如,一个或多个天线)。
48.服务器110还可以包括一个或多个存储单元124,所述一个或多个存储单元124可以包括如固态硬盘、硬盘驱动器、磁盘驱动器和/或光盘驱动器等大容量存储单元。一个或多个存储单元124可以存储一个或多个数据对象(data object,do)126,该一个或多个数据对象126可以由ed 150请求并发送到ed 150,如下文进一步描述。do 126可以包括具有大量数据的内容,例如视频文件。由第三方服务器110存储的do 126可以由服务器110的运营商以外的发布者发布。do 126可以被加密,并且do 126的内容可以是服务器110的操作未知的。do126可以以压缩形式存储,如下文进一步描述。
49.服务器110可以包括一个或多个存储器128,所述一个或多个存储器128可以包括易失性或非易失性存储器(例如,闪存、随机存取存储器(random access memory,ram)和/或只读存储器(read-only memory,rom))。一个或多个非瞬时性存储器128可以存储由一个或多个处理设备114执行的指令,例如,以执行本发明中所描述的示例。一个或多个存储器128可以包括其它软件指令,例如用于实现操作系统和其它应用/功能的软件指令。在一些
150能够在系统100中操作的任何其它功能。处理设备154还可以用于实现本文所述的一些或全部功能和/或实施例。例如,处理设备154可以是处理器、微处理器、数字信号处理器、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、专用逻辑电路、专用人工智能处理器单元,或其组合。
56.ed 150还可以包括一个或多个可选输入/输出(input/output,i/o)接口156,这些可选i/o接口156可以支持与一个或多个可选输入设备158和/或可选输出设备160连接。例如,一个或多个输入/输出设备158、160支持与用户交互。每个输入/输出设备158、160包括用于向用户提供信息或从用户接收信息的任何合适的结构,例如扬声器、麦克风、小键盘、键盘、显示器或触摸屏等等。在一些示例中,单个设备可以提供输入和输出能力,例如触摸屏。
57.ed 150还包括一个或多个网络接口162,以支持系统100中的通信。一个或多个网络接口162包括用于生成信号以进行无线或有线传输,和/或用于处理无线或有线接收的信号的任何合适的结构。一个或多个网络接口162可以包括用于网络内和/或网络间通信的有线链路(例如,以太网线)和/或无线链路(例如,一个或多个天线)。在一些示例中,一个或多个网络接口162可以包括单独的发送器和接收器组件;在其它示例中,一个或多个网络接口162可以包括组合发送器和接收器的功能的收发器组件。
58.ed 150还可以包括一个或多个存储单元164,所述一个或多个存储单元164可以包括如固态硬盘、硬盘驱动器、磁盘驱动器和/或光盘驱动器等大容量存储单元。ed 150还可以包括一个或多个存储器168,所述一个或多个存储器168可以包括易失性或非易失性存储器(例如,闪存、随机存取存储器(random access memory,ram)和/或只读存储器(read-only memory,rom))。一个或多个非瞬时性存储器168可以存储由一个或多个处理设备154执行的指令,例如,以执行本发明中所描述的示例。一个或多个存储器168可以包括其它软件指令,例如用于实现操作系统和其它应用/功能的软件指令。在一些示例中,一个或多个存储器168可以包括软件指令,用于供处理设备154执行,以从服务器110请求和恢复(例如,解密)一个或多个do 126,如下文进一步描述。
59.在一些示例中,另外或或者,ed 150可以执行来自外部存储器(例如,与服务器150有线或无线通信的外部驱动器)的指令,或者可以由瞬时性或非瞬时性计算机可读介质提供可执行指令。非瞬时性计算机可读介质的示例包括ram、rom、可擦除可编程rom(erasable programmable rom,eprom)、电可擦除可编程rom(electrically erasable programmable rom,eeprom)、闪存、cd-rom或其它便携式存储器。
60.如上所述,当内容由ed 150请求时,从服务器110的运营商获得数据隐私的问题在本领域中可以称为不经意传输(oblivious transfer,ot)。通过使用ot,ed 150可以请求由服务器110存储的数据集内的特定do,并且可以以这样的方式接收对请求的正确响应,使得服务器110的运营商不知道数据集中的哪个do被请求和发送。
61.例如,smith等人(s.w.smith、d.safford;“安全协处理器的实用服务器隐私(practical server privacy with secure coprocessors)”,ibm系统期刊,第40卷,第3期,2001年)已经提出了ot问题的解决方案。为了帮助理解现有方案的缺点,下文介绍了一个简单的示例。
62.图4是简单现有方案示例的信令图。在本示例中,多个do作为数据集发布(例如,由发布者108发布)。然后,数据集被存储在服务器110内的非安全存储设备(例如,图2中的存储单元124)中。在服务器110内,一个或多个tee 130可以执行安全计算并存储由tee的制造商证书颁发中心(certificate authority,ca)签名的受保护私钥。服务器110的运营商被认为是诚实但好奇(honest-but-curious,hbc)。即,当执行服务ed请求所需的动作时,服务器110不向运营商显示关于ed 150请求数据集中的哪个do的任何信息。虽然本发明描述了参考hbc运营商的一些示例,但应当理解,本文描述的示例也可以用于服务器110的运营商不一定被认为是hbc的情况,或者存在不诚实方的情况。例如,本文描述的示例也可以用于不诚实的一方(例如,未经授权的一方)试图通过对服务器110的未经授权的访问获得关于已请求哪个do的信息的情况。假设服务器110的运营商具有关于服务器110上所存储的内容和从非安全存储器发送的内容的信息,但不具有关于在服务器110内使用tee 130执行的操作的信息。
63.对数据集内的特定do的请求可以从ed 150与服务器110之间的握手开始。首先描述示例性握手过程。ed 150向服务器110发送握手请求,该握手请求包括包含感兴趣do的数据集的标识符(identifier,id),以及请求的公钥(reqpu)。服务器110使用已被指定用于处理请求的tee 130的公钥(tee pu)以及tee pu的数字签名来响应握手消息。ed 150使用由tee 130的ca提供的公钥验证数字签名。只有真正的tee pu才由ca签名。tee 130的对应私钥(tee pr)是完全安全的,并且只能在tee 130中使用。因此,ed 150得以保证,用tee pu加密的任何数据只能使用经认证的tee 130内的tee pr进行解密。如果ed 150验证数字签名,则ed 150可以继续请求感兴趣do。如果数字签名没有被验证,则ed 150可以中止请求。
64.假设握手过程成功,那么在402处,ed 150使用tee pu加密所请求do的id,并将查询发送到服务器110。
65.服务器110无法解密和读取查询,并且在404处将仍加密的查询转发到tee 130。查询在tee 130内解密,使得所请求do的id在tee 130内是已知的。
66.在406处,服务器110将数据集(在握手过程中标识)中的所有do从非安全数据存储器发送(例如,流传输)到tee 130。tee 130接收每个do,但仅存储(例如,在本地缓冲器中)与请求id对应(相关)的do,并丢弃所有其它do。
67.在406之后,tee 130用reqpu加密所请求do(可以存储在tee 130的本地缓冲器中),并且在408处,将加密的do发送到服务器110(即,将加密的do从tee 130的受保护环境发送到服务器110的一般环境)。
68.在410处,服务器110将加密do在响应消息中发送到ed 150。由于服务器110无法对加密的do进行解密,因此服务器110不知道哪个do已经被发送到ed 150。ed 150接收加密的do,并使用ed的私钥对其进行解密。
69.在上述方案中,实现了ot。do请求是在服务器110不具有关于请求了数据集中的哪个do的任何信息的情况下被送达的,从而确保了ed 150的隐私。但是,问题是,数据集中的所有do必须从非安全数据存储器发送到tee 130,以服务于单个查询。这可能需要消耗大量资源,特别是当do很大(例如,大视频文件)时。
70.本发明描述了有助于减小每个查询从服务器110到tee 130的流数据的大小的示例。在下文描述的示例中,服务器110中存在多个tee 130。数据集从多个桶流传输,每个桶
605划分为一组对应数据块610(即,与do 605对应或相关或从do 605划分的数据块610)。在所示的简单示例中,每个数据块610可以具有相同的大小(例如,大小为一个字节)。通常,每个数据块610可以具有任何合适的大小,例如128kb(或者可以更大或更小)。在一些示例中,数据块610的大小可以不相等。例如,数据块610中的一个或多个数据块可以用虚拟数据填充(例如,用随机数据或零填充,等等),以确保数据块610具有相同的大小,并且每个do 605被划分为相同数量的数据块610。与每个do 605对应的数据块610的大小和数量相等可以有助于确保数据隐私,因为关于数据大小的统计不能用于唯一标识任何do 605。但是,发布者108没有必要确保每个do 605的数据块610的大小相等或数据块610的数量相等。在一些示例中,当响应查询时,可以在tee处执行类似的填充技术,而不是在发布者108处执行这种填充技术,以确保从tee发送到服务器的一般环境的数据块610在统计上是不可区分的。
80.在504中,每个数据块610被放置到桶615中(见图6b)。为每个数据块610分配特定的桶615。在一些示例中,可以将数据块610分配给桶615,使得每个桶615具有来自每个do 605的相同数量的块610(例如,正好一个块610)。如上所述,一个或多个数据块610可以包括空数据或用随机数据或零填充。这使每个桶615具有相同数量的数据块610,并且每个数据块610的大小相等。这继而有助于确保数据隐私,因为关于数据块610在桶615之间分布的方式的统计不能用于唯一地标识来自任何do 605的任何数据块610。但是,在一些示例中,不同桶615中可以有不同数量的数据块610,并且尽管如此,可以使用各种技术来确保数据隐私,如下所述。
81.虽然本发明描述了一些示例,在这些示例中,每个do 605被划分成大小相等的对应数据块610,并且每个桶615被分配相同数量的块610,但应该理解,这并不意欲为限制性的。例如,do 605可以被划分成不同大小的对应数据块610,do 605可以被划分成不同数量的对应数据块610,桶615可以被分配不同数量的数据块610,以及它们的变化。即使在桶615中的数据块610的大小和/或数量存在这种变化时,也可以使用各种技术来确保数据隐私。例如,如果数据块610的大小不相等,则可以使用填充(例如,用随机数据或零)来使数据块610从外部观察者(例如,服务器的运营商)的角度来看具有相同的大小。在另一个示例中,如果将不相等数量的数据块610分配给不同的桶615,则给定的桶615可以不包括来自特定do605的数据块610。在这种情况下,可以为给定的桶615分配看起来是数据块(例如,具有相同大小)的虚拟数据块(例如,随机数据块)。如上所述,隐藏区分信息的这种技术可以由发布者108在桶615之间划分和分配数据块610时执行,或者可以由tee在响应查询时执行。
82.需要说明的是,块610不是以任意方式放置在桶615中,也不是简单地顺序或根据每个do 605中的块610的顺序分配给桶615。而是,将块610分配给相应的桶615,并以这样的方式在每个桶615内排序,使得更相似的块610被分组在一起并排序为在同一桶615中更紧密地在一起。
83.例如,在图6b中,来自do“zebra”的数据块“a”被分配给桶#4,并被定位在同一桶#4中靠近来自do“cat”的数据块“a”。需要说明的是,与“zebra”中数据块的桶分配顺序相比,数据块“c”、“a”、“t”和两个
“”
(空格字符)块在分配给桶#0至#4时被重新排序。即,每个do 605中的第一数据块610不一定都被分配给相同的“第一”桶615,并且第二数据块610类似,等等。换句话说,将do 605的数据块610分配给桶615所依据的“桶顺序”可以不同于数据块610在do 605中布置的原始顺序。这不同于根据数据块610在原始do 605中出现的顺序将每
个数据块610分配给桶615。通过使用数据块610的相似性来分配和排序桶615内的块610,可以实现更好的数据压缩。
84.数据块610的相似性用作分配桶615和对桶615内的块610进行排序的基础。两个数据块610的相似性可以使用任何合适的计算来确定。一个示例是计算kullback-leibler(kl)散度,比较未分配的候选块610和已经分配给给定桶615的一个或多个块610的令牌的概率分布。
85.可以执行以计算kl散度的示例性计算是:
[0086][0087]
其中,m是表示两个令牌之间相似性的互信息度量,q(x)是给定桶615的令牌概率分布函数,p(x)是未分配候选块610的令牌概率分布函数,s(x)是桶615和未分配块610的联合概率分布函数。项可以表示为kl(q(x)||s(x)),项可以表示为kl(p(x)||s(x))。例如,如果候选数据块610与给定桶615的大小相同:
[0088][0089]
因此,m可以重写为:
[0090][0091]
其中,项可以表示为kl(q(x)||1/2(q(x) p(x))),项可以表示为kl(p(x)||1/2(q(x) p(x)))。
[0092]
因此,考虑如何将数据块610放置在数据桶615中的另一种方式是,块610以这样的方式分组到桶615中,使得每个桶615内的块610的总交叉熵被最小化。
[0093]
下文描述了一个示例性算法,它使用kl作为给定的未分配数据块c与给定桶b的相似程度的度量。
[0094]
假设令牌大小是固定的,例如,一个字节。
[0095]
解析数据块c以计算该块具有的每个唯一令牌的数量。例如,如果块包括五个字母“l”,则nc(“l”)=5。块中的令牌总数表示为tc。例如,如果块大小为14字节,令牌大小固定为2字节,则:
[0096]
tc=14/2=7
[0097]
桶b也是如此。如果桶b包括17个“l”令牌,则表示为nb(“l”)=17。tb是桶b中令牌的总数。
[0098]
则示例性算法的伪代码为:
[0099]
kl=0
[0100]
对于x,c中的每个唯一令牌:
[0101]
kl=kl nc(x)*log[nc(x) nb(x)]
[0102]
返回kl
[0103]
需要说明的是,这种计算只是一个示例。任何合适的度量都可用于测量相似性(例如,测量互信息或交叉熵),或反映两组数据可以压缩在一起的程度。
[0104]
在图6b的示例中,由于每个数据块610由单个ascii字符组成,因此按相似性放置块610相对简单。例如,一个数据块610中的ascii字符与另一个数据块中的ascii字符相同或不相同。在更复杂的示例中,每个数据块610可以由两个ascii字符组成。例如,基于相似性的计算,数据块“bb”可以与数据块“br”一起放置在给定桶615中并靠近放置,而数据块“bb”和数据块“ra”可以更分开地放置在给定桶615中,或者可以分配给不同的桶615。
[0105]
在506中,在将数据块610都放置在桶615中之后,发布者108生成用于从桶615中的对应数据块610恢复每个do的do标识符。这可以使用步骤508-512执行。
[0106]
在508中,生成唯一标识符(在本文称为指纹值),用于标识每个数据桶615内的每个数据块610。这可以使用指纹函数执行。给定桶615的示例性指纹函数:
[0107]
f(x)=x mod p
[0108]
其中,x是表示数据块610的数值,mod是取模运算符,p是素数。值p可以称为给定桶615的特征值。例如,任何给定桶615的值p可以概率地确定或通过试错法确定。需要说明的是,p应大于桶615中唯一数据块610的数量,以便唯一数据块610是唯一可区分的。还需要说明的是,不同的桶615可以具有相同的特征值p。
[0109]
为了实现上述示例性指纹函数,为给定桶615寻找最小的p,使得为桶中的每个唯一数据块610获得不同的指纹值f(x)。为了使指纹值尽可能小,需要最小的p,从而减少表示每个指纹值所需的比特数。通常,使用指纹值引用给定桶315内的数据块610所需的最小比特数是表示特征值p所需的二进制比特数,该比特数可以计算为p的log2的向上舍入整数值。
[0110]
该比特数可以称为指纹大小或c,并可以表示为:
[0111]
c=roundup(log2(桶中最大指纹))
[0112]
图6c示出了上述指纹函数f(x)的示例性实现方式。在本示例中,可以使用3作为特征值p唯一标识桶#0中的数据块610。换句话说:f(x)=x mod 3。
[0113]
x是每个数据块610的数字表示。在本示例中,x是每个数据块610中包括的ascii字符的数值当量。例如,ascii字符“z”的数值为90。因此,包括“z”的数据块610的指纹值是:
[0114]
f(90)=90mod 3=0
[0115]
此外,特征值p=3导致:
[0116]
c=roundup(log2(3))=2
[0117]
以类似的方式,可以使用相应的特征值p和桶特征c,为每个桶615中的每个数据块610计算图6c所示的指纹值620。可以说明的是,包括相同数据(例如,相同ascii字符)的数据块610具有相同的指纹值620。此外,可以说明的是,指纹值620仅唯一地标识给定桶615内的数据块610(例如,桶#0中的“z”和桶#1中的“e”具有相同的指纹值0)。
[0118]
上文描述了一个示例性指纹函数。可以使用不同的指纹函数。通常,指纹函数应该是当应用于每个数据块610时,能够为给定桶615中的每个唯一数据块610生成唯一值的函数。此外,可以选择指纹函数,使得生成的指纹值620相对较小,以便减少表示指纹值620所需的比特数。应理解,根据所使用的指纹函数,桶特征值p和指纹大小c可以具有不同的含义,桶可以以不同的方式表征,也可以没有任何桶特征值。
[0119]
使用指纹函数,生成唯一标识符(在本文称为指纹值620),用于标识每个数据桶615内的每个数据块610。通过引用特定桶615和特定指纹值620,可以标识特定的期望数据块610(例如,待存储和发送,如下文进一步描述)。
[0120]
在510中,组合与每个do 605对应的数据块610的指纹值620。组合指纹值620可以按照相应数据块610在do 605中出现的顺序简单地级联表示指纹值620的位。或者,指纹值620可以根据桶615的顺序级联。
[0121]
再次参考图6c,例如,可以通过组合每个数据桶615中对应数据块610“z”、“e”、“b”、“r”和“a”的指纹值620来标识do 605“zebra”,如下表所示:
[0122]
zebra0b00(桶#0)0b00(桶#1)0b0000(桶#2)0b01(桶#3)0b010(桶#4)
[0123]
其中,符号“0b”表示二进制整数。每个数据块610的桶615在括号中指示。
[0124]
在示例“zebra”中,对应数据块610按照与数据块610在do 605中出现的原始顺序匹配的桶顺序放置到桶615中:
[0125] zebra原始顺序01234桶顺序01234
[0126]
其中,索引号从0开始。
[0127]
但是,这不一定是正确的。例如,do 605“cat”具有对应数据块“c”、“a”和“t”,以及以不同于原始顺序的桶顺序放置在桶615中的两个空块,如下表所示:
[0128][0129][0130]
由于在步骤504中,数据块610基于相似性而不是基于顺序被放置到数据桶615中,因此,可能不能简单地通过从数据桶615顺序获取数据块610来恢复给定的do 605。
[0131]
在512中,生成置换令牌。置换令牌提供了用于对从每个桶615获取的对应数据块610进行重新排序的信息,以便恢复所需的do 605。在上文“cat”示例中,置换令牌指示从桶#2中获取的对应数据块610应该是第一个,然后是从桶#4中获取的对应数据块610,依此类推。
[0132]
在一个示例中,置换令牌可以基于莱默(lehmer)置换编码算法。莱默码是一种对数字序列中的特定置换进行编码的技术。广义上讲,莱默码是一种从n个数字的序列中表示选择的方法,其中,每个选择都减少了可用于后续选择的剩余数字。
[0133]
图6d说明了这种技术的一个示例。在本示例中,通过根据桶顺序从相应桶615中获取对应数据块610来恢复do 605“cat”:[#2,#4,#3,#0,#1]。在从桶#2中获取第一对应数据块610“c”之后,桶#2不再可用(如上文步骤504所描述的,每个桶615仅包括来自每个do 605
的一个对应数据块610),这在图6d中通过使该桶阴影化来指示。此外,剩余的桶615可以被重新编号为桶#0-桶#3。以类似的方式,对应数据块610“a”接下来从已重新编号为#3的桶#4中获取,并且该桶随后不再可用(如通过阴影所示)。该过程继续,直到所有对应数据块610已经从合适的桶615中获取。根据从桶615中获取每个对应数据块610的顺序,并考虑到在每个步骤中桶615的重新编号,置换可以由以下序列表示:[2,3,2,0,0]。
[0134]
从这个序列中,可以通过与阶乘相乘来生成置换令牌t,如下所示:
[0135]
t=2*4! 3*3! 2*2! 0*1!=70
[0136]
这可以由位整数0b1000110表示。
[0137]
可以说明的是,在具有五个桶的这个示例中,t的值由下限值0和上限值5!限定。由于此上限,置换令牌可以由等于log2的向上舍入整数值((桶总数)!)的比特数表示。在本示例中,表示置换令牌所需的比特数为roundup(log2(5!))=7。
[0138]
可以使用生成置换令牌的其它方法。通常,置换令牌可以是指示从不同桶中获取的数据块排序应依据的顺序的任何位集合。例如,置换令牌可以是用于表示桶顺序的任何合适方式,或者用于表示桶顺序与原始顺序之间的差异的任何合适方式。可以以上述方式生成置换令牌,因为表示置换令牌所需的比特数可能相对较小。
[0139]
虽然莱默码作为一个示例进行描述,但它并不意欲具有限制性。任何技术都可用于区分对应数据块610的排序(或置换)。置换令牌可以使用等于log2向上舍入整数值((桶总数)!)的比特数进行编码。
[0140]
在已经为每个do 605生成数据块指纹值和置换令牌之后,可以通过组合对应数据块605的指纹值和置换令牌来为每个do 605生成do标识符。例如,置换令牌可以与指纹值级联,例如在以下示例中:
[0141]
置换令牌zebra0b00000000b000b000b00000b010b010
[0142]
置换令牌cat
ꢀꢀ
0b10001100b00010b0100b000b100b010
[0143]
使得do“zebra”可以由标识符0b00000000000000001010表示,转换为十六进制值0x0000a0;do“cat”可以由标识符0b100011000010100010010表示,转换为十六进制值0x8c2890(其中,符号0x表示十六进制值)。任何其它数基都可用于表示标识符。
[0144]
上述示例产生do标识符,其中,首先存在一个置换令牌位(表示置换令牌)集合,然后是多个指纹值位集合,每个指纹值位表示与do的相应数据块对应的指纹值。这些位集合在do标识符中的布置顺序可能与上文所示的不同。例如,置换令牌位集合可以放置在do标识符的末尾,而不是放置在开头。在另一个示例中,指纹值位集合可以基于桶顺序来布置(例如,桶#0中对应数据块的指纹值位之后是桶#1中对应数据块的指纹值位,依此类推),而不是基于do中对应数据块的顺序来布置。通常,do标识符中位的配置可以是预定义的,并且为发布者108、tee 130和ed 150已知(例如,根据已知标准,或由发布者108传输),以使tee 130能够解析do标识符,并使ed 150能够恢复do,如下文进一步描述。
[0145]
发布者108可以创建引用(例如,查找表)以将每个do 605与对应的do标识符相关联。该信息可以与压缩数据一起发布108(下文描述),以允许每个do 605的适当恢复。
[0146]
在514中,压缩每个数据桶615。如上所述,基于数据相似性,将数据块610放置到对
应桶615中。此外,将给定桶615内的数据块610排序,使得更相似的数据块610更靠近地放置在一起。以这种方式重新排序数据块610旨在实现最高的局部相似性或最低的交叉熵。
[0147]
例如,在图6e中,每个包括两个ascii字符的数据块610可以被重新排序,使得更相似的数据块610更靠近地放置在一起。例如,数据块610“bb”和“br”被放置得更近,数据块610“ra”和“ca”也被放置得更近。
[0148]
在一些示例中,可以作为步骤504的一部分在给定数据桶615内按相似性对数据块610进行排序。例如,未分配的数据块610可以被放置到给定桶615中,并基于相似性在已经分配给桶615的其它数据块610中排序。在一些示例中,在将所有数据块610都放置在桶615内之后,可以根据相似性对给定桶615内的数据块610进行排序。在又其它示例中,可以作为执行压缩的一部分或刚好在执行压缩之前,在步骤514中在给定的桶615内对数据块610进行排序。需要说明的是,数据桶615中的数据块610的顺序不影响上述do标识符的生成。
[0149]
以上述方式对桶615中的数据块610进行分组和排序可以用于实现更高的压缩比。每个桶615包括具有相对较高的互信息(通常可以认为具有高相似性)的数据块610,并且在每个桶615内,块610以这样的方式排序,使得具有较高互信息的块610倾向于彼此更接近。当桶615用合适的自适应统计编码压缩算法压缩时,这些特性预计将提高压缩比。
[0150]
在一些示例中,数据桶615的压缩可以导致比最初分配给桶615的数据块610少。例如,如果桶615包括两个相同的数据块610,则在压缩中可以仅保留数据块610的一个实例。例如,图6c中的桶#0包括一个“z”实例和四个
“”
(空格字符)数据块610实例。桶#0的压缩数据在解压缩时可以包括一个“z”实例和一个
“”
(空格字符)实例。由于指纹值620用于标识给定桶615中的数据块610,并且相同的数据块610具有相同的指纹值620,因此不需要在压缩数据中保留相同数据块610的多个实例。这不仅可用于改进压缩,而且在下文进一步描述的过程中,还可用于减少必须从服务器110流传输到tee 130的数据。
[0151]
在516中,发布者108发布数据集600的压缩数据,例如通过将每个桶615的压缩数据发送到第三方服务器110。发布者108可以将数据集id与压缩数据一起发布。发布者108还可以提供关于桶615的信息,该信息将由服务器110(特别是服务器110内的tee 130)使用,以响应对数据集中do 605的查询。例如,关于桶615的此类信息可以包括所使用的压缩算法、每个桶615的特征值p、用于为桶615内的数据块610生成指纹值的指纹函数、以及可选的编码每个桶615的指纹值的比特数c(如果c不是由发布者108提供的,c可以基于特征值p计算,如上所述)。发布者108生成do标识符的方式可以是预定义的并为tee 130已知的,以使tee 130能够从do标识符中提取相关信息,如下文进一步描述。
[0152]
发布者108还可以向ed 150提供数据集id(例如,在第三方服务器110和/或其它公开可用数据库上发布),ed 150可以在对服务器110的查询中使用所述数据集id。发布者108还提供关于do标识符的可用信息,例如以查找表或其它引用的形式,该可用信息使得数据集中所需do的do标识符能够被确定。在一些示例中,发布者108可能不需要向服务器110提供任何引用已发布数据集600中特定do 605的do标识符的信息。
[0153]
在执行示例性方法500之后,数据集600在第三方服务器110上可用,以便由一个或多个ed 150查询并分发到一个或多个ed 150。
[0154]
图7是本文描述的示例提供的内容分发示例的信令图。图7的操作可以在压缩和发布数据集之后发生,例如如上文关于图5所描述的。图7的示例涉及服务器110、服务器110内
的多个tee 130以及ed 150的操作。服务器110将数据集存储在服务器110内的非安全存储设备(例如,图2中的存储单元124)中。数据集作为压缩的桶流存储在服务器110处,其中,压缩桶已经使用例如方法500生成。服务器110内的tee 130的数量至少等于存储数据集的do的桶数量;tee 130的数量可以更多。tee 130具有一组公钥和私钥,这些公钥和私钥已经由tee的制造商ca数字签名。私钥受硬件特征保护,数字签名可以经过验证,以证明密钥确实是受保护的tee密钥。服务器110的运营商被认为是hbc。假设服务器110的运营商具有关于服务器110上所存储的内容和从非安全存储器发送的内容的信息,但不具有关于在服务器110内使用tee 130执行的操作的信息。
[0155]
对数据集内的特定do的请求可以从ed 150与服务器110之间的握手开始。握手过程类似于上文关于图4描述的过程,并且在此处仅简要描述。ed 150向服务器110发送握手请求,包括包含感兴趣do的数据集的id,以及请求的公钥(reqpu)。服务器110使用tee 130的公钥(tee pu)以及tee pu的数字签名来响应握手消息。ed 150使用由tee 130的ca提供的公钥验证数字签名。如果ed 150验证数字签名,则ed 150可以继续请求感兴趣do。如果数字签名没有被验证,则ed 150可以中止请求。
[0156]
在验证了数字签名之后,ed 150可以继续将查询发送到服务器110。在702中,ed 150将查询发送到服务器110。查询包括加密的do id(例如,用tee pu加密)。需要说明的是,在702中的查询中包括的do id用标识存储在每个桶中的do的对应数据块的信息(例如,如上所述的指纹值)进行编码,并且do id还用用于排序对应数据块以便恢复do的信息(例如,如上所述的置换令牌)进行编码。特别地,do id可以是使用示例性方法500生成的标识符。
[0157]
在接收到查询后,服务器110分配tee 130来处理查询。特别是,服务器110具有关于正在查询哪个数据集(但不是数据集中的哪个do)和关于存储数据集do的桶的数量的信息。因此,服务器110分配一个tee 130来处理与数据集相关联的每个桶,使得分配的tee 130的总数等于与数据集相关联的桶的总数。每个tee 130还提供有关于其分配的桶的特征值p的信息。例如,每个桶的特征值p可以为服务器110已知(例如,由发布者发布),并且服务器110可以向每个tee 130提供合适的信息。
[0158]
在704中,将包括do id的加密查询转发到每个tee 130。可以说明的是,相同的加密查询被转发到每个tee 130,因为服务器110不知道哪个tee 130将负责从相应的分配桶中检索哪个数据块。
[0159]
在706中,每个tee 130(使用tee私钥(tee private key,tee pr))对查询进行解密。每个tee 130可以根据do id的已知配置解析do id。例如,每个tee 130可以标识do id中的哪些位对应于与其分配桶相关的指纹值位集合。因此,每个tee 130从do id确定其相应分配桶的对应数据块的正确指纹值。
[0160]
在708中,服务器110将每个桶的压缩数据流流传输到相应的分配tee 130。
[0161]
每个tee 130从服务器110将用于其相应的分配桶的压缩数据流接收到相应的tee 130中。为了简单起见,现在描述分配给给定桶的单个给定tee 130的操作。应理解,在分配给每个相应桶的每个tee 130处执行以下操作。在710中,tee 130对压缩数据流(例如,使用上述令牌频率表)进行解码(或解压缩),以恢复存储在分配桶中的数据块。tee 130计算每个数据块的指纹值(例如,使用指纹函数),并将每个计算的指纹值与先前为对应数据块确定的正确指纹值进行比较。tee 130仅存储(例如,缓存在缓冲器中)其计算的指纹值与正确
的指纹值匹配的数据块。
[0162]
在每个tee 130将对应数据块解码和存储之后,将与请求的do对应的数据块都存储在tee 130中(例如,缓存在缓冲器中)。在712中,每个tee加密其正确的数据块(例如,在握手过程期间使用ed 150提供的reqpu加密)。在714中,加密数据块由每个tee 130从相应tee 130中发送到服务器110(即,从相应tee 130的受保护环境中发送到服务器110的一般环境中)。
[0163]
服务器110从已经分配给桶的所有tee 130采集响应。在716中,服务器110将加密数据块发送到ed 150。加密数据块可以包括标识哪个数据块源自哪个桶(例如,通过用相应的桶号标记加密数据块)的信息。这种信息可以在下面720中由ed 150用于重新排序数据块。或者,服务器110的传输可以隐式地指示哪个加密数据块源自哪个桶,例如通过根据桶的数字顺序对传输中的加密数据块进行排序,而不是显式地提供这种信息。
[0164]
ed 150在接收到加密数据块之后,对数据块(例如,使用与请求(reqpr)相关联的私钥解密)进行解密(在718中),并通过使用作为do id一部分的置换令牌来重新排序对应数据块来恢复(在720中)do。如上所述,do id在do id的特定位置(例如,在开始)处包括一组置换令牌位。ed 150知道do id是如何配置的,以使ed 150能够解析do id以提取置换令牌。虽然718和720在图7中按特定顺序示出,但应当理解,在一些示例中,720可以在718之前执行。即,ed 150可以首先使用置换令牌来恢复do中数据块的正确顺序,然后使用reqpr对数据块进行解密以恢复do。
[0165]
图7示出了服务器110、服务器110的tee 130和ed 150之间的操作和交互,以便于理解。在一些方面,本发明可以体现在在这些实体中的任何一个实体中执行的操作中(为了本描述的目的,tee 130视为与服务器110分离的实体,但是tee 130可以是服务器110的物理部分)。现在描述服务器110、服务器110的给定tee 130和ed 150处的操作的流程图。
[0166]
图8是可以作为图7所示的操作的一部分,由服务器110执行的示例性方法800的流程图。特别地,方法800可以由服务器110执行的运营商服务器程序执行,并且在tee 130之外执行。一些步骤的细节可以已经参考图7描述,并且将不再赘述。
[0167]
在所示的流程图中,假设服务器110已经接收和存储由发布者108发布的压缩数据,并且已经从ed 150接收数据集id(例如,在握手过程期间)。在一些示例中,从发布者108接收压缩数据的步骤和/或从ed 150接收数据集id的步骤可以认为是方法800的一部分。
[0168]
在802中,服务器110从ed 150接收查询(例如,类似于图7的702)。查询包括加密的do id(例如,用tee pu加密)。需要说明的是,do id用标识存储在每个桶中的do的对应数据块的信息(例如,如上所述的指纹值)进行编码,并且do id还用用于排序对应数据块以便恢复do的信息(例如,如上所述的置换令牌)进行编码。
[0169]
在804中,服务器110将tee 130分配给包括压缩数据集的每个数据桶。服务器110将具有仍然加密的do id的查询转发到tee 130(例如,类似于图7的704)。
[0170]
在806中,服务器110将压缩数据从每个桶流传输到相应的分配tee 130(例如,类似于图7的708)。需要说明的是,来自每个桶的压缩数据的流传输可以使用并行数据流执行。
[0171]
在808中,服务器110从每个tee 130接收加密数据块(例如,类似于图7的714)。加密数据块可以并行地从所有tee 130接收。只有在步骤806中将所有数据都流传输之后,才
能从tee 130接收加密数据块。通过确保服务器110不能推断数据流的哪一部分与加密数据块对应,这可以有助于保护数据隐私。服务器110从步骤804中分配的所有tee 130采集加密数据块。
[0172]
在810中,服务器110将仍然加密的数据块发送到ed 150(例如,类似于图7的716)。传输可以是对在步骤802中接收的查询的响应的形式。
[0173]
需要说明的是,在图7和方法800的整个操作中,服务器110可能不知道do id的格式或配置。特别地,服务器110可能不知道数据块已经基于相似性被放置到桶中,并且do id包括置换令牌。
[0174]
图9是可以作为图7所示的操作的一部分,由服务器110内的给定tee 130执行的示例性方法900的流程图。特别地,方法900可以由tee 130执行tee程序执行,并受到保护免受服务器110检查。一些步骤的细节可以已经参考图7描述,并且将不再赘述。
[0175]
在所示的流程图中,假设tee 130已经被分配了特定桶,并被告知其分配桶的编号(或其它标识符)。在一些示例中,接收分配桶的标识符的步骤可以包括在方法900中。
[0176]
在902中,tee 130将加密的do id从服务器110接收到tee 130中(例如,类似于图7的704)。tee 130对do id进行解密(例如,使用其私钥)。如上所述,do id用标识存储在每个桶中的do的对应数据块的信息(例如,如上所述的指纹值)进行编码,并且do id还用用于排序对应数据块以便恢复do的信息(例如,如上所述的置换令牌)进行编码。
[0177]
在904中,tee 130从解密的do id确定属于其分配的数据桶的数据块的正确指纹值(例如,类似于图7的706)。例如,tee 130可以根据其已知格式解析do id,以便确定属于其分配桶的指纹值位(以及因此指纹值)的集合。可以说明的是,根据do id的格式,tee 130可能需要使用do id中编码的置换令牌来确定do id中编码的哪个指纹值位与其分配桶对应。
[0178]
在906中,tee 130从服务器110接收包括属于其分配桶的数据块的数据流(例如,类似于图7的708)。数据流可以是压缩数据,tee 130可以对流数据进行解码(或解压缩)。
[0179]
在908中,tee 130计算数据流中每个数据块的指纹值,并标识其指纹值与在步骤904中(例如,类似于图7的710)确定的正确指纹值匹配的特定数据块。该数据块缓存在tee 130的缓冲区中。其它数据块可能会被丢弃。
[0180]
在910中,tee 130加密数据块(例如,使用由ed 150提供的公钥),并将加密数据块从tee 130中发送到服务器110(例如,类似于图7的712和714)。
[0181]
图10是可以作为图7所示的操作的一部分,由ed 150执行的示例性方法1000的流程图。特别地,方法1000可以由ed 150执行的客户客户端程序执行。一些步骤的细节可以已经参考图7描述,并且将不再赘述。
[0182]
在所示的流程图中,假设ed 150已经验证tee 130(例如,使用握手过程),并且已经向服务器110提供数据集id。
[0183]
在1002中,ed 150向服务器110发送do查询(例如,类似于图7的702)。查询包括加密的do id(例如,用tee pu加密)。需要说明的是,do id用标识存储在每个桶中的do的对应数据块的信息(例如,如上所述的指纹值)进行编码,并且do id还用用于排序对应数据块以便恢复do的信息(例如,如上所述的置换令牌)进行编码。
[0184]
在1004中,ed 150响应于查询从服务器110接收加密数据块(例如,类似于图7的
716)。数据块可以使用由ed 150提供的公钥加密。ed 150可以使用其私钥(例如,类似于图7的718)对数据块进行解密。
[0185]
在1006中,ed 150解析do id以确定置换令牌。置换令牌提供信息,以使ed 150能够将数据块重新排序为正确的顺序,以恢复所请求的do。
[0186]
在1008中,ed 150对解密数据块进行重新排序,以恢复所请求的do(例如,类似于图7的720)。需要说明的是,在一些示例中,ed 150可以对加密数据块进行重新排序,并在重新排序之后进行解密。
[0187]
虽然上文已经关于来自一个ed 150的一个do查询描述了方法800和900,但在一些示例中,服务器110和tee 130可以使用类似的步骤并行地服务来自一个或多个ed 130的多个do查询。类似地,尽管上文已经关于来自ed 150的一个do查询描述了方法1000,但在一些示例中,ed 150可以使用类似的步骤并行地从一个或多个数据集查询一个以上do。可以采用其它此类变型。此外,在一些示例中,tee 130可以被分配多个桶(例如,来自同一数据集)以并行处理。
[0188]
虽然本发明参考了tee,但应当理解,示例可以使用其它形式的可信中间环境来实现,包括服务器内、ed内或某种其它网络实体处的任何可信环境。
[0189]
本发明描述了使用单个do id查询单个do,其中,do id对用于标识数据桶中的对应数据块的信息以及用于重新排序对应数据块以恢复do的信息进行编码。在一些示例中,用于标识对应数据块的信息(例如,每个相应桶内每个数据块的指纹值)和用于重新排序对应数据块的信息(例如,置换令牌)可以编码在单独的数据块中。例如,如果tee不需要置换令牌(例如,tee能够标识其分配桶的正确指纹值,而不必知道置换令牌),则置换令牌可以不编码到在查询中发送的do id中。而是,ed可以在本地保留置换令牌,以便重新排序数据块。
[0190]
在本文描述的各种示例中,本发明可以实现更高效的数据流分组,其考虑到关于数据对象的数据可压缩性的统计属性。这可以实现更高效和/或更有效的数据压缩。
[0191]
本发明还描述了用于使用基于指纹的方案生成数据对象标识符的示例。根据本发明的示例生成的数据对象标识符可以提供信息以允许数据对象的恢复,而不管数据块如何在数据桶之间合并和/或重新排序。由于数据对象标识符对用于标识数据桶之间的对应数据块的信息和用于重新排序数据块的信息进行编码,这使得重塑数据流以实现更高的压缩比的可能性成为可能。
[0192]
虽然本发明描述了内容交付网络(content-delivery network,cdn)上下文中的示例,但应当理解,本发明可以应用于其它领域。本文描述的示例可以用于实现不同的开放网络架构(例如,用于设计网络协议),等等。例如,在网络数据包的传输期间内容id可能被暴露的情况下,本发明可以用于保护数据隐私。
[0193]
此外,尽管本发明描述了静态数据上下文中的示例,但本文描述的示例可以推广到具有来自服务器运营商的保护的服务器端动态请求评估。
[0194]
尽管本发明利用呈某种顺序的步骤描述方法和过程,但所述方法和过程的一个或多个步骤可视情况省略或更改。一个或多个步骤可以按顺序执行,但不是按描述的顺序执行(视情况而定)。
[0195]
尽管描述了本发明,但至少部分地,就方法而言,本领域普通技术人员将理解,本
发明还涉及各种组件,用于通过硬件组件、软件或两者的任意组合执行所描述的方法的至少一些方面和特征。相应地,本发明的技术方案可通过软件产品的形式体现。合适的软件产品可以存储在预先记录的存储设备或其它类似的非易失性或非瞬时性计算机可读介质中,例如,dvd、cd-rom、usb闪存盘、可移动硬盘或其它存储介质等。所述软件产品包括有形地存储在其上的指令,这些指令使处理设备(例如,个人计算机、服务器或网络设备)能够执行本文中所公开的方法示例。
[0196]
本发明可以在不脱离权利要求书的主题的情况下以其它特定形式体现。所描述的示例性实施例在所有方面均被视为仅是说明性的而非限制性的。可以将上述一个或多个实施例中的选定特征组合以创建未明确描述的替代性实施例,理解适合此类组合的特征在本发明的范围内。
[0197]
还公开了公开范围内的所有值和子范围。此外,虽然本文所公开和示出的系统、设备和过程可以包括特定数量的元件/组件,但是可以修改这些系统、设备和组件以包括更多或更少此类元件/组件。例如,虽然所公开的任何元件/组件可以引用为单个数量,但是可以修改本文所公开的实施例以包括多个此类元件/组件。本文所述的主题意在涵盖和包括技术上的所有合适更改。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献