内容中心网络中的网络命名分段的制作方法

文档序号:12134605阅读:276来源:国知局
内容中心网络中的网络命名分段的制作方法与工艺

本申请一般涉及数字内容的分发。更具体地,本申请涉及基于分段协议(fragmentation protocol)在内容中心网络中安全高效地传输内容的系统和方法。



背景技术:

互联网和电子商务的激增继续产生大量的数字内容。设计出内容中心网络(CCN)架构来促进访问并处理这些数字内容。CCN包括实体或节点,诸如网络客户端、转发器(例如路由器)和内容生产者,他们通过发送对各种内容项目的兴趣包并接收返回的内容对象包来彼此通信。CCN兴趣和内容对象由其唯一的名称标识,该唯一的名称通常是分层结构的可变长度标识符(HSVLI)。HSVLI可以包括从最概括级到最具体级排序的连续名称组成。通常,兴趣和内容对象在能够到达其目的地前一要行进通过许多链路。每个链路可以具有其自己的最大传输单元(MTU),其中,不同的MTU极限强加不同的分段需求。端对端CCN分段在美国专利申请号14/065,691和14/067,587中描述,直通式(cut-through)转发具有IP封装的CCN消息分段在美国专利申请号14/309,681中描述。

与CCN有关的分段协议继续发展。CCN的一种安全的分段协议称为完整性保证和可选认证分段(FIGOA),这在发表于Computing Research Repository,1405.2861(2014),Ghali等人所著的“Secure Fragmentation for Content-Centric Networks”中有描述。FIGOA协议通过以下工作:创建通过散列计算链接在一起的分段,传输具有与兴趣的名称匹配的名称的分段,并在最后分段中包括签名。不过,根据FIGOA协议,内容生产者对最后的分段签名,这通过请求实体直到接收了所有分段为止,产生签名的延迟验证。这种延迟验证可能降低数据的总吞吐量,并且还可能导致注入恶意包,可能造成效率低,在网络中引入安全性问题。此外,FIGOA协议并不提供选择性请求重传特定分段的方法。当分段被丢弃时,请求实体重新请求整个数据流,造成网络中进一步的效率低下。



技术实现要素:

一个实施例提供一种促进通过网络高效安全传输内容的系统。操作中,所述系统通过中间节点接收与被分成多个分段的内容对象消息的分段对应的包。所述多个分段中的一个或多个分段指示唯一名称,所述唯一名称是包括从最概括级到最具体级排序的连续名称组成的分层结构可变长度标识符。所接收的分段指示中间状态,所述中间状态基于对来自前一分段的中间状态和所接收的分段中包括的数据执行的散列函数。响应于确定所接收的分段是第一分段,所述系统在未决兴趣表中识别兴趣的名称基于内容对象的散列并与所述第一分段对应的第一表项。

在一些实施例中,所接收的分段的名称指示所述中间状态和一个数字,所述数字指示与所接收的分段的开始字节对应的字节偏置。

在一些实施例中,所接收的分段的名称指示所述内容对象消息的摘要或区段(segment)标识符。

在一些实施例中,所述第一分段指示所述内容对象消息的生产者的数字签名。

在一些实施例中,所述第一分段不包括任何有效载荷或包括大小小于不要求重新分段的预定阈值的有效载荷。

在一些实施例中,所接收的分段指示区段标识符,所述区段标识符在内容对象消息的其它分段中指示,并标识与内容对象消息对应的分段和其它分段。

在一些实施例中,所接收的分段是内容对象消息的最后分段,并包括内容对象消息的生产者的数字签名,其中,所述数字签名创建内容对象消息的区段标识符和摘要之间的关系。

在一些实施例中,响应于确定所接收的分段是第一分段,中间节点基于内容对象消息的摘要或区段标识符在未决兴趣表中创建第二表项,并从未决兴趣表中去掉第一表项。响应于确定所接收的分段是随后分段,中间节点识别未决兴趣表中兴趣的摘要或区段标识符与随后分段对应的表项。

在一些实施例中,第一分段包括内容对象消息的总长度,其中,未决兴趣表中的相应表项包括总长度和转发的总字节数。响应于确定所接收的分段对应于未决兴趣表中的表项,所述系统基于所接收分段的长度和位置更新转发的总字节数。响应于确定转发的总字节数等于总长度,所述系统从未决兴趣表中去掉相应表项。

在另一实施例中,所述系统通过内容生产装置生成对兴趣消息作出响应的内容对象消息。所述系统将所述内容对象消息分成多个分段,其中,所述多个分段中的一个或多个分段指示唯一名称,所述唯一名称是包括从最概括级到最具体级排序的连续名称组成的分层结构可变长度标识符。所述系统基于对所述内容对象消息的初始矢量执行的散列函数计算第一分段的中间状态。此外,所述系统基于对来自前一分段的中间状态和随后分段的有效载荷执行的散列函数计算所述随后分段的中间状态。

在一些实施例中,所述内容生产装置在第一分段中包括内容生产装置的数字签名。

