用于信息中心网络的访问控制框架的制作方法

文档序号:10492165阅读:467来源:国知局
用于信息中心网络的访问控制框架的制作方法
【专利摘要】一个实施例提供用于发布和获得加密形式的加密数据集合的访问控制架构。操作中,内容消费者可以获得数据集合的清单对象,使得清单包括对所述数据集合的一组加密内容对象的引用,并包括一个或多个访问控制规约ACS,每个访问控制规约规定用于解密所述数据集合的一个或多个内容对象的解密协议。消费者可以通过信息中心网络ICN传播兴趣消息以接收清单中列出的加密内容对象。客户端还可以从清单获得与相应的加密内容对象关联的ACS,以及使用ACS中规定的解密协议解密相应的加密内容对象。
【专利说明】
用于信息中心网络的访问控制框架
技术领域
[0001]本申请一般涉及信息中心网络。更具体地,本申请涉及用于发布和访问加密数据的访问控制框架。
【背景技术】
[0002]信息中心网络架构(ICN)正快速成为研究界和工业界中当前的主机对主机设计的互联网设计的有吸引力的替代方式。最近提出几个新颖的网络架构作为ICN的实例。这些ICN架构的最通用和基础的特征包括基于兴趣的内容检索、内容为导向的路由和网络内缓存。基于兴趣的内容检索和内容为导向的路由允许用户通过对唯一命名的内容的显式请求而不是通过建立与可以提供内容的目标计算机的点对点连接从网络获得内容。网络内缓存允许路由器将内容缓存预先确定的时间长度,使得随后对相同名称的内容对象的请求可以通过缓存满足,而不是通过将请求向上游转发到由请求识别的网络端点。
[0003]由于网络内缓存,ICN内容对象可以不总是来自其原始生产者。不过,如果曾为特定消费者加密缓存内容,则即使其它消费者被授权访问此内容,但他们也不可能解密内容。因此,ICN架构通常要求对加密内容的请求直接转发到内容生产者,使得每个消费者可以接收已经使用消费者的公钥加密的内容的副本。遗憾的是,要求ICN节点将请求转发到内容生产者不允许消费者和发布者从网络内缓存受益,这可能导致对于消费者慢的响应时间和对于内容生产者的大的请求负担,这是不期望的。

【发明内容】

