用于在分布式存储网络中实现数据授权的系统和方法

文档序号:7737509阅读:233来源:国知局
专利名称:用于在分布式存储网络中实现数据授权的系统和方法
用于在分布式存储网络中实现数据授权的系统和方法背景领域各种特征涉及分布式通信和/或存储系统。至少一个方面涉及用于在对等覆盖网络中授权存储的方法。

背景诸如覆盖网络之类的结构化对等网络通常将分布式散列表(DHT)用于查询的可缩放性和确定性路由。分布式散列表(DHT)是类似于散列表那样提供查找服务的一类分散的分布式系统诸(节点名称,标识符值)对被存储在DHT中,并且任何参与节点均可高效率地检索与给定节点名称相关联的标识符值。每个节点在DHT中具有唯一性的身份并且存储在网络中的每个服务或对象也同样具有唯一性的身份。所有这些标识符都是相同标识符空间的一部分,该标识符空间通常是非常大的以避免冲突。按参与节点的集合的改变会致使最小量的破坏的方式将维护这些身份(从节点名称映射到标识符值ID)的责任分布在这些节点之中。这允许DHT扩大到非常多的节点并且处置连续的节点到达、离开和故障。诸 DHT形成可被用来构建诸如分布式文件系统、对等文件共享和内容分发系统、协作式web高速缓存、多播、任播、域名服务和即时消息接发之类的更复杂服务的基础设施。在这样的分布式系统中,尤其是在那些实现分布式散列表以存储和检索数据并且发布和订阅服务实例的分布式系统中,可能没有任何针对何实体可在何位置发布的控制。 因此,需要一种机制,藉此可将节点的身份本身或者其与服务身份的组合用于确定节点可在何处存储数据。在这样的系统中,允许存储节点验证数据所有者实际上得到授权以在该特定节点或资源ID处进行存储可能是有挑战性的。如果覆盖网络不能限制可由给定节点存储数据的位置的数目,那么单个有害节点,无论是恶意的还是意外的,都可能对该覆盖网络中可用的分布式配额产生负面影响。然而,将与节点相对应的存储位置限制成恰好一个可能也是问题。在没有该问题的情况下,给定节点可能负担大量来自重负载用户的要被存储的数据, 这可能还会激励攻击者将特定资源ID作为所选择的位置攻击的目标。提供允许数据所有者控制哪些节点/用户被允许写、修改、或删除特定资源ID的方法是会有价值的。如果没有此方法,任何节点可能潜在地覆写给定资源ID的内容。概述本文中的各种特征涉及存储授权,并且提供了对存储在对等覆盖网络上的数据的访问控制。根据一个特征,提供了一种用于在覆盖网络上存储数据的方法,并且该方法可以例如实现在发布节点、处理器上、和/或被存储在计算机可读介质中。资源标识符可以作为第一字符串与第二字符串的组合的函数来生成,其中第一字符串可由存储节点独立认证并且该资源标识符可由该存储节点验证。在一个示例中,第一字符串可以是发布节点标识符, 而第二字符串可以是任意字符串。在另一示例中,第一字符串可以是发布节点标识符,而第二字符串可以是关于覆盖网络内的服务的预定义字符串。存储请求可被生成,其包括资源标识符、要被存储的数据、第一字符串的指示符和/或第二字符串的指示符。该存储请求可随后在覆盖网络上发送以被存储在存储节点处,其中该存储节点负责包括该资源标识符的标识符空间。由于资源标识符的构造,对存储请求的授权可以在协议阶层的覆盖层面处验证,其中该覆盖层面低于协议阶层中的用途层面。多个不同的资源标识符可如所描述的那样被生成,其中该多个不同的资源标识符中的每一个是第一字符串与不同的第二字符串的组合的函数。因为不同的资源标识符是用不同的第二字符串生成的,所以这导致数据存储负载散布在其中不同存储节点负责不同标识符空间的覆盖网络内。根据另一特征,提供了一种用于在覆盖网络上存储数据的方法,并且该方法可以例如实现在存储节点、处理器上、和/或被存储在计算机可读介质中。可接收要在对等覆盖网络中存储数据的第一存储请求。该第一存储请求可包括第一资源标识符和要被存储的第一数据,其中第一资源标识符是第二字符串与可被认证的第一字符串的组合的函数。在一个示例中,第一字符串可以是发布节点标识符,而第二字符串可以是任意字符串。在另一示例中,第一字符串可以是发布节点标识符,而第二字符串可以是关于覆盖网络内的服务的预定义字符串。可以在协议阶层的覆盖层面处通过验证第一资源标识符来执行独立的存储授权。如果第一资源标识符被成功验证,那么第一数据可由存储节点存储并且可与第一资源标识符相关联。在一个示例中,在覆盖层面处执行独立的存储授权可包括 (a)认证第一字符串,和/或(b)确定第一资源标识符是否是第一字符串与第二字符串的组合的函数。存储节点可随后接收对所存储的第一数据的数据访问请求。如果该数据访问请求证明知道第一资源标识符和第一字符串,那么对所存储的第一数据的访问可被准予。如果该数据访问请求证明知道第一资源标识符但是不能证明知道第一字符串,那么存储节点可准予对所存储的第一数据的只读访问。准予对所存储的第一数据的访问可包括允许用第二数据来替换第一数据。根据又一特征,提供了另一种在发布节点上操作的用于在对等覆盖网络上存储数据的方法。资源标识符可作为第二字符串的函数来生成,其中该资源标识符可由存储节点验证。存储请求可随后被生成并且包括资源标识符、要被存储的数据、以及可由存储节点独立认证的第一字符串。在一个示例中,第一字符串可以是发布节点标识符,而第二字符串是任意字符串。在另一示例中,第一字符串是发布节点标识符,而第二字符串是关于覆盖网络内的服务的预定义字符串。该存储请求可在覆盖网络上发送以被存储在存储节点处,其中该存储节点负责包括该资源标识符的标识符空间。对该存储请求的授权可在协议阶层的用途层面处使用第一字符串来验证,其中该用途层面高于协议阶层中的覆盖层面。覆盖网络内的不同发布节点可生成具有相同资源标识符但具有不同第一字符串的数据存储请求。这些不同的数据存储请求可基于使用不同第一字符串的用途层面授权来区分。根据又一特征,提供了另一种在存储节点上操作的用于在对等覆盖网络上存储数据的方法。可接收要在对等覆盖网络中存储数据的第一存储请求。第一存储请求可包括第一资源标识符、要被存储的第一数据以及第一发布节点标识符,其中存储节点负责包括第一资源标识符的标识符空间。可接收要在对等覆盖网络中存储数据的第二存储请求。该第二存储请求可包括第一资源标识符、要被存储的第二数据、以及第二发布节点标识符。第一数据和第一发布节点标识符可由存储节点存储并且可与第一资源标识符相关联。第二数据和第二发布节点标识符可由存储节点存储并且可与第一资源标识符相关联。存储节点可在协议阶层的用途层面处执行独立的存储授权,其中该用途层面高于协议阶层中的覆盖层面。随后,存储节点可接收对与第一资源标识符相关联的数据的数据访问请求。存储节点可准予对所存储的第一数据和第二数据的只读访问。然而,如果该数据访问请求证明知道第一发布节点标识符,那么存储节点可准予对所存储的第一数据的写访问。同样,如果该数据访问请求证明知道第二发布节点标识符,那么存储节点可准予对所存储的第二数据的写访问。附图简 述在结合附图理解下面阐述的具体说明时,本发明各方面的特征、本质和优点将变得更加显而易见,在附图中,相同附图标记始终作相应标识。

图1是图解DHT可如何操作以帮助实现对等覆盖网络的操作的图示。图2是图解集中式注册器(可信授权)可如何用于将节点ID指派给覆盖网络内的多个节点的框图。图3是图解可在网络内实现的协议阶层的一个示例的框图。图4是图解可在一个示例中用于覆盖网络中的数据存储请求的消息报头架构的示例的图示。图5是图解可如何在对等覆盖网络中执行分布式数据存储和授权的示例的框图。图6是图解可如何在对等覆盖网络中执行分布式数据存储和授权的替换示例的框图。图7是图解两个不同的发布节点可如何使用对等覆盖网络中的相同资源ID来寻求存储数据的示例的框图。图8是图解发布节点可如何为覆盖层面数据存储授权生成覆盖网络中的资源ID 的示例的框图。图9是图解存储节点可如何为覆盖层面数据存储授权验证覆盖网络中的资源ID 的示例的框图。图10是图解发布节点可如何为用途层面数据存储授权生成覆盖网络中的资源ID 的替换示例的框图。图11是图解存储节点可如何为用途层面数据存储授权验证覆盖网络中的资源ID 的示例的框图。图12图解被适配成在覆盖网络中请求数据存储的发布设备或节点的示例。图13是图解在发布节点中操作的用于帮助实现覆盖层面处的独立存储授权的方法的示例的流程图。图14图解用于在执行数据存储授权的同时在覆盖网络中存储数据的示例存储节
点ο图15(包括图15A和15B)图解在存储节点中操作的用于在覆盖层面处执行独立存储授权的方法的示例。
图16(包括图16A和16B)图解在存储节点中操作的用于在用途层面处执行独立存储授权的方法的示例。详细描述在以下说明中,给出了具体细节以提供对诸实施例的透彻理解。但是,本领域普通技术人员将可理解,没有这些具体细节也可实践这些实施例。例如,可以用框图示出电路以免使这些实施例混淆在不必要的细节中。在其他实例中,公知的电路、结构、和技术可能不被具体示出以免与这些实施例相混淆。如本文中所使用的,术语“节点”可指在网络内可寻址的任何设备、计算机、处理单元、等等。术语“标识”、“标识符”、和“ID”可以互换地被用来指用于标识网络内特定节点的值。“发布节点”可指寻求在网络中的另一节点上存储信息的节点。“存储节点”可指为网络中的发布节点存储信息的节点。术语“数据”(例如,所存储的数据)可以包括诸如音频和/或视频内容、文本、图像等的任何类型的信息。概览