在一些实施例中,所述内容生产装置在第一分段中不包括任何有效载荷或包括大小小于不要求重新分段的预定阈值的有效载荷。

在一些实施例中,所述内容生产装置生成内容对象消息的区段标识符,并在多个分段的每个分段中包括所述区段标识符。

在一些实施例中,响应于确定内容对象消息完全生成,内容生产装置生成最后分段。内容生产装置基于对来自前一分段的中间状态和最后分段的有效载荷执行的散列函数计算完整内容对象消息的摘要。内容生产装置在最后分段中包括内容生产装置的数字签名,其中,所述数字签名创建内容对象消息的区段标识符和计算出的摘要之间的关系。

附图说明

图1图解说明根据本发明的实施例促进通过网络高效安全传输内容的示例性网络。

图2A图解说明根据本发明的实施例内容对象消息的第一分段的示例性格式。

图2B图解说明根据本发明的实施例内容对象消息的随后分段的示例性格式。

图2C图解说明根据本发明的实施例内容对象消息的第一分段的示例性格式,其中,内容对象消息是活动流的一部分。

图2D图解说明根据本发明的实施例内容对象消息的随后分段的示例性格式,其中,内容对象消息是活动流的一部分。

图2E图解说明根据本发明的实施例内容对象消息的最后分段的示例性格式,其中,内容对象消息是活动流的一部分。

图3A图解说明根据本发明的实施例的分段内容对象。

图3B呈现一个表,该表图解说明根据本发明的实施例与图3A的内容对象的分段对应的中间状态的链接散列计算。

图4A呈现一流程图,该流程图图解说明根据本发明的实施例内容生产装置对内容对象消息进行分段所执行的方法。

图4B呈现一流程图,该流程图图解说明根据本发明的实施例内容生产装置对内容对象消息进行分段所执行的方法。

图5A呈现一流程图,该流程图图解说明根据本发明的实施例内容生产装置对内容对象消息进行分段所执行的方法,其中,数据流是活动流。

图5B呈现一流程图,该流程图图解说明根据本发明的实施例内容生产装置对内容对象消息进行分段所执行的方法,其中,数据流是活动流。

图6A呈现一流程图,该流程图图解说明根据本发明的实施例中间节点处理内容对象消息的分段所执行的方法。

图6B呈现一流程图,该流程图图解说明根据本发明的实施例中间节点处理内容对象消息的分段所执行的方法。

图6C呈现一个表,该表图解说明根据本发明的实施例处理内容对象消息的分段的示例性算法。

图6D呈现一个表,该表图解说明根据本发明的实施例处理未决兴趣表中的内容对象消息的分段的示例性算法。

图7呈现一流程图,该流程图图解说明根据本发明的实施例中间节点处理内容对象消息的分段所执行的方法,其中,数据流是活动流。

图8图解说明根据本发明的实施例促进通过网络高效安全传输内容的示例性设备。

图9图解说明根据本发明的实施例促进通过网络高效安全传输内容的示例性计算机系统。

附图中,相同的附图标记指相同的附图元件。

具体实施方式

给出以下描述使得本领域技术人员能够制造和使用实施例,以下描述是在特定应用和其需求的背景下提供的。对所公开实施例的各种改进对本领域技术人员是非常显然的,在不偏离本申请的精神和范围下,本文中定义的一般原理可以应用于其它实施例和应用。因此,本发明不局限于所显示的实施例,而是给予与本文中公开的原理和特征一致的最宽范围。

概述

本发明的实施例提供一种系统,其基于使用高效签名验证并允许选择性重传个别分段的分段协议促进通过内容中心网络传输内容。用于传输CCN内容的一个分段方案称作完整性保证和可选认证分段(FIGOA)。根据FIGOA方案,内容生产者可以对内容对象进行分段,将分段与散列链链接,其中,每个分段包含基于来自前一分段的中间状态和来自相应分段的数据计算的中间状态。FIGOA中的每个分段包括内容对象消息的全名,而生产者的签名只包括于最后分段中。签名验证依赖于散列链的最后状态,此状态只在接收最后分段时才能计算。此外,因为相同的名称包括于每个分段中,所以FIGOA并不提供对特定分段或特定分段组执行重传请求的方式。

本发明的实施例通过提供也称作网络命名分段(NNF)协议的分段协议并直接地寻址各个CCN内容对象分段解决了这些不足,NNF协议允许进行更加高效的签名验证。在NNF协议中,内容生产者的签名包括于第一分段中,这使得签名是立即可验证的。后面的分段各自包含中间状态,该中间状态基于相应分段的数据和来自前一分段的中间状态的散列。因此,第一分段上的签名创建分段的剩余部分的可信散列链的根。

此外,NNF协议基于某些状态特征唯一地标识每个分段,这些状态特征诸如总摘要、有效载荷偏置和中间状态(如参照图2A-2B在下文描述的)。这些状态特征能够被编码到分段的名称中,允许选择性重传特定分段。编码名称允许内容请求者(或中间节点)在确定还没有接收到流的特定分段时,通过其唯一名称选择性请求该分段,因此消除了重新请求整个流的必要。

