安全内容描述转让专利

申请号 : CN200780006816.3

文献号 : CN101390070B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·希德瑞J·L·米勒A·克莱门茨C·康特西迪斯P·R·罗德里洛斯R·韦斯

申请人 : 微软公司

摘要 :

本发明描述了一种用于内容分发网络的控制节点以及一种在网络中的节点处自动验证通过该网络分发的内容的方法。在该方法中,接收内容描述符,该内容描述符包括内容标识符、发布者标识符、发布者授权信息和内容检验信息。检验该信息的完整性和有效性,并且如果通过了这两个检验,则储存该内容描述。

权利要求 :

1.一种在网络中的节点处自动验证通过所述网络分发的内容的方法,所述方法包括:接收关于由发布者节点发布的内容片段的内容描述,所述内容描述包括内容标识符、发布者标识符、发布者授权信息和内容检验信息;

检验所述内容描述的完整性;

检验所述内容描述的有效性,其中检验所述内容描述的有效性包括:访问由所述发布者发放的证书撤消列表;

确认所述内容描述没有被包括在所述证书撤消列表上;以及确认所述发布者授权信息是有效的,其中所述发布者授权信息包括关于授权主体的标识符,并且其中确认所述发布者授权信息是有效的包括:访问由所述授权主体发放的证书撤消列表;

确认所述发布者标识符没有被包括在所述证书撤消列表上;以及如果通过了所述完整性和有效性两个检验,则储存所述内容描述。

2.如权利要求1所述的方法,其特征在于,所述内容描述是自证明数据结构,其中所述自证明指的是该结构包含其自身未被篡改的证明的事实。

3.如权利要求2所述的方法,其特征在于,检验所述内容描述的完整性包括:检验与所述内容描述相关联的密码签名。

4.如权利要求1所述的方法,其特征在于,所述内容描述还包括起始时间和到期时间,并且其中检验所述内容描述的有效性还包括:检验当前时间在所述内容描述的起始时间之后且在到期时间之前。

5.如权利要求1所述的方法,其特征在于,还包括:从对等体接收请求;以及

向所述对等体提供所述内容描述。

6.如权利要求1所述的方法,其特征在于,还包括:周期性地重新检验所述内容描述的有效性;以及如果所述内容描述是无效的,则删除所述内容描述。

7.如权利要求1所述的方法,其特征在于,所述节点包括控制节点或对等体。

8.一种内容分发系统(100)中的节点,包括:用于接收关于由发布者节点发布的内容片段的内容描述的装置,所述内容描述包括内容标识符、发布者标识符、发布者授权信息和内容检验信息;

用于检验所述内容描述的完整性的装置;

用于检验所述内容描述的有效性的装置,其中用于检验所述内容描述的有效性的装置包括:用于访问由所述发布者发放的证书撤消列表的装置;

用于确认所述内容描述没有被包括在所述证书撤消列表上的装置;以及用于确认所述发布者授权信息是有效的装置,其中所述发布者授权信息包括关于授权主体的标识符,并且其中确认所述发布者授权信息是有效的装置适于:访问由所述授权主体发放的证书撤消列表;

确认所述发布者标识符没有被包括在所述证书撤消列表上;以及用于储存所述内容描述的存储,其中所述存储被安排成仅当通过了所述完整性和有效性两个检验时才储存所述内容描述。

9.如权利要求8所述的节点,其特征在于,所述内容描述是自证明数据结构,其中所述自证明指的是该结构包含其自身未被篡改的证明的事实。

10.如权利要求8所述的节点,其特征在于,所述内容描述还包括起始时间和到期时间,其中所述节点还包括时钟,并且其中所述用于检验有效性的装置还包括:用于检验所述时钟上的当前时间在所述内容描述的起始时间之后且在到期时间之前的装置。

11.一种用于内容分发系统(100)的控制节点(103),所述内容分发系统(100)包括如权利要求8所述的节点。

12.一种用于内容分发系统(100)的对等体(105),所述内容分发系统(100)包括如权利要求8所述的节点。

13.一种内容分发系统(100),所述内容分发系统(100)包括如权利要求11或12所述的至少一个节点。

说明书 :

背景

业已开发出能让诸如软件更新和关键补丁之类的数据分发至网络内各节点的内容分发系统。这些系统通常包括位于网络中的许多服务器,其中各节点直接连接至服务器之一来下载所需文件。然而,这些系统受到与服务器的连接带宽的限制并且需要可观的投资才能增加系统容量。因此,已经开发出依赖于一完全分布式体系结构的内容分发系统,其网络内的节点参与分发过程。这些系统可以被称为对等或对等辅助内容分发系统。在这类系统中,服务器可将要分发的文件分割成多个块并且将这些块提供给网络内的节点。只要节点已经接收到一个或多个块,该节点就能够为其他节点充当所接收的块的源,同时还接收其他块直至收到文件的所有块。

恶意用户会以许多方式引发针对这类系统的问题。这包括虚假内容(例如,内容并非其声称的内容)的分发。这类虚假内容可以包括病毒或者其他有害程序,或者可以只是通过共享不想要的数据来浪费网络资源。恶意用户可以分发损坏的下载数据,而这些数据随后可由没有意识到该数据已损坏的其他对等体分发。这会导致大规模的损坏数据散布,从而无法分发特定的数据片段。在内容分发网络使用网络编码的情况下,来自一内容片段的单个损坏块的引入可能会非常迅速地导致正被分发的该段内容的所有块的损坏。

在其它示例中,恶意用户可以发起针对网络中特定元素的服务拒绝攻击,例如通过随后会异常中止但会消耗资源的重复连接尝试。取决于服务拒绝攻击所针对的对象,这类攻击会引起整个分发系统故障或者仅影响一个或多个个别用户。

本发明试图提供一种用于内容分发和内容确认的改进的方法和装置,其缓解了已知方法和装置的各种问题。

概述

下面提供本发明的简化概要以便为读者提供基本的理解。本概要不是本发明的详尽概观,并且既不标识本发明的关键/决定性要素也不描绘本发明的范围。其唯一目的是以简化形式提供在此公开一些概念作为稍后提供的更详细描述的序言。