在对等覆盖网络中,所存储的数据或信息可能与使此类数据或信息潜在地可由覆盖网络中的其他节点访问的特定用途(例如,覆盖服务、功能或应用)相关联。为了在覆盖网络中标识并存储数据,特定的资源标识符(例如,资源ID)被生成并且与数据或信息相关联。提供了帮助实现对等覆盖网络中的数据存储授权的各种特征。根据第一实现,在包括多个节点的对等覆盖网络内,发布节点被允许在多个不同的存储节点上存储数据或信息同时仍然允许对此类所存储的数据的授权控制。在此实现中,对数据存储和/或访问的授权控制可以在协议阶层的覆盖层面处执行,其中该覆盖层面低于协议阶层中的用途层面。即,可以实现对存储在存储节点中的数据的访问、修改和/ 或删除的授权同时仍然允许数据跨覆盖网络中的多个节点位置散布。一种实现此类授权的方法是通过第一字符串与第二字符串的组合的函数所计算出的资源标识符(资源ID)来标识或关联要被存储的数据,其中第一字符串可由存储节点独立认证,而资源标识符可由该存储节点验证。例如,第一字符串可以是发布节点标识符,而第二字符串可以是指示用途类型的任意的或预定义的字符串。在一个实例中,发布节点标识符(和/或发布节点的公钥) 可以与被用来签署正由发布节点存储的数据的私人证书相关联。这允许存储节点查明提交改变或修改所存储的数据的请求的节点是否知道这样的私人证书。因为特定的发布节点可能使用相同的第一字符串但不同的第二字符串(例如,针对不同类型的数据或用途),不同的资源ID将被生成并且因此此类数据将可能被存储在对等网络上的不同存储节点处以达成数据负载散布。存储节点可确定特定节点是否可以修改或删除与特定资源ID相关联的所存储的数据。即,数据访问和/或修改请求仅在请求节点能够证明对资源标识符、第一字符串(例如,发布节点标识符)和/或与发布节点相关联的私人证书的知识的场合才可得到允许。此类授权可在协议阶层的覆盖层面处执行,其中该覆盖层面低于协议阶层中的用途层面。在替换的实现中,在某些用途中,通过使用资源ID来搜寻某些类型的数据的方式来允许节点访问所存储的数据可以是合乎需要的。然而,当资源ID基于第一字符串(例如,与发布节点相关联)和第二字符串两者的时候,此类搜寻是不切实际的,因为搜寻节点可能不知道与所存储的数据相关联的第一字符串(例如,发布节点标识符)。因此,在替换的实现中,所存储的数据的资源ID可以仅基于第二字符串。这样的“第二”字符串可以是预定的、已知的、和/或可知的字符串(例如,通过每种类型的用途、应用、或服务)。因为这样的字符串可以由每一用途来预定义,所以搜寻与该用途相关联的数据的其他节点可以重新生成资源ID(例如,基于已知的字符串)并且在覆盖网络中搜寻该资源ID。此方案不仅允许多个节点仅使用资源ID来搜寻特定类型的数据,还允许多个不同的发布节点使用相同资源ID来存储数据。在此实现中,对数据存储和/或访问的授权控制可以在协议阶层的用途层面处执行,其中该用途层面低于协议阶层中的覆盖层面。为了在使用相同资源ID的所存储的数据的不同实例之间进行区分(例如,因为它们可基于相同的字符串),所存储的数据的每个实例还可与可在用途层面处被验证的“第一”字符串(例如,发布节点的标识符) 相关联。存储节点也可使用与所存储的数据的实例相关联的“第一”字符串(例如,发布节点ID)以查明请求修改或删除该所存储的数据的实例的节点是否具有与发布节点ID相关联的正确的私人证书。 DHT覆盖网络覆盖网络是建立在另一网络之上的通信或数据网络。覆盖中的节点可被认为是通过虚拟或逻辑链接的方式连接的,其中每个虚拟或逻辑链接或许通过许多物理链接对应于底层网络中的路径。在通信网络内,每个网络节点可以具有被用来路由去往和/或来自该节点的消息的网际协议(IP)地址。在此类网络IP层之上,实现使用每个节点的节点标识符(即,节点ID)的覆盖网络是可能的。因此,即使节点的IP地址发生了变化,但是其节点 ID对于覆盖网络而言仍保持不变。因此,覆盖网络不依赖于IP层基础设施但取而代之使用节点ID在其节点之间进行对等通信。补充地,此类覆盖网络可跨其节点实现分布式散列表 (DHT),以使得覆盖网络不会因任何单点故障而瘫痪。在一个示例中,P2PSIP覆盖网络可以是使用P2P网络来提供SIP注册、SIP消息传输以及类似功能的节点的关联、集合和/或联合。会话发起协议(SIP)是广泛用于建立和撤销诸如因特网和其他网络上的视频和语音呼叫之类的多媒体通信会话的信令协议。SIP 协议已针对对等(P2P)网络进行了适应性调整(即,P2PSIP)以解析SIP请求的目标、提供 SIP消息传输、以及提供其他与SIP相关的功能。本文中所描述的各种方面可以在集中式和/或分布式对等覆盖网络架构中得到实现。图1和2分别图解了分布式和集中式覆盖网络的示例。图1是图解了 DHT可如何操作以帮助实现对等覆盖网络的操作的图示。虽然此示例将覆盖网络图解为环,但是这仅是为了简单化并且其他覆盖网络架构也是可能和设想了的。对等覆盖网络A 100可由多个节点A 102、B 104、C 106、D 108、E 110和/或F 112 形成。每个节点可维护覆盖网络A 100的DHT的一部分(例如,节点名称、节点标识符)。 每个节点在覆盖网络100的DHT 114中具有选自标识符空间的唯一性节点标识符(节点 ID)。同样,存储在网络100中的每一服务或对象可具有同样选自标识符空间的唯一性标识符。所有这些节点ID都是相同标识符空间的一部分,该标识符空间通常是非常大的以避免冲突。按参与节点的集合的改变致使最小量的破坏的方式将维护这些节点ID(从节点名称映射到节点标识符)的责任分布在这些节点中。每个节点可以负责标识符空间的一部分, 通常从其自己的节点ID开始直至其邻节点中的一个或更多个的节点ID。节点可以负责存储对象和/或响应对映射到其所负责的范围内的任何位置的对象的查询。每个节点可以维护至其他节点的链接的集合(其邻节点或者路由表)。这些链接一起形成覆盖网络。节点根据被称为网络拓扑的某种结构挑选其邻节点。密码学散列函数可被用来将标识符(ID)指派给覆盖网络100内的节点、对象以及服务实例。大多数DHT使用一致散列的某种变形以将散列密钥(即,标识符)映射到节点和/或服务。此技术采用定义了从密钥Ic1到密钥k2的距离的抽象概念的函数δ (ki; k2), 该距离与节点之间的地理距离或网络等待时间无关。每个节点被指派称为其标识符(即, 节点ID)的单个密钥。具有标识符值(节点ID) i的节点拥有(或者负责)对于其而言标识符i是根据δ所测得的最接近的ID的所有密钥(或标识符)。DHT网络拓扑共享如下性质的某种变形对于任何密钥k而言,节点或者拥有k或者根据上面定义的密钥空间距离具有到更接近k的节点的链路。那么,使用贪婪算法将消息路由至任何密钥k ( S卩,标识符) 的所有者就会相对简单。例如,在每个节点处,消息被转发给其节点ID最接近密钥k的邻节点。当没有这样的邻节点时(即,没有其他邻节点具有更接近的节点ID),那么就假定消息已到达最接近的节点,该最接近的节点是如上面所定义的密钥k的所有者。这种路由样式有时被称为基于密钥的路由。在一个实例中,DHT可以将密钥作为圆圈上的点来对待(如图1中所图解的),而δ (k1 k2)是环绕圆圈从&到1^2按顺时针方向行进的距离。因此,圆形密钥空间被分割成毗连的分段,这些分段的端点是节点标识符(节点ID)。如果I1和i2 是两个毗邻的ID,那么具有ID i2的节点拥有落Ai1与12之间的所有密钥。由于实现此网络拓扑的效率考虑,保证任何路由中的跳跃的最大数目(路由长度)较小以使得请求快速完成、并且保证任何节点的邻节点的最大数目(最大节点度)较小以使得维护开销不过度可能是明智的。注意,一种权衡在于,较短的路由需要每个节点有数个邻节点(即,较高的最大节点度)。在一个示例中,节点C 106可以维护在其中保存了一个或更多个前驱节点和一个或更多个后继节点 的节点ID的DHT 114。DTH 114可以仅是所有节点ID的子集,S卩,这些节点ID邻近节点C 106的节点ID。例如,节点C 106的DHT 114可以维护节点A 102和B 104的在前节点ID以及节点D 108、E 110和F 112的后继节点ID。DHT可扩大到非常多的节点(例如,网络100中的216个节点)并且能够处置连续的节点到达、离开和故障。在一个示例中,DHT可将节点ID作为圆圈上的点来对待,并且δ (节点IDi1,节点IDi2)是绕着圆圈(例如,从节点C到某个节点IDx)按顺时针方向行进的距离。因此,圆形标识符空间被分割成毗连的分段,这些分段的端点是节点标识符(节点ID)。如果I1和i2是两个毗邻的节点ID,那么具有ID i2的节点拥有落Ai1与12之间的所有密钥。因此,诸DHT可形成用来构建更复杂的服务(例如,分布式文件系统、对等文件共享和内容分发系统、协作式 web高速缓存、多播、任播、域名服务和即时消息接发)的基础设施,其中每个这样的服务可以与圆形标识符空间中的标识符相关联。具有在值上最接近特定服务标识符的节点ID的节点可以被假定成主存此类服务(例如,存储特定的文件或者提供由“服务”标识符所标识的服务、等等)。例如,参照DHT 114,如果服务具有“79”的标识符值,那么该服务最接近于与节点C 106相关联的节点ID“73”并且因此,任何对此类服务的请求将最终在节点C 106 处结束。图2是图解了集中式注册器(可信授权)可如何用于将节点ID指派给覆盖网络内的多个节点的框图。对于覆盖网络100,集中式注册器202可用于向多个网络节点102、104、106、108、110、112、116和/或118提供节点ID以形成DHT 204。网络节点每次寻求获得节点ID时会向集中式注册器202发送请求指派节点标识符的消息。集中式注册器202 随后为请求节点计算节点ID、将该节点ID指派给请求节点并且将其发送给请求节点。在某一些实现中,集中式注册器202可能不参与任何覆盖网络操作并且由此可能对于节点ID验证而言甚至是其他节点不可到达的。此类集中式注册器202的一个示例可以包括接收来自请求节点的公钥、指派节点ID并且断言将这些节点ID的映射至节点的证书授权机构(CA)。例如,CA可以使用请求节点的公钥来签署节点ID的映射。请求节点可随后向其他节点呈现经证明的节点ID并且证明对包括在证书中的公钥的拥有权。节点可通过用其私钥来签署某些所传送的内容的方式证明这种拥有权。其他节点可使用通过节点的证书证明的公钥来验证结果得到的经签署的内容。覆盖网络专有的集中式注册器可以由给定覆盖网络的创建者或者对促进此类覆盖网络的采用感兴趣的实体来部署,或者还可以由网络运营商来提供。使用集中式注册器的一个缺点在于,要对等覆盖网络的所有潜在成员(例如,节点)信任拥有和操作该集中式注册器的单个授权机构可能是困难的。在某一些实现中,集中式注册器202可向散列函数提供随机输入而节点本身向散列函数提供另一随机输入,而不是覆盖网络节点完全依赖于外部授权机构(即,集中式注册器)进行节点ID指派。这两个输入中的每一个将由验证器节点用来验证节点ID属于宣称该节点ID的节点。集中式注册器可能限制单个实体或节点可获得的节点ID的数目。例如,在运营商拥有的集中式注册器情形中,节点ID可能与服务订阅捆绑在一起。