分段内容的总长度不局限于特定长度,这允许传输大的有效载荷。基于NNF协议发送的内容可以是具有已知摘要的非常长的内容(例如视频文件),或者可以是摘要直到区段的结束才能知道的区段(例如活动视频流)。在区段化流的情况下,基于NNF协议发送数据的内容生产者能够在每个区段中生成并包括相同的区段标识符。生产者只在总摘要已知(例如已基于前一散列链的中间状态计算出)之后对最后的分段签名,因此将区段标识符绑定到总摘要。

以下术语描述CCN架构的元素:

内容对象(或“ContentObject”):单一一项命名数据,其绑定到唯一名称。内容对象是“永久的”,这意味着内容对象可以在计算装置内或者在不同的计算装置中移动,但不会改变。如果内容对象的任何组成变化,则出现变化的实体创建包括更新内容的新内容对象,将新内容对象绑定到新唯一名称。

唯一名称(Unique Name):CCN中的名称通常是与位置无关的,唯一地标识内容对象。数据转发装置不管内容对象的网络地址或物理位置如何,可以使用名称或名称前缀将包向生成或存储内容对象的网络节点转发。在一些实施例中,名称可以是分层结构的可变长度标识符(HSVLI)。HSVLI可以分成几个分层组成,这些组成可以以各种方式构造。例如,个别的名称组成parc、home、ccn、和test.txt可以以左对齐的前缀为主的方式构造,形成名称“/parc/home/ndn/test.txt”。因此,名称“/parc/home/ccn”可以是“/parc/home/ccn/test.txt”的“父”或“前缀”。附加组成可以用来区分内容项目的不同形式,诸如合作文档。

在一些实施例中,名称可以包括不分层标识符,诸如由内容对象的数据(例如检验和值)和/或从内容对象的名称的组成导出的散列值。基于散列的名称的描述在发明人Ignacio Solis于2013年3月20日申请的美国专利申请号13/847,814(名称为“ORDERED-ELEMENT NAMING FOR NAME-BASED PACKET FORWARDING”)中描述。名称还可以是扁平标签(flat label)。后面,“名称”用来指在命名数据网络中一条数据的任何名称,诸如层次名称或名称前缀,扁平名称(flat name),固定长度的名称,任意长度的名称,或者标签(例如多协议标签交换(MPLS)标签)。

兴趣(或“Interest”):指示对一条数据的请求的包,包括该条数据的名称(或名称前缀)。数据消费者可以在信息中心网络中传播请求或兴趣,CCN路由器可以向可以提供请求数据以满足请求或兴趣的存储装置(例如缓存服务器)或数据生产者播送。

本文中公开的方法不局限于CCN网络,还可以应用于其它架构。CCN架构的描述在美国专利申请号12/338,175中描述(发明人Van L.Jacobson和Diana K.Smetters于2008年12月18日申请,名称为“CONTROLLING THE SPREAD OF INTERESTS AND CONTENT IN ACONTENT CENTRIC NETWORK”)。

示例性网络和通信

图1图解说明根据本发明的实施例促进通过网络高效安全地传输内容的示例性网络100。网络100可以是内容中心网络(CCN),可以包括客户端装置116、内容生产装置118和在节点102、104、106、108、110、112和114上的路由器或其它转发装置。CCN路由器可以是驻存在IP路由器之上的CCN转发装置。换言之,CCN可以实现为IP之上的覆盖(overlay)。其它CCN覆盖架构也是可行的。节点可以是计算机系统、代表用户的端点和/或能够产生兴趣或发起内容的装置。

请求实体(诸如装置116)能够产生对一项内容的兴趣,并把兴趣发送到节点102。中间节点(诸如CCN路由器102、104、112和114)可以接收并转发该兴趣。内容生产者(诸如装置或内容生产者118)能够满足所请求的兴趣。生产者118能够将作出响应的内容对象130分成x个分段,例如分段130.1-130.x。生产者118可以对第一分段签名(如关于图2A和图2B在下文描述的),并产生剩余分段的可信散列链(如关于图3A和图3B在下文描述的)。生产者118可以立即开始转发分段130.1-130.x,这些分段将通过与兴趣相反(例如到节点114、112、104和102)的路径,到达装置116。一旦接收第一分段(例如分段130.1),装置116能够立即验证第一分段的签名,这产生分段的剩余部分的可信散列链的根。装置116能够高效地继续接收可信分段的剩余部分,不会(如同FIGOA协议的情况)出现由只可能在已经接收最后分段时出现的签名验证带来的延迟。注意在CCN中,中间节点能够执行签名验证,但不要求这样做。因此,对于由中间节点执行的签名验证可以获得与请求装置相同的效率。装置116能够接收内容对象分段130.1-130.x,并重新组合内容对象130。

