具体实施方式
计算机环境
图1和随后的讨论旨在提供其中可实现本发明的合适计算环境的简要描述。然而应该理解的是也可考虑结合本发明使用手持、便携以及其他所有种类的计算设备。虽然将下文中阐述通用计算机,但这仅仅是一个实例,并且本发明仅要求具有互操作性和交互作用的瘦客户机。这样,就可在其中包含很少或最少客户机资源的网络主机服务的环境中实现本发明,所述网络环境例如其中的客户机设备仅用作万维网的浏览器或界面。
虽然不要求,但是本发明可经由开发者使用的应用编程接口(API)实现,和/或本发明可以包括在将在计算机可读指令(诸如程序模块)的背景中阐述的网络浏览软件内,那样的软件模块可由一个或多个计算机执行,诸如客户机工作站、服务器或其他设备。程序模块通常包括可以执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。在各实施例中,通常可以按照需要结合或分配程序模块功能。此外,本领域普通技术人员将会认识到还可使用其他的计算机系统配置来实践本发明。其他适合于本发明使用的已知的计算系统、环境和/或配置包括但不限于个人计算机(PC)、自动取款机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、可编程电子消费品、网络PC、小型机、大型机等等。本发明还可在分布式计算环境中实现,其中任务是由通过通信网络或其他数据传输介质链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括了存储器存储装置的本地和远程计算机存储介质上。
这样图1就示出了其中可实现本发明的合适计算系统环境100的实例,虽然正如以上所阐明的那样,计算系统100仅作为合适计算环境的一个实例,并不意味着对本发明的使用和功能作出任何限制。也不应该将计算环境100解释为对在典型操作环境100中示出的组件中的任何一个或它们的组合具有任何依赖或要求。
参见图1,一个用于实现本发明的示例系统包括计算机110形式的通用计算设备。计算机110的组件包括但不限于:处理单元120、系统存储器130以及把包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是任何类型的总线结构,包括存储器总线或存储器控制器、外围总线和使用各种的总线体系结构的任何一种本地总线。作为实例而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)本地总线以及还被称为Mezzanine总线的外围部件互连(PCI)总线。
计算机110通常包括多个计算机可读介质。计算机可读介质可以是任何能被计算机110访问的可得到的介质并且包括易失性的和非易失性的介质、可移动的和不可移动的介质。例如但不限于,计算机可读介质可包括计算机存储介质和计算机通信媒介。计算机存储介质包括以任何方法或技术实现的易失性的和非易失性的介质、可移动的和不可移动的介质用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类信息。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字通用盘(DVD)或者其他光盘存储器、磁带盒、磁带、磁盘存储装置或者其他磁存储设备或者能够用于存储期望信息并可由计算机110访问的任何其他介质。通信媒介通常具体表示为在诸如载波或其他传送机制的被调制数据信号内的计算机可读指令、数据结构、程序模块或者其他数据,并且还包括任何信息传递媒介。术语“已调制数据信号”指的是具有以在信号内对信息编码的方式设置或改变的一个或多个特征的信号。作为例子而非限制,通信媒介包括诸如有线网络或者直接线连接的有线媒介,以及诸如声学、RF、红外线或其他无线媒介的无线媒介。上述的任意组合也包括在计算机可读介质的范围内。
系统存储器130包括以易失性的和/或非易失性的存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。包含有助于诸如在启动期间在计算机110内各个元件间传递信息的基本例程的基本输入/输出系统(BIOS)133可以存储在ROM 131中。RAM 132通常包括可由处理单元120立即访问和/或当前操作的数据和/或程序模块。作为例子而非限制,图1示出了操作系统134、应用程序135、其他程序模块136以及程序数据137。
计算机110还可包括其他可移动/不可移动、易失性/非易失性的计算机存储介质。仅作为例子,图1示出了对不可移动、非易失性磁性介质进行读取和写入的硬盘驱动140,对可移动、非易失性磁盘152进行读取和写入的磁盘驱动151以及对诸如CD-ROM或其他光学介质的可移动、非易失性光盘156进行读取和写入的光盘驱动155。也可在此示例的操作环境中使用的其他可移动/不可移动、易失性/非易失性的计算机存储介质包括但不限于磁带盒、闪存卡、数字通用盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动141通常通过诸如接口140的不可移动存储器接口与系统总线121相连,而磁盘驱动151以及光盘驱动器155通常通过诸如接口150的可移动存储器接口与系统总线121相连。
以上讨论并在图1中示出的驱动以及相关的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块或其他数据的存储。例如在图1中示出的硬盘驱动141用于存储操作系统144、应用程序145、其他程序模块146以及程序数据147。注意到这些组件可与存储操作系统134、应用程序135、其他程序模块136以及程序数据137相同或不同。存储操作系统144、应用程序145、其他程序模块146以及程序数据147在此给予不同标号表明至少它们是不同的副本。用户可与通过诸如键盘162以及通常被称为鼠标、跟踪球或触摸板的定位设备161的输入设备将命令和信息输入到计算机110。其他输入设备(未示出)可包括麦克风、操纵杆、游戏垫、卫星电视天线、扫描仪等等。这些和其他的输入设备通常经由耦合至系统总线121的用户输入接口160与处理单元120连接,但是也可以经由诸如并行接口、游戏接口或通用串行总线(USB)之类的其他接口和总线结构进行连接。
监视器191或其他类型显示设备也可以经由诸如视频接口190的接口与系统总线121相连。诸如北桥(Northbridge)的图形接口182也可连接至系统总线121。北桥是与CPU或主处理单元120通信的芯片组,并且认为负责加速图形接口(AGP)通信。一个或多个图形处理单元(GPU)184可与图形接口182相连。在这方面,GPU 184通常包括芯片上存储器(诸如寄存器存储器),且GPU 184与视频存储器186通信。然而GPU184仅是协处理器的实例,因此可在计算机110内包括多个协处理设备。监视器191或者其他类型的显示设备也可通过诸如轮流与视频存储器186通信的视频接口190的接口连接至系统总线121。除了监视器191外,计算机还可包括经通过输出外围接口195连接的诸如扬声器197和打印机196的其他外围输出设备。
计算机110可使用到诸如远程计算机180的一个或更多的远程计算机的逻辑连接在网络环境内的操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或者其他的公共网络节点,并且通常包括上述计算机110涉及到的许多或全部元件,虽然图1中仅示出了存储器存储设备181。图1描述的逻辑连接包括作局域网(LAN)171和广域网(WAN)173,但是也可包括其他网络。那样的网络环境在办公室范围或公司范围计算机网络、内联网和因特网中是常见的。
在LAN网络环境中使用时,计算机110通过网络接口或适配器170与LAN 171相连。在WAN网络环境中使用时,计算机110通常包括调制解调器172或其他用于建立在诸如因特网的WAN 173上通信的装置。可以内置或外置的调制解调器172经由用户输入接口160或其他合适的机制与系统总线121相连。在网络环境中,关于计算机110描述的存储模块或其部分可以存储在远程存储器存储设备内。作为实例而非限制,图1示出的远程应用程序185位于存储器设备181上。可以理解示出的网络连接是示例性的并且也可以使用在计算机之间建立通信链路的其他方法。
本领域普通技术人员应该认识到计算机110或者其他客户机设备可被布置为计算机网络的一部分。在此方面,本发明适合具有任何数量存储器或存储单元的任何计算机系统以及适合于在任何存储单元或卷上出现的任何数量的应用程序和进程。本发明还可应用于带有在具有远程或本地存储装置的网络环境中布置的服务器计算机和客户机计算机的环境。本发明也可应用于具有编程语言功能、解释和执行能力的独立计算设备。
分布式计算方便了通过在计算设备和系统之间的直接交换来进行务计算机资源的共享和服务。这些资源和服务包括交换信息、高速缓存和用于文件的盘存储。分布式计算具有网络连通性的优势,允许客户机充分发挥其集体的力量而使整个事业获益。在此方面,多个设备可以具有交互作用的应用程序、对象或资源以包含了本发明用于信任图形流水线的确认技术。
图2提供了一个示例的网络或分布式计算环境的示意图。所述分布式计算环境包括计算对象10a、10b等以及计算对象或设备110a、110b、110c等。这些对象包括程序、方法、数据存储、可编程逻辑等等。这些对象可以包括相同或不同的设备(诸如PDA、电视、MP3播放器、个人计算机等等)的部分。每个对象都可通过通信网络14与另一个对象通信。该网络本身包括为图2中的系统提供服务的其他计算对象和计算设备。根据本发明的一个方面,每个对象10或110可以包括请求本发明关于信任图形流水线的认证技术的应用程序。
还应该认识到诸如110c的对象可以存在于另一个计算设备10或110上。这样,虽然描绘的物理环境可以示出相连的设备为计算机,但是那样的表示仅是示意性的并且可以另外地把所述物理环境描绘或描述成包括了各种数字设备(诸如PDA、电视、MP3播放器等)、软件对象(诸如接口)和COM对象等。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,可通过有线或无线系统、借助网络或广泛分布式网络将计算环境连接在一起。现今有许多网络都耦合至为广泛分布的计算提供了基础结构并且包括了许多不同网络的因特网。
在家庭网络环境中,至少存在四种完全不同的网络传送媒介,它们中的每一个都支持一种独立协议,诸如输电线协议、数据(包括有线和无线)、语音(例如电话)和娱乐媒体。多数家庭控制设备(诸如电灯开关)和电气设备可使用输电线连接。数据服务可以通过宽带进入家庭(例如DSL或电缆调制解调器)并且可以使用无线(例如HomeRF或802.11b)或有线(例如Home PNA、Cat 5甚至是输电线)连接来进行家庭内的访问。语音通信量可通过有线(例如Cat 3)和无线(例如蜂窝电话)进入家庭并且可使用Cat 3配线在家庭内分布。娱乐媒体可以通过卫星或电缆进入家庭并且通常使用同轴电缆在家庭内分布。IEEE 1394和DVI也作为用于媒体设备集群的数字互连而出现。
所有这些网络环境和作为协议标准出现的其他环境都可被互连以形成可通过因特网与外部世界相连的内联网。简言之,存在用于存储和传输数据的各种完全不同的资源,因此发展下去计算设备将要求在数据处理流水线的所有部分上都能够保护内容的方法。
“因特网”通常指利用计算机网络领域里著名的TCP/IP协议组的网络和网关集合。TCP/IP是“传输控制协议/网间协议”的首字母缩略词。因特网可被描述为通过计算机执行允许用户通过网络交互和共享信息的网络协议而互连的地理上分布的远程计算机网络的系统。因为这些广泛传播的信息共享,诸如因特网的远程网络通常就可发展成开放系统,开发者可为它设计用于执行特定操作或服务的软件应用程序而基本上不受限制。
这样,网络基本结构就启用了诸如客户机/服务器、对等或混合体系结构的网络拓扑结构的主机。“客户机”是使用不相关的另一类或另一组服务的一类或一组中的一个成员。这样在计算中,客户机就是请求由另一个程序提供服务的进程(即粗略地作为一组指令或任务)。该客户机进程利用所述被请求的服务而无需“知道”关于其他程序和服务本身的任何工作细节。在客户机/服务器体系结构中,特别是在网络系统中,客户机通常是访问由另一个计算机(例如服务器)提供的共享网络资源的计算机。在图2的实例中,可认为计算机110a、110b等是客户机而计算机10a、10b等是服务器,其中服务器10a、10b等保持随后可在客户计算机110a、110b等内复制的数据。
服务器通常是可以通过诸如因特网的远程网络进行访问的远程计算机系统。所述客户机进程可在第一计算机系统内激活并且所述服务器进程可在第二计算机系统内激活,它们经由通信媒介相互通信,这样就提供分布式功能并且允许多个客户机利用所述服务器的信息收集功能。
客户机和服务器利用由协议层提供的功能相互通信。例如,超文本传输协议(HTTP)是结合万维网(WWW)使用的通用协议。通常,诸如统一资源定位器(URL)或因特网协议(IP)地址的计算机网络地址可用于相互识别所述服务器或客户机。所述网络地址可被称为统一资源定位器地址。例如可由通信介质提供通信。尤其可经由TCP/IP连接相互耦合客户机和服务器用于大容量通信。
这样,图2就示出了一个带有经由网络/总线与客户机通信的服务器的示例的网络或分布式环境,可在该环境中执行本发明。更具体地,多个服务器10a、10b等可经由通信网络/总线14互连,所述通信网络/总线可以是带有多个客户机或远程计算设备110a、110b、110c、110d、110e等(诸如便携计算机、手持计算机、瘦客户机、联网电器设备或根据本发明的例如VCR、TV、电炉、电灯、加热器之类的其他设备)的LAN、WAN、内联网、因特网等。这样就考虑本发明可以应用到期望处理、存储或呈现来自信任的源的安全内容的任何计算设备。
在通信网络/总线14是例如因特网的网络环境中,服务器10可以是经由诸如HTTP的任意数目的已知协议与客户机110a、110b、110c、110d、110e等通信的Web服务器。服务器10也可以用作客户机110,以表示分布式计算环境的特征。按照需要,通信可以是有线的或无线的。客户机设备110可经由通信网络/总线12进行通信,也可不通信,并且可以具有与其相关联的独立通信。例如在TV或VCR的情况下,其中可具有也可不具有要控制的网络方面,每个客户机计算机110和服务器计算机10都可装备有各种应用程序模块或者对象135,并具备对各种类型存储元件或对象有连接或访问的能力在这些存储元件或对象中可以存储文件或者可在其中下载或移植文件的部分。这样,就可在具有可访问并可与计算机网络/总线14交互的客户机计算机110a、110b等、和可与客户机计算机110a、110b等交互的服务器计算机10a、10b等以及其他设备111和数据库20的计算机网络环境中实现本发明。
权限管理(RM)概述
根据已知并参考图3,非常希望结合将分配给用户的诸如数字音频、数字视频、数字文本、数字数据、数字多媒体等的数字内容32进行权限管理(RM)和强制实施。一旦用户接收到所述内容,该用户就在诸如媒体播放器、文本显示器等的恰当呈现设备的帮助下在个人计算机34等上呈现所述数字内容32。
通常,分配该数字内容32的内容所有者或开发者(此后称为“所有者”)希望限制用户能对这些被分配数字内容做什么。例如,内容所有者可希望限制用户复制该内容32并将其再分配给第二用户,或者希望仅允许被分配数字内容32呈现有限的次数、仅仅具有某个总时间、仅可在某些种类的机器上呈现、仅仅能够在某个类型的呈现平台上呈现、仅可由某个类型的用户呈现等等。
然而在发生分配之后,这些内容的所有者对该数字内容32的控制力很小(如果有的话)。随后RM系统30允许数字内容32任意形式的受控呈现,其中该控制是灵活的并且可由该数字内容的内容所有者定义。内容32通常以分组33的形式通过任何恰当的分配通道分配给用户。被分配的数字内容分组33可包括用对称加密/解密密钥(KD)(例如(KD(CONTENT))加密的数字内容32以及识别该内容、如何获取用于该内容的许可证的其他信息。
基于信任的RM系统30允许数字内容32的所有者指定在该数字内容32被允许在用户的计算设备34上呈现之前所必须满足的许可证规则。该许可证规则可包括前述的临时要求,并且可以在数字许可证中具体实现或者使用用户/用户的计算设备34(此后,除非环境要求否则这些术语可以互换)必须从内容所有者或其代理商处获取的文档(此后“许可证”)36。该许可证36还包括解密或许根据用户的计算设备34可解密的密钥而加密的解密密钥(KD)。如图3中所示,这些加密密钥是用户的计算设备34的公钥(PU-BB),并且用户的计算设备34大概会具有用来解密内容(PU-BB(KD))的相应的私钥(PR-BB)。
数字内容32片段的内容所有者必须信任,用户的计算设备34会遵守由内容所有者在许可证36中所指定的规则和要求,即除非满足许可证36中的规则和要求才呈现该数字内容32。优选地,随后将提供给用户的计算设备34一个信任的组件或机制38,除非符合体现在许可证36中与数字内容32相关联并由该用户获取的许可证规则,所示组件或机制38才呈现该数字内容32。
可信组件38通常具有许可证鉴别器40,它可以确定该许可证36是否有效、审查在该有效许可证36内的许可证规则和要求并且基于审查的许可证规则和要求确定请求用户是否具有以寻求的方式呈现被请求数字内容32的权限。应该理解的是,在RM系统30中受信的许可证鉴别器40根据许可证36中的规则和要求来实现数字内容32所有者的愿望,并且所述用户应该不能够出于任何目的(恶意的或其他的目的)而轻易更改该信任元件。
应该理解的是,基于包括用户是谁、用户的位置、该用户使用的计算设备类型、呈现应用程序在调用RM系统30、日期、时间等的任何因素,在许可证36中规则和请求可以指定该用户是否具有呈现该数字内容32的权限。此外,许可证36的规则和请求可以限制许可证36到例如具有预定的呈现次数或者具有预定的呈现时间。这样,可信组件38就需要参照计算设备34上的时钟42。
可以根据任何恰当的语言和语法来指定许可证36中的规则和要求。例如,所述语言可以简单指定必须满足的属性和值(例如DATE必须比X晚),或者可以根据特定的脚本(例如IF DATE大于X,THEN DO...)要求功能的实现。
一旦许可证鉴别器40确定该许可证36有效并且该用户满足其中的规则和要求,随后就能呈现该数字内容32。尤其为了呈现内容32,从许可证36中获取解密密钥(KD)并将其应用到来自内容分组33的(KD(CONTENT))以获取实际内容32,并且实际上在随后呈现该实际内容32。
如上所述,带有(PU-BB(KD))的许可证36实际上授权了一个持有(PR-BB)的实体以获取(KD)并从而根据该(KD)访问加密的内容32,当然假定在此过程中所述实体遵守在许可证36中阐明的所有条件。虽然应该认识到,也可在RM系统30内存在其他类型的许可证36。
例如,应该认识到在一种情况下,内容32的作者或发行人44通过为发证方46提供一个发行的许可证36p,可以授权一特定的发证方46以发行一个用于相应的内容32的许可证36。应该认识到,这一发行的许可证36p类似于许可证36,其中该发行的许可证36p很可能包括用于解密在此根据发证人公钥(PU-BB)加密的数字内容32的解密密钥(KD)。同样地,发行的许可证36p很可能包括用于呈现所述内容32的规则和请求。尽管如此,在此的这些规则和请求可被插入36由发证方46发行的许可证并且不是特别用于该发证方46。
虽然注意到发行的许可证36p的确包括确实可用于该发证方46的其他规则和请求。因此,发证方46能够以类似于用户计算设备34的方式包括带有许可证鉴别器40的可信组件48。
值得注意的是,提供的每种类型的许可证36、36p等等通常都包括用于认证/验证目的的数字签名,并且参考来自根信任授权或者回溯到该根信任授权的一系列证书以确认每个数字签名。特别地,每个证书都包括用于认证/验证目的的数字签名,并且基于一私钥构造每个签名而根据相应的公钥验证所述每个签名。
还应注意到,在从根信任授权引出到到特定许可证36、36p等的证书链中,是基于来自所述根信任授权的私钥来签署来自所述根信任授权的根数字证书,并且基于假设在检验实体中可用的相应公钥来验证该证书。对于在链中的每个其他的数字证书以及对于在该链的末端许可证36、36p等基于特定的私钥签署这些其他证书和许可证36、36p等,并且基于从指向所述根信任授权的链中的下一个证书中获取的相应公钥验证所述的其他证书和许可证36、36p等。
因此,为了验证许可证36、36p等,就要找出回溯到根信任授权的证书的相应的证书链,找出该根信任授权的相应公钥,并且使用找出的根信任授权公钥来验证所述根证书,并且在假设该验证成功的情况下,公钥位于该根证书内并且用于验证该链中的下一个证书。重复此过程直到在该链中最后的证书,在该点找到公钥并用于验证所述许可证36、36p等。当然,如果任何验证失败,则结束该进程并且不验证所述许可证36、36p等。通常,除非经过验证,否则RM系统30将不会批准许可证36、36p等。
在许可证内定义所述根信任授权
现在应该认识到,验证许可证36、36p等(此后称为许可证36)需要诸如可信组件38的验证实体已经具有对应于由其证书链定义的许可证36的所述根信任授权的公钥。然而如前指出,会出现一个本身无错的实体出于任何原因而在实际上不拥有该公钥的情况。当然,所有的证书链都会回溯到单个的全球或接近全球的根信任授权,但是对一个或少数几个授权的信任不必要地集中了该根信任并且在集中的根信任被泄密或失效时会引发严重的问题。
因此在本发明的一个实施例中,许可证36可以通过包括与其对应于的一个公钥来定义任何特定的根信任授权,由此就在随后使用该公钥来起动附在该许可证36上的证书链的验证。结果是,任何验证实体都无需持有任何特定根信任授权的任何特定的公钥,而是能够基于相应的许可证36来获取该公钥,其中基于该公钥最终验证该许可证36。因此,那样的验证实体不与任何根信任授权关联,而替代地能验证通过与任何指定的根信任授权对应的证书链关联的大多数任何许可证36。
还应注意到,在由此被验证的许可证36中包括有根信任授权的所述公钥本质上可以使得所述许可证36进行自验证,而在安全实践中通常认为此种行为是不可接受的。由此参见图4,在本发明的一个实施例中,许可证36被分为包括解密部分36d和授权部分36a的至少两个部分,而尝试使用该许可证36来呈现相应内容32的用户必须拥有上述的每个部分。值得注意的是,仅仅是对其发行有许可证36的用户才能访问解密部分36d,而还有用在解密部分36d内信息验证的签名的其他用户也可访问授权部分36a。这样对于部分36a和36d来说,所述授权部分36a不是自验证的。应该注意到许可证36可具有其他的部分而不背离本发明的精神和范围。
仍参考图4,在本发明的一个实施例中,许可证36的授权部分36a识别该许可证36的发行人,并且包括诸如以一种或多种方式呈现识别内容32的片段以发行一类许可证36等的权限特定授予,还可包括相关内容32的识别。此外,授权部分36a可以指定能够使用许可证36的授权部分36a的一个或多个特定的用户或用户类型以及对于每个特定用户/用户类型指定结合许可证36的使用所必须满足的条件。
值得注意的是,授权部分36a包括基于前述条款至少一部分的数字签名,其中所述签名回溯到具有特定公钥/私钥对(PU-ROOT,PR-ROOT)的特定根信任授权。即应该认识到,签名(S(PR-ROOT))是可以基于PR-ROOT,或者可以包括回溯到最后一个带有基于PR-ROOT的签名的证书的证书链。应该认识到在任何情况下,可以基于(PU-ROOT)的恰当应用,直接地或者通过证书链(任一情况都可)来验证签名(S(PR-ROOT))。
虽然应该注意到授权部分36a本身并不包括这一(PU-ROOT)。代替地,在本发明的一个实施例中,解密部分36d包括根密钥(PU-ROOT)以及用于解密相应内容32的解密密钥(KD)。此外,解密部分36d除了在授权部分36a中所阐述的权限和条件以外还可包括其他权限和条件。最应注意的是,解密部分36d应该表示成一种权限/条件,使得除非使用在那里的根密钥(PU-ROOT)验证在相应授权部分36a上的签名才能使用在那里的解密密钥(KD)。
解密部分36d很有可能未被数字签署,虽然提供这一数字签名并不背离本发明的精神和范围。应该注意到,如果签署,假设验证根密钥不应该联系到用户的计算设备34则很可能基于(PU-ROOT)而验证该签名。然而再一次,在解密部分36d中包括(PU-ROOT)(其中基于该(PU-ROOT)验证该解密部分36d),就使得解密部分36d进行在安全实践领域通常被认为是不可接受的自验证。
代替地,在本发明的一个实施例中,加密所述解密部分36d以保护其中的密钥,其中选择所述加密密钥使得用户的计算设备34可以使用相应的解密密钥。应该认识到,这样做的好处在于通过该解密密钥将解密部分36联系到所述用户计算设备34。还应认识到,这样做还具有另外的好处,即只要该解密密钥对用户的计算设备34来说可用,则所述解密密钥就可以是任何种类密钥。
例如在本发明的一个实施例中,如图4所示,所述解密密钥是对应于使用作为加密密钥的公钥的私钥。这样,所述用户计算设备34本身就可具有公钥/私钥对或具有对该用户的公钥/私钥对本身的访问,或者用户计算设备34上的可信组件38可具有那样的公钥/私钥对。在任何情况下,都将该公钥提供给许可证36的构造者,特别是解密部分36d的构造者用于加密这些部分所述私钥保持机密用于解密所述解密部分36d。
另外,所述解密密钥和所述加密密钥可以是相同的,在那样情况该构造者和所述用户计算设备34可以建立用于生成该对称密钥(未示出)的共享秘密。当然,随后该用户计算设备必须安全地存储该对称密钥用于将来的检索。
现在转向图5,通过结合上述图3和图4阐述的安排,以如下的方式实现在用户计算设备34上呈现内容32。首先,基于内容32内的某些恰当标识,所述用户的计算设备34及其上的可信组件38涉及许可证服务器(诸如图3中可以对应于所述内容发放一许可证36的发证方46)并将一请求发行至该许可证服务器46用于该许可证36(步骤501)。通常,这一请求包括一识别用户、用户计算设备34、可信组件38等等的证书等,其中所述证书包括公钥(PU-USER)。基于包括有所述证书的请求,许可证服务器随后就决定是否作为响应发放许可证36。应该认识到,该决定可以基于任何恰当的因素而不背离本发明的精神和范围。
假设许可证服务器46实际决定发放许可证36(步骤503),则该许可证服务器以前述的方法构造所述解密部分36d和授权部分36a(步骤505),基于在解密部分36d中的根密钥(PU-ROOT)签署所述授权部分36a(步骤507),并且基于带有请求的所述证书的公钥(PU-USER)加密所述解密部分36d(步骤509)。这里注意到在步骤501的每个请求包括一不同的公钥(PU-USER),其中使用该(PU-USER)以加密被请求的许可证36的解密部分36d,因此每一解密部分36d都相应地不同。然而所述授权部分36a很可能不会类似地不同,因为那些授权部分应被签署成基于相同的根密钥(PU-ROOT)来验证。因此,实际的情况可能是在步骤505构造一不同的解密部分36d并在步骤509响应于每一请求加密该部分,但是仅在步骤505处构造一个单一通用的授权部分36a并且在步骤507签署该部分,同时该单一的授权部分36a适用于所有的请求。
以任何速率响应于来自用户的计算设备34请求的许可证服务器46返回包括有授权部分36a和解密部分36d的许可证36(步骤511)。但应注意到,所述授权部分36a无需被指定给任何特定的许可证36,因此实际上是对多个许可证通用的。因此实际情况可能是在步骤505响应于每一请求构造解密部分36d,但是仅在请求者尚未具有该授权部分36a的情况下在步骤505处构造一个授权部分36a。相应地,如果请求者实际尚未具有该授权部分36a,则该许可证服务器46无需进行与步骤505处相同的构造并且无需如步骤511那样返回许可证36。
现在转到图6,可以看到以如下的方式,持有对应于加密部分32的许可证36的解密部分36d和授权部分36的用户计算设备34解密和呈现该内容32。
首先,基于所述内容32,用户的计算设备34定位所述许可证36,或者至少是其中的解密部分36d(步骤601)。这样,用户的计算设备34就根据已用于无论怎样的加密方案加密该解密部分36d来解密相同部分(步骤603)。例如,如果基于用户的公钥(PU-USER)加密所述解密部分36d或者其中的一部分,则该用户计算设备34就应用相应的私钥(PR-USER)来揭示该解密部分36d或者其中的一部分。
此外,用户计算设备34审查在解密部分36d内阐述的权限/条件并确定是否这些权限允许以所寻求的方式呈现所述内容32以及这些条件是否被满足(步骤605)。重要的是,该确定包括确保除非使用了其中的根密钥(PU-ROOT)验证在相应授权部分36a上的签名不使用解密部分36d内的解密密钥(KD)。应该注意到如果存在所述解密部分36d内未加密所述权限/条件的情况,就在步骤603之前进行步骤605,并且在这些权限/条件未允许以所寻求的方式呈现所述内容32的情况下就可避免步骤603。还应注意到,如果权限/条件或解密部分36d的其他任何部分未被加密,则这些部分至少应该是用于一数字签名的基础并且应验证该数字签名以确保不被篡改。
假设在解密部分36d内的所述权限/条件允许以所寻求的方式呈现所述内容32,则用户计算设备34获取所述根密钥(PU-ROOT),并且用于解密来自解密部分36d的相应内容32的解密密钥(KD)(步骤607),定位所述授权部分36a(步骤608)并在随后利用该(PU-ROOT)验证授权部分36a的数字签名(S(PR-ROOT))(步骤609)。能够以任何恰当的方式执行该验证而不背离本发明的精神和范围。该验证是已知的或对相关公众来说的显而易见的,因此无需在此做任何细节上的阐述。
假设所述验证成功,则用户计算设备34随后审查在授权部分36a内阐明的权限/条件并且确定是否这些权限允许以所寻求的方式呈现所述内容32以及这些条件是否被满足(步骤611)。应该注意到可在步骤609之前进行步骤611,并且在这些权限/条件未允许以所寻求的方式呈现所述内容32的情况下就可避免步骤609。
假设在授权部分36a内的所述权限/条件允许以所寻求的方式呈现所述内容32,则用户计算设备34使用解密密钥(KD)作为在步骤607所获取的解密密钥用于实际解密所述加密内容32(步骤613),并在随后呈现该解密的内容(步骤615)。
结论
为实现结合本发明执行的进程所必须的编程是相对直接的,并且应该是相关编程人员是显而易见的。因此,不在此处附加该编程。然而可使用任何特定的编程以实现本发明而不背离其精神和范围。
在本发明中,提供了一种灵活的体系结构来定义数字许可证36以及操作。该体系结构允许多个根信任授权并且允许一个许可证36本身来指定可用于认证/验证该许可证的每一根信任授权。为了实现该体系结构,所述许可证36包括以仅可由特定用户或用户组访问的方式加密的解密部分36d以及基于从所述解密部分36d中获取的密钥而必须被验证的授权部分36a。
应该认识到可以对上述实施例进行修改而不背离本发明其中的概念。因此应该理解本发明不限于所揭示的特定实施例,而它旨在覆盖位于由所附权利要求定义的本发明的精神和范围。