[0004]—个实施例给客户端提供一种访问控制架构,该架构基于发布者的访问控制规约(ACS)接收并解密加密数据的集合。操作中,客户端可以获得数据集合的清单对象,使得清单包括对数据集合的一组加密内容对象的引用,并包括一个或多个访问控制规约(ACS),每个规约规定用于解密数据集合的一个或多个内容对象的解密协议。客户端通过信息中心网络(ICN)获得清单中列出的相应加密内容对象。客户端还可以从清单获得与相应加密的内容对象关联的ACS,并使用ACS中规定的解密协议解密相应加密的内容对象。
[0005]在信息中心网络(ICN)中,每项内容是分别被命名的,每项数据被绑定到将该数据与任何其它项数据相区分的唯一名称,诸如相同数据的其它形式或来自其它源的数据。此唯一名称允许网络装置通过传播指示唯一名称的请求或兴趣来请求数据,可以获得与数据的存储位置、网络位置、应用和传输手段无关的数据。命名数据网络(NDN)或内容中心网络(CCN)是ICN架构的示例,以下词语描述NDN或CCN架构的元件:
[0006]内容对象(ContentObject):单——项命名数据,其绑定到唯一名称。内容对象是“永久的”,这意味着内容对象可以在计算装置内或者在不同的计算装置中移动,但不会改变。如果内容对象的任何组成变化,则出现变化的实体创建包括更新内容的新内容对象,并且将新内容对象绑定到新唯一名称。
[0007]唯一名称(Unique Name):CCN中的名称通常是与位置无关的,唯一地标识内容对象。数据转发装置不管内容对象的网络地址或物理位置如何,可以使用名称或名称前缀将包向生成或存储内容对象的网络节点转发。在一些实施例中,名称可以是分层结构的可变长度标识符(HSVLI) ASVLI可以分成几个层次组成,这些组成可以以各种方式构造。例如,个别的名称组成口&1^、1101]16、11(111和〖681:.〖11:可以以左对齐的前缀为主的方式构造,形成名称 V parc/home/ndn/test.txt”。因此,名称 “/parc/home/ndn” 可以是 “/parc/home/ndn/test.txt”的“父”或“前缀”。附加组成可以用来区分内容项目的不同形式,诸如合作文档。
[0008]在一些实施例中,名称可以包括标识符,诸如从内容对象的数据(例如验证和值)和/或从内容对象的名称的元素导出的散列值。基于散列的名称的描述在美国专利申请号13/847,814中描述(发明人Ignac1 Solis于2013年3月20日申请的名称为“0RDERED-ELEMENT NAMING FOR NAME-BASED PACKET FORWARDING”)。名称还可以是扁平标签。后文中“名称”用来指名称数据网络中的一条数据的任何名称,诸如层次名称或名称前缀、扁平名称、固定长度的名称、任意长度的名称或标签(例如多协议标签交换(MPLS)标签)。
[0009]兴趣(Interest):指示对一条数据的请求的包,包括该条数据的名称(或名称前缀)。数据消费者可以在信息中心网络中传播请求或兴趣,CCN/NDN路由器可以向可以提供所请求数据以满足请求或兴趣的存储装置(例如缓存服务器)或数据生产者播送。
[0010]在一些实施例中,ICN系统可以包括内容中心网络(CCN)架构。然而,本文中公开的方法还适用于其它ICN架构。对CCN架构的描述在美国专利申请号12/338,175中描述(发明人 Van L.Jacobson 和 Diana K.Smetters 于 2008年 12 月 18 日申请,名称为 “CONTROLLING THESPREAD OF INTERESTS AND CONTENT IN A CONTENT CENTRIC NETWORK”)。
[0011]在一些实施例中,客户端通过ICN传播对数据集合的兴趣,以及响应于传播兴趣,通过ICN接收清单对象。
[0012]在一些实施例中,清单包括通过引用的相应ACS。并且在获得ACS时,客户端可以从清单获得与ACS关联的名称前缀;通过ICN传播其名称包括名称前缀的兴趣。然后响应于传播兴趣,客户端接收包括ACS的内容对象。
[0013]在一些实施例中,在解密加密的内容对象时,客户端获得与加密的内容对象对应的加密密钥,通过执行ACS中规定的解密协议,获得解封装密钥。客户端然后使用解封装密钥解密加密密钥,以获得解密密钥;以及使用解密密钥解密加密内容对象。
[0014]在一些实施例中,在获得解封装密钥时,客户端获得标识解封装密钥的解封装密钥名称,并沿着密钥链,直到达到由解封装密钥名称标识的密钥节点。密钥链的相应密钥节点包括加密形式的解密密钥,解密密钥能够解密密钥链的下一密钥节点的解密密钥。客户端然后从标识的密钥节点获得解封装密钥。
[0015]在一些实施例中,解密密钥是使用基于分组的加密方案和/或广播加密方案加密的。
[0016]—个实施例提供一种客户端装置,他使用访问控制规约(ACS)建立与发布者的安全的端对端通信信道。操作中,客户端可以获得数据集合的初始清单对象。初始清单包括规定用于获得并解密数据集合的一个或多个内容对象的端对端访问控制方案的ACS。客户端从初始清单中的ACS获得发布者的公钥,从ACS确定用于与发布者的会话的加密算法。
[0017]客户端然后为发布者传播设置兴趣消息,使得设置兴趣消息包括使用确定的加密算法和发布者的公钥加密的临时密钥。响应于传播设置兴趣消息,客户端接收满足设置兴趣消息的设置内容对象,使得设置内容对象包括会话密钥和会话标识符。客户端然后为发布者传播包括会话标识符的完成兴趣消息,作为响应,接收?两足完成兴趣消息的会话中清单(in-sess1n manifest)。会话中清单包括对使用会话密钥加密的数据集合的一个或多个内容对象的引用。
[0018]在一些实施例中,客户端从设置内容对象获得验证数据,使用验证数据验证会话密钥。然后,响应于确定会话密钥是有效的,客户端继续传播完成兴趣消息,以建立安全的通信信道。
[0019]在一些实施例中,在验证会话密钥时,客户端由一个或多个会话密钥、密钥标识符和用于确定的加密算法的标识符计算散列。客户端然后将计算的散列与验证数据比较,以确定会话密钥是否是有效的。
[0020]在一些实施例中,客户端可以通过信息中心网络(ICN)获得会话中清单中列出的相应内容对象,并使用会话密钥解密相应的内容对象。
【附图说明】
[0021]图1呈现根据实施例促进发布和访问加密形式的数据集合的示例性网络环境。
[0022]图2A图解说明根据实施例的示例性CCN消息。
[0023]图2B图解说明根据实施例的CCN兴趣消息的示例性元数据。
[0024]图2C图解说明根据实施例的CCN内容对象的示例性元数据。
[0025]图3A图解说明根据实施例的示例性清单。
[0026]图3B图解说明根据实施例的示例性名称列表部分和示例性散列列表部分。
[0027]图4图解说明根据实施例的示例性访问控制规约(ACS)400。
[0028]图5呈现根据实施例图解说明获得并基于访问控制规约解密数据集合的方法的流程图。
[0029]图6呈现根据实施例图解说明使用ACS解密清单中列出的内容对象的方法的流程图。
[0030]图7呈现根据实施例图解说明使用ACS中指定的密钥链解密数据集合的内容对象的方法的流程图。
[0031]图8呈现根据实施例图解说明基于清单中的ACS建立安全的端对端会话的方法的流程图。
[0032 ]图9图解说明根据本发明的实施例的示例性传输架构。
[0033]图10图解说明根据实施例促进发布和访问加密形式的数据集合的示例性设备。
[0034]图11图解说明根据实施例促进发布和访问加密形式的数据集合的示例性计算机系统。
[0035]在图中,相同的附图标记指相同的附图元件。
【具体实施方式】
[0036]给出以下描述使得本领域技术人员能够制造和使用实施例,以下描述是在特定应用和其需求的背景下提供的。对所公开实施例的各种改进对本领域技术人员是非常显然的,在不偏离本发明的精神和范围下,本文中定义的通用原理可以应用于其它实施例和应用。因此,本发明不局限于所显示的实施例,而是给予与本文中公开的原理和特征一致的最宽范围。
[0037]_
[0038]本发明的实施例提供一种访问控制框架,其解决了通过信息中心网络(ICN)或内容中心网络(CCN)发布加密形式的数据集合的问题。具体地,访问控制框架允许发布者通过使用加密的内容对象使用清单发布其内容,并且规定可以使用哪个访问控制方案来解密和访问内容。
[0039]例如,在一些实施例中,清单可以规定内容的加密的解密密钥的名称,并且可以规定用于获得解密密钥的解封装密钥的访问控制方案。只有被允许访问内容的客户端被允许获得解封装密钥。替代性地,清单可以规定访问控制方案,访问控制方案允许客户端直接从发布者或者从代表发布者的内容生产者获得加密的内容对象和解密密钥。
[0040]因此,访问控制框架可以用来使用任何访问控制方案发布任何类型的内容。不是要求每个发布者执行其自己形式的应用专用访问控制规约和实施机制,发布者可以通过使用其自己选择的访问控制方案,使用访问控制框架来发布加密内容。
[0041 ]在访问控制框架中,清单包括将加密内容与访问控制和解密信息去耦合的访问控制规约和密钥链。而且,密钥链自身可以使用包含访问受任意的基于分组的分层保护的内容所需的解密密钥列表的清单实现。密钥本身基于主体(principal),以便实现细粒度的访问控制方案,其中,主体为个别用户或一组主体。清单的描述在美国专利申请号14/337,026(律师案号为PARC-20140480US01,名称为 “System for Distributing Nameless Objectsusing Self-Certifying Names”发明人Marc E.Mosko于2014年7月21 日申请)中描述。
[0042]在一些实施例中,访问控制框架可以实现至少三种类型的通过ICN的访问控制方案:基于分组的访问控制方案,广播访问控制方案和向TLS提供ICN变形的端对端安全通信。本发明的实施例还提供一种ICN应用编程接口(API),生产者可以使用API来发布加密内容,消费者可以使用API来访问加密内容。
[0043]示例性网络环境
[0044]图1呈现根据实施例的促进发布和访问加密形式的数据集合的示例性网络环境100。具体地,网络环境100可以包括内容中心网络(CCN) 102、内容生产者108、内容发布者110、客户端112(例如内容消费者)和内容中心网络102XCN 102(或信息中心网络)可以包括多个边缘节点104和路由节点106。
[0045]例如,视频流服务可以配置通过CCN 102可访问的内容生产者110。内容生产者110可以包括与网络102的边缘节点104.2接口的服务器计算机或计算机集群。内容生产者110可以生成任意内容,诸如照片、视频、传感器采集的数据等。内容生产者110可以在本地托管或不托管内容,但可以与内容发布者110合作代表内容生产者108发布其内容。
[0046]发布者110可以将来自内容生产者108的数据转换成携带数据块的内容对象集合(或任何形式的命名数据对象或ND0),他们是具有关联的加密签名的命名对象。发布者110可以通过CCN 102以他们的名称发布这些ND0,CCN 102的转发器104和106可以将NDO请求通过网络102从客户端112转发到发布者110。
[0047]转发器包括至少两种主要元件:转发信息库(FIB)和未决兴趣表(PIT)。转发器可以使用FIB来通过输出接口向可以满足兴趣的内容生产者或发布者路由进入的兴趣消息。在一些实施例中,转发器可以使用标准路由协议或静态路由填充FIB,并使用最长前缀匹配将兴趣名称与FIB表项匹配。路由协议可以基于发布的NDO的位置异步地填充FIB。
[0048]转发器可以使用PIT来缓存未决兴趣消息的和接收每个兴趣消息所通过的接口的状态。当转发器接收内容对象时,转发器可以对PIT执行最长前缀匹配查询操作,以识别匹配的PIT表项,并使用匹配的PIT表项的接口来沿相反的兴趣路径将内容对象返回传播相应兴趣的客户端。
[0049]在一些实施例中,一些转发器还可以包括缓存内容对象的内容存储(CS)。例如,转发器节点104可以对应于提供其它计算机或网络访问CCNl 02的边缘节点。因此,转发器节点104可以从客户端装置接收兴趣消息,并且可以代表内容生产者108和/或内容发布者110缓存内容对象。当边缘节点104接收兴趣时,他们可以对CS执行初始的最长匹配前缀查询操作,以搜索可以满足兴趣的匹配的缓存内容对象。如果没有找到匹配的缓存内容对象,则边缘节点104可以继续通过CCN 102转发兴趣(例如基于匹配的FIB表项)。因此,CCN 102上分布的内容存储可以降低通过CCN 102的内容对象检索等待时间。
[0050]例如,内容生产者108可以包括媒体流服务(例如来自加利福尼亚州的洛思加图斯市的Netflix,Inc.的NetfIix媒体流服务),他与内容生产者110合作来通过CCN传播加密形式的受保护内容,并允许CCN边缘节点104.1上的内容存储缓存加密内容。内容生产者108可以使用访问控制框架来通过只允许付费订阅者解密内容来保持控制哪些实体可以消费内容。因此,内容生产者108可以允许媒体流服务的订阅者能够访问内容,但不要求他们直接从内容生产者108或内容发布者110获得内容。
[0051]然而,内容生产者108可能想防止未订阅用户或恶意实体获得对其缓存内容的访问。在一些实施例中,在将内容返回请求内容的客户端112之前,内容生产者108可以加密内容(例如媒体流片断)和内容的加密密钥。此内容和其解密密钥然后可以沿着指向客户端112的返回路径缓存在内容存储上。然后,如果另一客户端请求内容,则此其它客户端可以从内容存储获得加密内容,并且只有订阅用户能够解密解密密钥和内容。
[0052]为此,内容生产者108向作为付费订阅者的用户提供包括到内容片断和解密密钥的链路的清单。清单还包括访问控制规约(ACS),其规定正在使用哪个访问控制方案来保护内容,诸如基于广播的加密、基于会话的加密、基于分组的加密或现在已知或以后开发的任何其它的加密协议的变形。此ACS可以规定集合的加密/解密算法,如何获得集合的解密密钥等。因此,内容生产者108不需要为集合中的每个内容对象传播访问控制方案。而是,集合的清单可以规定用于控制对集合中的每个内容对象或流片断进行访问的必要信息。
[0053]在基于会话的加密方案中,只要当前与发布者110的会话是活动的,或者在一些变形中,只要客户端装置的用户是内容生产者108的有效订阅者,例如客户端112可以使用个人的解密密钥来解密内容。基于会话的加密协议可以使用特定于用户会话的对称密钥加密内容或其解密密钥。当客户端112建立与内容发布者110的会话时(例如当发布对一项内容的请求时),内容发布者110可以返回包括使用会话密钥加密的媒体流片断列表或包括客户端112可以使用的解密缓存的媒体流片断的解密密钥(使用会话密钥加密的)的清单。然后,在使用内容的解密密钥之后,客户端112可以从托管内容片断的CCN 102的任何内容存储或服务器获得并解密所请求内容的媒体流片断。
[0054]在一些实施例中,访问控制框架可以支持适合不同的访问控制策略的任意类型的加密,并通过使用用于缓存和检索加密内容的网络中缓存保持CCN内容检索的效率。例如,密钥管理器(未显示)可以发布用于内容加密的对称密钥,并可以发布用于加密对称密钥的公-私钥对。当内容生产者108生成内容时(例如或者根据需要或者通过从永久性存储器读数据),内容生产者108向使用对称密钥加密内容块的内容发布者110发送内容,并通过CCN102发布加密的内容对象。内容生产者108的访问策略管理器可以根据特定用户的公钥加密对称密钥,并且还通过网络发布加密的对称密钥。沿CCN 102的任何内容存储可以在加密的内容或加密的对称密钥通过CCN 102发布时,缓存加密的内容或加密的对称密钥。
[0055]在一些实施例中,用户的客户端装置112可以通过与内容生产者108的安全信道获得他的公-私钥对。同样,客户端112可以通过CCN 102传播兴趣来通过CCN 102(例如从发布者110或CCN转发器节点上的内容存储)获得加密内容和对称密钥,并且如果客户端112具有来自生产者108的有效密钥则解密对称密钥。在解密对称密钥之后,客户端112可以使用对称密钥来解密内容。尽管此示例包括以非集中方式工作的多个实体,但在一些实施例中,两个或更多个这些实体可以在单台机器上配置或者分布在CCN 102上的不同的网络节点。
[0056]访问控制框架通过使用对安全数据混合加密执行加密访问控制。具体地,内容对象是以密码随机对称密钥(称作随机数密钥(nonce key))加密的。随机数密钥则是使用另一种适合内容生产者的期望访问控制形式(例如广播加密、基于属性加密、RSA、基于身份的代理重加密等)加密算法加密的。随机数密钥针对主体加密,主体可以是个别消费者或个人团体。
[0057]清单中列出的各个内容对象是以随机数密钥通过预定的加密算法(诸如AES-256-CTR)加密的。清单包括ListOfNames(名称列表)字段,其包括加密的内容对象的名称,清单包括ListOfHashes(散列列表)字段,其包括加密的内容对象的散列值。因此,获得清单的客户端可以顺序地或同时传播对加密的内容对象组的兴趣。清单的ACS字段提供解密加密的内容对象所需的信息,诸如(加密的)随机数密钥的名称、加密算法的参数等。
[0058]访问控制框架通过另一种适合实现内容生产者的期望的访问控制结构的预定加密算法对随机数密钥加密。可以解密加密的随机数密钥的密钥在后面称作解封装密钥。解封装密钥本身是加密的,使得只有授权主体(例如拥有或可以访问适当的私有解密密钥的主体)可以解密解封装密钥。
[0059]例如,内容生产者可以给每个主体i分配公-私钥对(PK1,SK1),使得各个客户端一开始就具有他们自己的主体密钥对。通过公钥密码算法以PKj对SKi的加密由EncPKC(SKi,PKj)表示。因此,当主体分组X被授权时,针对X的封装密钥DKX以EncX(DKx,PKx)加密。用户“A”然后可以通过只使用他们自己的私钥SKa检索密文Enc(SKx,PKA)和Enc(DKx,PKx)获得解封装密钥DKx。
[0060]在一些实施例中,主体密钥的集合可以是私钥集合或密钥链的一部分。例如,主体密钥链分层可以以主私钥为根,其用来用到合格叶子主体(leaf principal)i的路径解密解封装密钥。如果主体j是主体分组i的成员,则主体i的加密私钥可以包括于私钥集中。这使主体j能使用其私钥获得主体i的私钥,然后用来顺序地解密分层中的其它私钥,一直到主私钥根。再次,此根私钥然后用来解密解封装密钥。解封装和主体密钥之间的这种分离允许主体密钥被离线分发或在频带外获得。而且,私钥集合是足够灵活的,能够实现任何主体的复杂的访问控制组分层。[0061 ] CCN 消息
[0062]图2A图解说明根据实施例的示例性CCN消息200。CCN消息200可以用来通过CCN生成任何类型的网络消息,诸如兴趣、内容对象或清单。在一些实施例中,清单本身实现为一种类型的内容对象。
[0063]CCN消息200可以包括消息标题、验证数据和CCNMessage (CCN消息)字段206。消息标题可以包括F i xedHeader (固定标题)字段202、Opt1nalHeader (可选标题)字段204,他们分别可以提供关于消息结构和转发信息的信息。CCN消息字段206提供消息主体,其包括Name(名称)212、Metadaga(元数据)214和Payload(有效载荷)216(对于兴趣和内容对象消息两者)。而且,验证数据可以包括Val idat 1nAl gor i thm (验证算法)字段208和Validat1nPayload(验证有效载荷)字段210。验证算法字段208可以包括数字签名验证信息(例如签名算法、验证算法CRC32C、RSA签名等)。验证有效载荷字段210可以包括签名数据本身。
[0064]CCN兴趣和内容对象是两种类型的CCN消息,但他们通过CCN网络节点以不同方式处理。内容对象是命名数据对象(NDO),他的有效载荷字段216包括发布的内容,可以通过与其位置无关的CCN名称定位和认证他。另一方面,兴趣是由内容消费者(例如客户端)发布以请求NDO内容对象的消息。兴趣的名称字段212可以包括期望内容的名称,有效载荷字段216可以包括与请求有关的任何附加信息。而且,兴趣和内容对象的元数据字段214可以包含引导如何处理兴趣或内容对象的不同的数据。
[0065]图2B图解说明根据实施例的CCN兴趣消息的示例性元数据250。元数据250可以包括Key IdRestrict 1n (密钥标识符限制)字段252、InterestLifetime (兴趣生存期)字段254、<:0社611切1^6(^!^8111^8壮丨(^丨011(内容对象散列限制)字段256和附加元数据字段258。
[0066]KeyId字段252和内容对象散列限制字段256允许兴趣消息规定控制内容对象如何与兴趣匹配的限制。例如,KeyId通过检查用来签名内容对象的密钥ID限制与特定的发布者的匹配,其中,KeyId值存储在内容对象的验证有效载荷字段中。同样,内容对象散列限制字段256将有效的匹配内容对象限制到自认证名称与内容对象散列限制字段256的值匹配的那些内容对象。在一些实施例中,自认证名称可以包括CCN消息字段、验证算法字段和验证有效载荷字段的SHA-256散列。
[0067]附加元数据字段258可以包括内容生产者可以用来生成动态内容的附加信息。在一些实施例中,CCN上的转发器不在他们本地的PIT内的附加元数据字段258中存储数据。
[0068]图2C图解说明根据实施例的CCN内容对象的示例性元数据270。元数据270可以包括ContentType (内容类型)字段272,其规定由内容对象携带的内容的类型,诸如清单、文本、图像、二进制大对象(blob)等。元数据270还可以包括PublishTime(发布时间)字段274,其规定发布有效载荷的数据的时间和日期;Creat1nTime (创建时间)字段276,其规定创建内容对象的时间;Expirat1nTime(到期时间)字段278,其规定内容对象的数据到期的时间。而且,元数据270可以包括附加元数据字段280,其可以包括不控制内容对象如何沿网络转发的关于内容对象或有效载荷的任何元数据。
[0069]清单和访问控制规约(ACS)
[0070]清单可以包括规定用来加密一项内容的加密算法的ACS。例如,一项内容可以使用AES密钥加密,AES密钥可以包括随机生成的随机数密钥。加密内容然后可以通过网络分发,授权客户端可以通过使用ACS中规定的解密算法对随机数密钥解密来访问加密的随机数密钥。一旦客户端解密随机数密钥,客户端可以使用随机数密钥来解密加密内容。
[0071]在一些实施例中,清单可以列出使用非相同集合的加密方案加密的内容对象集合。清单可以包括多个ACS对象,使得每个ACS可以用来解密清单的内容对象的不同子集。在一些实施例中,清单中的每个内容对象表项可以规定清单中的ACS的引用。替代性地,每个ACS可以识别哪些内容对象是可以通过ACS中规定的解密方案解密的。例如,每个ACS可以映射到一组内容对象(例如由内容对象的名称前缀标识的)。举另一示例,每个ACS和内容对象表项可以包括将ACS解密方案和一个或多个内容对象绑定在一起的方案标识符。
[0072]图3A图解说明根据实施例的示例性清单300。清单300可以包括Name(名称)字段302、Metadata(元数据)字段304和Payload(有效载荷)字段306。名称字段302可以规定清单300的名称,诸如受保护的数据集合的名称。此受保护的数据集合可以包括加密的内容对象、加密的解密密钥和规定客户端可以如何获得数据集合的一个或多个ACS对象。因此,元数据304可以包括关于元数据300本身的信息,有效载荷306可以包括关于内容对象、密钥和ACS对象的信息。
[0073]如之前提到的,清单300定义为内容对象的类型。因此,清单300的元数据308可以包括值为“Manifest(清单)”的ContentType(内容类型)字段310。元数据308还可以包括其它内容对象元数据字段,诸如发布时间字段312、创建时间字段314、到期时间字段316和附加的兀数据部分318。
[0074]清单300的有效载荷306包括内容对象的逻辑集合的信息。在一些实施例中,有效载荷306通过包括集合的内容对象的元数据信息并包括集合的组成内容对象的基于散列的名称的排序列表来描述逻辑集合。这种格式使客户端能够针对有效载荷306中列出的各个内容对象,发布具有自认证名称的兴趣。
[0075]例如,有效载荷306可以包括一个或多个有效载荷部分320,每个有效载荷部分320可以包括ListOfNames (名称列表)字段324和ListOfHashes(散列列表)字段326,他们一起提供集合中内容对象的排序名称。名称列表字段324可以包括一个或多个内容对象的CCN名称,散列列表字段326可以包括一个或多个内容对象的内容对象散列值(例如自认证名称)。
[0076]有效载荷部分320还可以包括ACS字段322。如果在ACS字段322中,ACS字段存在,则ACS提供对相同部分320中列出的内容对象的至少子集的访问控制信息。ACS可以包括获得并解密随机数密钥并获得对加密的内容对象的访问所需的信息。在一些实施例中,有效载荷部分320可以包括ACS对象或ACS对象的引用。例如,有效载荷306可以包括ACS链路,诸如包括实际的ACS对象的内容对象的CCN名称。这允许清单300在不消耗有效载荷306中的大量数据的情况下包括多个复杂的ACS对象。
[0077]而且,清单300可以包括或引用多个ACS对象,使得每个ACS可以对应于清单300中列出的内容对象的子集。例如,清单有效载荷306可以包括多个有效载荷部分320(例如图示的星号指示零或更多的实例可以存在),使得每个有效载荷部分320包括(或引用)ACS和其相应的内容对象子集。因此,清单元数据308可以包括多个名称列表和多个散列列表字段,每个ACS—个列表。
[0078]作为一个替代性实现,清单元数据308可以包括一个名称列表部分324、一个散列列表部分326和包括多个ACS表项的一个ACS部分322。部分322中的每个ACS可以具有关联的ACS标识符,部分324或部分326的每个名称或散列表项具有规定哪个ACS对应于名称或散列表项的关联的ACS标识符。因此,当取出名称列表324中引用的内容对象时,客户端可以使用相应的ACS标识符来获得ACS部分322列出的相应的ACS。
[0079]图3B图解说明根据实施例的示例性名称列表部分350和示例性散列列表部分360。名称列表部分350包括一个或多个NameEntry (名称表项)部分352的列表。名称表项部分352包括MediaName(媒体名称)字段356,其规定一项数据的内容名称前缀,并且名称表项部分352可以包括StartChunk(开始块)字段354,其规定一项数据的第一块号(如果数据被分割成块的集合)。散列列表部分360可以包括一个或多个HashEntry(散列表项)部分362的列表。散列表项部分362可以包括NameIndex(名称索引)字段364,其通过与名称列表字段350的表项对应的数字标识内容对象,散列表项部分362包括Hash (散列)字段366,其包括内容对象的内容对象散列(C0H)值。
[0080]例如,考虑名称列表350,其第一名称表项部分(由名称索引标识符“I”标识)包括:[0081 ] {StartChunk = 3 ,MediaName = Ici:/parc/obj}
[0082]并考虑散列列表部分360,其第一和第二表项包括:
[0083]{NameIndex = I,Hash = 0xl23};和
[0084]{Namelndex = I,Hash = 0xABC} ο
[0085]因此,名称列表350中的各个名称表项部分352可以对应于多个内容对象(每个内容对象携带不同的块)。同样,散列列表360的前两个散列表项部分可以对应于与名称表项关联的两个块。第一散列表项代表名称为Ic1:/parc/obj/chunk = 3、散列摘要为0x123的内容对象块,第二散列表项代表名称为lc1:/parC/obj/Chunk = 4、散列摘要为OxABC的内容对象块。
[0086]因此,清单可以降低检索片断数据包括的总开销,可以允许内容生产者或内容消费者避免必须分别签名或验证集合中的每个个别内容对象。例如,客户端可以使用名称列表和散列列表表项来通过具有自认证名称的兴趣获得每个个别内容对象,并且可以通过在从接收的内容对象计算的散列摘要和他们对应的散列表项部分之间执行二进制等式检查验证它接收的内容对象。客户端只需要对每个清单执行一个加密验证操作,以验证清单中列出的内容对象的集合。
[0087]在一些实施例中,清单集合可以组织成清单树,其中,一个清单内的组成内容对象的名称本身是另一清单(例如子清单)的名称。如果内容消费者可以验证根清单的签名是关联密钥且信任关联密钥,则内容消费者还可以信任根清单中(直接或间接)包括的通过他们的自认证名称(例如COH值)的性质信任的其它内容对象和清单。这使内容消费者避免必须对可以通过他们的自认证名称验证的这些引用的内容对象和清单执行加密验证。
[0088]图4图解说明根据实施例的示例性访问控制规约(ACS)400。ACS400可以包括AccessControlConf igurat 1n(访问控制配置)字段402和 Encryp t1nAlgori thm(加密算法)字段404。加密算法字段404规定曾用来保护集合数据的加密/解密算法,用于加密/解密算法的参数用来对清单中列出的内容对象加密。例如,当使用JavaScript对象表示(JavaScript Object Notat1n,JS0N)时,加密算法值被编码为:
[0089]{{encrypt1nAlgorithm:AES-128-CTR,initialCounter:***}}。
[0090]访问控制配置字段402描述执行加密算法字段404中规定的解密算法所需的信息。具体地,访问控制配置字段402包括Access Control (访问控制字段)406,其规定处理Encrypt1nAlgorithm(加密算法)字段404中使用的对称密钥的访问控制方案的类型。例如,当使用JSON编码时,访问控制字段406可以包括:
[0091]{type:NonceKey,encapsulat1nAlgorithm:Naor-Pinkas-BE,...},
[0092]其中,“type:NonceKey”指示对内容对象的访问控制是通过随机数密钥的封装执行的,“encapsulat1nAlgorithm:Naor-Pinkas_BE” 指不Noar-Pinkas广播加密算法用来封装随机数密钥。
[0093]注意,如果在访问控制配置字段402中规定封装算法,则算法施加到主体密钥链分层中的所有节点。同样,如果访问控制策略不包括执行随机数密钥的封装,则“type(类型)”可以规定执行访问控制的另一种方法。当客户端发起解密操作以解密内容对象时,客户端读访问控制字段406以确定需要哪种类型的密码原语。
[0094]访问控制配置字段402还可以包括NonceKeyName(随机数密钥名称)字段408和NonceKeyID(随机数密钥标识符)字段410,客户端可以使用这两个字段生成用于获得加密的随机数密钥的兴趣。随机数密钥名称字段408规定封装的随机数密钥的CCN名称。客户端可以使用此CCN名称来生成并传播对(若干)解封装密钥的兴趣。在一些实施例中,随机数密钥名称字段408可以包括别名,他是用来代表随机数密钥名称字段408中状态相关的名称的名称组成的变量。例如,考虑CCN名称:
[0095]uIci:/parc/ob j/noncekey/<principal private key hash>,,
[0096]其中,〈principal private key hash〉包括主体特定值(例如合格主体的私钥的散列值)的别名。客户端可以使用随机数密钥名称字段408中的别名来查询用主体特定的值加密的随机数密钥,其中,主体特定值的所需类型由别名本身和/或访问控制字段406描述。
[0097]随机数密钥标识符字段410规定(非加密的)随机数密钥的散列值。这使得人们可以容易地验证解密的随机数密钥的完整性。在一些实施例中,使用适当的防冲突散列函数(例如SHA-256)保持随机数密钥的完整性和安全性(冲突只以可忽略的概率出现),原因是摘要包括于在检查随机数密钥标识符字段410之前验证的清单数字签名输入中。
[0098]同样,一旦客户端获得加密的随机数密钥(例如使用随机数密钥名称字段408),客户端可以读KeychainLink (密钥链链路)字段412和Decapsulat 1nKeyLink(解封装密钥链路)字段414(其可以存储密钥链和解封装密钥的名称或散列值),以沿着加密密钥节点链,直到获得期望的随机数密钥。密钥链链路字段412可以规定到另一个清单(或清单分层)的链路,也称作密钥链。“link(链路)”可以包括Name(名称)字段418,其可以规定清单的名称,并且可以包括KeyldRestrict1n(密钥标识符限制)字段420,其包括至少清单签名者的密钥标识符(例如到密钥链的内容对象的密钥标识符)。
[0099]密钥链可以对应于对于一项内容解密解封装密钥所需的主私钥(例如加密密钥)的排序列表。当密钥链封装于清单(后面称作密钥链清单)中时,客户端可以通过解析密钥链的清单的名称/散列列表,(例如并行地)检索解密解封装密钥所需的密钥链的密钥。密钥链清单中的密钥链链路字段还可以有提供个性化到特定用户的密钥链的别名。
[0100]注意,当密钥链清单不规定主清单的封装算法字段时,密钥链清单的ACS字段可以为每个主体密钥链分层节点规定加密算法字段。例如,如果密钥链包含三个密钥,则密钥链的ACS在ACS的加密算法字段404中有三个排序的封装算法字段。替代性地,算法的类型可以包括于从密钥链返回的密钥内容对象中。
[Ο?Ο? ] Decapsulat1nKeyLink(解封装密钥链路)字段414可以规定到加密的解密密钥的链路。例如,链路可以包括规定加密的解密密钥名称的Name (名称)字段422和规定签名者的密钥ID(例如到解封装密钥的内容对象的KeyId)的KeyldRestrict1n(密钥标识符限制)字段424 ο加密的解封装密钥的名称可以包括给每个合格主体分配个性化的解封装密钥的别名。注意,当客户端已经存储解封装密钥并成功地验证解封装密钥时,客户端可以避免检索和遍历密钥链。
[0102]在一些实施例中,客户端可以使用ACS 400的密钥链链路412获得链中的第一密钥节点,并使用本地解密密钥解密第一密钥节点,以获得链中的第二密钥节点的另一密钥链链路和解密密钥。客户端最终到达由解封装密钥链路414标识的加密密钥节点。由解封装密钥链路414标识的此加密密钥节点是密钥链中的最后一个节点,包括可以用来解密目标随机数密钥的“解封装密钥”。客户端解密密钥链中的此最后一个密钥节点,以获得解封装密钥,并使用解封装密钥来解密客户端已经获得的加密随机数密钥。一旦客户端获得解密的随机数密钥,客户端可以使用此随机数密钥来解密清单中列出的所有内容对象或内容对象的子集。
[0103]在一些实施例中,访问控制配置402可以包括一个或多个附加子字段的集合416,其描述现在已知或以后开发的任何其它访问控制方案的其它属性。例如,子字段416可以包括可以用来执行与TLS类似的一对一访问控制方案(例如通过包括发布者的公钥)或执行现在已知或以后开发的任何其它访问控制方案的附加参数。
[0104]基于清单的ACS获得数据
[0105]图5呈现根据实施例图解说明基于访问控制规约获得并解密数据集合的方法500的流程图。操作中,客户端装置可以从用户接收对数据或数据集合的请求(操作502),并传播对数据集合的兴趣(操作504)。在预定的时段之后或在接收内容对象之后,客户端确定它是否已经接收满足兴趣的内容对象(操作506)。如果没有,则客户端可以返回操作506。
[0106]当客户端接收满足兴趣的内容对象时,客户端继续确定内容对象是否是清单(操作508)。如果不是,则客户端可以存储或其它使用内容对象(操作510)。不过,如果内容对象是清单,则客户端分析清单以从清单获得访问控制规约(ACS)(操作512),并根据ACS获得数据集合的保护内容对象(操作514)。客户端然后根据ACS解密内容对象(操作516),并继续存储或另外使用内容对象(操作510)。
[0107]图6呈现根据实施例图解说明使用ACS解密清单中列出的内容对象的方法600的流程图。操作中,客户端装置从清单获得内容对象名称的列表(操作602),诸如从名称列表字段,从清单的有效载荷。客户端从清单中选择内容对象名称(操作604),通过传播包括内容对象名称的CCN兴趣通过CCN获得内容对象(操作606)。
[0108]客户端然后确定与内容对象关联的ACS(操作608),并使用ACS中规定的解密协议解密内容对象(操作610)。客户端然后存储或另外使用解密的内容对象(操作612)。客户端然后确定它是否需要获得清单中列出的另一内容对象(操作614),如果需要,则返回操作604,以从清单中选择另一内容对象名称。
[0109]遍历密钥链以检索解封装密钥
[0110]图7呈现根据实施例图解说明使用ACS中规定的密钥链来解密数据集合的内容对象的方法700的流程图。操作中,客户端装置可以获得与加密的内容对象对应的加密密钥(操作702),诸如通过传播对ACS的访问控制配置字段的随机数密钥名称子字段中标识的随机数密钥的兴趣。
[0111]客户端然后通过沿着由ACS的密钥链链路字段规定的密钥链,获得解封装密钥以解密加密密钥(操作704)。客户端然后使用解封装密钥解密加密密钥,以获得内容对象的解密密钥(操作706),使用解密密钥解密加密的内容对象(操作708)。
[0112]别忘记密钥链是提供用户(主体)所需的私钥的排序列表的清单。在一些实施例中,密钥链清单在其ACS的字段中具有下列值:
[0113]籲AccessControl: {type:Keychain},访问控制:{类型:密钥链}
[0114]?Encrypt1nAlgorithm(加密算法):加密算法具有用来加密清单中列出的密钥的参数,诸如RSA-1024。
[0115]同样,密钥链清单的名称列表表项提供用户所需的加密的解密密钥的名称的排序列表。
[0116]例如,考虑有资格访问清单中列出的内容对象的分组Z。用户B可以通过检索引导到分组Z的所有密钥获得对内容对象的访问。例如,用户B需要检索他密钥链原型(ancestor)的加密私钥(解密密钥)EncPKC( SKx,PKB)和EncPKC(SKz,PKx)。用户B还需要分配给主体Z的加密解封装密钥EncPKC(DKz,PKz)。为了检索这些密钥,用户B首先通过使用ACS访问控制配置字段的密钥链链路生成兴趣,发布对其私钥SKb个性化的密钥链的兴趣。在一些实施例中,KeychainLink可以包括用户特定的认证器的别名,诸如CCN名称:
[0117]uIci: /pare/ob j/key-chain/<user private key hash>,,。
[0118]在上面的CCN名称中,名称片断〈principal private key hash〉包括用户特定的值(例如合格用户的私钥的散列值)的别名。
[0119]然后在传播兴趣之后,用户B获得名称列表字段和散列列表字段。名称列表字段包括具有排序密钥列表的密钥链:
[0120](StartChunk = I ,MediaName = name of EncPKC(SKx,PKb)}
[0121](StartChunk = I ,MediaName = name of EncPKC(SKz,PKx)}
[0122](StartChunk = I ,MediaName = name of EncPKC(DKz,PKz)},
[0123]ListOfHashes字段列举密钥链的分块内容对象的散列值。此时,用户B从叶子开始,检索加密密钥的内容对象,顺序解密密钥。如果用户B的私钥可以解密随机数密钥,则密钥链中的密钥列表是空的。
[0124]只要密钥链具有有效签名,则密钥链中所列密钥的完整性和安全性质可以被验证和保证。同样,由于客户端可以获得基于密钥链清单中的名称列表字段解密随机数密钥所需的解密密钥集合,客户端可以并行地发布对多个密钥的兴趣,这允许客户端最大化可用的网络带宽的使用。
[0125]别忘记在密钥链架构的顶层可以实现至少两个访问控制方案:基于分组的访问控制方案和广播访问控制方案。在存在主体分层的基于分组的访问控制方案中,任何解封装密钥的封装算法不一定耦合到用来加密密钥链中的其它密钥的算法。例如,RSA可以用来加密密钥链中的所有非根节点,不同的算法可以用来解密根密钥。这允许不同的加密算法施加到密钥链中特定的根到叶子路径的每一层。ACS规定哪一算法施加到树中的每一层,使得消费者可以在遍历分层路径时施加适当的解密算法。此解耦合允许任何基于分组的访问控制策略被强加于基于分组的主体分层。
[0126]同样,注意在没有主体分层的一些访问控制方案中,诸如“扁平的”基于广播的访问控制中,主体的公/私钥对特定于广播加密算法。因此,随机数密钥是以分组公共广播密钥加密的,分组中的每个合格主体的私钥可以用来解密此解封装密钥。
[0127]基于分组的访问控制
[0128]内容发布者可以加密并通过CCN网络发布命名内容对象,还可以加密(封装)用来加密每个随机数密钥的随机数密钥。在基于分组的访问控制方案中,内容发布者仅通过生成为不同的主体分组加密的随机数密钥的多个(不同的)密文,允许特定分组的用户(例如主体)访问内容。然后,每个分组中的授权客户端可以通过遍历密钥链解密密文。这意味着合格主体的公钥被直接用来加密随机数密钥,因此解封装密钥是合格主体的私钥。
[0129]已发布内容在CCN网络拓扑上从内容发布者通过遍历核心网络和互联网服务提供节点(CCN路由器)流向各个消费者,任何CCN节点可以在内容从生产者流向消费者时缓存内容。授权客户端已经被分配其公-私钥对以在遍历密钥链的主体分层时使用。这些密钥可以离线或者通过与内容发布者的安全会话分发。
[0130]客户端可以通过发布对具有与内容关联的名称的清单的兴趣,获得一项内容。清单可以包括基于分组的ACS,其命令客户端如何获得构成内容的内容对象,以及用于解密内容对象的随机数密钥。举一个示例,数据集合的名称具有CCN前缀“le1: /parc/GE/”,密钥的封装算法是使用RSA加密算法实现的,用1024位密钥进行加密。基于分组的ACS可以具有下列配置:
[0131]籲AccessControl={type:NonceKey,
[0132]encapsulat1nAlgorithm:GroupBased-RSA-1024,...}
[0133]此字段可以包括与封装算法相关的任何参数,诸如主体的私钥的加密算法。
[0134]#NonceKeyName = Ic1:/parc/GE/NonceKey/<principal private key hash〉
[0135]以合格主体的公钥加密的随机数密钥的名称,包括特定于每个合格主体的别名。
[0136]籲NonceKeyId = Ox********
[0137](非加密)随机数密钥的散列值。
[0138]籲KeychainLink:到密钥链的链路。链路可以包括子字段:
[0139]-Name = Ic1:/parc/GE/Keychain/<user private key hash>
[0140]密钥链的名称,包括用户特定值的别名。
[0141 ] -KeyIdRestrict1n = Ox********
[0142]对于密钥链,签名者的密钥标识符。
[0143]?Decapsulat1nKeyEink:到加密的解封装密钥的链路。链路可以包括子字段“Name” 和 “Key I dRe s tr i c t i on:,,
[0144]-Name=Ici:/parc/GE/PrincipalPrivateKey/〈principal
[0145]以其成员的公钥加密的解封装密钥的名称(即合格主体的私钥),包括特定于合格主体和其成员的别名。
[0146]-KeyIdRestrict1n = Ox********
[0147]对于加密的解封装密钥,签名者的密钥标识符。
[0148]在一些实施例中,因为合格主体的私钥可以是解封装密钥,通过使用特定于合格主体和他们的成员的一些适当别名值,解封装密钥链路字段可以用他们的密文的名称填充。
[0149]同样,ACS的加密算法字段可以描述用来加密清单中列出的内容对象的加密算法:
[0150]籲Encrypt1nAlgorithm={encrypt1nAlgorithm:AES-128-CTR,
[0151 ] initialCounter:Ox林林林林,...}。
[0152]注意,当客户端不用检查客户端的密钥存储是否具有用于访问控制的解封装密钥就可以检索密钥链时,ACS中的访问控制配置字段的解封装密钥链路字段可以是空的。
[0153]广播访问控制
[0154]在广播访问控制中,内容发布者可以通过以随机数密钥加密内容对象,使得特定的主体集合(内容消费者或客户端)有资格访问内容对象的集合。内容发布者使用广播加密用分组特定(主体特定)的密钥封装随机数密钥。有资格解密解封装密钥的每个私钥与合格的主体关联。
[0155]与基于分组的加密类似,客户端可以通过发布对具有与内容关联的名称的清单的兴趣获得一项内容。举一个示例,由内容发布者生成的内容对象具有CCN前缀为“le1:/parc/BE/”的名称,随机数密钥的解封装算法是使用Naor-Pinkas广播加密算法实现的。基于广播的ACS可以具有以下配置。
[0?5?] ACS的加密算法(Encrypt1nAlgorithm)字段可以包括描述用来加密清单中列出的内容对象的加密算法。ACS的访问控制配置(AccessControlConf igurat 1n) (ACC)字段可以具有设置:
[0157]籲AccessControl={type:NonceKey,
[0158]encapsulat1nAlgorithm:Naor-Pinkas-BE,...}
[0159]此字段可以包括与[28]的加密相关的任何参数。
[0160]籲NonceKeyName= Ici: /parc/BE/NonceKey:
[0161]通过广播加密[28]加密的随机数密钥的名称,其中,它对所有合格的主体是共同的,因此不包含别名。
[0162]籲NonceKeyId = Ox********
[0163]籲KeychainLink
[0164]-Name = Ic1:/parc/BE/Keychain/<user private key hash>
[0165]-KeyIdRestrict1n = Ox********
[0166]籲Decapsulat1nKeyLink
[0167]-Name = Ic1:/parc/BE/Decapsulat1nKey/<principal private key hash>:
[0168](加密的)解封装密钥的名称,包括特定于每个合格主体的别名。
[0169]-KeyIdRestrict1n = Ox********
[0170]端对端访问控制
[0171]别忘记在基于分组或广播访问控制方案中,发布者使用唯一的随机数密钥加密内容。然而,在这些方案中,假设每个客户端具有公-私钥对作为个别主体。然而,如果中央密钥管理器要通过网络发布或证明客户端公-私钥对,则中央密钥管理器需要安全地将每个密钥对发送到每个客户端(主体)。在一些实施例中,与TLS会话类似,客户端可以通过CCN建立与目标实体(例如中央密钥管理器或发布者)的安全端对端通信会话。此安全的端对端会话在后文称作安全会话或安全会话实例。
[0172]图8呈现根据实施例图解说明基于清单中的ACS建立安全的端对端会话的方法800的流程图。操作中,客户端装置可以获得数据集合的初始清单(操作802)。此初始清单由内容发布者创建,包括为与发布者的安全会话配置的ACS,具有空的名称列表(ListOfNames)和散列列表(ListOfHashes)。客户端分析初始清单中的ACS,以获得与发布者关联的公钥(操作804),使用公钥来启动设置协议以启动与发布者的新安全会话。
[0173]在启动会话的设置阶段,客户端为发布者生成临时密钥(操作806),使用发布者的公钥加密临时密钥(操作808)。客户端然后为发布者传播设置兴趣消息(操作810),使得设置兴趣消息包括用来在用户和发布者之间共享随机会话密钥的加密临时密钥。
[0174]响应于设置兴趣,发布者生成并返回内容对象,这称作设置内容对象,其包括新的随机对称会话密钥和会话标识符,两者都是由设置兴趣中提供的临时密钥加密的。设置内容对象还包括客户端可以用来验证会话密钥是否正确地在用户和发布者之间共享的数据。例如,验证数据可以包括通过级连临时密钥和会话密钥计算的签名。
[0175]客户端然后接收设置内容对象(操作812),并获得针对与发布者的会话的会话密钥和会话标识符。当客户端使用内容对象中的验证数据来验证会话密钥时,设置阶段完成。
[0176]在设置阶段后,客户端生成并为发布者传播完成兴趣消息(操作814)。完成兴趣消息的名称包括对于发布者的CCN名称如缀,完成兴趣消息包括附加到兴趣的名称或在兴趣的有效载荷部分中的会话标识符。发布者通过将完成内容对象返回来进行响应以完成建立会话。完成内容对象可以包括被称作会话中清单的清单,他对用户是个性化的。会话中清单包括以会话密钥加密的ACS和内容对象的列表。客户端接收包括会话中清单的完成内容对象(操作816)。类似于通过对称密钥保护的TLS类型的安全信道,客户端可以使用客户端的会话密钥解密加密的内容对象。
[0177]在一些实施例中,如果发布者要求在初始设置阶段之后的客户端认证,则客户端可以继续与发布者的恢复阶段。客户端通过CCN为发布者传播恢复兴趣,使得恢复兴趣包括客户端的公钥证书。然后,响应于传播恢复兴趣,客户端接收恢复内容对象,恢复内容对象包括发布者对客户端认证的认证响应。例如,认证响应可以包括指示发布者已经成功地验证客户端的身份的ACK消息,或者可以包括指示发布者没有成功验证客户端的身份的NACK消息。发布者还可以通过重新使用相同的会话标识符和会话密钥,使用恢复阶段来刷新超时会话。
[0178]在一些实施例中,客户端或发布者可以使用安全会话实例来引导其它访问控制方案,诸如基于分组的访问控制方案或广播访问控制方案。
[0179]安全会话数据对象
[0180]以下数据对象提供在安全会话的实例化过程中使用的兴趣和内容对象的详细配置的示例。
[0181 ]初始清单:安全会话的初始清单包含ACS,ACS具有如在其它访问控制实例中启动检索访问控制内容所需的信息。ACS中的访问控制配置字段的子字段可以具有以下值:
[0182] #AccessControl = {Type:SecureSess1n,Status:1nitiat1n,Sess1nId:Null}
[0183]籲SetupLink:到设置内容对象的链路。
[0184]-Name:设置内容对象的名称,aSecureSess1n:State”字段值为“Task: Setup andNonce:〈nonce〉”,其中,〈nonce〉是随机数值的别名。例如,Name字段可以包括CCN名称:
[0185]“lei:/parc/SecureSess1n:State = {Task:Setup,Nonce:<nonce>}.,,
[0186]-KeyId:签名者的密钥标识符。
[0187]籲FinishLink:到完成内容对象的链路。
[0?88] -Name:完成内容对象的名称(例如会话中清单),aSecureSess1n: State”字段值为“Task:Finish”和“Sess1nld:〈sess1n id>”,其中,〈sess1n id>是会话标识符的别名。例如,Name字段可以包括CCN名称:
[0189]“Ici:/parc/SecureSess1n:State ={Task:Finish,Sess1nId:〈sess1n id>}.,,
[0190]-KeyId:签名者的密钥标识符。
[0191 ]与通过CCN访问控制架构的基于随机数密钥的方案不同,ACS的加密算法规定一个或多个加密算法,其具有在内容发布者上是可用的参数。字段可以以JSON编码,诸如:
[0192]{{encrypt1nAlgorithm:AES-128-CTR,initialCounter:…},
[0193]{encrypt1nAlgorithm:AES-256-CTR,initialCounter:...},...}。
[0194]设置程序:在检索安全会话的初始清单之后,客户端通过CCN发布设置兴趣,开始设置阶段。设置兴趣在响应内容对象中具有以下值。在下面的示例中,注释“A.B”代表字段A的子字段B。
[0195]籲SetupLink.Name:初始清单的名称,例如随机数值在〈nonce〉中。
[0196]籲Metadata.KeyIdRestrict1n:初始清单的 SetupLink.Key IdRestrict 1n。
[0197]^Payload:安全共享会话密钥所需的信息,其可以以类型-长度-值(TLV)格式书与O
[0198]-Encrypt1nAlgorithm:从初始清单中的加密算法(Encrypt1nAlgorithm)选择的算法。所选算法用来以共享会话密钥加密和解密内容对象。
[0199]-TemporaryKey:兴趣中给定的加密算法(Encrypt1nAlgorithm)的随机临时密钥,是以发布者的密钥标识符的公钥(在兴趣的KeyId中给出)加密的。
[0200]发布者可以使用名称中的随机数来将不同用户和不同会话发布的兴趣相区分(初始实例)O响应于接收设置兴趣,发布者发布具有以下值的设置内容对象:
[0201]^Name:设置兴趣的名称。
[0202]籲Metadata.ContentType:数据。
[0203]^Payload:安全共享会话密钥所需的信息,它可以以TLV格式书写。
[0204]-HandshakeMessage: “Completed(完成)”值指不转到完成阶段,“Rejected(拒绝)”值指示拒绝连接请求。如果发布者需要可选的用户认证,则值设置为“Authenticat1nRequest,,。
[0205]-ResumeLink:到完成内容对象的链路。只要HandshakeMessage为“Authenticat1nRequest”时,此字段具有非空值。链路可以包括Name子字段和KeyId子字段。
[0206]*Name:恢复内容对象的名称,使得aSecureSess1n: State”字段具有“Task:Finish”和“Sess1nId:〈sess1n id>”值,其中,“〈sess1n id>” 是会话标识符的别名。例如,Name可以包括CCN名称:
[0207]“lei:/parc/SecureSess1n:State = {Task:Resume,Sess1nId:〈sess1n id>},,
[0208]*Key Id:签名者的密钥标识符。
[0209]-Sess1nld:明文会话密钥的散列。
[0210]-Sess1nKey:由所选加密算法以TemporaryKey加密的会话密钥。
[0211 ] -VerifyData:SHA_256消息摘要,如下:
[0212]Hash(Plaintext Sess1n Key|!Selected Encrypt1nAlgorithm||KeyId ofthis content object),
[0213]以临时密钥加密。
[0214]注意此设置内容对象需要具有由发布者以设置兴趣中的KeyId中指示的密钥标识符签名的有效签名。客户端可以使用VerifyData字段来检查解密的(明文)会话密钥的完整性。
[0215]完成启动和会话中清单:为了完成启动流,客户端首先通过计算散列验证VerifyData 值:
[0216]Hash(Plaintext Sess1n Key|!Selected Encrypt1nAlgorithm||KeyId ofthis content object)
[0217]如果计算结果等于设置内容对象中的VerifyData值,则认为会话密钥在客户端和发布者之间正确地共享,各方因此可以转到完成阶段。否则,由于会话数据被破坏,设置内容对象被丢弃。
[0218]作为完成阶段的第一步,客户端传播完成兴趣,通知发布者客户端成功地验证VerifyData值,并请求完成内容对象(例如会话中清单)C3Name(名称)字段对应于:
[0219]“lei:/parc/SecureSess1n:State = {Task:Finish,Sess1nld:<sess1n id>},,
[0220]会话标识符为别名的值〈sess1ni d>。同样,完成兴趣具有在初始清单的FinishLink中规定的Key Id。
[0221]响应于接收完成兴趣,发布者返回会话中清单作为完成内容对象。SecureSess1n的会话中清单是列出以共享会话密钥加密的内容对象的名称和散列值的标准清单。通过参照会话中清单,客户端可以通过由会话密钥保护的安全信道从发布者安全地检索内容。
[0222]可选的用户认证:在此给出用在安全会话实例中的用户认证的恢复兴趣和恢复内容对象的详细描述。如果设置内容对象的“HandshakeMessage”字段具有“Authenticat1nRequest”值,贝Ij客户端为发布者传播具有下列值的恢复兴趣:
[0223]籲Name =设置内容对象的ResumeLink.Name,会话标识符在〈sess1n id>中,诸如名称:
[0224]“lei:/parc/SecureSess1n:State = {Task:Resume,Sess1nld:〈sess1n id>},,
[0225]籲Metadata.KeyIdRestrict1n =设置内容对象的
[0226]ResumeLink.KeyIdRestrict1nο
[0227]^Payload:认证用户需要的信息,以TLV格式书写。有效载荷可以包括以下子字段:
[0228]-ClientPulicKeyCertificate:如果此兴趣在验证数据中具有签名,则为客户端的公钥证书。否则,它为空。
[0229]-EncryptedPublicKeyCertificate:如果此兴趣不具有签名,则是以会话密钥加密的客户端的公钥证书。否则,它为空。
[0230]如果恢复兴趣不具有签名,则可以通过使用与发布者安全共享的会话密钥进行加密,检查客户端的公钥证书的完整的和不可伪造性。
[0231]作为对恢复兴趣的响应,发布者发布有效载荷中具有HahdshakeMessage子字段的恢复内容对象。HandshakeMessage子字段可以包括“Compl eted (完成)”值或“Re jected (拒绝),,值。
[0232]访问控制(AC)应用编程接口(API)
[0233]在一些实施例中,CCN网络节点可以包括CCN网络堆栈,其管理流进和流出网络节点的兴趣和内容对象消息。本地应用可以创建以期望方式处理CCN消息的堆栈,诸如对CCN消息执行加密、流量控制或任何其它消息处理操作。
[0234]图9图解说明根据本发明的实施例的示例性传输架构900XCN节点执行“传输架构” 900,其可以动态地配置自定义堆栈904以满足应用的自定义“环境执行上下文” ο自定义堆栈904可以处理去向和/或来自转发器906或在CCN节点上运行的任何应用的包,堆栈的组件可以包括可以以任何次序组织的任何可用组件,以满足应用的需求。
[0235]在一些实施例中,传输架构900可以包括一组堆栈配置代理,其可以动态地按需配置堆栈。例如,传输架构900可以包括一组传输API组件902,其执行通过库和/或API访问的函数。应用可以通过向传输架构900发布呼叫访问由传输架构900实现的API ο传输架构900然后将API呼叫映射到组件902的执行此特定函数的相应API组件,并将API呼叫转发到此API组件。
[0236]如果不存在用于处理API呼叫的堆栈,则API组件可以配置或实例化可以执行应用的API呼叫的自定义堆栈。例如,API组件可以向传输架构900发布描述自定义堆栈的功能的请求。此功能描述可以是高级的,诸如规定要对数据包执行的预定义行为或操作。传输架构900然后通过将所需组件以实现期望的行为或操作的次序组织到自定义堆栈902(例如在自定义堆栈组件)中来实现此行为或操作。
[0237]替代性地,功能描述可以是低级的,诸如规定要使用的特定的堆栈组件,可以规定排列堆栈组件的次序。而且,功能描述还可以对于各个组件是特定的或通用的,例如,请求特定的“安全组件”(例如PKI验证组件)或请求任何“验证组件”。
[0238]在一些实施例中,传输API组件可以包括端口API,其提供用于向堆栈写和从堆栈读兴趣和内容对象的一组函数。从结构上,兴趣消息(例如CCNx I n t e r e s t)和内容对象消息(例如CCNxContentObject)具有相似的数据结构。因此,在一些实施例中,端口 API在CCNxMessage容器中包装CCNxInterest和CCNxContentOb ject实例,这些实例然后用在各个端口 API 函数中,诸如 ccnxPortal Read(CCNxMessage*msg^PccnxPortal Write(CCNxMessage*msg),以向传输堆桟写消息或从其读消息。连同监听特定名称前缀的兴趣的能力,这些函数提供通过兴趣消息发布和检索内容对象的功能。
[0239]在一些实施例中,传输API组件902还包括在端口API顶部构建的访问控制API,并且包括ProtectedPortal (保护端口)API。访问控制API允许消费者访问受保护的内容,允许发布者发布和控制对特定内容的访问。消费者和发布者直接与ProtectedPortal API接口,创建显式地处理所有访问控制相关功能的“受保护”传输堆栈(例如堆栈904)。
[0240]ProtectedPortal API由消费者和发布者应用用特定的身份集合实例化。对于消费者,身份可以包装PKCS#12证书和私钥包,以便能够在需要时解密内容对象有效载荷。类似地,发布者可以使用PKCS#12包来对响应于接收兴趣消息而生成的出内容对象签名。其它密钥,诸如用在广播访问控制或代理重新加密方案中的那些密钥也可以包括于PKCS#12的文件内。由于用户可以通过单独的文件管理这些密钥,ProtectedPortal在运行和实例化时接收身份的集合。
[0241]消费者API概要
[0242]ProtectedPortal API的消费者部分用表I中列出的函数扩展底层端口 API。ProtectedPortal使用内容对象清单中返回的信息来获得适当的解密密钥,以用正确的密码算法解密随机数密钥。一旦ProtectedPortal检索解密密钥,则ProtectedPortal使用随机数密钥来为消费者解密内容有效载荷。ProtectedPortal在内部执行迭代解密密钥决定和内容解密过程(例如安全会话),不将这些过程暴露给消费者,以允许软件开发者容易地将这些特征集成到他们的应用中。
[0243]#CCNxMessage*ccnxProtectedPortal Read(CCNxName*msg)_发布对由特定名称标识的内容对象的兴趣,如果受保护,则在CCNxMe s sage有效载荷中解密并返回产生的有效载荷。
[0244]#CCNxMessage*ccnxProtectedPortal ReadManifest(CCNxName*msg)_发布对由特定名称标识的内容对象的兴趣,如果受保护,贝lJ返回在CCNxMessage有效载荷中序列化的内容对象的清单。
[0245]#CCNxMessage*ccnxProtectedPortal ReadByManifest(CCNxManifest*msg)
[0246]-发布对与特定清单关联的内容对象的兴趣,并在CCNxMessage有效载荷内返回解密的内容对象有效载荷。
[0247]表1:消费者ProtectedPortalAPI函数
[0248]发布者API概要
[0249]在一些实施例中,传输API组件902可以包括发布者API,其可以与访问控制系统的各个组件通信和/或控制访问控制系统的各个组件,诸如分发服务器(内容存储或存储库)、加密服务器、访问策略管理器和计量服务器。在实例化用于每个组件的传输堆栈904之后,每个组件的代理在堆栈904的顶部被实例化,以便控制他们相应的系统。例如,密钥管理器代理组件在密钥管理器传输堆栈的顶部被实例化,可以与本地操作系统上的本地密钥管理应用或远程应用通过CCN消息通信(例如通过传播CCN兴趣以查询密钥管理器,从密钥管理器接收内容对象作为响应)。发布者API代表发布者执行此通信,并且提取此通信机制远离发布者API。
[0250]通过发布者API可用的函数列于表2中。发布者API可通过访问控制系统的任何实体访问,诸如分发服务器(内容存储或存储库)、加密服务器、访问策略服务器和/或计量服务器。一旦被实例化,发布者ProtectedPortal实例将句柄暴露于访问控制系统的这些实体中的每一个,使得应用可以动态地创建内容,改变访问策略和许可,并为消费者提供被保护内容和清单。此外,在实例化发布者API之后,每个实体为特定的名称空间创建传输堆栈(例如堆桟904),使得消费者ProtectedPortal可以发布兴趣,以与访问控制系统的其它实体通信。例如,CCNxAccessControIManagerProxy堆桟组件可以监听 “lei: /parc/csl/acm/” 名称空间,请求内容解密密钥的消费者可以发布具有从名称模板“lc1:/parC/CSl/aCm/〈content name>/<principal id>”得到的名称的兴趣,以获得解密随机数密钥所需的密钥。同样,对于基于会话的访问控制,发布者ProtectedPortal堆桟组件可以代表其本地实体处理DTLS会话信息的创建和维护。
[0251 ] #CCNxContentStoreProxy:内容存储和分发服务器的代理。
[0252]-UploadContent(...)_将不受保护的内容对象上传到特定的名称空间。
[0253]-UploadProtectedContent(...)_将受保护的内容对象和相应的清单上传到特定的名称空间。
[0254]# CCNxAccessContro IManagerProxy:用于访问控制管理器的代理。
[0255]-SetAccessControlType(...)_设置特定清单的访问控制类型。
[0256]-RevokePrincipalFromContent(...)-从对特定的受保护内容对象的访问中去掉由身份表示的特定主体。
[0257]-AddPrincipalToContent(...)_向对特定的受保护内容对象的访问添加由身份表示的特定的主体。
[0258]# CCNxKeyManagerProxy:用于(内容和私密)密钥管理器的代理。
[0259]-GenerateContentKey(...)_为特定名称的一项内容生成内容加密(随机数)密钥。
[0260]-GenerateSecretKey (...)-生成特定主体的私钥。这要求与CCNxAccessControlManagerProxy通信,以获得访问控制配置细节(例如广播组信息)。
[0261 ] # CCNxEncrypt 1nServerProxy:加密(封装)服务器的代理。
[0262]-EncryptContent(...)_用特定的随机数密钥加密特定的内容对象。
[0263]-EncryptKey (…)_针对特定的主体列表加密特定的随机数密钥。这要求与CCNxAccessControlManagerProxy通信,以获得访问控制配置细节(例如广播组信息)。
[0264]表2:发布者ProtectedPortal API和相关的代理函数
[0265]图10图解说明根据实施例促进发布和访问加密形式的数据集合的示例性设备1000。设备1000可以包括可以通过有线或无线通信信道相互通信的多个模块。设备1000可以使用一个或多个集成电路实现,可以包括比图10中所示的更多或更少的模块。而且,设备1000可以集成于计算机系统中,或者实现为能够与其它计算机系统和/或装置通信的单独的装置。具体地,设备1000可以包括通信模块1002、清单处理模块1004、访问控制模块1006和安全模块1008。
[0266]在一些实施例中,通信模块1002可以获得数据集合的清单,可以获得清单中列出的加密内容对象的集合。清单处理模块1004可以解析清单,以获得与加密的内容对象关联的访问控制规约(ACS)。访问控制模块1006可以处理ACS以获得用于解密内容对象的适当的解密密钥。安全模块1008可以使用解密密钥解密内容对象。
[0267]图11图解说明根据实施例促进发布和访问加密形式的数据集合的示例性计算机系统1102。计算机系统1102包括处理器1104、存储器1106和存储装置1108。存储器1106可以包括充当管理存储器的易失性存储器(例如RAM),并且可以用来存储一个或多个内存池。而且,计算机系统1102可以耦连到显示装置1110、键盘1112和定位装置1114。存储装置1108可以存储操作系统1116、访问控制系统1118和数据1128。
[0268]访问控制系统1118可以包括指令,这些指令在由计算机系统1102执行时,可以引起计算机系统1102执行本申请中描述的方法和/或过程。具体地,访问控制系统1118可以包括用于获得数据集合的清单,并且可以获得清单中列出的加密内容对象的集合的指令(通信模块1120)。而且,访问控制系统1118可以包括用于解析清单以获得与加密内容对象关联的访问控制规约(ACS)的指令(清单处理模块1122)。
[0269]访问控制系统1118还可以包括用于处理ACS以获得用于解密内容对象的适当解密密钥的指令(访问控制模块1124),还可以包括用于使用解密密钥解密内容对象的指令(安全模块1126)。
[0270]数据1128可以包括通过本申请中描述的方法和/或过程作为输入请求的或作为输出生成的任何数据。具体地,数据1128可以存储至少清单、来自清单的ACS和与发布者关联的安全信息和/或会话信息。
[0271]在此详细描述中描述的数据结构和代码通常存储于计算机可读存储介质上,计算机可读存储介质可以是可以存储代码和/或数据以由计算机系统使用的任何装置或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁和光存储装置(诸如磁盘驱动器、磁带、CD(光盘)、DVD(数字通用盘或数字视频盘))或能够存储计算机可读介质的现在已知或以后开发的其它介质。
[0272]在详细描述部分描述的方法和过程可以体现为代码和/或数据,这些代码和/或数据可以存储在如上文描述的计算机可读存储介质中。当计算机系统读、执行计算机可读存储介质上存储的代码和/或数据时,计算机系统执行体现为数据结构和代码并存储于计算机可读存储介质中的方法和过程。
[0273]而且,上面描述的方法和过程可以包括于硬件模块中。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、现在已知或以后开发的其它可编程逻辑器件。当硬件模块被激活时,硬件模块执行其中包括的方法和过程。
【主权项】
1.一种计算机实现的方法,包括: 通过计算装置获得数据集合的清单对象,其中,所述清单包括对所述数据集合的一组加密内容对象的引用,并包括一个或多个访问控制规约ACS,每个访问控制规约规定用于解密所述数据集合的一个或多个内容对象的解密协议; 通过信息中心网络ICN获得所述清单中列出的相应的加密内容对象; 通过所述计算装置从所述清单获得与所述相应的加密内容对象关联的ACS;以及 通过所述计算装置使用所述ACS中规定的解密协议解密所述相应的加密内容对象。2.根据权利要求1所述的方法,还包括: 通过ICN传播对所述数据集合的兴趣;以及 响应于传播所述兴趣,通过ICN接收所述清单对象。3.根据权利要求1所述的方法,其中,所述清单包括通过引用的相应ACS,并且其中获得所述ACS涉及: 从所述清单获得与所述ACS关联的名称前缀; 通过ICN传播其名称包括所述名称前缀的兴趣;以及 响应于传播所述兴趣,接收包括所述ACS的内容对象。4.根据权利要求1所述的方法,其中,解密所述加密的内容对象涉及: 获得与所述加密的内容对象对应的加密密钥; 通过执行所述ACS中规定的解密协议,获得解封装密钥; 使用所述解封装密钥解密所述加密密钥,以获得解密密钥;以及 使用所述解密密钥解密所述加密的内容对象。5.一种计算机实现的方法,包括: 通过计算装置获得数据集合的初始清单对象,其中,所述初始清单包括规定用于获得并解密所述数据集合的一个或多个内容对象的端对端访问控制方案的访问控制规约ACS;从所述初始清单中的ACS获得发布者的公钥; 通过所述计算装置从所述ACS确定用于与所述发布者的会话的加密算法; 为所述发布者传播设置兴趣消息,其中,所述设置兴趣消息包括使用确定的加密算法和所述发布者的公钥加密的临时密钥; 接收满足所述设置兴趣消息的设置内容对象,其中,所述设置内容对象包括会话密钥和会话标识符; 为所述发布者传播完成兴趣消息,其中,所述完成兴趣消息包括所述会话标识符;以及接收满足所述完成兴趣消息的会话中清单,其中,所述会话中清单包括对使用所述会话密钥加密的所述数据集合的一个或多个内容对象的引用。6.根据权利要求5所述的方法,还包括: 从所述设置内容对象获得验证数据; 使用所述验证数据验证所述会话密钥;以及 响应于确定所述会话密钥是有效的,传播所述完成兴趣消息。7.—种存储指令的非暂态计算机可读存储介质,所述指令在由计算机执行时引起所述计算机执行一种方法,所述方法包括: 获得数据集合的清单对象,其中,所述清单包括对所述数据集合的一组加密内容对象的引用;并包括一个或多个访问控制规约ACS,每个访问控制规约规定用于解密所述数据集合的一个或多个内容对象的解密协议; 通过信息中心网络ICN获得所述清单中列出的相应加密内容对象; 通过所述计算装置从所述清单获得与所述相应的加密内容对象关联的ACS;以及 使用所述ACS中规定的解密协议解密所述相应的加密内容对象。8.根据权利要求7所述的存储介质,还包括: 通过ICN传播对所述数据集合的兴趣;以及 响应于传播所述兴趣,通过ICN接收所述清单对象。9.根据权利要求7所述的存储介质,其中,所述清单包括通过引用的相应ACS,并且其中获得所述ACS涉及: 从所述清单获得与所述ACS关联的名称前缀; 通过ICN传播其名称包括所述名称前缀的兴趣;以及 响应于传播所述兴趣,接收包括所述ACS的内容对象。10.—种存储指令的非暂态计算机可读存储介质,所述指令在由计算机执行时引起所述计算机执行一种方法,所述方法包括: 获得数据集合的初始清单对象,其中,所述初始清单包括规定用于获得并解密所述数据集合的一个或多个内容对象的端对端访问控制方案的访问控制规约ACS ; 从所述初始清单中的ACS获得发布者的公钥; 从所述ACS确定用于与所述发布者的会话的加密算法; 为所述发布者传播设置兴趣消息,其中,所述设置兴趣消息包括使用确定的加密算法和所述发布者的公钥加密的临时密钥; 接收满足所述设置兴趣消息的设置内容对象,其中,所述设置内容对象包括会话密钥和会话标识符; 为所述发布者传播完成兴趣消息,其中,所述完成兴趣消息包括所述会话标识符;以及接收满足所述完成兴趣消息的会话中清单,其中,所述会话中清单包括对使用所述会话密钥加密的所述数据集合的一个或多个内容对象的引用。
【文档编号】H04L29/06GK105847228SQ201610031885
【公开日】2016年8月10日
【申请日】2016年1月19日
【发明人】E·尤祖恩, J·库里哈拉, C·A·伍德
【申请人】帕洛阿尔托研究中心公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1