重要的是要注意到当提前知道总摘要和总长度时,消费者对第一分段签名的好处。相反,如果对最后分段签名,则消费者必须缓存所有之前的分段,并等待接收所有内容,验证签名之后才能使用数据。检查签名的防火墙系统必须同样地或者缓存所有分段,或者使分段通过,只有在没能通过验证时丢弃最后分段。因为第一分段是签名的,所以消费者能够与接收后面的分段并行地开始签名验证,这与最后分段开始签名相反,其中,签名验证时间不能分摊在网络时间上。在Güneysu等人所著的“Software Speed Records for Lattice-Based Signatures”,Post-Quantum Cryptography,Volume 7932:67-82,Lecture Notes in Computer Science(“Güneysu”)中可以看到一个示例。Güneysu发现RSA2048位签名验证耗费77,032个CPU周期,椭圆曲线耗费209,328个CPU周期,优化的点阵签名验证耗费45,036个CPU周期。假设CPU为3GHz,这些时间分别是25.6微秒、69.8微秒和15.0微秒。在10Gbps的链路上,1500个字节的包耗费大约1.2微秒,所以这些延迟介于12.5到58个分组时间。

CCN内容对象消息分段的示例性格式

图2A图解说明根据本发明的实施例内容对象消息的第一分段210的示例性格式。第一分段210可以包括以下字段:名称211,其可以指示内容对象的名称,还包括具体标识分段的编码信息;总摘要212,它是CCN内容对象消息的整个分段有效载荷的摘要;有效载荷偏置213,它是该分段开始的字节偏置;中间状态214,它是基于初始矢量和与此分段关联的有效载荷或数据(例如数据216)计算的值;总长度215,它是整个分段有效载荷的总长度;数据216,它是此分段的有效载荷,是计算中间状态214的散列函数的输入字段之一;签名217,它是内容对象消息的生产者的签名。如关于图6A在下文描述的,第一分段210不能够被中间节点重新分段。因此,第一分段210可以不包含任何有效载荷(例如没有数据216),或者可以包含大小比网络的已知MTU小的有效载荷。

图2B图解说明根据本发明的实施例内容对象消息的随后分段220的示例性格式。随后分段220可以包括与图2A的第一分段210相似的字段。例如,随后分段220可以包括以下字段:名称221;总摘要222;有效载荷偏置223;中间状态224和数据225。当支持CCN无名称对象时(如美国专利申请号14/337,026中描述的),名称221在随后分段可以是可选的。根据NNF协议,名称包括于第一分段中。随后分段220的中间状态224是基于对前一分段的中间状态214(例如第一分段210的中间状态214)执行的散列函数计算出来的。

当散列链和最后的总摘要提前已知时,例如对已知文件分段时,总摘要212和222可以分别包括于第一分段210和随后分段220中。NNF协议针对以已知长度的区段传输的具有延迟摘要计算的未终结数据流(例如活动流)的情况提供稍微不同的格式。图2C图解说明根据本发明的实施例内容对象消息的第一分段230的示例性格式,其中,内容对象消息是活动流的一部分。第一分段230可以包括与图2A的第一分段210相似的字段。例如,第一分段230可以包括以下字段:名称231;有效载荷偏置233;中间状态234和数据236。第一分段230还可以包括区段标识符232,其由内容生产者产生,并包括于例如活动数据流的所有分段中。此外,第一分段230可以包括总长度235,它在流的总长度未知时,可以包括当前区段的长度。与第一分段210不同,第一分段230不包括签名。

图2D图解说明根据本发明的实施例内容对象消息的随后分段240的示例性格式,其中,内容对象消息是活动流的一部分。随后分段240可以包括与第一分段230相似的字段。例如,随后分段可以包括名称241、区段标识符242、有效载荷偏置243、中间状态244和数据245。随后分段240不包括签名或总长度。

图2E图解说明根据本发明的实施例内容对象消息的最后分段250的示例性格式,其中,内容对象消息是活动流的一部分。最后分段250可以包括与第一分段230相似的字段。例如,最后分段250可以包括名称251、区段标识符252、有效载荷偏置253、中间状态254和数据255。除这些字段之外,最后分段250可以包括总摘要256,它是生产者基于所有分段数据的散列链计算的(如关于图5B在下文描述的)。最后分段250还可以包括内容的生产者的签名257,其中,签名257将总摘要绑定到该内容对象消息的区段标识符。

图3A图解说明根据本发明的实施例的分段内容对象300。内容对象300包括第一分段310,第一分段310包括名称311、总摘要312、有效载荷偏置313、中间状态314(“IS0”)、数据315(“DATA0”)和签名316。分段320、330、340和350包括与第一分段310相似的字段,但不包括签名字段。

图3B呈现一个表360,该表图解说明根据本发明的实施例与图3A的内容对象300的分段310-350对应的中间状态的链接散列计算。在第一分段310中,中间状态314(IS0)是基于第一分段310的初始矢量和数据315(DATA0)的散列计算的。在随后分段320中,中间状态324(IS1)是基于前一分段的中间状态(分段310的IS0)和分段320的数据325(DATA1)的散列计算的。每个随后分段包括基于前一分段的中间状态和该随后分段的数据的散列计算的中间状态。最后,分段350的总摘要352是基于第一分段的中间状态(分段350的IS4)的函数计算的。该函数可以是散列函数或基于输入最后确定输出的其它任何函数。