本发明的示例提供了一种在网络中的节点处自动验证通过网络分发的内容的方法,该方法包括:接收由发布者节点发布的内容片段的内容描述,该内容描述包括内容标识符、发布者标识符、发布者授权信息和内容检验信息;检验内容描述的完整性;检验内容描述的有效性;以及如果完整性和有效性检验都通过,则储存该内容描述。

有利的是,这允许内容的接收方能信任所发布的内容为合法且是其所期望的内容。如果发现内容是无效的、非法的或该反对的,则该内容描述可由发布者撤消,并且如果发现发布者正在发布无效的、非法的、冒犯性的或其它该反对的内容,则授权主体可撤消发布者的授权,因此阻止发布者发布进一步的内容。因此,内容描述使得接收方能够检验发布者和内容两者的状态。

较佳的是,内容描述是一种自证明的数据结构。

较佳地,检验内容描述的完整性包括:检验与该内容描述相关联的密码签名。

有利的是,使用用密码签署的内容描述,恶意用户篡改内容描述且所得的内容描述通过完整性测试在计算上是不可行的。

较佳地,检验内容描述的有效性包括:访问由发布者发放的证书撤消列表;确认该内容描述没有被包括在该证书撤消列表上;以及确认发布者授权信息是有效的。

有利的是,这使得发布者能够控制其发布的内容的分发。如果发布者希望在内容描述到期之前停止发布,则发布者可向其证书撤消列表添加内容描述的细节。

较佳地,该内容描述还包括起始时间和到期时间,并且其中检验内容描述的有效性还包括:检验当前时间在内容描述的起始时间之后且在到期时间之前。

有利的是,这使得发布者能够设置一内容描述有效且可进行内容分发的时段。

较佳地,发布者授权信息包括关于授权主体的标识符,并且确认发布者授权信息有效包括:访问由授权主体发放的证书撤消列表;确认发布者标识符没有被包括在该证书撤消列表上。

该标识符可包括授权主体的名称或指向该授权主体的CRL位置的指针。

较佳地,该方法还包括:从对等体接收请求,以及向该对等体提供内容描述。

较佳地,该方法还包括:周期性地重新检验内容描述的有效性;以及如果内容描述无效,则删除该内容描述。

较佳地,节点包括控制节点或对等体。

第二示例提供了一种包括计算机程序代码装置的计算机程序,该计算机程序代码装置适用于当所述程序在计算机上运行时执行上述任何方法的所有步骤。

较佳地,该计算机程序被包含在计算机可读介质上。

第三个示例提供了内容分发系统中的一种节点,包括:用于接收由发布者节点发布的内容片段的内容描述的装置,该内容描述包括内容标识符、发布者标识符、发布者授权信息和内容检验信息;用于检验内容描述的完整性的装置;用于检验内容描述的有效性的装置;以及用于储存内容描述的存储,其中该存储被安排成仅当完整性和有效性检验都通过时才储存内容描述。

较佳的是,该内容描述是一种自证明的数据结构。

较佳地,用于检验有效性的装置包括:用于访问由发布者发放的证书撤消列表的装置;用于确认该内容描述没有被包括在该证书撤消列表上的装置;以及用于确认发布者授权信息是有效的装置。

较佳地,该内容描述还包括起始时间和到期时间,其中该节点还包括时钟,并且其中用于检验有效性的装置还包括:用于检验时钟上的当前时间在内容描述的起始时间之后且在到期时间之前的装置。

较佳地,发布者授权信息包括关于授权主体的标识符,并且其中用于确认发布者授权信息的装置适用于:访问由授权主体发放的证书撤消列表;以及确认发布者标识符没有被包括在该证书撤消列表上。

较佳地,节点是控制节点或对等体。

第四个示例提供了一种包括至少一个如上所述的控制节点和/或对等体的内容分发系统。

第五个示例提供了一种数据结构,包括:内容标识符、发布者标识符、发布者授权信息和内容检验信息。

较佳地,该数据结构是自证明的。该数据结构可包括X.509证书。

该数据结构可以是内容安全描述。

本方法可由存储介质上的机器可读形式的软件来执行。软件能够适于在并行处理器或串行处理器上执行,使得本方法的各步骤可以按任何合适的次序或同时开展。

这里承认软件能够是有价值的、可以单独交易的商品。它旨在包含运行于或者控制“哑”或标准硬件以实现所需功能的软件。它还旨在包含例如用于设计硅芯片,或者用于配置通用可编程芯片的HDL(硬件描述语言)软件等“描述”或者定义硬件配置以实现期望的功能的软件。

许多附带特征将随着参考下面的详细描述并结合附图进行理解而得到更好的认识。

附图说明

