内容的嵌入许可证
背景
不同类型的音频和/或视频内容的存储和回放日益可数字地执行,其中使用各种计算机和其他数字设备来进行回放。为了保护他们的内容并确保只有获得了使用该内容的权限的人才能真正地使用该内容,内容被使用密钥来进行频繁加密。然而,这一加密的一个问题是密钥通常与特定设备相关联。这可使得用户难以在他或她拥有的其他设备上回放该内容,虽然他或她获得了使用该内容的权限。
概述
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
根据内容的嵌入许可证的一个或多个方面,接收对内容执行某一动作的请求。检索该内容的许可证,该许可证先前已被嵌入在该内容中。这一许可证是用于包括一个或多个设备的域的许可证,该一个或多个设备包括接收该请求的设备。如果该许可证指示对该内容的动作是许可的,则允许对该内容执行该动作,并且否则阻止对该内容执行该动作。
根据内容的嵌入许可证的一个或多个方面,访问要发送到第二设备的内容。作出关于该内容是否已具有用于第二设备是其一部分的域的已嵌入许可证的检查。如果该内容已具有用于该域的已嵌入许可证,则将该内容与该已嵌入许可证一起发送到第二设备。如果该内容尚不具有用于该域的已嵌入许可证,则将该域的许可证嵌入在该内容中,并且将该内容与所嵌入许可证一起发送到第二设备。
根据内容的嵌入许可证的一个或多个方面,从设备接收对用于访问内容的许可证的请求。将所请求的许可证发送到该设备,所请求的许可证包括指示该设备要将该许可证存储在何处的一个或多个规则。
附图简述
在全部附图中,使用相同的标号来指示相同的特征。
图1示出根据一个或多个实施例的实现内容的嵌入许可证的示例系统。
图2示出根据一个或多个实施例的具有嵌入许可证部分的内容的示例系统。
图3是示出根据一个或多个实施例的用于使用具有已嵌入许可证的示例过程的流程图。
图4是示出根据一个或多个实施例的用于使用许可证链的示例过程的流程图。
图5是示出根据一个或多个实施例的用于在源设备处嵌入许可证的示例过程的流程图。
图6是示出根据一个或多个实施例的用于使用嵌入许可证规则的示例过程的流程图。
图7示出根据一个或多个实施例的可被配置成实现内容的嵌入许可证的示例计算设备。
详细描述
本文讨论内容的嵌入许可证。一般而言,内容的许可证被嵌入在该内容中,从而允许这些许可证连同该内容一起被容易地发送到各个设备。该内容包括其中可以存储一个或多个嵌入许可证的嵌入许可证部分。每一嵌入许可证可以是独立许可证或许可证链的一部分。另外,每一嵌入许可证可以与特定设备或一个或多个设备是其一部分的域相关联。许可证可由接收该内容的设备嵌入,或另选地由从中接收到该内容的设备嵌入。另外,许可证可包括与设备将该许可证存储在何处有关的一个或多个规则。
图1示出根据一个或多个实施例的实现内容的嵌入许可证的示例系统100。系统100包括源设备102和目标设备104。内容能以各种不同的方式从源设备102转移到目标设备104。在一个或多个实施例中,内容经由网络转移,如因特网、局域网(LAN)、公共电话网、内联网、其他公共和/或专有网络、其组合等。在其他实施例中,内容经由直接线或无线连接来转移,如通用串行总线(USB)连接、顺从IEEE1394的连接、无线USB连接、蓝牙连接等。可以明白,内容也可使用一个或多个运输设备来转移,如磁盘、光盘、USB道尔芯片等。
源设备102和目标设备104中的每一个可以是能够播放、存储、或以其他方式使用内容的各种不同的设备。源设备102和目标设备104两者都可以是同一类型的设备,或另选地可以是不同类型的设备。例如,设备102和104中的每一个可以是台式计算机、服务器计算机、移动站、娱乐装置、通信地耦合到显示设备的机顶盒、无线电话、游戏控制台、汽车计算机、自助服务终端等等。因而,设备102和104中的每一个的范围可以是从具有充足存储器和处理器资源的全资源设备(如个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(如传统机顶盒、手持式游戏控制台)。
设备102和/或104一般可以用不同的方式来访问和/或使用内容,如执行播放该内容、存储该内容、转移该内容等中的一个或多个。本文使用的“内容”指的是各种不同的数字或电子内容,如音频内容(例如,歌曲)、音频/视频内容(例如,电视节目、电影、纪录片、卡通片等)、图像内容(例如,数字图片)、文本内容(例如,电子书)、已编译或未编译的计算机程序或其各部分、Java游戏、以zip格式或以其他方式压缩的文件、电子邮件消息和附件等等、以及它们的组合。如下文更详细地讨论的,特定设备102和/或104是否可以访问特定内容是至少部分地基于该特定内容的已嵌入许可证来确定的。
源设备102包括包含内容114的内容存储112以及许可证嵌入模块116。在一个或多个实施例中,许可证嵌入模块116在将内容114转移到目标设备104之前将许可证嵌入该内容中。在其他实施例中,许可证由目标设备104嵌入。在下文更详细地讨论许可证到内容中的这一嵌入。
目标设备104包括消费模块122、许可证嵌入模块124、以及内容存储126。内容存储126包括内容128。内容128中的每一个(例如,每一首歌、每一部电影,等等)包括嵌入许可证部分130。消费模块122管理内容128在目标设备104处的消费。如何消费特定内容128可以基于从用户接收到的使用内容128的特定请求以及内容128的类型而变化。例如,这一消费可包括回放内容128、将内容128转移到另一设备、将内容128刻录到CD(压缩盘)或其他光盘、打印内容128的硬副本、经由电子邮件发送内容128,等等。如下文详细讨论的,在一个或多个实施例中,许可证嵌入模块124将许可证嵌入在内容128的嵌入许可证部分130。另外,在一个或多个实施例中,目标设备104包括其中存储内容128的一个或多个许可证的许可证存储132。
在此参考对称密钥密码、公钥密码、以及公钥/私钥密码。虽然这些密钥密码对本领域技术人员而言是公知的,但在此提供这样的密码的简要概述以帮助读者。在公钥密码中,一实体(如,硬件或软件组件、设备、域等)具有与其相关联的公钥/私钥对。可以使公钥可公开获得,但该实体将私钥保密。在没有私钥的情况下,对使用公钥加密的数据进行解密在计算上是非常困难的。所以,数据可以由任何实体使用公钥来加密,并且只由具有对应私钥的实体来解密。另外,可以通过使用该数据和私钥来生成该数据的数字签名。在没有私钥的情况下,创建可使用公钥来验证的签名在计算上是非常困难的。具有公钥的任何实体可以使用该公钥通过将使用该公钥获得的验证值与原始数据进行比较来验证数字签名,并且如果这两者相同,则确定没有人篡改过或更改过该被数字地签名的数据。
在对称密钥密码中,另一方面,这两个实体都知道共享密钥并将该共享密钥保密。具有共享密钥的任何实体通常能够解密使用该共享密钥来加密的数据。在没有共享密钥的情况下,对使用该共享密钥加密的数据进行解密在计算上是非常困难的。所以,如果实体A和实体B两者都知道共享密钥,则每一个都可以解密由另一个加密的数据,但如果其他实体不知道该共享密钥则其他实体不能解密该数据。
消费模块122对目标设备104实施数字权限管理(DRM)。数字权限管理指的是对数字内容的艺术家、出版者、和/或版权所有者的权利的保护。消费模块122所使用的DRM技术限制可在目标设备104上对内容128采取的动作。可以限制各种不同的访问,如回放内容128、将内容128刻录到CD或其他光盘、将内容128复制到另一设备、打印内容128的硬副本、经由电子邮件发送内容128,等等。
消费模块122使用DRM技术来保护内容128,避免目标设备104上的不正确的使用或动作。使对内容128的使用的约束为设备104所知,通常作为许可证的一部分,如在下文更详细地讨论的。或者,可以用其他方式来使一个或多个约束可知,如预编程为消费模块122、给出这些约束的单独通知(例如,发送到设备104的单独消息,或从网站获得这些约束等)等等。
内容128通常通过加密来进行保护,使得内容128只有在知道正确的解密密钥的情况下才能以可理解的方式消费。消费模块122使用各种DRM技术来确定何时许可解密该内容(根据对内容128的使用的约束)。DRM技术可以按各种不同的方式来实现。例如,DRM技术可包括在设备104上执行的操作系统和/或其他软件可信的验证、内容128的版权的所有者和/或内容128的分发者所规定的约束得到满足的验证、操作系统和/或设备104具有一个或多个许可证所需的最新DRM更新的验证,等等。各种不同的DRM技术对本领域技术人员而言是已知的,并且这些技术中的一种或多种可由消费模块122来使用。
基于与特定内容128一个或多个许可证来标识对该特定内容128的使用的一个或多个约束。特定内容128的许可证包括标识何时许可解密该特定内容128的策略和用于解密该特定内容128的密码密钥。这一密码密钥通常是用于对称密钥加密的共享密钥,但可以另选地是用于公钥加密的私钥。
该策略标识可对对应内容128采取的一个或多个动作、可以采取该一个或多个动作的一方或多方、和/或为了采取这些动作所要满足的一个或多个约束或条件。作为替换或补充,该策略可以标识不能对对应内容128采取的一个或多个动作和/或不能采取一个或多个动作的一方或多方。可以采取(或另选地不能采取)的动作的示例包括回放对应内容128、将对应内容128刻录到CD或其他光盘、将对应内容128复制到另一设备、打印内容128的硬副本、经由电子邮件发送内容128,等等。可以采取(或另选地不能采取)这些动作的各方的示例包括特定目标设备104、目标设备104的特定用户,等等。要满足的约束或条件的示例包括在目标设备104上运行的特定消费模块122、在目标设备104上运行的特定操作系统,等等。
可以使用各种不同的许可证。例如,一个许可证可以指示特定目标设备104可以回放特定内容128,但不能将该特定内容128刻录到CD。作为另一示例,另一许可证可以指示特定目标设备104可以回放特定内容128,将该特定内容128刻录到CD,并将该特定内容128转移到另一设备。
许可证可以与特定目标设备或特定域相关联。在与特定目标设备相关联时,该许可证的策略指示只可由该特定目标设备采取动作。在不同目标设备上使用该许可证的任何尝试都将导致所请求的动作被拒绝。另一方面,在与特定域相关联时,该许可证的策略指示只可由作为该域的一部分(即,成员)的任何目标设备来采取动作。一个或多个单独的目标设备可以注册以变成该域的一部分,或另选地用户可以注册以变成域的一部分。在并非该域的一部分的目标设备上使用该许可证的任何尝试都将导致所请求的动作被拒绝。例如,用户可能拥有多个目标设备,并且将所有这些设备都注册成单个域的一部分,并且所有这些设备都可回放具有一许可证的内容,该许可证指示作为该域的一部分的设备可以回放该内容。
内容128通常使用与该内容128相关联的许可证中包括的密码密钥来进行加密。消费模块122从许可证中提取这一密钥,并且只有在许可证中的策略指示准许消费模块122使用该内容时才使用它来解密该内容。许可证中的密钥被绑定到特定目标设备104或域,如通过使用特定目标设备104或域的公钥来加密该许可证中的密钥(或另选地加密整个许可证)。因此,只有该许可证中的密钥所绑定到的特定目标设备104或域才能提取并使用该密钥来解密该内容。
内容存储126中的每一特定内容128具有嵌入许可证部分130,其中可以存储一个或多个嵌入许可证。嵌入许可证指的是嵌入在该内容中而非单独的文件中(例如,盘上、存储器中、或其他位置)的许可证。将许可证嵌入内容128中允许内容128的许可证被容易地转移到其他设备。例如,包含特定内容128的文件还可包含该特定内容128的嵌入许可证。包括任何嵌入许可证的内容128,可在无需进行与已嵌入许可证是否允许接收内容128的设备消费内容128有关的任何检查的情况下,被转移到其他设备。相反,内容128可以容易地转移到接收设备,并且如果许可证指示允许接收设备消费该内容,则将允许接收设备消费该内容。
一般而言,将本质上可移植的许可证嵌入在内容128中,而不将本质上不可移植的许可证嵌入在内容中。对于本质上可移植的许可证,该许可证通常与域或根许可证相关联。被绑定到特定目标设备104的独立许可证通常在另一设备上不可使用,并且因此通常是本质上不可移植的且通常不被嵌入在内容128中。
目标设备104所获得的许可证可以在各许可证存储之间复制。这些许可证可以嵌入在内容128中的嵌入许可证部分130中,所以嵌入许可证部分130可被看作一个许可证存储。设备许可证存储132还可包括在目标设备104中,并且耦合到目标设备104的其他设备(未示出)上的一个或多个其他许可证存储(未示出)也可以存储许可证。许可证可以由消费模块122,或另选地由为目标设备104实现DRM的另一模块,在这些各许可证存储之间复制。
图2示出具有嵌入许可证部分的示例内容。在图2,内容文件202包括嵌入许可证部分204和内容数据部分206。内容文件202可以是例如图1的内容128中的任何一个。嵌入许可证部分204可以位于内容文件202中的各种不同位置中的任何一处。例如,嵌入许可证部分204可以包括在内容文件202的头部,或以其他方式接近内容文件202的开头。或者,嵌入许可证部分204可以包括在内容文件的结尾附近、包括在内容文件202的中部,等等。另外,虽然部分204和206各自被示为单个部分,但另选地,这些部分中的一个或两者可被分开。例如,嵌入许可证部分204可被分成分布在内容文件202中的多个子部分,从而将嵌入许可证部分204和内容数据部分206混合在内容文件202中。在一个或多个实施例中,这些子部分对应于单个内容数据部分206。在其他实施例中,这些子部分对应于内容数据部分206的不同部分。例如,内容数据部分206可被分成多个部分,其中嵌入许可证部分204的各子部分散布在该多个部分之间。继续该示例,嵌入许可证部分204的第一子部分可以对应于该多个部分中的第一部分(例如,可包括只与第一部分中的内容数据相对应的一个或多个许可证),嵌入许可证部分204的第二子部分可以对应于该多个部分中的第二部分(例如,可包括只与第二部分中的内容数据相对应的一个或多个许可证),等等。
内容数据部分206包括内容文件202的内容数据,如音频内容的音频数据、电影内容的视频和视频数据,等等。如上所述,内容数据部分206的一部分是使用密码密钥来加密的。嵌入许可证部分204包括内容文件202的一个或多个已嵌入许可证。如下文更详细地讨论的,这些许可证中的每一个可以是许可证链的一部分或独立许可证。
嵌入许可证部分204存储一个或多个已嵌入许可证,并且存储在部分204中的特定许可证可以随时间变化。在一个或多个实施例中,嵌入许可证部分204是具有固定空间量的静态部分,其中不管其上存储的已嵌入许可证的数量有多少该固定空间量都不会变化。例如,嵌入许可证部分204可以是固定10kB空间,但另选地,可以使用更小或更大的大小。这一固定空间允许在不影响内容数据部分206的情况下向部分204添加和/或从中移除已嵌入许可证。例如,可以通过简单地盖写已嵌入许可证部分204的一部分来将新嵌入的许可证添加到内容数据部分206。通过添加这样的附加嵌入许可证,内容文件202和内容数据部分206的大小保持不变。
在其他实施例中,嵌入许可证部分204是可变空间量。在这样的实施例中,嵌入许可证部分204的大小可以增加以容纳附加嵌入许可证和/或减小以容纳更少嵌入许可证。
可能发生以下情况:需要向嵌入许可证部分204添加一个或多个新嵌入许可证,但没有足够空间来用于这样的新嵌入许可证。在这种情况下,部分204中的一个或多个已嵌入许可证被从部分204中删除以容纳新许可证。在一个或多个实施例中,从部分204删除的那些已嵌入许可证被添加到执行该删除的设备的许可证存储(例如,图1的许可证存储132)中或另选地添加到另一许可证存储中。或者,这样的许可证可以从部分204删除而不存储在这样的许可证存储或其他位置中。
可以用各种不同的方式来从部分204中选择许可证来进行删除。在一个或多个实施例中,使用三步过程来从部分204选择一个或多个许可证来进行删除。首先,选择过期的任何许可证来进行删除。许可证通常具有相关联的持续时间或期满日期,并且一旦过期则不能再被用来解密相关联的内容。因此,首先选择任何这样的过期许可证来进行删除。
其次,如果部分204中没有过期许可证,或许可证204中的过期许可证不足以给要添加的一个或多个许可证腾出足够空间,则删除添加该新许可证的设备所不能使用的任何许可证。内容可包括可由不同设备和/或域使用的已嵌入许可证。如果一许可证不能由设备用来解密该内容,则选择这样的许可证来进行删除。不能由该设备使用的所有这样的许可证都可被选择来进行删除,或另选地,只选择为要添加的一个或多个许可证腾出足够空间的足够许可证来进行删除。如果嵌入许可证部分204中存在比为要添加的一个或多个许可证腾出足够空间所需要删除的许可证更多的该设备不能使用的许可证,则选择这些许可证中的特定一些来进行删除。这一选择可以用不同的方式来作出,如基于许可证出现在部分204中的次序和/或许可证在部分204中被访问的次序、基于许可证的年龄(例如,从最老到最新)(许可证的年龄可以用不同的方式来确定,如许可证被嵌入在部分204中的时间、创建许可证的时间,等等)、随机选择,等等。
第三,如果前两个步骤不能为要添加的一个或多个许可证腾出足够空间,则从最老到最新来选择部分204中的一个或多个其余许可证。如上所述,可以用不同的方式来确定许可证的年龄。
继续该三步过程,选择足够数量的许可证来进行删除,并从嵌入许可证部分204中删除以给一个或多个新嵌入许可证腾出足够空间。从部分204中删除许可证可以用不同的方式来实现,如用新许可证盖写该许可证、用特定位模式或其他数据盖写该许可证、缩短嵌入许可证部分204的已使用部分的大小,等等。
嵌入许可证部分204中的每一许可证可以是独立许可证或许可证链的一部分。独立许可证是包括供实现DRM的模块来确定是否可对对应内容执行所请求的动作的足够策略和密码密钥的许可证。
另一方面,作为许可证链的一部分的许可证,结合一个或多个附加许可证来使用,以供实现DRM的模块来确定是否可对对应内容执行所请求的动作。这些附加许可证中的一个或多个可以包括在部分204中,或另选地,可以处于独立的许可证存储(例如,图1的存储132)中。在一个或多个实施例中,该嵌入许可证是许可证链的被称为叶许可证的部分,并且标识存储在设备的许可证存储(例如,图1的存储132)中和/或包括在嵌入许可证部分130中的根许可证。
例如,在图1中,叶许可证可以嵌入在特定内容128中,叶许可证标识包括在许可证存储132中的根许可证。叶许可证可包括各种策略,包括为了执行特定动作所标识的根许可证要存在于许可证存储132(和/或许可证部分130)中的约束。如果所标识的根许可证存在于许可证存储132中,则消费模块122可以执行该特定动作;否则,模块122将不执行该动作。
将许可证划分成叶许可证和根许可证可以具有多个好处。例如,基于订阅的环境中的目标设备104的用户可以按月付费来访问内容128。所有内容128可包括标识为了回放该内容而要存在的特定根许可证的叶许可证。在用户支付他或她的每月费用时,更新存储132中的根许可证以保持有效,而如果用户没有支付他或她的每月费用,则存储132中的根许可证过期。因此,每个月只在支付每月费用后更新根许可证,并且不必更新多个内容128中的已嵌入许可证。
应当注意,许可证链可包括两个或更多个许可证。例如,许可证链可以是两个许可证,如上述叶许可证和根许可证。另外,许可证链可包括三个或更多个许可证,如包括在许可证链中的除叶许可证和根许可证之外的一个或多个附加许可证。例如,叶许可证可以标识中间许可证,中间许可证又可标识根许可证。这样的中间许可证可以包括在嵌入许可证部分130中,或另选地包括在独立许可证存储(例如,图1的存储132)中。每一中间许可证可包括各种策略,包括为了执行特定动作一个或多个所标识的许可证(例如,一个或多个中间许可证、一个或多个根许可证,等等)要存在于嵌入许可证部分130(和/或另一许可证存储)中的约束。
在使用许可证链的一个或多个实施例中,用于解密特定内容128的密码密钥可以存储在不同的位置中。例如,密码密钥可以包括在嵌入叶许可证中(但只有在所标识的根许可证和许可证链中的任何其他中间许可证存在的情况下才可以使用)。继续该示例,所标识的根许可证包括使用特定设备或域的公钥来加密的根密钥。该设备使用该设备或该域的私钥来解密根密钥,并随后使用该根密钥来解密嵌入叶许可证中的密码密钥。作为另一示例,密码密钥可以包括在根许可证中而非在嵌入叶许可证中。作为又一示例,嵌入叶许可证可包括密码密钥的一个部分,而根许可证包括密码密钥的另一部分。
内容数据部分206可以用各种不同的方式来加密,其中不同的DRM系统使用不同的加密技术。在一个或多个实施例中,内容数据部分206是使用对称密钥密码来加密的。用于加密内容数据部分206的共享密钥包括在与内容文件202相关联的一个或多个许可证中,如存储在部分204中的已嵌入许可证和/或存储在许可证存储(例如,图1的存储132)中的根许可证。共享密钥是使用特定设备或特定域的公钥来进行加密的。该特定设备或该域中的任何设备可以进而使用其私钥来解密该共享密钥,并随后使用该共享密钥来解密内容数据部分206。因此,只有具有适当的私钥的那些设备才能解密内容数据部分206。此外,DRM系统(例如,图1的消费模块122所实现的DRM系统)是否将使用其私钥来解密共享密钥取决于该内容的一个或多个许可证中的策略。
或者,内容数据部分206可以用其他方式来加密。例如,内容数据部分206可以用特定设备或特定域的公钥来加密。因此,该特定设备或该特定域中的任何设备可以使用其私钥来解密内容数据部分206。DRM系统(例如,图1的消费模块122所实现的DRM系统)是否将使用其私钥来解密内容数据部分206取决于该内容的一个或多个许可证中的策略。
图3是示出用于使用具有嵌入许可证的内容的示例过程300的流程图。过程300由诸如图1的目标设备104等设备来执行,并可以用软件、固件、硬件、或其组合来实现。过程300通常由负责实现设备中的DRM的一个或多个模块来执行,如图1的消费模块122。过程300是用于使用具有嵌入许可证的内容的示例过程;参考不同附图,在此包括了使用具有嵌入许可证的内容的附加讨论。
最初,接收对要对内容执行的动作的请求(动作302)。如上所述,这样的动作可以是回放内容、将内容转移到另一设备、将内容刻录到CD、打印内容的硬副本、经由电子邮件发送内容,等等。随后访问嵌入在要对其执行该动作的内容中的一个或多个许可证(动作304),并且作出关于所嵌入的许可证中的一个或多个是否准许所请求的动作的检查(动作306)。如果已嵌入许可证中包括的策略指示可以执行所请求的动作,则该已嵌入许可证准许所请求的动作。
如果内容中的已嵌入许可证中的至少一个准许对该内容执行所请求的动作,则准许所请求的动作(动作308)。否则,作出关于是否可获得准许所请求的动作的许可证的检查(动作310)。准许所请求的动作的许可证可以用各种不同的方式来获得。例如,可以访问从中接收该内容的诸如服务器等另一设备来获得许可证,可以访问诸如内容订阅服务等服务来获取许可证,等等。获取许可证可需要将设备向域进行注册或来自用户的附加输入,如批准购买该许可证、信用卡或其他购买信息、可在其中找到该许可证的另一许可证存储的标识,等等。
如果可以获得准许所请求的动作的许可证,则获得(动作312)并保存(动作314)这样的许可证。如下文更详细地讨论的,保存该许可证可包括将该许可证嵌入该内容中和/或将该许可证保持在独立的许可证存储中。同样执行动作302中所请求的动作(动作308)。
返回动作310,如果不能获得准许所请求的动作的许可证,则不执行所请求的动作(动作316)。
应当注意,动作304和306中的嵌入许可证或在动作310-314中获得的许可证可以是独立许可证或许可证链的一部分。另外,这些许可证可以是准许实现过程300的特定设备执行所请求的动作的许可证,或者在实现过程300的特定设备是特定域的成员时准许该特定设备执行所请求的动作的许可证。
过程300是参考在动作306中嵌入许可证不准许所请求的动作的情况下,在动作310检查是否可获得准许所请求的动作的许可证来讨论的。或者,可以在执行动作310的检查之前访问一个或多个附加许可证存储。例如,可以访问图1的许可证存储132以查看存储132中的许可证是否准许所请求的动作,并且如果是,则可以在动作308执行所请求的动作。作为另一示例,可以访问另一许可证存储(未示出)以查看该许可证存储中的许可证是否准许所请求的动作,并且如果是,则可以在动作308执行所请求的动作。
图4是示出用于使用许可证链的示例过程400的流程图。过程400由诸如图1的目标设备104等设备来执行,并可以用软件、固件、硬件、或其组合来实现。过程400通常由负责实现设备中的DRM的一个或多个模块来执行,如图1的消费模块122。在一个或多个实施例中,动作401-410实现图3的动作304和306。过程400是用于使用许可证链的示例过程;参考不同附图,此处包括了使用许可证链的附加讨论。
最初,与上述图3的动作302类似,接收对要对内容执行的动作的请求(动作402)。随后检索嵌入在要对其执行该动作的内容中的叶许可证(动作404),并且标识该叶许可证的根许可证(动作406)。在一个或多个实施例中,这一根许可证是由叶许可证来标识的。这一标识可以是显式的,如包括在叶许可证中的根许可证的字母数字标识符,或可以是隐式的,如用于许可证的允许维持叶许可证和根许可证之间的对应关系的命名约定。
检索该叶许可证的根许可证(动作408)。根许可证可以从本地许可证存储中检索,如图1的许可证存储132,或者从其他位置检索,如另一设备上的许可证存储、要对其执行该动作的内容的嵌入许可证部分,等等。这一许可证存储可由叶许可证来标识,或者可为实现过程400的模块所知。
随后作出关于叶许可证和根许可证是否准许所请求的动作的检查(动作410)。如果叶许可证和根许可证准许执行所请求的动作,则执行所请求的动作(动作412)。否则,不执行所请求的动作(动作414)。
过程400是参考叶许可证和根许可证来描述的。可以明白,一个或多个附加许可证也可以包括在包含该叶许可证和根许可证的许可证链中。这些附加许可证中的每一个可被标识为动作406的一部分,沿着该许可证链从叶许可证到根许可证。然后,动作410中的检查是关于许可证链中的所有许可证是否准许所请求的动作的检查,其中在许可证链中的所有许可证都准许的情况下执行所请求的动作,并且否则不执行所请求的动作。
返回图1,许可证可由源设备102、目标设备104和/或另一设备嵌入在内容中。如上所述,设备102、设备104和/或另一设备嵌入在内容中的许可证可以是独立许可证和/或许可证链的一部分。另外,设备102、设备104和/或另一设备嵌入在内容中的许可证可以是用于设备102的许可证和/或用于设备102是其一部分的域的许可证。
在其中源设备102将许可证嵌入内容中的实施例中,源设备102包括在将内容转移到目标设备104之前将许可证嵌入该内容中的许可证嵌入模块116。在一个或多个实施例中,许可证嵌入模块116将叶许可证嵌入内容114。模块116可以将叶许可证预先嵌入内容114中,以使得在请求将内容114转移到目标设备104时内容114已经嵌入了叶许可证,和/或响应于对内容114的请求来将叶许可证嵌入内容114中。如上所述,叶许可证标识根许可证,使得相同的叶许可证可以嵌入在针对多个不同域中的不同设备的内容114中。虽然这些叶许可证都是相同的,但如上所述,不在设备上执行所请求的对该内容的动作,除非适当的根许可证也对该设备可用。
在其中目标设备104将许可证嵌入内容中的实施例中,目标设备104包括将许可证嵌入接收到的内容中的许可证嵌入模块124。许可证嵌入模块124可被实现为消费模块122的一部分,或者可以是结合和/或独立于消费模块122来操作的独立模块。例如,消费模块122可以向许可证嵌入模块124传递将许可证嵌入特定内容128中的请求。作为另一示例,许可证嵌入模块124可以独立地操作,搜索内容存储126以寻找内容128,并且在找到不带嵌入许可证的内容128时将来自许可证存储132的许可证嵌入内容128。
在接收到内容时,从许可证存储132获得许可证或在需要时以其他方式获得许可证(例如,与以上相关图3的过程300的讨论相类似)。许可证嵌入模块124将这一许可证写入包括该内容的文件的嵌入许可证部分(例如,图2的嵌入许可证部分204),从而在需要用于存储这一许可证的空间的情况下盖写被选择来删除的任何许可证。在一个或多个实施例中,在获得内容时将许可证嵌入该内容中,但许可证可以另选地在其他时间嵌入。
在其中除源设备102或目标设备104之外的另一设备将许可证嵌入内容中的实施例中,该另一设备包括与许可证嵌入模块116相类似的许可证嵌入模块。许可证被嵌入内容中,随后该内容可以被转移到源设备102或以其他方式对源设备102可用。许可证因而可以预先嵌入在内容114中,使得在请求将该内容转移到目标设备104之前该内容已经嵌入了叶许可证,并且源设备102不必嵌入叶许可证。
图5是示出用于在源设备处嵌入许可证的示例过程500的流程图。过程500由诸如图1的源设备102等设备来执行,并可以用软件、固件、硬件、或其组合来实现。过程500通常有源设备的模块来执行,如图1的许可证嵌入模块116。过程500是用于在源设备处嵌入许可证的示例过程,参考不同附图,在此包括了在源设备处嵌入许可证的附加讨论。
最初,访问要发送到目标设备的内容(动作502)。在一个或多个实施例中,这一内容是响应于来自目标设备的对该内容的请求来访问的。或者,这一内容可以响应于其他输入来访问,如来自实现过程500的设备的用户的请求、来自另一组件或设备的请求,等等。
随后作出关于该内容是否已经具有用于目标设备的嵌入许可证的检查(动作504)。如上所述,用于目标设备的这一嵌入许可证可以是独立许可证和/或许可证链的一部分,并且可以是用于目标设备的许可证和/或用于该目标设备是其一部分的域的许可证。如果用于目标设备的嵌入许可证已被嵌入在该内容中,则将具有该嵌入许可证的内容发送到目标设备(动作506)。
然而,如果该内容中尚不存在这样的嵌入许可证,则将用于目标设备的许可证嵌入该内容中(动作508)。如上所述,用于目标设备的这一嵌入许可证可以是独立许可证和/或许可证链的一部分,并且可以是用于目标设备的许可证和/或用于该目标设备是其一部分的域的许可证。是否将这样的许可证嵌入该内容中还可任选地取决于其他准则,如是否准许目标设备接收该内容(例如,已支付了适当费用),等等。一旦嵌入了许可证,则将具有该嵌入许可证的内容发送到目标设备(动作506)。
返回图1,如上所述,可发生如下情况:目标设备104从许可证源设备获得许可证。这一许可证源设备可以是源设备102或另一设备(未示出)。这一许可证可以已被嵌入在内容128中或可以分开接收。在接收到这样的许可证时,可以通过将它嵌入在它所对应的内容128中、存储在许可证存储132中、存储在不同的许可证存储(未示出)中等来将它存储在它所对应的内容128中。
在一个或多个实施例中,接收到的许可证包括对于目标设备的、指示目标设备104要将该许可证存储在何处的一个或多个嵌入许可证规则。目标设备104上的消费模块122或另一模块访问这一个或多个规则,并基于这一个或多个规则来存储许可证。这一个或多个规则可以指示要将许可证存储(嵌入)在该许可证所对应的内容128中的一个或多个中、许可证存储132中、另一设备(未示出)上的另一许可证存储中,等等。在一个或多个实施例中,这一个或多个规则仅仅是关于将许可证存储在何处的建议。或者,许可证中的存储可以指示消费模块122或实现目标设备104处的DRM的另一模块要遵循这些规则才能访问该内容。
这些规则可以包括在各种不同的许可证中,包括独立许可证、许可证链的一部分(例如,叶许可证或根许可证)、用于目标设备的许可证、用于目标设备是其一部分的域的许可证,等等。当一个或多个规则包括在许可证中时,无论何时许可证被存储或复制到另一设备,这些规则都与该许可证保持在一起。或者,一旦基于该一个或多个规则存储了许可证,则该一个或多个规则可以从许可证删除。
表I描述可以包括在许可证中的一个或多个规则的示例。可以明白,这些只是示例,并且在一些实施例中,这些规则中没有一个可被使用,并且在其他实施例中,可以使用不同的和/或另外的规则。
表I
应当注意,在一些情况下,将许可证存储在规则所标识的一个或多个位置中已经发生。例如,假定目标设备接收具有包括复制规则的嵌入许可证的内容。在该示例中,目标设备可以在接收到许可证时将它存储在该设备的许可证存储中,但目标设备不必将该许可证存储在内容中,因为该许可证已被嵌入在该内容中。
图6是示出用于使用嵌入许可证规则的示例过程600的流程图。过程600可以用软件、固件、硬件、或其组合来实现。在图6的左侧示出的过程600的动作由诸如图1的目标设备104等目标设备执行。在图6的右侧示出的过程600的动作由诸如图1的源设备102等许可证源设备执行。过程600是用于使用许可证规则的示例过程;参考不同附图,此处包括了使用许可证规则的附加讨论。
最初,目标设备生成对用于访问内容的许可证的请求(动作602)。许可证源设备接收这一请求(动作604),并确定是否准许所请求的许可证(动作606)。如上所述,动作606中的这一判定可以用各种不同的方式来作出,如基于是否支付了适当费用、从中接收到该请求的目标设备是否是被准许接收该许可证的域的一部分,等等。如果不准许目标设备拥有所请求的许可证,则拒绝该请求(动作608)。这一拒绝可任选地包括向目标设备返回该请求已被拒绝的指示。
然而,如果准许目标设备拥有所请求的许可证,则生成具有关于将许可证存储在何处的一个或多个规则的许可证(动作610)并将其发送到发出请求的目标设备(动作612)。目标设备接收具有一个或多个规则的许可证并至少部分地基于该接收到的许可证中的该一个或多个规则来存储该许可证(动作616)。如上所述,各种不同的规则中的任一种可以包括在许可证中。
因此,可以看到,本文讨论的内容的嵌入许可证可以按各种不同的方式来使用。通过嵌入许可证,内容和对应的许可证可以在各种设备之间容易地转移,而DRM仍然适用于只允许被与特定内容相对应的一个或多个许可证授权的那些设备来访问该特定内容。此外,通过嵌入许可证,可以避免对其他设备的附加访问。例如,多首歌曲(或其他内容)可被复制到诸如蜂窝电话等便携式设备并基于嵌入在这些歌曲中的许可证来回放,从而使蜂窝电话不必招致用于访问服务器以获得用于回放该多首歌曲的许可证的访问时间和收费。
图7示出根据一个或多个实施例的可被配置成实现内容的嵌入许可证的示例计算设备700。计算设备700可以是例如图1的目标设备104或源设备102。
计算设备700包括一个或多个处理器或处理单元702、可包括一个或多个存储器和/或存储组件706的一个或多个计算机可读介质704、一个或多个输入/输出(I/O)设备708、以及允许各组件和设备彼此通信的总线710。计算机可读介质704和/或I/O设备708可作为计算设备700的一部分来包括,或另选地可耦合到计算设备700。总线710表示若干类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、使用各种不同总线体系结构的处理器或局部总线等。总线710可包括有线和/或无线总线。
存储器/存储组件706表示一个或多个计算机存储介质。组件706可包括易失性介质(如随机存取存储器(RAM))和/或非易失性介质(如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件706可包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如闪存驱动器、可移动硬盘驱动器、光盘等等)。
本文讨论的技术可以用软件来实现,其中各指令由处理单元702来执行。可以明白,不同的指令可以存储在计算设备700的不同组件中,如存储在处理单元702中、存储在处理单元702的各种高速缓存存储器中、存储在设备700的其他高速缓存存储器中(未示出)、存储在其他计算机可读介质上,等等。另外,可以明白,指令被存储在计算设备700中的位置可以随时间改变。
一个或多个输入/输出设备708允许用户向计算设备700输入命令和信息,并还允许向用户和/或其他组件或设备呈现信息。输入设备的示例包括键盘、光标控制设备(例如鼠标)、话筒、扫描仪等。输出设备的示例包括显示设备(例如监视器或投影仪)、扬声器、打印机、网卡等。
各种技术在此可以在软件或程序模块的一般上下文中描述。一般而言,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以是可由计算机访问的任何一个或多个可用介质。作为示例而非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备,或者可用于存储所需信息并可由计算机访问的任何其他介质。
“通信介质”通常用诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。通信介质还包括任意信息传递介质。术语“已调制数据信号”是指以在信号中对信息进行编码的方式来设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其他无线介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
一般而言,本文描述的任何功能或技术可使用软件、固件、硬件(例如,固定逻辑电路)、手动处理或这些实现的组合来实现。本文使用的术语“模块”、“功能”和“逻辑”通常表示软件、固件、硬件、或其组合。在软件实现的情况下,模块、功能或逻辑表示当在处理器(例如,一个或多个CPU)上执行时实现特定任务的程序代码。该程序代码可被存储在一个或多个计算机可读存储器设备中,对其的进一步描述可参考图7找到。本文描述的用于内容的嵌入许可证的技术的各个特征是平台无关的,从而意味着该技术可在具有各种处理器的各种商用计算平台上实现。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上文所描述的具体特征和动作是作为实现权利要求的示例形式来公开的。