图3是图解了可在网络内实现的协议阶层的一个示例的框图。在此示例中,覆盖网络可被建立在包括传输层306、网络层308、链路层310和/或物理层312的协议栈上。在这些基础层之上可实现可包括P2P和/或SIP协议的覆盖层304。在覆盖层304之上可建立用途层302,通过该用途层302来支持诸服务。用途层302也可被称为应用层或数据层。 “层”也可被称为“层面”。注意,其他所设想的实现可包括其他或等效的层和/或可以省去某一些层。在一些意义上,用途层302可被认为是相对于其他层304-312的顶层或最高层。 同样,物理层312可被认为是相对于其他层302-310的底层或最低层。对等计算的本质在于,每个对等体向其他对等体提供服务以允许覆盖共同提供更大的功能。在P2PSIP中,对等体节点提供存储和传输服务以使得能实现分布式数据库功能和分布式传输功能。可构想的是,各个对等体也可提供其他服务。这些外加服务中的一些 (例如,经NAT的UDP简单穿越(STUN)服务器服务)可被要求允许形成和操作覆盖网络,而其他一些(例如,语音邮件服务)可以是对基本P2PSIP功能性的增强。覆盖网络的节点可能需要存储关于哪些对等体节点提供哪些服务以及或许每个对等体节点具有何种用于投放每个所列服务的能力的信息。图1和2中所图解的节点可以实现经认证的数据存储。例如,发布节点A102可以生成资源ID并且使其与要被存储的数据相关联。资源ID可以例如映射到充当存储节点的节点F 112。此处所描述的各种特征可以实现在图1和2的覆盖网络中以及其他类型的覆盖网络中。分布式P2P网络中的数据存储和授权对等(P2P)覆盖网络的示例是由IETF(因特网工程任务组)标准化的P2PSIP(会话发起协议)。本文中所描述的各种数据存储授权特征可实现在遵从P2PSIP的网络中。作为P2PSIP的一部分,可以考虑可允许在覆盖实例化之上定义用途的资源分配。用途可以定义各种数据,每种数据对应一个数据模型。为了在覆盖中的特定节点上存储数据,可以标识要被存储的数据的类型或种类并且可使用经证明的用户名或节点ID来计算资源ID,其中, 感兴趣的证书以及资源ID演算机制可由用途来定义。出 于这些原因,覆盖网络中的所有节点都支持可在该覆盖网络上提供的所有用途可能是必需的。另外,当用途演进至更新的版本时,所有节点都支持所有用途的相同版本可能是必需的。在分布式网络中(例如,其中没有集中式节点授权机构是可用的),这可能需要“η天”来更新所有节点。然而,获得更新日是繁琐的并且对于实际的网络实现而言通常是不现实的。因此,需要保持存储和覆盖层面数据授权用途为不可知(例如,不依赖特定用途、 数据类型、等等)。通过这样做,覆盖网络可支持不同种类的用途以及允许更新随着时间演进。因此,在覆盖层处所提供的性质和原始功能可不依赖于用途层地得到维护或保持。在一个示例中,术语“覆盖层”(或覆盖层面)可被用来指协议阶层中用途层以下且传输层以上的诸层处的操作。术语“应用层”和/或“用途层”可被用来指协议阶层的用途层处的操作。图4是图解了可在一个示例中用于覆盖网络中的数据存储请求的消息报头架构的示例的图示。然而,可以使用其他类型的消息报头。消息的正文(未示出)可紧随消息报头架构。该架构是以四字节行的形式示出的,因为这些结构中的许多在长度上是四个字节的倍数。字节是横轴上较大的散列标记。位是横向上较小的散列标记。纵向上示出了每个消息或行的起始字节(从0开始数)。前四个字节402 (第零到第三字节)可被用来标识消息类型或种类。第四字节410是生存时间(TTL)字段,其指示消息在被丢弃之前可经历的反复或跳跃的数目。TTL字段按每次跳跃递减,并且如果TTL等于0,那么消息不应该再被跳跃转发。第五字节412是路由并且指示要遵循的路由类型。路由可以例如是代理或重定向。FRAG字段414是第六字节418中被用来指示该消息是否是片段的1位字段。LFRG字段416是第六字节中被用来指定此片段是否是完整消息中的最后一个片段的1位字段。14 位(来自第六字节418的6位加上第七字节420的全部8位)被保留以指示片段偏移和总长度。EXP字段422是指定正在使用的协议是否是实验性的1位字段。版本字段424是指示正在使用的P2PSIP协议的版本的7位字段。DHT字段426是指定正在使用的DHT算法的8位字段。Chord DHT算法可被使用。其他DHT算法也是可能的。散列字段428是指定正在被用来生成ID的散列算法的8位字段。所有用于覆盖的ID应该或者必须使用相同的算法来演算。示例算法是产生160位散列值的SHA-I算法, 尽管其他散列算法也可被使用。安全性430是指示正由覆盖中的参与者使用的安全性机制的8位字段。R/r位432是被用来指定这是请求还是响应的1位字段。方法字段434是指示消息方法的7位字段。有至少四种方法类型对等体专有的、资源专有的、传送专有的以及DHT专有的。该方法类型由方法434的前两位来指定。其余5位被用来指定特定的方法。示例方法是“对等体_加入”、“对等体_搜寻”、“资源_获得”、“资源_安放”、“资源_传输”、“传送_打开”以及“传送_隧道”。注意,术语“对等体”可以指覆盖网络中的节点。长度字段435是不包括报头在内的消息大小的字节计数。目的地ID字段436是唯一性地标识目的地节点或资源的160位标识符(例如,节点ID或者资源ID)。源ID字段 438是唯一性地标识发送者的160位标识符(例如,节点ID或者资源ID)。交易ID字段440是标识交易并且还充当盐值或种子以使请求和响应随机化的唯一性的64位数字。响应可与它们所对应的请求使用相同的交易ID。覆盖ID字段442是正在使用的覆盖的32位校验和或散列。该校验和必须或者应该被用来将代表覆盖名称的可变长度字符串转换成32位值。该32位覆盖字段提供完整性检查。该32位覆盖字段可提供代表覆盖名称的数字签名,以使得诸节点可验证它们正在与期望的覆盖网络交互。