从结合附图的下列详细描述中将更好地理解本说明书,在附图中:
图1是内容分发系统的示意图;
图2是示出发布者节点的操作的示例的流程图;
图3是示出控制节点的操作的示例的流程图;
图4是控制节点的示例体系结构的示意图;
图5示出了用于有效性检验的示例流程图;
图6是示出控制节点的操作的第二示例的流程图;以及
图7是示出对等体的操作的示例的流程图。
相同的标号用于指示附图中相同的部分。
详细描述
下面结合附图提供的详细描述旨在作为本发明的例子的描述,但是并不旨在表示可以构造或者使用本例子的仅有的形式。该描述阐述本示例的功能以及用于构造和操作本示例的步骤序列。然而,相同或等价的功能与序列可由不同的示例来完成。
虽然在本文中将本发明的示例描述并示出为在对等辅助分发系统(也被称为对等分发系统)中实现,但是描述的系统只是作为示例而非限制来提供。尽管各示例是参考特定的对等辅助分发系统(例如,由微软(商标)开发的系统,称为Avalanche或Mercury)来描述的,但这仅是作为示例,并且所描述的技术可以在任何其它内容分发系统中实现。本领域普通技术人员将会认识到,本发明的示例适于在各种不同类型的内容分发和/或内容共享系统,包括基于服务器的内容分发系统中应用。
图1是内容分发系统100的示意图,该系统包括发布者101、授权主体102、控制服务器103、种子104和两个对等体105。内容分发在云106中发生。内容可以是任何类型的数据,并且可以作为例如已编码的块来分发。发布者101是提供内容并且由授权主体102授权的实体。发布者可以是用户或公司,并且可以位于内容分发云106之内或之外。控制服务器103(也称为登记者或跟踪者)帮助对等体105找出正参与特定内容片段的分发的其他对等体。种子104是通常总是开机的客户机,并且发布者将内容片段放置其上以供随后在系统内分发。种子104将内容上传给系统100中少数几个对等体105(可能就上传给单个对等体),但是不从系统中的其他节点下载相同的内容。本文中的术语“节点”指系统内任何逻辑实体。对等体105是对获取种子104所持有的内容感兴趣的客户机。对等体将从系统中的各节点(例如,对等体或种子)下载内容,并且也将其已经接收的那些内容部分上传给系统内的其他对等体。一旦对等体已经接收到全部特定内容片段,它就通过使该内容可用于上传到系统内的其他对等体同时不再从对等体下载内容来充当临时或虚拟种子。内容能够以已编码格式在云中分发,或者作为替换,可以不对内容进行编码。
本领域的技术人员可以理解,图1所示的内容分发系统100仅作为示例,并且内容分发系统可包括图1所示的元件的子集,和/或可包含附加元件。此外,图1所示的元件是功能元件,并且可以在物理网络节点内组合多于一个的功能元件。图1示出了在系统100各部分之间的一些逻辑连接,然而所示的这些连接不是穷尽的并且仅用作说明。
图2是示出发布者101的操作的示例的流程图。发布者101向授权主体102请求发布授权(步骤201)。作为响应,授权主体发放证书(步骤202)。该证书可以专用于一内容片段,或者该证书可以不涉及任何特定的内容片段而是可由发布者在任何内容分发云中发布任何内容片段时使用。发布者101然后选择宿主控制服务器103和种子服务器104(步骤203),并生成其用来进行数字签名的安全内容描述(SCD)(步骤204)。SCD包括发放给发布者的证书(在以上步骤202)的细节以及能够对下载的内容进行完整性检验的信息。内容分发云106随后通过发布者将经签署的SCD存放在控制服务器103上(步骤205)并将内容存放在种子服务器104上(步骤206)而得以建立。SCD和每一方法步骤将在以下更详细描述。
对发布授权的请求(步骤201)可以通过向认证机构(CA)(诸如Microsoft(商标)认证机构)申请授权来作出。在某些情况下,带有根证书的CA(诸如Microsoft(商标))可以授权发布者向其它发布者再授权,而这些被再授权的发布者还能授权子发布者。例如,CA可以授权发布者(例如,被称为“发布者1”的虚构发布者),并且允许它们将组织的各部分再授权为发布者(例如,“发布者1-新闻”和“发布者1-喜剧”)。这一再授权过程也被称为委托(delegation)。
响应于上述请求(在步骤201)发放的证书(在步骤202)是自证明的数据结构,并且可以采取X.509证书的形式。本文中使用的术语“自证明”指的是该结构包含其自身未被篡改的证明的事实,例如它可以具有确保证书未被篡改的密码签名。X.509是用于公钥基础结构(PKI)的ITU-T(国际电信联盟的电信部门)标准。该证书可以被提供给发布者101,或者可以存储在中央储存库(未在图1中示出)中并将其细节提供给发布者101。可以使用任何其他合适的授权方法来代替X.509证书,包括其他证书方案、共享秘密和导出令牌。
对宿主控制服务器的选择(步骤203)可以涉及发布者设立其本身的控制服务器或者获取使用第三方控制服务器的许可。控制服务器103还可由CA授权,使得发布者可以确信控制服务器是合法的,并且对等体可以确信从控制服务器获得的信息的完整性。在授权控制服务器的情况下,在生成SCD(步骤204)之前或在将SCD存放在控制服务器上(步骤205)之前,可以在发布者101和控制服务器103之间发生认证,作为选择过程(步骤203)的一部分。认证过程可以涉及发布者以与以下描述相似的方式检验控制服务器的证书链。
选择的种子104(同样在步骤203中)可以使用任何合适的协议来向云内的对等体提供内容,这些协议包括但不限于,任何支持Avalanche的协议、以及http(超文本传输协议)。Avalanche是由微软公司(商标)开发的使用网络编码的对等辅助内容分发协议。这意味着系统中的每个节点生成并传送经编码的信息块,这些新经编码的块是当前由该特定节点所持有的全部块的线性组合。这一协议的优点之一在于,它使得内容的特定部分(或块)在网络内稀有或变得稀有的概率最小。种子104也可由CA授权,使得发布者可以确信种子是合法的,并且仅以合法的方式分发内容。在授权种子的情况下,在生成SCD(步骤204)之前或在将内容存放在种子上(步骤205)之前,可以在发布者101和种子104之间发生认证,作为选择过程(步骤203)的一部分。认证过程可以涉及发布者以与以下描述相似的方式检验种子的证书链。
由发布者生成的安全内容描述(SCD)(在步骤204)是提供内容发布者及其授权的细节并能对传送且重新组装的内容进行确认的自证明结构。SCD无需加密,但是在某些示例中可以对其部分或全部进行加密。
SCD可以包括以下的部分或全部:
·SCD的序列号
·用于签署SCD的算法的细节
·SCD开始有效的时间(例如,以UTC,即协调世界时间为准)
·SCD的到期时间
·发布者标识信息,这可包括发布者的全局唯一ID和发布者标识符,诸如发布者的名称、内容发布者的证书拇指指纹或通用名称(CN)、或发布者的已编码X.509证书。
·关于发布者的公钥的信息,这可以是自签署的证书。
·证书撤消列表(CRL)位置信息。
·内容的文件名
·内容文件的长度。
·该内容的唯一标识符。这通常是内容散列的值。
·内容的创建时间。
·已解码内容的散列算法和散列值。
·指定同态散列所需的传送设置,诸如块数和编码算法。
·同态散列算法规范和值。
·一个或多个种子端点描述。
·一个或多个控制服务器端点描述。
SCD可使用X.509扩展字段来编码成X.509证书。这允许现有的X.509证书管理和确认基础结构用于处理SCD。在一个示例中,SCD内的不同元素可被映射到X.509证书字段,并且一个示例实现在下表中示出。用星号标记的字段是标准X.509字段,而其余字段是X.509扩展字段。
  字段名 字段类型 描述 *dwVersion DWORD CERT_V3—描述X.509证书版本
  字段名 字段类型 描述 *SerialNumber CRYPT_INTEGER_BLOB 用于跟踪、撤消的证书序列号 *SignatureAlgorithm CRYPT_ALGORITHM_IDENTIFIER 标识使用什么算法来签署证书 *Issuer CERT_NAME_BLOB SCD发布者的全限定名 *NotBefore FILETIME SCD可被认为有效的第一秒(以UTC为准)
  *NotAfter FILETIME SCD可被认为有效的最后一秒(以UTC为准) *Subject CERT_NAME_BLOB CN=内容文件 名 *SubjectPublicKeyInfo CERT_PUBLIC_KEY_INFO 发布者的密钥。这是自签署的证书。 *IssuerUniqueId CRYPT_BIT_BLOB 全局唯一发布者ID *SubjectUniqueId CRYPT_BIT_BLOB SCD的全局唯一内容ID CRL CRL_DIST_POINTS_INFO 可从中获得CRL来看该SCD是否已被撤消的位置的列表 PublisherMetadata CRYPT_BIT_BLOB 可任选发布者元数据,以发布者选择的任何形式 ContentMetadata CRYPT_BIT_BLOB 可任选内容元数据,以发布者选择的任何形式
  *NotAfter FILETIME SCD可被认为有效的最后一秒(以UTC为准) ContentCreationTime FILETIME 内容创建时间戳应被设置成的UTC时间
  FileLength UINT64 内容的64位长度,以字节为单位 ContentHashType CRYPT_ALGORITHM_IDENTIFIER 用于确认内容完整性的散列的类型 ContentHashData CRYPT_HASH_BLOB 内容的散列值