选择性重传一个分段或若干分段

因为NNF协议基于例如{Name(名称)、OverallDigest(总摘要)、PayloadOffset(有效载荷偏置)、IntermediateState(中间状态)}唯一地标识每个分段,所以这些特征中的一些可以编码到名称中,以唯一地寻址用于选择性重传的分段。例如,总摘要(“OD”)、有效载荷偏置(“PO”)和中间状态(“IS”)可以编码到分段的名称中:

/parc.com/movie.alto.mkv/OD=123abc/PO=4096/IS=653efa (1)

通过使用此命名约定,请求实体或中间节点能够选择性请求特定分段。

并不要求命名每个分段。生产者例如可以对每三个分段进行命名。如果MTU为1500字节,则在这种情况下重传窗是4500字节。当消费者丢失这个块中的一个或多个分段时,只需要发送对最接近的之前命名分段的兴趣,并且将接收该命名块中所有分段的重传。

注意第一分段有两个名称。有通用名称,例如“/parc/com/movie.alto.mkv”,其检索所有分段,有分段名称,例如“/parc/com/movie.alto.mkv/OD=123abc/PO=0/IS=6a09e667…”,其中,在此情况下的IS是SHA-256初始矢量。分段名称只检索第一分段或第一分段块,而不是像通用名称检索整个分段组。

与上面的名称(1)相似,生产者可以用区段ID(Segment ID)来代替总摘要对区段的各分段命名:

/parc/com/movie.alto.mkv/SID=444ddd/PO=4096/IS=135ace (2)

如果并非所有分段都具有一个名称,则具有与名称(2)相似名称的兴趣能够重传各个区段的分段或区段的分段块。

此外,请求实体能够通过包括名称和附加的有效载荷大小来选择性请求分段的子集或链。例如,考虑具有以下名称的兴趣:

/parc.com/movie.alto.mkv/OD=123abc/PO=4096/IS=653efa/PS=8192 (3)

如果每个分段的大小为1024B,则具有名称(3)的兴趣返回在字节偏置4096开始的四个分段组成的链。也可以进行重传。例如,考虑具有以下名称的兴趣:

/parc.com/movie.alto.mkv/OD=123abc/PO=4096/IS=653efa/PS=7680 (4)

与具有名称(3)的兴趣相似,具有名称(4)的兴趣返回四个分段组成的链。然而,该链的第四分段被重新分成512B。

分割已知长度的内容对象

图4A呈现一流程图400,该流程图图解说明根据本发明的实施例内容生产装置对内容对象消息进行分段所执行的方法。操作中,系统通过内容生产装置或内容生产者生成响应于兴趣消息的内容对象消息(操作402)。内容生产者将内容对象消息分成多个分段,其中,一个或多个分段指示为HSVLI的唯一名称,其包括从最概括级到最具体级排序的连续名称组成(操作404)。内容生产者基于对该内容对象消息的初始矢量和该第一分段的有效载荷或数据执行的散列函数,计算第一分段的中间状态(操作406)。内容生产者通过在第一分段中包括该内容生产者的数字签名来对第一分段签名(操作408)。内容生产者基于对来自前一分段的中间状态和随后分段的有效载荷或数据执行的散列函数计算随后分段的中间状态(操作410)。内容生产者判断随后分段是否是最后分段(判断412)。如果不是,则内容生产者在下一随后分段上执行操作410。如果是最后分段,则操作如图4B的标记A描述的继续。

图4B呈现一流程图450,该流程图图解说明根据本发明的实施例内容生产装置对内容对象消息进行分段所执行的方法。操作中,系统通过内容生产装置或内容生产者基于最后分段的中间状态计算内容对象消息的总摘要(操作452)。内容生产者在第一分段和所有随后分段中包括总摘要(操作454)。内容生产者然后通过基于兴趣消息的相反路径(图4A的操作402中描述的)将每个分段发送到下一跳CCN节点来转发所有分段。

分割未知长度的内容对象

图4A和4B描绘提前知道摘要时例如针对象视频文件的已知长度的文件根据NNF协议的分段。在一些实施例中,摘要提前是不知道的,例如对于象活动数据流的未知长度的文件。图5A呈现一流程图500,该流程图图解说明根据本发明的实施例内容生产装置对内容对象消息进行分段所执行的方法,其中,数据流是活动流。操作中,系统通过内容生产装置或内容生产者生成对兴趣消息进行响应的内容对象消息(操作502)。内容生产者将内容对象消息分成多个分段,其中,一个或多个分段指示为HSVLI的唯一名称,其包括从最概括级到最具体级排序的连续名称组成(操作504)。内容生产者基于对内容对象消息的初始矢量和第一分段的有效载荷或数据执行的散列函数计算第一分段的中间状态(操作506)。内容生产者生成内容对象消息的区段标识符(操作508),并在第一分段中包括区段标识符(操作510)。内容生产者通过基于兴趣消息的相反路径将第一分段发送到下一跳CCN节点来转发第一分段(操作512)。操作如图5B的标记B描述的继续。