不可知的覆盖行为在非常基础的层面处,DHT提供基于密钥的路由,在该路由之上可以存在若干应用。覆盖协议通常提供存储和检索语义并且允许诸节点的对等连通性。这些语义是可由宽范围的应用使用的非常基本的原语。即使对于P2PSIP工作组范围内的基于SIP的应用分类而言,也有可存在于覆盖中的各个节点上的若干应用。无需使覆盖中的所有节点都支持相同的应用。另外,给定的应用可以随着时间演进,而更新的版本潜在地定义在覆盖上要被存储和检索的数据的新的种类。诸如不依赖用途的存储机能之类的覆盖原语的优点在于,它们不要求覆盖网络中的所有节点都支持给定的用途才能存储与该用途相对应的数据。诸用途当然可以在用途层面处提供可由的确支持那些用途的节点解读的外加机制,但这并不依赖覆盖原语。在给定不同种类的用途以及甚至相同用途的潜在演进的情况下,如果覆盖原语上的操作被允许由这些用途来定义,那么覆盖网络可能需要标志日(或者同步周期)以更新所有节点。当在各个节点上存在不兼容的用途时,覆盖将随后被呈现为不可用或者将导致不可预测的行为。因此,虽然诸用途应该被允许与覆盖层交互以提供某些输入,但是覆盖原语上的诸如存储之类的操作应该被定义并且包含在覆盖层内。示例-顶层数据授权方案根据对等覆盖网络中的数据授权的第一示例,资源标识符可基于第一字符串与第二字符串的组合来生成,其中第一字符串可由存储节点独立认证并且资源标识符可由该存储节点验证。例如,第一字符串可以是发布节点ID或其等效物。第二字符串可以是任意字符串或者预定义字符串。发布节点可以生成包括资源标识符和要被存储的数据的存储请求。该存储请求可在覆盖网络上发送以被存储在存储节点处,其中该存储节点负责包括资源标识符的标识符空间。存储节点可以在协议阶层的覆盖层面处通过验证资源标识符来执行独立的存储授权。图5是图解了可如何在对等覆盖网络中执行分布式数据存储和授权的示例的框图。发布节点A 502可以寻求在覆盖网络中存储可由数据名称标识的数据(即,数据值)。 发布节点A 502可以具有发布节点ID以及(带有相应私钥Prv-A的)公钥Pk_A。证书 Cert-A可由发布节点A 502从证明实体508获得,其中证书Cert-A是其公钥Pk-A的函数。当发布节点A 502希望在覆盖网络中存储数据时,其可以作为第一字符串和第二字符串的函数生成相关联资源ID。在一个示例中,第一字符串可以是发布节点ID。第二字符串可以是预定字符串(例如,描述数据、用途、或者数据类型的字符串)或者可以是任意字符串。在第二字符串是预定的字符串的情况下,其可以是阶层结构的一部分或者可以是字符串分量的级联。在各种示例中,第一和/或第二字符串中的每一个可以是字母、字母数字和/或数字的符号序列。发布节点A 502还可以根据Cert-A以及要被存储的数据(例如,通过用Cert-A来签署数据值)来生成签名Sig-A。 存储请求504可以随后由发布节点A 502生成并发送。存储请求504可以包括资源ID、数据名称、数据值、第一字符串、第二字符串、公钥Pk-A以及签名Sig-A。在此示例中,资源ID可以映射到节点B 506负责的资源空间。一旦接收到存储请求504,存储节点B 506就可以认证请求节点实际上是发布节点A502。在一个示例中,此认证可以通过向证明实体508发送可包括公钥Pk-A的证书请求510来达成。作为响应,存储节点B 506可接收具有验证证书Ver. Cert-A的证书响应512,该验证证书Ver. Cert-A是公钥Pk-A的函数。如果收到签名Sig-A与所接收到的用Ver. Cert-A签署的数据值的本地生成的签名相匹配,那么存储节点B 506就已经成功验证了存储请求504的真实性。否则,如果收到签名Sig-A与本地生成的签名不匹配,那么存储请求504可被拒绝或忽略。一旦成功验证了 Sig-A,存储节点B 506就可以存储收到数据。在此示例中,利用了包括资源ID字段516以及包含数据名称、数据值和第一字符串的第二字段518的数据结构 514。注意,图5中所图解的方案提供了用于在对等覆盖网络中实现数据存储授权和访问的各种合意特征。首先,数据授权可以允许存储节点B 506验证数据所有者(发布节点A 502)实际上得到授权以在该特定资源ID处进行存储。在一个示例中,这可以由存储节点B 506通过用本地生成的资源ID来验证接收到的资源ID来达成。由于存储节点B 506知道或者能获得第一字符串(例如,发布节点标识符)和第二字符串,因此该存储节点B 506能够重新计算本地资源ID以与收到资源ID相比较。由发布节点A 502使用的第二字符串对于存储节点B 506而言可以是已知的。例如,第二字符串可以是(在存储请求504中接收到的)用途类型或者可以是数据名称。因此,存储节点B 506可将在存储请求504中接收到的第一字符串和第二字符串用于计算资源ID的本地版本并且将该本地版本与收到资源ID相比较。 这允许覆盖网络限制可由给定节点存储数据的存储位置的数目,并且因此限制单个节点对覆盖中可用的分布式配额的影响。在一般意义上,资源ID验证可基于提供对第一字符串的可认证的证明(例如,对发布节点标识符的所有权的证明)并且随后验证第一字符串和第二字符串(例如,用途类型)的公知(或商定的)函数映射到存储的ID空间。对第一字符串的可认证的证明可以例如基于不对称的密钥操作(例如,使用公钥/私钥对)。有几种达成验证资源标识符的潜在独立的方法。第一种方法可以是期望接受服务发布存储请求的存储节点知道特定类型的服务/用途(即,第二字符串)得到授权。即,这些服务/用途可以是预定义的并且是覆盖网络的公知节点。第二种方法可以是期望“第二字符串”的所有组合被存储节点接受。第三种方法可以是使第二字符串由被所有节点承认的授权机构独立签署。然而,将来自发布节点A 502的数据围绕覆盖网络中的不同存储节点散布的能力也是合意的。若没有在多个存储节点之间散布数据存储的能力,那么给定存储节点可能负担来自重负载的发布节点的所有数据。通过利用图5中的其中资源ID至少部分地基于第二字符串的方案,来自发布节点A 502的不同数据可具有不同的第二字符串,藉此导致不同的资源ID。即,第二字符串可以随不同类型的数据或用途而变化或者每次可以是任意的。 因此,可以生成映射到不 同存储节点并且在不同存储节点之间散布数据的不同的资源ID。其次,数据授权允许数据所有者控制哪些节点被允许向该特定的资源ID写入。 艮口,存储节点B 506可以认证存储请求504以验证仅得到授权的节点才能够作出此类请求。 例如,在图5中,仅发布节点必须具有正确的证书Cert-A才能够生成正确的签名Sig-Α。存储节点B 506能够验证该正确的签名已被使用(通过使用证明实体508)。若不进行验证, 任何节点都可能潜在地覆写给定资源ID的内容。这些数据授权性质可以是不依赖于用途的。即,对覆盖存储的数据授权可以按用途不可知的方式来提供。因此,覆盖网络中的存储节点能够验证对来自另一节点的存储请求的授权,而不必支持要被存储的数据所属的特定用途/服务/应用。即,无论存储节点是否支持特定类型的服务或应用,其都能实现对要被存储的任何类型的数据的授权验证。如图5中所图解的,数据授权可以允许数据所有者(例如,发布节点A 502)确保未经授权的节点不能写或修改其已存储在存储节点B 506中的资源ID中的特定项的内容 (例如,数据值)。此数据授权特征的保证可以取决于实施此类数据授权特征的存储节点 (例如,存储节点B 506)的协作。得到授权的存储请求可以由覆盖网络中的任何节点独立验证。换言之,检索资源 ID的内容(例如,数据名称、数据值)的节点可以能够验证数据所有者(例如,发布节点A) 得到授权以在该资源ID处进行存储。如图5中所图解的,给定的发布节点(例如,节点A 502)可以能够在覆盖网络中的多个节点位置处存储信息或数据。这允许节点跨覆盖网络中的多个存储节点散布其数据而不依赖于单个节点,藉此在不同用途要被存储时达成负载平衡。固有地提供此类数据存储散布的覆盖存储原语在处置查询和存储本身方面本质上是有用的。在覆盖层面处的数据授权必须或者可以基于由覆盖网络认同的覆盖层面凭证 (例如,由证明实体508提供的证书Cert-A或者自签署的证书)。用途专有的证书不能得到不支持那些用途的节点的认同并且因此不是覆盖层面数据授权的可行候选。其中用字符串和认证者名称两者来生成资源ID的这种顶层授权方案帮助实现了覆盖层面处的存储授权。通过利用字符串(例如,用途专有的字符串)来生成资源ID,这导致来自特定节点的不同数据在诸存储节点之间分发或散布,藉此达成负载平衡功能。示例-较低层数据授权方案覆盖网络可以提供用于在不具有关于供应服务的实体的节点ID(或用户名)的先验知识的情况下供搜寻节点查找服务(例如,与用途、服务或应用相关联的所存储的数据) 的能力。例如,实际上不能期望寻找使用中继NAT的穿越(TURN)服务的节点知道相应的用户名或节点ID。资源ID计算可以按用途不可知的方式来执行,以使得资源ID可被用来标识任何类型的用途、服务和/或应用。在某一些实例中,诸用途可以被允许将用途专有的输入提供到资源ID计算中去。即,资源ID可以(至少部分地)基于由用途提供的信息(例如,每种特定类型的功能、服务、和/或应用)来计算。为了帮助实现这些特征中的某一些,在生成资源ID时可以使用改良的办法。在此改良的办法中,资源ID可以仅基于“第二”字符串而并不基于“第一”字符串(例如,发布节点ID)。然而,数据授权可以仍然通过将“第一”字符串(例如,发布节点ID)与存储节点数据结构处的资源ID相关联的方式来执行。例如,此类授权可以在协议阶层的用途层面处而不是在覆盖层面处执行。图6是图解了可如何在对等覆盖网络中执行分布式数据存储和授权的替换示例的框图。发布节点A 602可以寻求在覆盖网络中存储可由数据名称标识的数据(即,数据值)。发布节点A 602可以具有发布节点ID以及(带有相应私钥Prv-A的)公钥Pk_A。 证书Cert-A可由发布节点A 602从证明实体608获得,其中证书Cert-A是其公钥Pk-A的函数。当发布节点A 602希望在覆盖网络中存储数据时,其可以作为字符串的函数生成相关联资源ID。该“字符串”可以是预定字符串(例如,描述数据、用途或数据类型的字符串)。在各种示例中,该字符串可以是字母、字母数字、和/或数字的符号序列。该字符串还可以是阶层结构或者可以是字符串分量的级联。发布节点A 502还可以根据Cert-A以及要被存储的数据(例如,通过用Cert-A来签署数据值)来生成签名Sig-A。存储请求604可以随后由发布节点A 602生成并发送。存储请求604可以包括资源ID、数据名称、数据值、发布节点ID、公钥Pk-A以及签名Sig-A。在此示例中,资源ID可以映射到节点B 606负责的资源空间。一旦接收到存储请求604,存储节点B 606就可以认证请求节点以确定该请求节点实际上是否是发布节点 A 602。这可以通过验证正确的证书Cert-A对于请求节点而言是已知的并且是与发布节点 ID相关联的方式来达成。一旦成功验证了该证书(例如,通过验证签名Sig-A),存储节点 B 606就可以存储收到数据。在此示例中,利用了数据结构614,其包括资源ID字段616、包含数据名称和数据值的第二字段618、以及包含发布节点ID的第三字段620。在图6的这个示例中,仅“字符串”被用来生成资源ID。所使用的“字符串”可以与覆盖网络上的数据类型或用途相关联。因此,覆盖网络中的任何节点可以通过生成资源 ID(例如,通过使用合意的字符串)以及搜寻在覆盖网络中具有相同资源ID的所存储的实例来搜寻和/或寻找用于此类用途的所存储的数据。注意,存储节点B 606维持发布节点ID 620与资源ID 616和数据618分开或者维持发布节点ID 620对于资源ID 616和数据618而言是私有的。因此,在存储节点B 606 可以向请求资源ID 616的搜寻节点提供对数据618的访问的同时,该存储节点B 616还可以防止那些节点删除或修改数据618,除非那些节点能够证明它们知道相关联的发布节点 ID和/或经认证的证书Cert-A。其中认证者名称AuthName不是资源ID的一部分而是取而代之被追加至数据部分的这种较低层授权方案具有允许多个节点在相同资源ID下存储数据的优点。这进而使得搜寻节点更容易在覆盖网络中找到此所存储的数据,藉此帮助实现各种类型的服务。补充地,通过利用用途专有的字符串来生成资源ID,这导致来自特定节点的不同数据在诸存储节点之间分发或散布,藉此达成负载平衡功能。然而,作为允许其他节点容易地搜寻与特定用途相关联的特定类型的数据的灵活性的交换,数据访问、存储和/或移除的授权是在较低层面(例如,数据层面)处而不是在覆盖层面处执行的。示例-与数据授权方案共享资源ID在图6中所图解的示例中,由于资源ID可以基于代表用途的预定义的“字符串”, 因而不同节点可生成相同资源ID以存储不同数据是可能的。由于诸资源ID映射到特定ID 空间并且此类ID空间被分配在覆盖网络节点之中,因而相同节点可能扮演用于相同资源 ID的多个实例的存储节点的角色。图7是图解了两个不同的发布节点可如何使用对等覆盖网络中的相同资源ID来寻求存储数据的示例的框图。与图5和6中的示例类似,第一发布节点A 702可以寻求在覆盖网络中存储数据(即,数据名称1和数据值1)。发布节点A 702可以具有发布节点ID1、 (带有相应私钥Prv-A的)公钥Pk-A、以及证书Cert-A (该证书Cert-A可以是公钥Pk-A 的函数并且与发布节点IDl相关联)。当发布节点A 702希望在覆盖网络中存储数据时,其可以作为字符串X的函数生成相关联资源ID。该“字符串X”可以是预定字符串(例如,描述用途或数据类型的字符串)。在各种示例中,该字符串X可以是字母、字母数字、和/或数字的符号序列。该字符串X还可以是阶层结构或者可以是字符串分量的级联。发布节点A 702还可以根据Cert-A以及要被存储的数据(例如,通过用Cert-A来签署数据值1)来生成签名Sig-A。第一存储请求706可以随后由发布节点A 702生成并发送。存储请求706 可以包括资源ID、数据名称1、数据值1、发布节点ID1、公钥沖-A以及签名Sig-A。以类似的方式,第二发布节点C 704可以具有发布节点ID2、(带有相应私钥
的)公钥Pk-c、以及证书Cert-C(该证书Cert-C可以是公钥沖-C的函数并且与发布节点 ID2相关联)。当发布节点C 704希望在覆盖网络中存储数据时,其可以作为字符串X的函数生成相关联资源ID。注意,因为第二发布节点C 704与第一发布节点A 702使用相同的字符串X,所以它们的资源ID是相同的。发布节点C 704还可以根据Cert-C以及要被存储的数据(例如,通过用Cert-C来签署数据值1)来生成签名Sig-C。第二存储请求708可以随后由发布节点A 702生成并发送。第二存储请求708可以包括资源ID、数据名称2、数据值2、发布节点ID2、公钥Hi-C以及签名Sig-C。存储节点B 710接收存储请求706和708两者并且可以认证发布节点702和704。 一旦得到认证,存储节点B 710就可将收到数据存储在可以存储具有相同资源ID 714的不同数据716和720的数据结构712中。在此示例中,资源ID 714的每个数据实例716和720 具有指示拥有该数据实例的节点的相关联发布节点718和722。因此,在存储节点B 710可以向请求资源ID 714的搜寻节点提供对数据实例716和720的访问的同时,该存储节点B 720还可以防止节点删除或修改数据716和720,除非这些节点可以证明它们知道(关于数据实例716的)发布节点IDl 718和/或(关于数据实例720的)发布节点ID2 722。增强型数据授权在各种实现中,用来生成资源ID的“字符串”可以基于特定的用途定义的字符串和/或节点/用户名或标识符。在一个示例中,资源ID可以至少部分地是资源名称的函数。图8是图解了发布节点可如何为覆盖层面数据存储授权生成覆盖网络中的资源 ID的示例的框图。在一个示例中,数据授权可以基于要被用来计算资源名称的经证明的用户名或者节点ID。实质上,此类用于生成资源ID的机制的使用允许存储节点验证数据所有者(即,发布节点)得到授权以在该位置处进行存储。另外,每个用途也可被允许定义其自
19己的用于数据授权的规则。这使得数据授权模型取决于用途,从而导致其自身需要同类用途支持以及关于覆盖网络的用途更新标志日。在一个实现中,数据授权可以按允许覆盖层面处的独立存储授权操作的方式来达成。首先,诸如经证明的用户名或者发布节点的节点ID之类的第一字符串被定义(802)。接下来,第二字符串(例如,用途专有的字符串(用途字符串(UsageMring)))被获得(804)。 在一个示例中,第二字符串可以由给定用途来提供或者默认为用途ID。可随意任选地,随后可获得资源名称(806),其中该资源名称包括两个部分——第一字符串和第二字符串。在一个示例中,这两个部分可以由分隔符“”分隔开或者以其他方式组合。随后作为资源名称的散列生成(808)资源ID,以使得资源ID =散列(资源名称)=散列(第一字符串第二字符串)。作为示例,资源ID可以是散列(aliceOexample. dht. org: sip),其中第一字符串(例如,发布节点标识符)^"aliceiexample. dht. org”,而第二字符串为“sip”(例如,用途类型)。发布节点还可以生成第一字符串的、第一字符串和第二字符串的、或者第一字符串和第二字符串以及其他值的数字签名Sig-D 810。发布节点可以随后生成包括资源ID、要被存储的数据、第一字符串以及数字签名 Sig-D的存储请求812。注意,其他信息也可被包括为存储请求的一部分。此存储请求可被发送给覆盖网络中负责该资源ID的ID空间的存储节点或者由该存储节点接收。图9是图解了存储节点可如何为覆盖层面数据存储授权验证覆盖网络中的资源 ID的示例的框图。存储节点可接收包括资源ID、数据、第一字符串以及签名Sig-D的存储请求902。注意,其他信息也可被包括为存储请求的一部分。存储请求902可以如图8中所图解的那样被生成。为了验证收到资源ID是有效地生成的,接收存储节点可以通过获得 (可在存储请求中接收到的)第一字符串902以及与要被存储的数据相关联的第二字符串 (例如,用途专有的字符串)906来验证该资源ID。随后,使用所获得的第一字符串和第二字符串来生成资源名称的本地实例908。随后,从资源名称的散列生成资源ID的本地实例 910。为了验证收到资源ID 912,将资源ID的本地计算出的实例与在存储请求中接收到的资源ID相比较(914)。如果它们匹配,那么该存储请求被接受并且收到数据被存储(916), 否则该存储请求被拒绝(918)。注意,使用这种形式的资源ID生成的数据访问授权(其依赖于AuthName和^ageString两者)可被称为顶层授权,因为认证数据存储所需要的信息被包括为资源ID的一部分。在某一些实例中,用途可能对于在不具有关于用户名或节点ID的先验知识的情况下允许查询或者搜寻其数据是感兴趣的。因为搜寻节点可能不知道发布节点的第一字符串(例如,用户名和/或节点ID),所以生成不将第一字符串包括为资源ID或资源名称的一部分的资源ID是合乎需要的。图10是图解了发布节点可如何为用途层面数据存储授权生成覆盖网络中的资源 ID的替换示例的框图。在此示例中,可在较低层面处提供数据授权。即,虽然发布节点可以定义认证者名称AuthName 1002以及用途专有的字符串UsageMring 1004,但是资源名称1006仅是作为UsageMring的函数而生成的。随后,可作为资源名称1006的函数生成资源ID 1008。在此示例中,数字签名Sig-D可以通过签署AuthName和/或^ageString 和/或其他值来生成。发布节点可以随后生成包括资源ID、要被存储的数据、认证者的名称 AuthName以及数字签名Sig-D的存储请求1012。注意,其他信息也可被包括为存储请求的一部分。此存储请求1012可被发送给覆盖网络中负责该资源ID的ID空间的存储节点或者由该存储节点接收。图11是图解了存储节点可如何为用途层面数据存储授权验证覆盖网络中的资源 ID的示例的框图。存储节点可接收包括资源ID、数据、认证者名称AuthName以及签名Sig-D 的存储请求1102。注意,其他信息也可被包括为存储请求的一部分。存储请求1102可以如图10中所图解的那样被生成。为了验证收到资源ID是有效地生成的,接收存储节点可通过获得与要被存储的数据的用途相关联的用户专有的字符串UsageMring 1104来验证该资源ID。随后,使用用途字符串Usag必tring来生成资源名称的本地实例1106。随后,从资源名称的散列生成资源ID的本地实例1108。为了验证收到资源ID 1110,将资源ID的本地计算出的实例与在存储请求中接收到的资源ID相比较(1114)。如果它们不匹配,那么该存储请求被拒绝(1118)。