在另一示例中,SCD内的元素可被映射到包含数据结构的单个X.509扩展字段,其中该数据结构包含所有单独的信息片段。第一个示例更透明,而第二个示例导致较短的处理时间。
元数据也可被包括在SCD内,例如,描述发布者的元数据和/或描述内容特性的元数据,这包括建议的文件名、文件长度、媒体类型、分级、始发者(可以不同于发布者)、DRM(数字权限管理)信息(例如,何处获得许可证)、诸如演员、导演等内容信息等等。这可提供关于可经由读取该SCD的应用程序(或者自动地,或者在用户的控制下)搜索的内容的有用信息。
SCD由发布者例如使用发布者的私钥来签署(在步骤204),该私钥可由经有效证书链回溯至根CA的公钥来确认。证书链的一个示例如下:
·微软持有根证书
o/由微软于05年9月9日发放的“发布者1”证书,于06年9月9日过期,可以委托(即,再授权)
由“发布者1”于05年9月10日发放的“发布者1-新闻”证书,于06年9月9日过期,不可委托
数字签名可包括SCD的数字地签署的散列(即,使用发布者的私钥加密的SCD的散列)。这允许SCD的接收方通过将所接收到的散列值与计算的散列值进行比较来确认SCD未被篡改。
在生成并签署了SCD之后,发布者将其存放在控制服务器上(步骤205),将内容存放在种子服务器上(步骤206),并由此建立了内容分发云106。发布者还可在必须撤消、更新或重新发放SCD的情况下或在其希望停止SCD的发布的情况下储存SCD序列号。在此阶段之后,发布者101可选择不再参与内容分发过程。
如果发布者随后确定内容是不正确地描述的,或者希望在SCD过期之前停止内容分发,则发布者可撤消SCD。为了撤消SCD,发布者将特定SCD的序列号置于其证书撤消列表(CRL)上。如下所述,CRL将由内容分发云内的实体定期检查,并且一旦标识SCD被包括在CRL上,将不会在进行进一步的分发,使得将SCD的序列号置于CRL上与停止分发之间的时间段变得最小。一旦特定SCD的序列号被置于发布者的CRL上,其将保留在那里,直到被发布者移除,或者在SCD到期(根据SCD内详述的到期时间)之后删除该条目。SCD可由创建该SCD的发布者直接撤消。授权(创建SCD的)发布者的授权主体可以通过撤消发布者的授权来间接地撤消该SCD。在存在证书链(如上所述)的情况下,该间接撤消可在该链中的任一点发生。在以上给出的证书链示例中,如果“发布者1—新闻”创建了该SCD,则其可直接撤消它,而“发布者1”可以通过撤消给予“发布者1—新闻”的证书来间接撤消该SCD,微软则可以通过撤消给予“发布者1”的证书来间接地撤消该SCD。
在另一示例中,发布者可能希望停止SCD的发布。停止SCD的发布具有与撤消不同的效果,这表现在SCD并不是无效的,它仅仅是不再被发布。这具有没有一个新对等体能够加入内容分发云106的效果,然而,已经参与该云(并且因此已经有了SCD)的对等体能够继续分发内容块。然而,控制服务器将不向对等体提供任何进一步的帮助来发现云中的其它对等体。因此,发布将停止,但是这不会像撤消那样快发生。停止发布可通过向控制服务器发送“不发布”消息以及SCD的序列号和证明该消息的发送者被允许作出这一“不发布”决定的凭证(例如,发布者证书的副本)来实现。也可能在控制服务器处理不发布消息之前必须检查这些凭证。“不发布”消息可以采用自证明数据结构的形式。在一个示例中,不发布消息包含除了其中的不发布标志之外与所发布的SCD相同的SCD。
在如上参考图2所述地建立了内容分发云之后,发布者可能希望在内容正在云106中分发的同时更新SCD,例如提供修订的元数据或改变到期日。为了更新SCD,发布者生成一新的SCD(具有新的序列号)并签署它(如步骤204中那样),并将该新的SCD存放在控制服务器上(如在步骤205中那样)。旧的SCD可被撤消(如上所述),然而,这将导致已经下载了部分文件的对等体丢失该部分。相反,如果改变是建议性的(例如,元数据改变),则可以不撤消旧的SCD,而是将新SCD给予请求SCD的对等体并且不再将旧SCD给予任何对等体。
控制服务器103的操作可以参考图3和图4来描述,图3是示出控制服务器103的操作的示例的流程图,而图4示出了控制服务器的示例体系结构。控制服务器103包括用于经由消息传输(未示出)接收和发送消息的传输接口401、负责储存SCD和从SCD存储402检索SCD的内容信息接口403、以及负责储存对等体注册信息和从注册信息存储405检索该信息的注册接口404。控制服务器103经由传输接口401从发布者101接收SCD(图2的步骤205和图3的步骤301),然后检验该SCD的完整性(步骤302)以确保其自从生成以来没有被篡改。这可通过计算SCD的散列值并检验所计算的值等于包含在SCD的数字签名中的散列值来实现。如果SCD通过了完整性测试,则控制服务器检验SCD的有效性(步骤303),该步骤在以下参考图5更详细地描述。完整性和有效性检验可以由SCD存储402来执行。除了确认SCD中的标准字段之外,SCD存储还可确认SCD中的元数据。如果SCD通过了完整性测试(步骤302)和有效性测试(步骤303)两者,则它然后被储存在SCD存储402中。注册接口404和注册信息存储405的操作将在以下参考图6来描述。
图5示出了关于在SCD上执行的有效性检验(步骤303)的示例流程图。对照SCD内的“NotBefore(不早于)”和“NotAfter(不晚于)”时间来检验当前时间(例如,以UTC为准)。如果当前时间在此时间窗之外,则SCD是无效的。然后访问关于发布者的证书撤消列表(CRL)(步骤502)以检验该SCD是否已被发布者101撤消(步骤503)。CRL列出了由发布者发放的、随后被撤消的证书(如果发布者被准许再授权)和SCD。或者,发布者可持有两个CRL,一个用于SCD,而另一个用于它已撤消的证书。对CRL的使用使得发布者能够通过发放新SCD并撤消早先的SCD来更新SCD,或停止内容发布(例如,如果发现内容是损坏的或出于任何其它原因)。发布者的CRL可被储存在发布者101处,或者可被储存在网络中的别处,例如储存在中央CRL存储库中。发布者的CRL的位置可以被包括在SCD中(例如,如上表所示在字段“CRL”中)。
检验了SCD没有被包括在发布者的CRL中(步骤503)之后,控制服务器可检验发布者的证书链以确认发布者仍被CA授权(步骤504)。这可以通过控制服务器确认发布者不在由向发布者发放证书的实体,例如授权主体102所发布的证书撤销列表(CRL)上来实现。控制服务器103还在本地持有CRL的副本,但理想地定期(例如,每15或30分钟)向CA或其他委托检验经更新的CRL以使漏洞窗口最小。证书链可以包括对于每个授权实体而言主CRL位于何处的细节(例如,url、IP地址或其他端点描述)。由于能够发放证书的任何人也能够撤消其发放的证书,因此必须检验多于一个CRL(例如,在以上给出的证书链的示例中,需要检验由微软和“发布者1”两者发布的CRL)。每个CRL包括(或者在列表中或者在关联的信息中)CRL上次何时更新以及应以何频率对CRL进行重新检验(例如,在“2005年10月10日16:09更新。每2小时重新检验一次”)的细节。尽管CRL可指定建议的(或最大)重新检验之间的时间,但控制服务器时常进行重新检验是有益的。可使用使得控制服务器的CRL本地副本在特定的时间间隔之后到期且不能被使用的机制。
CRL以它们无法由除发放实体(即,CA或其委托)以外的任何人编辑的方式被创建。例如,只有微软(商标)能够修改它们的CRL,其列出了由微软(商标)最初发放但在随后被撤销的证书,而也只有“发布者1”可以修改它们的CRL,其列出了最初由“发布者1”作为微软的委托发放的但随后由该“发布者1”撤销的证书。如果控制服务器在检验CRL时标识出SCD已被撤消(在步骤503)或一内容片段的发布者已经撤消了其授权(在步骤504),则将不储存SCD(在步骤304),而是将丢弃或拒绝该SCD。如果如上所述,控制服务器被授权执行该功能,则可在发布者和控制服务器之间(例如,在步骤301之前或作为其一部分)发生认证。
控制服务器103的操作的其它方面可参考图6来描述,图6是示出控制服务器103的操作的示例的第二流程图。在储存了SCD(如上所述)之后,控制服务器随后可以从对等体105接收对特定内容片段的SCD的请求(步骤601)。在响应该请求之前,控制服务器可以重新检验SCD的有效性(步骤602)。该检验可如图5所示以及以上描述地执行,并且另外(或者替换地)可以在对等体重新注册时或周期性地(不论请求是否是从对等体接收的)执行。由于先前已访问了适当的CRL(在步骤303),因此这些CRL可能已经本地储存在控制服务器处,并且可访问CRL的这些本地副本或主副本。如果发现SCD是无效的,则控制服务器可检验同样储存在控制服务器处的、与同一内容有关的经更新的SCD。如果对该内容没有有效的SCD可用,则将拒绝来自对等体的请求(在步骤601接收)。如果有效性检查是通过对等体重新注册来启动的,则对等体将不能被重新注册,并且可向其通知SCD现在是无效的。如果对内容有有效的SCD可用,则控制服务器可以使用注册接口404和注册信息存储405来与对等体执行认证(步骤603)。这可以是单向认证(对等体认证控制服务器)或双向(互)认证。然而,在另一示例中,SCD可被认为是公共信息,并且认证可在交换更多私有信息(例如,如下所述的关于对等端点的信息)之前的后一阶段发生。控制服务器然后将SCD(以及可能的其它信息)提供给对等体(步骤604)。
在如上所述的控制服务器的操作的另一方面,控制服务器可从发布者101接收停止SCD发布的请求(“不发布”消息)。响应于接收到该消息,控制服务器可检验该消息的发送者被许可使内容发布停止(例如,通过检验消息中的证书属于该内容的发布者)。如果发现消息是有效的,则可从SCD存储402中删除相关的SCD,并且将不再向任何其它对等体提供该SCD。另外,随后请求SCD的任何对等体的请求将被拒绝,并且关于该SCD的活动对等体列表将被清空,并且试图向控制服务器重新注册或请求另外的对等端点信息的任何对等体的请求将被拒绝。
对等体105的操作可以参考图7来描述。对等体105接收内容标识符和控制服务器指针(步骤701)。该信息可以从网站、URI(统一资源标识符)或者作为应用经验的一部分(例如,作为交互式媒体播放器(Interactive Media Player,iMP)的一部分)来接收。使用该信息,对等体105能够向所标识的控制服务器103请求SCD(步骤702),并且随后向控制服务器请求对等端点的细节(步骤703)。这些对等端点是该对等体能够与之连接以下载内容的一个或多个其他对等体的细节。对等端点还可以包括种子104的细节,特别是在云内还不存在有许多对等体的云106早期阶段。对等体105随后连接至一个或多个所标识的对等端点(步骤704)并且下载内容块(步骤705)。
在将块添加至对等体的已接收块存储或将其转发至任何其他对等体之前,验证该块的完整性(步骤706)。如果发现块的完整性可疑,则该对等体作出损坏的对等端点的记录,并且在内容分发会话的剩余部分中不与该端点联系也不接受来自该端点的连接(步骤707)。相反,对等体将连接至另一对等端点(步骤704)并且在必要时将首先向控制服务器请求对等端点的进一步细节(步骤703)。在作出请求时,对等体可向控制服务器指示所阻塞的对等体的身份,以及该对等体当前连接到的任何对等体的身份。这使得控制服务器能向对等体提供新的有用的对等端点信息,并且还能够将云106内损坏的对等体记入日志。在一个示例中,可阻塞重复的损坏体以使其不参与云,例如可通过取消其注册或通过拒绝提供进一步的对等端点信息来实现。如果该块的完整性被验证(在步骤706),则对等体确定它是否已经接收了全部的所需内容块(步骤708)。如果仍然需要额外的块,则流程继续以下载另一个块(步骤705)。一旦对等体已经下载了全部的所需内容块,对等体就解码该文件(步骤709)并对已下载的内容进行完整性检验(步骤710)。如下提供关于个别步骤的其它细节。
内容标识符和控制服务器指针(在步骤701中接收)可以采取URI的形式,诸如:
avalanche://mytracker.microsoft.com/0123456789ABCDEF0123456789ABCDEF
在另一个示例中,内容标识符和控制服务器指针两者都可以在单个128位的标识符中提供。在另一个示例中,信息可以在带有本地注册类型的小文件(例如,经由web下载)中提供,当该文件被下载并激活时,调用内容分发客户端,例如Avalanche。内容标识符和控制服务器指针可以包括发放给发布者的证书的细节。
控制服务器指针可以是指向IP(网际协议)地址、DNS(域名系统)条目的指针,或者可以使用指定网络端点的任何其他方法。使用DNS条目会是有利的,因为它提供了路由的灵活性和可缩放性。例如,DNS服务器能够将对等体导向没有硬连线至控制服务器指针内并且可能改变的控制服务器的IP地址。这在有若干控制服务器存在并且DNS服务器能够依次将对等体导向不同的服务器以共享负荷的情况下是有益的。此外,使用DNS条目允许添加额外的控制服务器,或者允许控制服务器在需要时下线维护而无需改变其控制服务器指针。
内容标识符和控制服务器指针可以由对等体主动检索(在步骤701),并且这一检索可由对等体处的用户输入或由在对等体上运行的应用程序来发起。在一个示例中,对等体可以响应于例如通过购买对特定内容的权限(例如,可以从在线商店购买下载电影的权限)而获取参与云106的授权,来接收内容标识符和控制服务器指针。这些授权可以采取证书、共享秘密、导出令牌的形式,或者任何其他合适的授权方法。在另一个示例中,内容标识符和控制服务器指针可以被推入对等体,例如推入诸如在该对等体上运行的媒体播放器等应用程序。推入可以是对先前来自该对等体的兴趣指示做出的响应,例如对等体可以指示感兴趣的新闻项、音频剪辑或视频剪辑的类型,并且在符合准则的内容变得可用时,就可将内容标识符和控制服务器指针推入该对等体。
当对等体105向控制服务器请求SCD(在步骤702)时,可要求对等体和控制服务器认证(单向或双向认证)以证明其各自都被授权来执行这些对等体和控制器服务器的职责(如以上相对于图6的步骤603所描述的)。然而,在另一示例中,互认证可以在交换更多敏感信息之前的稍后阶段(在步骤703)发生。该互认证有助于防止对系统的服务拒绝或欺诈攻击。在控制服务器被授权的情况下,对等体可以检验控制服务器的证书链。在接收到SCD之后,对等体可以执行一个或多个检验,诸如检验SCD的完整性(例如,以与以上参考图3的步骤302所描述的相同的方式)和/或SCD的有效性(例如,如在图5所示并在上文中描述的)。在另一示例中,对等体可以不检验SCD的完整性和有效性,而是可以检验发布者的授权状态(如以上参考步骤504所描述的)。如上所述,可以将CRL的副本连同CRL副本更新情况的细节一起存储在控制服务器处。因此,为了检验SCD是否在发布者的CRL上(步骤403)和/或检验发布者的证书链(步骤404),对等体可检索储存在控制服务器处的CRL副本,或者可检索由发放该列表的授权主体发放的CRL主副本。通过连接至控制服务器103而不是证书发放主体(或中央CRL存储)来检索CRL,对等体就可以避免系统中的潜在瓶颈。如果对等体在检验CRL时标识出内容片段的发布者已经被撤销授权或者SCD已被撤消,则该对等体可以终止其在云中的参与并且不再下载块。对等体还可以删除其已经接收的任何内容块。
可要求对等体向控制服务器重新注册以确认它们仍在内容分发云106中活动。此时,控制服务器可以通知对等体关于内容的SCD是否无效。如果频繁地(例如,每隔5分钟)要求对等体重新注册,则在控制服务器标识出SCD无效和对等体停止进一步的内容分发之间只有很短的窗。重新注册的间隔可以由控制服务器来设置,并且可以根据内容分发云的大小来变化(例如,对于小云,该时间可以被减少至45秒)。对等体发送给控制服务器的重新注册消息可以包含使得控制服务器能够确定一对等体对该云中的其它对等体如何有用的信息。这一信息可包括对等体持有多少内容、对等体持有哪些内容块、以及到该对等体的连接的数据率。如果对等体无法在控制服务器设置的时段内重新注册,则它们将超时,并且不再是分发云的一部分。因此,当对等体希望离开云时(例如,当它们已经下载了内容片段的所有块时),它们或者可使重新注册失败,或者可向控制服务器发送一显式取消注册消息。
除了在接收到SCD时检验SCD的状态和发布者的授权之外(或代替该检验),对等体可以在向参与内容分发云106的其它对等体发送块之前和/或在对等体向控制服务器重新注册以确认它们保持为云中的活动对等体时重新检验这两者中的一个或两者。然而,由于CRL很可能是大文件(例如,几兆字节),对等体可限制它从控制服务器或其它源下载经更新的CRL的次数。
对等体向其请求SCD(在步骤702中)的控制服务器可以与对等体向其请求有关对等端点的信息(在步骤703中)的控制服务器相同或不同。在两控制服务器不同的情况下,与对等体向其请求有关对等端点的信息(在步骤703中)的第二控制服务器有关的信息可以在由第一控制服务器提供的SCD中标识(参见以上SCD的描述)。在另一示例中,SCD可包含另外的控制服务器指针(而非端点信息)。这是更灵活的方法,并且指针可以指向储存控制服务器细节以及关于控制服务器的证书的位置,使得对等体可以确认控制服务器是关于所述的内容片段的发布者的有效控制服务器。
在对等体可以从控制服务器获得针对该内容云的对等端点的信息(在步骤703中)之前,该对等体认证控制服务器,或者作为替换,可以在控制服务器和对等体之间进行互认证。这一认证可以在该过程中更早出现(例如,在步骤702中)或者可以在此阶段出现。该认证过程通过共享CA的控制服务器授权细节来向对等体确认该控制服务器是经授权的控制服务器。再次地,对等体可以选择咨询相关CRL。这阻止了在云中建立欺诈控制服务器。如果发生互认证,则控制服务器也能够标识对等体(例如,使用唯一主机标识符),虽然这对具有特定授权来参与云的对等体而言没有必要。唯一对等体标识机制的使用使控制服务器能够确定一对等体是否针对对等端点信息作出了多个请求,这样就可以指示该对等体是否具有恶意目的。控制服务器可以出于这一原因或任何其他原因来决定阻止对等体参与内容云。对等体标识可以被分配给对等体以供在所有情形中使用(例如,它们加入的所有云),或者可以在更为规则的基础上分配(例如,按云、按发布者、按网络提供方、按月等)。
控制服务器可以为对等体提供随机选择的对等体、根据位置算法选择的对等体或者根据任何其他准则(例如,对等体的连接速度)选择的对等体的对等端点信息(在步骤703中)。控制服务器可以限制其向任一对等体提供的信息所针对的对等体数量,并且还可以限制对等体(例如,对主机标识符的引用)能够请求对等端点信息所遵循的规律(例如,限制为每15分钟与10个对等体有关的信息)。这能缓解信息公开,因为对等端点信息可能是敏感的,并且对恶意用户或对广告商是有用的。对等端点信息可以包括:
·一个或多个网络端点描述,诸如IP端点或URL(统一资源定位符)。
·---描述端点正参与的内容云的内容云标识符。
·主机标识符(优选地对该主机是唯一的)。
在对等体被随机选择的情况下,控制服务器可以包括种子104作为概率为1/k的对等体,其中k是包括该新对等体的云中的活动对等体数。
当一对等体(例如,对等体A)连接至控制服务器已标识为内容云106一部分的一个或多个其他对等体(例如,对等体B)时,该对等体(对等体A)可以执行与其他对等体(对等体B)的认证。虽然没有必要存在一个针对对等体的CRL的等效物,但是各对等体可以通过它们的主机标识符或者通过所发放的用于允许对等体参与到云中的授权来彼此标识。对等体之间的验证是有益的,因为这使得对等体(对等体A)可以标识向其提供无效数据块的对等体(对等体B),并在随后的剩余会话中阻止与该对等体的进一步通信(见步骤706和707)。认证还有助于防止恶意对等体通过在一对等体和该恶意对等体之间建立多个异常中断的或慢速的连接来在该对等体上安装服务拒绝攻击。通过该认证过程,对等体可以标识同一对等体正作出多个连接请求并在随后阻止那些连接的部分或全部。对等体之间的认证还可以包括提供有关发起连接的对等体(对等体A)从何处获取另一对等体(对等体B)的细节(例如,提供对等端点信息的控制服务器的细节)的信息。这样就许可对等体在发起对等体之间的块传送之前检验该控制服务器的授权。
对等体可以连接至云106中的一个或多个其他对等体(在步骤704中)以获得内容的各部分。可以对一对等体在任一时刻能连接的对等体数量作出限制(例如,1个对等体可以连接不超过14个其他对等体)。这一限制可以通过对控制服务器提供给对等体的对等端点细节(在步骤703中)的数量进行限制而被有效设置,或者该限制可以由控制服务器、发布者或对等体独立设置。
当对等体如上所述可以彼此认证时,就没有必要对各对等体之间的传输(例如,在步骤705中)进行加密。如果需要,对等体可以协商私有的会话密钥并应用流密码。
尽管以上描述涉及对等体之间的块传送,但是可以理解,块也可以从种子传送到对等体。在此情形中,对等体可与种子进行认证,并且可以检验种子的证书链以确认它们被授权来担当所述的发布者和/或内容片段的种子。
在接收到一个块(在步骤705中)之后,对等体例如可以使用散列函数(诸如,同态散列函数)来检验该块的完整性。用于各个内容块以及整体内容的散列函数的细节可以如上所述地在SCD中提供给对等体。在另一个示例中,同态散列可以独立于SCD发送。散列函数将一大信息块b映射至通常大小要小得多的输出h(b)。散列函数具有这一性质,即给定块b,在计算上不可能找出具有相同散列值的另一个块b',即h(b)=h(b')。这意味着通过检验接收到的数据块的算得的散列函数与期望的散列函数相匹配,对等体就能够相对确信收到的块是正确的块以及该块尚未被篡改。同态散列函数具有一额外性质,即一些输入块的线性组合的散列值可以通过输入块的散列组合而被有效构造。因此,同态散列函数的使用特别适于使用诸如Avalanche等网络编码的内容分发协议。
在另一示例中,可使用安全随机校验和(SRC)而非同态散列。向对等体提供多个SRC序列,其中每一SRC序列包括用于构成内容的每一未编码块的SRC,以及用于生成SRC值的数字种子。与同态散列一样,已编码块的SRC值可以通过以与组合未编码块来形成已编码块的方式有关的方式组合未编码块的SRC值来从该SRC值中计算。该计算的一个简化示例在下文中对于单个SRC序列示出,其中所有计算都是在一有线域内执行的。
所接收的块包括αA+βB,其中A和B是原始的未编码块,而α和β是
随机系数。
所接收的块包括字节B1,B2...,Bn
SRC列表包括SRC-A1和SRC-B1
使用种子来计算伪随机数R11,R21...,Rn1
SRC-new1=(B1.R11)+(B2.R21)+...+(Bn.Rn1)
检验SRC-new1=α(SRC-A1)+β(SRC-B1)
然后对由控制服务器提供给对等体的每一SRC序列重复该计算。控制服务器可使用一选择方法来确保向不同对等体提供了基本不同的各组SRC序列,因为这减少了恶意对等体能够创建仍通过所有SRC测试的损坏的内容块的概率。
一旦对等体已经下载一个块(在步骤705中)或者作为替换,在已经检验该块的完整性(在步骤706中)之后,控制服务器就将该对等体添加至云中活动对等体列表,于是在从希望参与云的其他对等体接收到对于对等端点信息的后续请求时,就可以将该对等体的细节提供给其他对等体。为了将该对等体添加至云中活动对等体列表,可以要求对等体向控制服务器注册以标识它们已经接收了部分内容。也可要求对等体周期性地重新注册以确认它们保持为云中的活动参与者。在其它示例中,可以在对等体已经下载一个块之前,例如在它已经请求SCD(在步骤702)时将其添加至上述列表。
在已经接收到针对该内容的全部所需块(步骤708)之后,对等体解码该内容或者在该内容未被编码的情况下以其他方式重构该内容(步骤709)。在使用该内容之前(或者在使其对第三方可用之前),对等体对整个内容作出最终的完整性检验(在步骤710中)。最终的完整性检验也可以涉及检验计算所得的散列是否与期望的散列相匹配(如上参考步骤706所述)。期望散列的细节或使其能被计算的参数可以在SCD内提供。
以上描述只是以示例的方式描述了对散列函数和同态散列函数以及安全随机校验和的使用。对等体也可以替换地利用其他技术使其能够以较高的确信度来确定接收到各个内容部分(例如,个别块)和整个内容是有效的且尚未被篡改(即,在步骤706和710中)。
以上描述涉及CRL。这些可以采用自证明数据结构的形式。此外,除了列出SCD序列号之外或代替列出SCD序列号,CRL可列出内容标识号或内容名。
图1示出了单个云106。然而,对等体可以连接至多于一个的逻辑上不同的云,并且多个对等体和控制服务器可在各云间公用。每个逻辑上不同的云都具有一个发布者,并且一发布者可以负责若干片云。在一片云中的对等体可以充当另一片云中的种子,甚至是充当控制服务器。术语“种子”、“对等体”和“控制服务器”用于定义由所考虑的云中节点所担任的角色,并且这些术语没有必要暗示特定的硬件要求。例如,种子、对等体和控制服务器各自可以包括个人计算机。在同一片云中,物理节点可以执行一个以上的逻辑角色,例如种子和控制服务器。
在上述示例中,对等体能够加入任何云,或者它们可以要求特定的授权来加入云,例如通过购买特定下载的权限。发布者101或其他实体可以设置参与云的准则。例如,只有特定网络或服务的订户才有资格参与云。在另一个示例中,云可以具有最低带宽要求,使得只有具有超过某一带宽(例如,512MB/s)的连接的对等体才被允许参与云中。在又一个示例中,某些定额可以与云相关联,例如详细说明能够参与云中的对等体总数以及能够加入云的带有慢连接的对等体的最大数量(或比例)。
以上描述的内容可以是任何种类的数据,包括但不限于软件、数据文件、音频媒体和视频媒体。
通过使用上述方法和装置来发布内容以便在内容分发系统中分发,内容的接收方可以确信所发布的内容是合法的并且是其期望的内容。如果发现内容是无效的、非法的或该反对的,则该SCD可由发布者撤消,并且如果发现发布者正在发布无效的、非法的、冒犯性的或其它该反对的内容,则授权主体可撤消发布者的授权,因此阻止发布者发布进一步的内容。如上所述,SCD因而使得接收方能够检验发布者和内容两者的状态。通过使用用密码签署的SCD,恶意用户篡改SCD且所得的SCD通过完整性测试在计算上是不可行的。然而,所描述的方法和装置不必定能防止欺诈对等体在一旦下载了非公共内容之后对该内容的滥用。因此,可以对软件采取许可证激活码的形式而对音频和视频媒体则采取DRM(数字权限管理)的形式来提供额外保护。
本领域的技术人员将认识到用于存储程序指令的存储设备可分布在网络上。例如,远程计算机可存储描述为软件的该过程的示例。本地或终端计算机可访问远程计算机并下载该软件的一部分或全部以运行该程序。可替换地,本地计算机可按需下载软件的片断,或者可以在本地终端上执行一些软件指令而在远程计算机(或计算机网络)上执行一些软件指令。本领域的技术人员将认识到,通过使用本领域技术人员已知的常规技术,软件指令的全部或部分可由如DSP、可编程逻辑阵列等专用电路来执行。
本领域的技术人员将清楚的,此处给出的任何范围或者设备值可以被扩展或者改变而不失去所寻求的效果。
本文中描述的各方法步骤可以在适当时按任何合适的次序或同时执行。
可以理解,上面对于较佳实施例的描述仅仅是作为例子给出的,而本领域的技术人员可以做出各种修改。