图5B呈现一流程图550,该流程图图解说明根据本发明的实施例内容生产装置对内容对象消息进行分段所执行的方法,其中,数据流是活动流。操作中,内容生产者基于对来自前一分段的中间状态和随后分段的有效载荷或数据执行的散列函数计算随后分段的中间状态(操作552)。内容生产者在随后分段中包括区段标识符(操作554)。内容生产者通过基于兴趣消息的相反路径将随后分段发送到下一跳CCN节点来转发随后分段(操作556)。

内容生产者然后判断随后分段是否是最后分段(判断558)。如果不是,则内容生产者对下一随后分段重复操作552、554和556。如果是最后分段,则内容生产者基于最后分段的中间状态计算内容对象消息的总摘要(操作560),并在最后分段中包括总摘要(操作562)。内容生产者通过在最后分段中包括内容生产者的数字签名来对最后分段签名,其中,数字签名产生区段标识符和总摘要之间的关系或绑定(操作564)。最后分段可以是不包含任何有效载荷的末尾对象,可以在计算总摘要的处理延迟之后传输。因为末尾对象是签名的,所以末尾对象的大小仍然很小,以避免被中间节点重新分段。

内容生产者然后通过基于兴趣消息的相反路径将最后分段发送到下一跳CCN节点来转发最后分段(操作566)。注意,尽管将操作512描述为出现在操作556和566之前,但第一分段可以不在其它分段之前到达(例如随后分段和最后分段)。诸如内容消费者的请求实体在信任、处理和重新组合剩余分段之前处理第一分段,作为散列链的根。

处理已知长度的内容对象的分段

图6A呈现一流程图600,该流程图图解说明根据本发明的实施例中间节点处理内容对象消息的分段所执行的方法。操作中,系统通过中间节点接收名称为HSVLI的兴趣消息(操作602)。兴趣还可以包括内容对象散列限制。例如,名称可以是包括内容对象散列限制的基于散列的名称。中间节点在其未决兴趣表(PIT)中增加兴趣消息的表项,包括名称,并且如果包括名称还包括内容对象散列(操作604)。中间节点随后接收与被分成多个分段的内容对象消息的分段对应的包(操作606)。多个分段中的一个或多个指示为HSVLI的唯一名称。接收的分段指示中间状态,该中间状态基于对来自前一分段的中间状态和接收的分段中包括的数据执行的散列函数。

中间节点判断接收的分段是否是第一分段(判断608)。如果接收的分段是第一分段,则中间节点基于第一分段的名称或内容对象散列在PIT中识别相应表项(“第一表项”)(操作610)。第一分段可以是签名内容对象,包括名称、KeyId(密钥标识)、内容对象散列、总长度和总摘要。中间节点基于第一分段中包括的总摘要在PIT中创建新表项(“第二表项”),并从PIT中去掉第一表项(操作612)。第二PIT表项还可以包括总长度。因为在第一分段中包括签名,所以中间节点能够可选地执行签名验证过程(操作614)。中间节点还能够通过计算初始矢量和来自第一分段的数据的散列并将结果与第一分段中包括的中间状态进行比较(图6A中没有显示),来验证内容。对第一分段计算散列,这与FIGOA不同,在FIGOA中,兴趣的内容对象散列与总摘要值匹配,这只有在接收完所有分段之后才能验证。因此,根据NNF协议,第一分段不包含任何有效载荷,或者包含尺寸小的有效载荷,使得中间节点不会对第一分段重新分段。

如果接收的分段不是第一分段,则中间节点基于名称或总摘要在PIT中识别相应表项(例如第二表项)(操作616)。中间节点能够通过计算来自前一分段的中间状态和来自接收分段的数据的散列,并将结果与接收的分段中包括的中间状态进行比较来验证内容(操作618)。操作然后如图6B中的标记C描述的继续。

图6B呈现一流程图650,该流程图图解说明根据本发明的实施例中间节点处理内容对象消息的分段所执行的方法。操作中,中间节点通过基于识别的PIT表项(例如第二表项)中列出的接口将接收的分段发送到下一跳CCN节点来转发所接收的分段(操作652)。中间节点基于所接收的分段的长度和位置更新转发的总字节数(操作654)。中间节点判断转发的总字节数是否等于内容对象消息的总长度(如第二PIT表项中指示的)(操作656)。如果不等于,则操作返回。如果等于,则中间节点清除相应PIT表项(例如第二PIT表项)(操作658)。

处理内容对象的分段的示例性算法