在存储请求尝试覆写、删除或者修改当前所存储的并且与相同资源ID相关联的数据的情形中,存储节点可以进一步验证认证者的名称AuthName 1112。即,存储节点可以验证收到存储请求来自得到授权以替换这样的数据的一方(例如,知道AuthName或者相关联的经证明的证书的一方)。如果确定当前存储请求来自与相同资源ID下先前所存储的数据相同的发布节点,那么新接收到的数据可被存储(1116),以使得该数据替换或者被添加至先前所存储的数据。否则,如果确定当前存储请求来自(与相同资源ID下先前所存储的数据)不同的发布节点,那么该存储请求可以被接受但是将不替换、修改或者删除先前所存储的数据。取而代之,可在相同的资源ID下但是用与该存储请求相关联的不同的 AuthName来存储(1120)新的数据(如图7中所图解的那样,数据结构712)。注意,使用这种形式的资源ID生成的数据访问授权(其依赖于^ageString)可被称为低层面(例如, 用途层面、数据层面或值层面)授权,因为授权数据存储所需要的信息没有包括为资源ID 的一部分。利用此低层面(或值层面)数据授权,覆盖网络中的数据搜寻可以在不知道用户名或节点ID的情况下执行,藉此帮助实现数据发现。为了支持此双层面授权(即,在较高层面处对基于用途的资源ID的授权以及在较低层面处对认证者的名称的授权),协议(例如,存储请求或数据访问请求)可以允许用信号通知使用中的恰适授权类型的能力。覆盖网络中的存储语义的改进存储和移除请求处理某一些覆盖网络服务可能要求接收存储/移除请求的存储节点验证种类ID (该ID 是该请求中的一部分)对于该存储节点而言是已知的并且相应的数据模型是正确的。这假定该存储节点支持与该存储请求的数据相关联的完全相同的用途,这可能未必如此。为了容适本文中所描述的数据存储授权技术(其中存储节点不需要支持特定的用途),存储节点可以忽略存储请求中的种类ID检查。存储节点可以基于本地策略来提供对与其支持的用途相对应的数据的偏好。然而,这样的本地决定可能落在覆盖协议本身的范围之外。相关数据的存储和检索使用本文中所描述的资源ID计算,与给定用途以及给定用户/节点相对应的数据可以与特定的资源ID相关联并且被存储在负责此类资源ID的存储节点处。诸用途可以通过向资源名称中的用途专有的数据提供不同的语义的方式在多个存储节点之间平均散布数据存储。例如,替代将“sip:aliCe@example. dht.org”用作资源名称,发布节点可以将 "sipaor:aliceiexample. dht. org”等用作资源名称。在此示例中,用途专有的语义“sip” 被改成“sipaor”。某一些覆盖网络可以允许在与用户名和/或节点ID的散列相对应的资源ID处存储与该用户名或节点ID相对应的证书。这本身是有用的;然而,如果证书可被存储在与SIP记录地址(AOR)相同的地方,那也是有用的。有两种可达成这一点的方法。SIP 用途可指定也可被存储在资源ID处的证书种类。替换地,该SIP用途可被建模为资源ID 以及相应值在可能不拥有该资源ID的节点处的目标存储。这将允许在相同资源ID处存储与多个用途相对应的数据的节点(或者是因为该节点选择不进行授权或者是因为该节点简单地作为其节点标识符或认证者名称的散列来计算其资源ID)仅存储证书的一个实例, 即使多个用途使用该证书亦然。然而,在此时此刻,期望每个用途均定义所有需要的相关数据种类以使得那些对象可相对容易地被存储在相同的资源ID处看来是合理的。被适配成生成和发送存储请求的发布节点的示例图12图解了被适配成请求在覆盖网络中进行数据存储的发布设备或节点1200的示例。发布节点1200可以例如是图1的覆盖网络中的节点104。发布节点1200可以包括耦合至存储设备1250和网络通信接口 1220的存储授权处理器1230。在一个示例中,发布节点1200可以生成允许覆盖层面处的独立授权的数据存储请求。在另一示例中,发布节点 1200可以生成允许用途层面处的独立授权的数据存储请求。发布节点1200可以希望在覆盖网络上存储来自数据存储设备1250的数据。对数据存储的请求可以由存储授权处理器 1230来生成并且经由网络通信接口 1220在覆盖网络上发送。存储授权处理器1230可包括资源ID生成器1234、签名生成器1M0、认证者名称生成器1M2、以及授权类型模块1232。 在某一些实现中,存储授权处理器1230可以由一个或更多个处理器、处理电路、和/或模块来实现。授权类型模块1232可以确定哪种类型的授权对于特定的存储请求(或者数据访问请求)而言是恰适的并且为该恰适类型的授权选择规程。例如,特定用途可能要求覆盖层面授权(例如,顶层授权),而其他一些用途可能要求用途层面授权(例如诸如值层面或数据层面授权之类的较低层授权)。在使用覆盖层面授权的情形中,授权类型模块1232可以使资源ID生成器1234基于第一字符串1238(例如,发布节点ID或者认证者名称)和第二字符串1236(例如,用途字符串)来生成资源ID。所生成的资源ID被用来标识要通过存储请求被存储的数据。该资源ID还可用于确定覆盖网络中的哪个存储节点将存储存储请求中的数据。签名生成器 1240可用于基于第一 /第二字符串和/或要藉由存储请求被存储的数据生成签名;所生成的签名可被包括为该存储请求的一部分。补充地,节点证明模块12M可用于生成唯一性地标识或者认证发布节点1200的证书。在各种示例中,节点证明模块12M可通过自认证的方式或者经由采用证明实体的外部认证过程来生成该证书。此类证书可用于保护并且随后认证存储请求中的资源标识符。在使用用途层面授权(例如,数据层面或值层面授权)的情形中,授权类型模块 1232可使资源ID生成器1234仅基于第二字符串1236 (例如,用途字符串)而不使用第一字符串1238(例如,发布节点标识符或认证者名称)来生成资源ID。所生成的资源ID被用来标识要通过存储请求被存储的数据。在此示例中,第一字符串1238(例如,发布节点标识符或授权名称)可被追加为数据的一部分。在这两个示例中,或者与存储请求一起或者单独地将(指示经证明的发布节点正授权存储请求的)授权戳记发送给存储节点。例如,存储请求中使用的证书的公钥或者验证可由该存储节点获得。图13是图解了在发布节点中操作的用于帮助实现覆盖层面处的独立存储授权的方法的示例的流程图。在一个实施例中,本文中所描述的步骤可由图12中所图解的模块或设备中的一个或更多个来执行。发布节点可以获得与该发布节点相关联的经证明的第一字符串(例如,节点标识符或者认证者名称)(130 。发布节点还可以获得第二字符串(例如,任意字符串或者与要被存储的用途类型或数据类型相关联的字符串)(1304)。在一个示例中,第二字符串可以是关于覆盖网络内的服务的预定义字符串。如果实现覆盖层面授权, 那么可以作为第一字符串和第二字符串的函数生成资源标识符(1306),其中第一字符串可由存储节点独立认证并且该资源标识符可由该存储节点验证。对存储请求的授权可在协议阶层的覆盖层面处验证,其中该覆盖层面低于协议阶层中的用途层面。替换地,如果实现用途层面授权,那么可以作为第二字符串的函数生成资源标识符(1308)。在此情形中,存储节点可以在覆盖层面处验证资源标识符,但是对存储请求的授权可以在协议阶层的用途层面处来验证,其中该用途层面高于协议阶层中的覆盖层面。即,如果资源标识符仅是第二字符串的函数,那么多个发布节点可以为要被存储的不同数据生成相同的资源标识符。因此,存储节点可以(在覆盖层面处)验证资源标识符是基于正确的第二字符串有效地生成的,但是可以在用途层面处使用与所存储的数据相关联的(标识发布节点的)第一字符串来执行存储授权(以区分由不同的发布节点使用相同的资源标识符存储的数据)。在一个示例中,用来生成资源标识符的函数可以是散列函数。发布节点还可以基于用经认证的关于发布节点的密钥(例如,证书或私钥)签署了的第一字符串、第二字符串、和/或要被存储的数据来生成签名(1310)。在一个示例中,经认证的密钥可以是私钥、 自生成的证书、或者认证发布节点的第三方证书。随后,可以生成包括资源标识符以及要被存储的数据的存储请求(131 。该存储请求还可以包括第一字符串、第二字符串、和/或签名。随后,可在覆盖网络上将该存储请求发送给存储节点,其中该存储节点负责包括该资源标识符的标识符空间(1314)。补充地,发布节点可以生成多个不同的资源标识符,其中该多个不同的资源标识符中的每一个(在覆盖层面授权的情形中)是第一字符串与不同的第二字符串的组合的函数或者(在用途层面授权的情形中)仅是这些第二字符串的函数。通过使用第二字符串来生成不同的资源标识符,在其中不同的存储节点负责不同的标识符空间的覆盖网络内达成了数据存储负载扩展。被适配成接收和授权存储请求的存储节点的示例图14图解了用于在覆盖网络中存储数据同时执行数据存储授权的存储节点的示例。存储节点1400可以允许在覆盖层面处对数据存储进行独立授权。存储节点1400可以包括存储授权处理器1430、网络通信接口 1420、以及存储设备1450。对数据存储的存储请求可以经由网络通信接口 1420从覆盖网络中的发布节点接收。在一个示例中,该存储请求可以包括资源ID、数据、认证者名称以及签名。网络通信接口将该请求传达给存储授权处理器1430,该存储授权处理器1430审阅该请求以确定发送该存储请求的发布节点是否得到授权以在存储节点1400处存储数据。存储授权处理器1430尤其可以包括授权类型模块 1432、资源ID验证器1434、签名验证器1440以及认证者名称验证器1442。授权类型模块1432可以确定哪种类型的授权对于特定的存储请求而言是恰适的。例如,存储请求可以发信号通知要被用于要存储的数据的授权类型。至少有两种可使用的授权类型——覆盖层面授权以及数据层面或值层面授权。在覆盖层面授权中,资源ID可以与第一字符串(例如,发布节点标识符、认证者名称、等等)和第二字符串(例如,任意字符串、预定义字符串、等等)相关联或者是该第一和第二字符串的函数。因此,资源ID验证器1434可以利用第一字符串1438和/或第二字符串1436(两者都可以在存储请求中接收或者以其他方式被提供或指示给存储节点1400)来确定该请求是否得到授权。在此情形中,“授权”表示检查资源ID是有效地生成的并且第一字符串(例如,发布节点标识符或者认证者名称)是经认证的(例如,以使得所存储的数据可以唯一性地与发布节点相关联)。在用途层面授权(例如,数据层面或值层面授权)中,资源ID可以与(可与要被存储的用途类型或数据类型相关联的)第二字符串1436相关联或者是第二字符串1436的函数。因此,资源ID验证器1434可以利用第二字符串1436来确定资源ID是否是有效地生成的。补充地,对于用途层面处的存储授权而言,认证者名称验证器1442可以验证存储请求的第一字符串(发布节点标识符或者认证者名称)。注意,第一字符串可被用来确定与先前所存储的数据具有相同资源ID的存储请求是否应该替换先前所存储的数据或者其是否应该分开存储。类似地,签名验证器1440可验证存储请求的签名。图15 (包括图15A和15B)图解了在存储节点中操作的用于在覆盖层面处执行独立存储授权的方法的示例。存储节点接收要在对等覆盖网络中存储数据的第一存储请求, 该第一存储请求包括第一资源标识符和要被存储的第一数据,其中,第一资源标识符是第二字符串与可被认证的第一字符串的组合的函数(150 。该存储请求可以例如包括资源标识符、要被存储的数据、第一字符串(例如,发布节点标识符、认证者名称)、第二字符串、 和/或对第一/第二字符串和/或要被存储的数据的签名。取决于正被使用的授权类型, 资源标识符可以是第一字符串和/或第二字符串的函数。在一个示例中,第一字符串可以是发布节点标识符,而第二字符串是任意字符串。在另一示例中,第一字符串是发布节点标识符,而第二字符串是关于覆盖网络内的服务的预定义字符串。在覆盖层面授权中,验证资源标识符是第一字符串和第二字符串的函数(1506)。 即,存储节点可以计算资源标识符的本地版本以验证收到资源标识符。如果该资源标识符被成功验证,那么第一数据被存储并且与第一资源标识符相关联(1508)。否则,该请求被拒绝。在一个示例中,在覆盖层面处执行独立的存储授权可包括(a)认证第一字符串,和/ 或(b)确定第一资源标识符是否是第一字符串与第二字符串的组合的函数。存储节点可随后接收对所存储的第一数据的数据访问请求(1510)。对第一数据的访问等级可随后被确定(1512)。如果该数据访问请求证明知道第一资源标识符和第一字符串,那么对所存储的第一数据的访问可被准予(1516)。这样的访问可包括对第一数据的写访问、修改访问和/或删除访问。准予对所存储的第一数据的访问还可包括允许用第二数据来替换第一数据。如果该数据访问请求证明知道第一资源标识符但是不能证明知道第一字符串,那么对所存储的第一数据的只读访问可被准予(1514)。注意,如果该访问请求既不能证明知道资源标识符又不能证明知道第一字符串,那么对第一数据的访问可被拒绝。图16 (包括图16A和16B)图解了在存储节点中操作的用于在用途层面处执行独立存储授权的方法的示例。存储节点接收要在对等覆盖网络中存储数据的第一存储请求, 该第一存储请求包括第一资源标识符、要被存储的第一数据、以及第一发布节点标识符,其中存储节点负责包括第一资源标识符的标识符空间(1602)。第一资源标识符可以是与要被存储的数据的类型相关联的用途字符串的函数。例如,第一资源标识符可以是关于覆盖网络内的服务的预定义字符串的函数。补充地,存储节点还可以接收要在对等覆盖网络中存储数据的第二存储请求, 该第二存储请求包括第一资源标识符、要被存储的第二数据、以及第二发布节点标识符 (1604)。独立的存储授权可在协议阶层的用途层面处执行,其中该用途层面高于协议阶层中的覆盖层面(1606)。第一数据和第一发布节点标识符可被存储并且与第一资源标识符相关联(1608)。第二数据和第二发布节点标识符也可被存储并且与第一资源标识符相关联 (1610)。随后,存储节点可接收对与第一资源标识符相关联的数据的数据访问请求 (1612)。可为该数据访问请求确定对所存储的数据的访问等级(1614)。缺省情况下,可准予对所存储的第一数据和第二数据的只读访问(1616)。然而,如果该数据访问请求证明知道第一发布节点标识符,那么对所存储的第一数据的写访问可被准予(1618)。类似地,如果该数据访问请求证明知道第二发布节点标识符,那么对所存储的第二数据的写访问可被准予(1620)。应认识到,一般而言,本公开中所描述的绝大多数处理可以用类似的方式来实现。 (诸)电路或电路工段中的任何哪个可单独或组合实现为具有一个或更多个处理器的集成电路的一部分。这些电路中的一个或更多个可以在集成电路、先进RISC机(ARM)处理器、 数字信号处理器(DSP)、通用处理器等上实现。还应注意,这些实施例可能是作为被描绘为流程图、流图、结构图、或框图的过程来描述的。尽管流程图可能会把诸操作描述为顺序过程,但是这些操作中有许多能够并行或并发执行。另外,这些操作的次序可以被重新安排。过程在其操作完成时终止。过程可以对应于方法、函数、规程、子例程、子程序等。当过程对应于函数时,其终止对应于该函数返回到调用方函数或主函数。如在本申请中所使用的,术语“组件”、“模块”、“系统”等旨在指示计算机相关实体,任其是硬件、固件、软硬件组合、软件,还是执行中的软件。例如,组件可以是但不被限定于在处理器上运行的进程、处理器、对象、可执行件、执行的线程、程序、和/或计算机。作为解说,在计算设备上运行的应用和该计算设备两者皆可以是组件。一个或更多个组件可驻留在进程和/或执行的线程中,且组件可以局部化在一台计算机上和/或分布在两台或更多台计算机之间。此外,这些组件能从其上存储着各种数据结构的各种计算机可读介质来执行。各组件可借助于本地和/或远程过程来通信,诸如根据具有一个或更多个数据分组的信号(例如,来自借助于该信号与本地系统、分布式系统中的另一组件交互、和/或跨诸如因特网等网络上与其它系统交互的一个组件的数据)。不仅如此,存储介质可以代表用于存储数据的一个或更多个设备,包括只读存储
25器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备、和/或其他用于存储信息的机器可读介质。术语“机器可读介质”包括,但不被限定于,便携或固定的存储设备、光学存储设备、无线信道以及能够存储、包含或承载指令和/或数据的各种其它介质。此外,诸实施例可以由硬件、软件、固件、中间件、微代码、或其任何组合来实现。当在软件、固件、中间件或微码中实现时,执行必要任务的程序代码或代码段可被存储在诸如存储介质或其它存储之类的机器可读介质中。处理器可以执行这些必要的任务。代码段可表示规程、函数、子程序、程序、例程、子例程、模块、软件包、类,或是指令、数据结构、或程序语句的任何组合。通过传递和/或接收信息、数据、自变量、参数、或存储器内容,一代码段可被耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以经由包括存储器共享、 消息传递、令牌传递、网络传输等任何合适的手段被传递、转发、或传输。附图中所图解的组件、步骤、和/或功能中的一个或更多个可以被重新编排和/或组合成单个组件、步骤、或功能,或可以实施在数个组件、步骤、或功能中而不会影响伪随机数生成的操作。还可添加更多的元件、组件、步骤、和/或功能而不会脱离本发明。附图中所图解的装置、设备和/或组件可以被配置成执行在这些附图中所描述的方法、特征、或步骤中的一个或更多个。本文中描述的新颖算法可以在软件和/或嵌入式硬件中高效率地实现。本领域技术人员将可进一步领会,结合本文中公开的实施例描述的各种解说性逻辑框、模块、电路、和算法步骤可被实现为电子硬件、计算机软件、或两者的组合。为清楚地解说硬件和软件的这种可互换性,各种解说性组件、块、模块、电路、和步骤在上文中以其功能性的形式进行了一般化描述。这样的功能性是实现成硬件还是软件取决于具体应用和加诸整体系统上的设计约束。本文中所描述的本发明的各方面可实现于不同系统中而不背离本发明。例如,本发明的一些实现可用移动或静态通信设备(例如,接入终端)和多个移动或静态基站(例如,接入点)执行。应注意,以上实施例仅是示例,且并不被解释成限定本发明。这些实施例的描述旨在解说,而并非旨在限定权利要求的范围。由此,本发明的教导能现成地应用于其他类型的装置,并且许多替换、改动、和变形对于本领域技术人员将是明显的。
权利要求
1.一种在对等覆盖网络中的发布节点处操作以存储数据的方法,包括作为第一字符串与第二字符串的组合的函数生成资源标识符,其中所述第一字符串可由存储节点独立认证并且所述资源标识符可由所述存储节点验证;生成包括所述资源标识符以及要被存储的数据的存储请求;以及在覆盖网络上发送所述存储请求以被存储在所述存储节点处,其中所述存储节点负责包括所述资源标识符的标识符空间。
2.如权利要求1所述的方法,其特征在于,所述第一字符串是发布节点标识符并且所述第二字符串是任意的字符串。
3.如权利要求1所述的方法,其特征在于,所述第一字符串是发布节点标识符并且所述第二字符串是关于所述覆盖网络内的服务的预定义字符串。
4.如权利要求1所述的方法,其特征在于,对所述存储请求的授权可在协议阶层的覆盖层面处验证,其中所述覆盖层面低于所述协议阶层中的用途层面。
5.如权利要求1所述的方法,其特征在于,还包括生成多个不同的资源标识符,其中所述多个不同的资源标识符中的每一个是所述第一字符串与不同的第二字符串的组合的函数。
6.如权利要求5所述的方法,其特征在于,生成所述不同的资源标识符导致数据存储负载散布在其中不同的存储节点负责不同的标识符空间的覆盖网络内。
7.如权利要求1所述的方法,其特征在于,所述存储请求还包括所述第一字符串的指示符。
8.如权利要求1所述的方法,其特征在于,所述存储请求还包括所述第二字符串的指示符。
9.一种发布节点设备,包括通信接口,用于在对等覆盖网络上进行通信;耦合至所述通信接口的处理器,其中所述处理器被适配成作为第一字符串与第二字符串的组合的函数生成资源标识符,其中所述第一字符串可由存储节点独立认证并且所述资源标识符可由所述存储节点验证;生成包括所述资源标识符以及要被存储的数据的存储请求;以及在覆盖网络上发送所述存储请求以被存储在所述存储节点处,其中所述存储节点负责包括所述资源标识符的标识符空间。
10.如权利要求9所述的发布节点设备,其特征在于,所述第一字符串是发布节点标识符并且所述第二字符串是任意的字符串。
11.如权利要求9所述的发布节点设备,其特征在于,所述第一字符串是发布节点标识符并且所述第二字符串是关于所述覆盖网络内的服务的预定义字符串。
12.如权利要求9所述的发布节点设备,其特征在于,对所述存储请求的授权可在协议阶层的覆盖层面处验证,其中所述覆盖层面低于所述协议阶层中的用途层面。
13.如权利要求10所述的发布节点设备,其特征在于,所述处理器还被适配成生成多个不同的资源标识符,其中所述多个不同的资源标识符中的每一个是所述第一字符串与不同的第二字符串的组合的函数。
14.如权利要求13所述的方法,其特征在于,生成所述不同的资源标识符导致数据存储负载散布在其中不同的存储节点负责不同的标识符空间的覆盖网络内。
15.一种发布节点设备,包括用于作为第一字符串与第二字符串的组合的函数生成资源标识符的装置,其中所述第一字符串可由存储节点独立认证并且所述资源标识符可由所述存储节点验证; 用于生成包括所述资源标识符以及要被存储的数据的存储请求的装置;以及用于在覆盖网络上发送所述存储请求以被存储在所述存储节点处的装置,其中所述存储节点负责包括所述资源标识符的标识符空间。
16.如权利要求15所述的发布节点设备,其特征在于,对所述存储请求的授权可在覆盖层面处验证并且不依赖于用途类型。作为第一字符串与第二字符串的组合的函数生成资源标识符,其中所述第一字符串可由存储节点独立认证并且所述资源标识符可由所述存储节点验证; 生成包括所述资源标识符以及要被存储的数据的存储请求;以及在覆盖网络上发送所述存储请求以被存储在所述存储节点处,其中所述存储节点负责包括所述资源标识符的标识符空间。
17.一种在存储节点上操作的方法,包括接收要在对等覆盖网络中存储数据的第一存储请求,所述第一存储请求包括第一资源标识符和要被存储的第一数据,其中所述第一资源标识符是第二字符串与可被认证的第一字符串的组合的函数;在协议阶层的覆盖层面处通过验证所述第一资源标识符来执行独立的存储授权;以及如果所述第一资源标识符被成功验证,则存储所述第一数据并将其与所述第一资源标识符相关联。
18.如权利要求17所述的方法,其特征在于,在所述覆盖层面处执行独立的存储授权包括认证所述第一字符串;以及确定所述第一资源标识符是否是所述第一字符串与所述第二字符串的组合的函数。
19.如权利要求17所述的方法,其特征在于,所述第一字符串是发布节点标识符并且所述第二字符串是任意的字符串。
20.如权利要求17所述的方法,其特征在于,所述第一字符串是发布节点标识符并且所述第二字符串是关于所述覆盖网络内的服务的预定义字符串。
21.如权利要求17所述的方法,其特征在于,所述覆盖层面低于所述协议阶层中的用途层面。
22.如权利要求17所述的方法,其特征在于,还包括 接收对所存储的第一数据的数据访问请求;以及如果所述数据访问请求证明知道所述第一资源标识符以及所述第一字符串,则准予对所存储的第一数据的访问。
23.如权利要求22所述的方法,其特征在于,还包括如果所述数据访问请求证明知道所述第一资源标识符但是不能证明知道所述第一字符串,则准予对所存储的第一数据的只读访问。
24.如权利要求22所述的方法,其特征在于,准予对所存储的第一数据的访问包括允许用第二数据来替代所述第一数据。
25.一种存储节点设备,包括通信接口,用于在对等覆盖网络上进行通信; 耦合至所述通信接口的处理器,其中所述处理器被适配成接收要在对等覆盖网络中存储数据的第一存储请求,所述第一存储请求包括第一资源标识符和要被存储的第一数据,其中所述第一资源标识符是第二字符串与可被认证的第一字符串的组合的函数;在协议阶层的覆盖层面处通过验证所述第一资源标识符来执行独立的存储授权;以及如果所述第一资源标识符被成功验证,则存储所述第一数据并将其与所述第一资源标识符相关联。
26.如权利要求25所述的存储节点设备,其特征在于,在所述覆盖层面处执行独立的存储授权包括认证所述第一字符串;以及确定所述第一资源标识符是否是所述第一字符串与所述第二字符串的组合的函数。
27.如权利要求25所述的存储节点设备,其特征在于,所述处理器还被适配成 接收对所存储的第一数据的数据访问请求;以及如果所述数据访问请求证明知道所述第一资源标识符以及所述第一字符串,则准予对所存储的第一数据的访问。
28.如权利要求27所述的存储节点设备,其特征在于,所述处理器还被适配成 如果所述数据访问请求证明知道所述第一资源标识符但是不能证明知道所述第一字符串,则准予对所存储的第一数据的只读访问。
29.一种存储节点设备,包括用于接收要在对等覆盖网络中存储数据的第一存储请求的装置,所述第一存储请求包括第一资源标识符和要被存储的第一数据,其中所述第一资源标识符是第二字符串与可被认证的第一字符串的组合的函数;用于在协议阶层的覆盖层面处通过验证所述第一资源标识符来执行独立的存储授权的装置;以及用于如果所述第一资源标识符被成功验证则存储所述第一数据并将其与所述第一资源标识符相关联的装置。
30.一种在对等覆盖网络中的发布节点处操作以存储数据的方法,包括 作为第二字符串的函数生成资源标识符,其中所述资源标识符可由存储节点验证;生成存储请求,所述存储请求包括所述资源标识符、要被存储的数据、以及可由所述存储节点独立认证的第一字符串;以及在覆盖网络上发送所述存储请求以被存储在所述存储节点处,其中所述存储节点负责包括所述资源标识符的标识符空间。
31.如权利要求30所述的方法,其特征在于,所述第一字符串是发布节点标识符并且所述第二字符串是任意的字符串。
32.如权利要求30所述的方法,其特征在于,所述第一字符串是发布节点标识符并且所述第二字符串是关于所述覆盖网络内的服务的预定义字符串。
33.如权利要求30所述的方法,其特征在于,对所述存储请求的授权可在协议阶层的用途层面处使用所述第一字符串来验证,其中所述用途层面高于所述协议阶层中的覆盖层面。
34.如权利要求30所述的方法,其特征在于,所述覆盖网络内不同的发布节点生成具有相同的资源标识符但具有不同的第一字符串的数据存储请求,所述不同的数据存储请求可基于使用所述不同的第一字符串的用途层面授权来区分。
35.一种存储节点设备,包括通信接口,用于在对等覆盖网络上进行通信;以及耦合至所述通信接口的处理器,其中所述处理器被适配成 作为第二字符串的函数生成资源标识符,其中所述资源标识符可由存储节点验证; 生成存储请求,所述存储请求包括所述资源标识符、要被存储的数据、以及可由所述存储节点独立认证的第一字符串;以及在覆盖网络上发送所述存储请求以被存储在所述存储节点处,其中所述存储节点负责包括所述资源标识符的标识符空间。
36.一种在发布节点上操作的方法,包括接收要在对等覆盖网络中存储数据的第一存储请求,所述第一存储请求包括第一资源标识符、要被存储的第一数据、以及第一发布节点标识符,其中所述存储节点负责包括所述第一资源标识符的标识符空间;接收要在对等覆盖网络中存储数据的第二存储请求,所述第二存储请求包括所述第一资源标识符、要被存储的第二数据、以及第二发布节点标识符;存储所述第一数据和所述第一发布节点标识符并将它们与所述第一资源标识符相关联;以及存储所述第二数据和所述第二发布节点标识符并将它们与所述第一资源标识符相关联。
37.如权利要求36所述的方法,其特征在于,所述第一资源标识符是与要被存储的数据类型相关联的用途字符串的函数。
38.如权利要求36所述的方法,其特征在于,所述第一资源标识符是关于所述覆盖网络内的服务的预定义字符串的函数。
39.如权利要求36所述的方法,其特征在于,还包括在协议阶层的用途层面处执行独立的存储授权,其中所述用途层面高于所述协议阶层中的覆盖层面。
40.如权利要求36所述的方法,其特征在于,还包括接收对与所述第一资源标识符相关联的数据的数据访问请求;以及准予对所存储的第一数据和第二数据的只读访问。
41.如权利要求40所述的方法,其特征在于,还包括如果所述数据访问请求证明知道所述第一发布节点识符,则准予对所存储的第一数据的写访问;以及如果所述数据访问请求证明知道所述第二发布节点识符,则准予对所存储的第二数据的写访问。
42. 一种存储节点设备,包括 通信接口,用于在对等覆盖网络上进行通信;以及耦合至所述通信接口的处理器,其中所述处理器被适配成接收要在对等覆盖网络中存储数据的第一存储请求,所述第一存储请求包括第一资源标识符、要被存储的第一数据、以及第一发布节点标识符,其中所述存储节点负责包括所述第一资源标识符的标识符空间;接收要在对等覆盖网络中存储数据的第二存储请求,所述第二存储请求包括所述第一资源标识符、要被存储的第二数据、以及第二发布节点标识符;存储所述第一数据和所述第一发布节点标识符并将它们与所述第一资源标识符相关联;以及存储所述第二数据和所述第二发布节点标识符并将它们与所述第一资源标识符相关联。
全文摘要
提供了存储授权和对存储在对等覆盖网络上的数据的访问控制。发布节点(502)将数据存储在覆盖网络中的存储节点(506)上。该发布节点(502)被适配成通过作为与要被存储的数据类型相关联的用途字符串的函数生成资源标识符(516)来帮助实现数据存储授权。生成存储请求(504),其包括资源标识符(516)以及要被存储的数据(518)。该存储请求可被发送给存储节点(506)。存储设备(506)接收由发布节点发送的包括资源标识符(516)以及要被存储的数据(518)的存储请求(504)。存储节点(506)在覆盖层面处通过验证(510,512)资源标识符来执行独立的存储授权。如果该资源标识符被成功验证,则存储请求中的数据被存储在存储节点处。
文档编号H04L29/06GK102217274SQ200980145867
公开日2011年10月12日 申请日期2009年11月13日 优先权日2008年11月14日
发明者L·R·唐达蒂, R·S·贾雅拉曼, V·纳拉亚南 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1