图6C呈现一个表670,该表图解说明根据本发明的实施例处理内容对象消息的分段的示例性算法1。注意,不要求中间节点缓存任何分段,因为重新组合缓存“Buffer”只存储表项链{CurrentIS、NextIS、PayloadOffset、PayloadEnd}。中间节点按照PayloadOffset的顺序存储表项。中间节点创建具有SHA-256初始值、PayloadOffset为0、PayloadEnd为0的初始缓存表项。所有接收的分段形成初始缓存表项的链。下面的四个规则按照FIGOA:第一规则存储没有前任或继任的单元素(步骤6-7);第二规则存储继续前一分段的分段(步骤8-9);第三规则存储在分段之前的分段(步骤10-11);第四规则存储在两个已有分段之间的分段(步骤12-13)。一旦存储并验证分段,则中间节点更新“按顺序”验证的长度,以跟踪散列链中验证的字节数。一旦验证OverallLength(总长度)字节(指示接收所有分段),则中间节点可以验证OverallDigest(总摘要)。如果当前分段是中间节点验证OverallDigest的分段,则中间节点能够在本地将此包标记为“最后分段”以指示PIT可以清除其状态。

图6D呈现一个表680,该表图解说明根据本发明的实施例处理未决兴趣表中的内容对象消息的分段的示例性算法2。如果各分段是按顺序接收的,则第一分段具有与已有的PIT表项匹配的名称。中间节点然后通过OverallDigest(总摘要)创建新PIT表项,并通过名称去掉该PIT表项。通过算法1,随后分段输出将匹配OverallDigest(总摘要)。然而,如果分段不是按顺序接收的,则算法2涵盖几种条件。如果PIT表项的OverallDigest(总摘要)存在,则中间节点沿该PIT表项转发(步骤4-7)。如果分段在名称中含有分段状态,则可能是重传,并且通过名称能够与其自己的PIT表项匹配(步骤8-12)。如果前一查询失败,则中间节点根据OverallDigest(总摘要)创建PIT表项(步骤13-20)。如果命名分段在块命名分段之前到达,命名分段在名称中包含分段状态,则中间节点从名称中去掉分段状态,继续块命名分段(步骤21-25)。

处理未知长度的内容对象的分段

图7呈现一流程图700,该流程图图解说明根据本发明的实施例中间节点处理内容对象消息的分段所执行的方法,其中,数据流是活动流。图7的前三个操作(702、704和706)与图6A的操作602、604和606相似。主要不同在于在步骤706中,接收的分段包括区段标识符而不是总摘要,签名包括于最后分段中而不是第一分段中。一旦接收分段,中间节点基于名称、区段标识符或第一分段的内容对象散列在PIT中识别相应表项(“第二表项”)(操作708)。在一些实施例中,如果所接收的分段是第一分段,则中间节点基于名称在PIT中识别第一表项,基于区段识别符创建第二表项,并从PIT中去掉第一表项(未显示)。中间节点通过计算来自前一分段的中间状态和来自所接收分段的数据的散列并将结果与接收的分段中包括的中间状态比较,来验证内容(操作710)。中间节点判断所接收的分段是否是最后分段(判断712)。如果所接收的分段不是最后分段,则操作如图6B的标记C描述的继续。如果所接收的分段是最后分段,则因为最后分段中包括签名,所以中间节点能够可选地执行签名验证过程(操作714)之后,继续如图6B的标记C描述的过程。

示例性设备和计算机系统

图8图解说明根据本发明的实施例促进通过网络高效安全传输内容的示例性设备800。设备800可以包括可以通过有线或无线通信信道彼此通信的多个模块。设备800可以使用一个或多个集成电路实现,可以包括比图8中所示的更多和更少的模块。而且,设备800可以集成到计算机系统中,或者实现为能够与其它计算机系统和/或装置通信的单独的装置。具体地,设备800可以包括通信模块802、未决兴趣表维持模块804、内容分段模块806、状态计算模块808和安全模块810。

在一些实施例中,通信模块802可以向计算机网络诸如内容中心网络上的其它网络节点发送数据包和/或从其接收数据包,其中,数据包可以对应于被分成多个分段的内容对象消息的分段。响应于确定所接收的分段是第一分段,PIT维持模块804能够:识别PIT中对于兴趣的第一表项,该兴趣的名称基于内容对象的散列并对应于第一分段;基于内容对象消息的摘要或区段标识符,在PIT中创建第二表项;以及从PIT中去掉第一表项。响应于确定所接收的分段是随后分段,PIT维持模块804能够识别未决兴趣表中对于兴趣的表项,该兴趣具有与随后分段对应的摘要或区段标识符。响应于确定所接收的分段对应于未决兴趣表中的表项,PIT维持模块804能够基于所接收分段的长度和位置更新转发的总字节数。响应于确定转发的总字节数等于总长度,PIT维持模块804还能够从PIT中去掉相应表项。

内容分段模块806能够通过内容生产装置生成对兴趣消息进行响应的内容对象消息,并且能够将内容对象消息分成多个分段。内容分段模块806在第一分段中还可以不包括任何有效载荷,或者可以包括大小小于不要求重新分段的预定阈值的有效载荷。状态计算模块808能够基于对内容对象消息的初始矢量执行的散列函数计算第一分段的中间状态。状态计算模块808还能够基于对来自前一分段的中间状态和随后分段的有效载荷执行的散列函数计算随后分段的中间状态。

安全模块810可以在第一分段中包括内容生产装置的数字签名。内容分段模块806可以生成内容对象消息的区段标识符,并且可以在多个分段的每个分段中包括区段标识符。响应于确定完全生成内容对象消息,内容分段模块806可以生成最后分段。状态计算模块808可以基于对来自前一分段的中间状态和最后分段的有效载荷执行的散列函数计算完整内容对象消息的摘要。安全模块810在最后分段中可以包括内容生产装置的数字签名。

图9图解说明根据本发明的实施例促进通过网络高效安全传输内容的示例性计算机系统。计算机系统902包括处理器904、存储器906和存储装置908。存储器906可以包括充当管理存储器的易失性存储器(例如RAM),并且可以用来存储一个或多个内存池。而且,计算机系统902可以耦连到显示装置910、键盘912和定位装置914。存储装置908可以存储操作系统916、内容处理系统918和数据930。

内容处理系统918可以包括指令,这些指令在由计算机系统902执行时,可以使计算机系统902执行本申请中描述的方法和/或过程。具体地,内容处理系统918可以包括用于向计算机网络诸如内容中心网络上的其它网络节点发送数据包和/或从其接收数据包的指令(通信模块920)。例如,内容处理系统918可以包括用于通过中间节点接收与被分成多个分段的内容对象消息的分段对应的数据包的指令(通信模块920)。

内容处理系统918可以包括用于响应于确定所接收的分段是第一分段识别PIT中兴趣的名称基于内容对象的散列并对应于第一分段的第一表项的指令(PIT维持模块922)。内容处理系统918还可以包括基于内容对象消息的摘要或区段标识符在PIT中创建第二表项并从PIT中去掉第一表项的指令(PIT维持模块922)。内容处理系统918可以包括响应于确定所接收的分段是随后分段,在未决兴趣表中识别兴趣的摘要或区段标识符与随后分段对应的表项(PIT维持模块922)。内容处理系统918还可以包括响应于确定所接收的分段对应于未决兴趣表中的表项,基于接收的分段的长度和位置更新转发的总字节数的指令。内容处理系统918另外可以包括响应于确定转发的总字节数等于总长度从PIT中去掉相应的表项的指令(PIT维持模块922)。

内容处理系统918可以包括用于生成响应于兴趣消息的内容对象消息并且可以将内容对象消息分成多个分段的指令(内容分段模块924)。内容处理系统918可以包括在第一分段中不包括任何有效载荷或包括大小小于不要求重新分段的预定阈值的有效载荷的指令(内容分段模块924)。

内容处理系统918可以包括用于基于对内容对象消息的初始矢量执行的散列函数计算第一分段的中间状态,并用于基于对来自前一分段的中间状态和随后分段的有效载荷执行的散列函数计算随后分段的中间状态的指令(状态计算模块926)。

内容处理系统918还可以包括用于在第一分段中包括内容生产装置的数字签名的指令(安全模块928)。内容处理系统918可以包括用于生成内容对象消息的区段标识符并用于在多个分段的每个分段中包括区段标识符的指令(内容分段模块924)。内容处理系统918可以包括用于响应于确定完全生成内容对象消息,生成最后分段的指令(内容分段模块924)。内容处理系统918可以包括用于基于对来自前一分段的中间状态和最后分段的有效载荷执行的散列函数计算完整内容对象消息的摘要的指令(状态计算模块926),以及在最后分段中包括内容生产装置的数字签名的指令(安全模块928)。

数据930可以包括通过本申请中描述的方法和/或过程作为输入请求的或作为输出生成的任何数据。具体地,数据930可以存储至少:与被分成多个分段的内容对象消息的分段对应的包;唯一名称,其为包括从最概括级到最具体级排序的连续名称组成的HSVLI;名称,其基于内容对象的散列或其指示摘要;分段的中间状态,其基于对来自前一分段的中间状态和该分段中包括的数据执行的散列函数;未决兴趣表;内容对象的摘要;区段标识符;与分段的开始字节对应的字节偏置;内容对象的总长度;有效载荷大小;未决兴趣表中的表项;内容生产装置的数字签名;转发的总字节数;以及指示中间状态、字节偏置和摘要的名称。

在此详细描述中描述的数据结构和代码通常存储于计算机可读存储介质上,计算机可读存储介质可以是可以存储代码和/或数据以由计算机系统使用的任何装置或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁和光存储装置(诸如磁盘驱动器、磁带、CD(光盘)、DVD(数字通用盘或数字视频盘))或能够存储计算机可读介质的现在已知或以后开发的其它介质。

在详细描述部分描述的方法和过程可以体现为代码和/或数据,这些代码和/或数据可以存储在如上文描述的计算机可读存储介质中。当计算机系统读、执行计算机可读存储介质上存储的代码和/或数据时,计算机系统执行体现为数据结构和代码并存储于计算机可读存储介质中的方法和过程。

而且,上面描述的方法和过程可以包括于硬件模块中。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、现在已知或以后开发的其它可编程逻辑器件。当硬件模块被激活时,他们执行硬件模块中包括的方法和过程。

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