较佳实施例的详细描述
本发明延及权限管理保护内容的预许可的方法、系统和计算机程序产品。本发明的实施例可包括如下文更详细描述的包括各种计算机硬件的专用或通用计算机。
示例实施例提供了通过提供预许可过程克服了其它权限管理服务系统的缺陷的方法、系统和计算机程序产品。因此,希望获取使用许可证以打开受保护内容(如,电子邮件的附件)的主体能够在不能访问权限管理服务(RMS)服务器的情况下完成这一过程。尽管将在消息通信系统(即,通过消息服务器发送受保护消息内容的过程)的环境中描述以下示例,然而本发明也可适用于其它形式的受保护内容,如共享文件夹、即时和/或文本消息通信等。由此,此处所描述的用于预许可过程的示例仅用作说明性目的,并不意味着局限本发明的方位。
为参与权限管理服务,主体应当首先登记。一般而言,术语主体旨在被广泛地解释为包含用户、进程、机器、服务器、客户机或能够执行涉及它的功能的任何其它设备或东西。然而,存在其中期望特定类型主体的实施例。例如,如下文关于图1(a)的登记过程所讨论的,它通常是通过接收锁箱(lockbox)dll来登记的机器。相反,参考图1(b)中描述的登记过程,用户或服务器通常通过接收已登记机器上的权限管理账户证书(RAC)来登记。因此,即时本发明的示例实施例是在特定类型的主体的上下文中描述的,然而术语主体应当保持上述的最广泛的意义。
图1(a)突出了登记(100)过程中典型的第一个行动的示例。主体120(尤其是客户机或机器)应当首先从锁箱服务器110获取适当的软件。因此,主体120向锁箱服务器110发送锁箱请求101,并向锁箱服务器110提供对机器唯一的数据。更具体地,所提供的信息可以是机器的物理特征,例如,处理器速度、CPU序列号、网络地址等等。锁箱服务器100使用该唯一数据来构建锁箱dll 115,它然后由主体120接收。如下文更详细地描述的,锁箱dll 115将控制访问以保护内容。此外,由于锁箱dll 115是用来自机器的唯一数据构建的,因此dll 115是机器专用的,使得它仅在该特定机器上起作用。锁箱115可在运行时核查机器的特征。
由于主体120已经具有了访问受保护内容的软件,因此主体120(尤其是用户或服务器)向主体120希望使用的每一权限管理服务(RMS)服务器注册。例如,如果主体120希望参与特定商业网络的权限管理服务,则主体向该系统的RMS服务器注册。换言之,为访问从特定RMS控制的内容,主体向RMS服务器标识其本身。应当注意,为本发明的目的,RMS服务器表示一个或多个RMS服务器,并且除注册之外的某些变互(例如,如下文所描述的获取发布或使用许可证)可访问可用RMS服务器的任一个。
图1(b)示出了主体,即用户或服务器120如何在主体登记(100)过程中向RMS服务器125注册的示例。首先,主体120可向RMS服务器125作出对解密密钥的请求103。主体可用诸如基本、Kerberos、K509证书、护照等的许多常规认证协议中的任一个向RMS服务器标识其自身。主体120通常从RMS服务器125接收一权限账户证书(RAC),它可在稍后用于将主体120标识为权限管理服务中的可信主体。主体120也从RMS服务器125接收私钥130。私钥130通常用请求103中提供的密钥来加密,以保持其(130)在传输过程中是私有的。如下文所描述的,私钥130将由RMS服务器用于加密主体120将用于解密受保护内容的内容密钥。因此,当主体120接收受保护的内容时,锁箱dll可验证内容的真实性、检索并解密内容密钥、以及为主体120打开内容。
主体120现在已准备好参与权限管理服务。希望通过发送受保护内容或试图解密受保护内容来参与权限管理的任一主体通常经受一类似的用户登记(100)例程。应当注意,尽管发送受保护内容的主体必须在能够发布内容(如下文更详细地描述的)之前登记,然而主体可在没有在RMS系统中登记的情况下接收受保护内容。尽管如此,接收受保护内容的未登记主体必须在能够解密受保护内容之前登记。因此,当未登记主体试图访问受保护内容时可指引它登记。
下文参考图3(a)-3(d)来描述预许可受保护内容的示例实施例。相反,图2(a)-(c)示出了当主体能够访问RMS服务器时受保护内容的发送者210和主体240如何参与权限管理过程的示例。首先,如图2(a)所示,发送者应当获取发布许可证202以向主体240发送受保护内容220。因此,发送者210加密该内容,并向RMS 215作出对发布许可证的请求201。该请求201可包括诸如权限表达式、加密成RMS服务器的公钥的内容密钥以及内容散列等东西。权限表达式通常指定了受保护内容打算供谁使用以及该内容的每一接收者可以做什么。内容密钥(未示出)是通常由发送者210创建的对称密钥,用于加密/解密受保护的内容。一个实施例提供了RMS服务器215可将内容密钥保存在数据库(未示出)中,该数据库稍后将在下文描述的使用许可过程中将其发送给主体240。(或者,如下文更详细地描述的,RMS服务器215可在发布许可证202中包括内容密钥的已加密版本。)最后,稍后可使用散列来验证内容在接收到并由相应的锁箱dll 245打开时未改变。
在接收对发布许可证的请求201之后,RMS服务器215然后可创建发布许可证202,它可以是由RMS服务器签署的已加密信息。信息可以简单地是权限表达式、内容密钥、内容密钥标识符、和/或内容散列的任一组合。因此,当RMS服务器215稍后接收发布许可证202和对使用许可证203(下文描述)的请求时,可确保RMS服务器215是创建发布许可证202的那一个。
如上所述,RMS服务器可储存内容密钥或在发布许可证202中包括内容密钥的已加密版本。如果RMS服务器储存内容密钥,则如后文所描述的,当签发使用许可证时,RMS服务器使用内容密钥标识符在其数据库中查找内容密钥。或者,发布许可证202包括例如向RMS服务器215的公钥加密的内容密钥。RMS服务器稍后可在依照下文描述的实施例签发使用许可证时解密该内容密钥。在任一情况下,当在各种实施例中使用术语内容密钥标识符时,该术语应当广泛地被解释为包括内容密钥、内容密钥的已加密版本或用于获取内容密钥的任何其它手段的标识符。
之后,发送者210接收发行许可证202,它现在可附加到受保护内容220以发送给主体240。这通常是一次操作,通常在发送者第一次试图发送受保护内容时完成。图2(b)示出了受保护消息220和发行许可证202如何可从发送者210发送到主体240的高级综述。发送者210可简单地将发行许可证202附加到受保护消息220,并将其转发到消息服务器225。发送者的消息服务器225然后找出适当的主体消息服务器230,并将受保护消息220和发行许可证202转发到主体消息服务器230。当主体240登录到其消息服务器230时,主体消息服务器230将受保护的消息220和发行许可证202发送到主体240。
主体240可将消息识别为受保护的,并试图从RMS服务器215获取使用许可证204。图2(c)示出了当主体240能够访问RMS服务器215时主体240可经受以获取使用许可证204的过程。首先,主体240可向RMS服务器215作出对使用许可证203的请求。通常,对使用许可证的请求将包括发行许可证202和主体(240)的RAC,RMS 215使用该RAC来验证主体240是授权用户。
一旦RMS服务器215验证了发行许可证202的真实性以及主体240的身份,它可向主体240发送包括内容密钥235的使用许可证204。当然,如上所述,内容密钥可储存在RMS服务器215的数据库中,或者它可以加密的形式包括在发行许可证中。当在使用许可证240中发送时,内容密钥235应当被加密成主体的私钥(未示出),它先前在注册过程中获取并储存在锁箱245中。因此,当主体240接收包含已加密内容密钥235的使用许可证204时,它可向锁箱245提供使用许可证204。例如,使用经解密内容的应用程序(未示出)可提供向锁箱245提供已加密内容和使用许可证204。为确保应用程序是可信的来处理经解密的内容,应用程序必须被证明,且必须向锁箱呈现这一证书以及使用许可证204。锁箱245然后可使用注册过程中创建的私钥来解密内容密钥235,并随后使用内容密钥235来解密受保护的内容220。锁箱245然后可将经解密的内容以及发行许可证202和/或使用许可证204中定义的限制提供给适当的应用程序,以在受保护内容上施加适当的限制。
然而,当主体无法访问RMS服务器时示例实施例也提供预许可过程。以下描述连同图3(a)-(d)示出了主体如何可在无法访问RMS服务器的情况下接收受保护内容以及使用许可证。
参考图3(a),类似于上文对于图2(a)所描述的发行过程,在权限管理服务中登记且希望发送受保护内容的发送者310可向RMS服务器315请求发行许可证301。如上所述,对发行许可证301的请求可包括权限表达式、内容密钥和内容散列。权限表达式定义了谁被授权来接收受保护的内容以及它们可以对该内容做什么。例如,权限表达式可限制主体在预许可、打印、复制、转发、共享、委托或保存内容时对内容的操作权限。此外,权限表达式可包括过期特征,它限制了例如上述权限可用的次数或时间段。
如上所述,对发行许可证301的请求应当包括内容密钥305。内容密钥305可以是由发送者310创建的对称密钥。如下文所讨论的,该内容密钥305用于允许主体335访问受保护内容320。
除权限表达式和内容密钥之外,对发布许可证301的请求也可包括内容散列。如后文将更详细描述的,散列可由锁箱dll 340用于确保内容未被篡改或破坏。
RMS服务器315接收对发行许可证301的请求,并可取出对发行许可证301的请求中提供的信息的至少一部分并签署它,以创建发行许可证302。如上所述,所提供的信息可以是被签署和加密来产生发行许可证302的权限表达式、内容密钥和/或内容散列的任一组合。如上所述,示例实施例提供在接收对发行许可证301的请求之后,RMS服务器可将内容密钥储存在数据库中,或在发行许可证302中包括内容密钥的已加密版本。发行许可证302然后可被提供给发送者310,并且发送者310现在可向主体335提供受保护内容320和发行许可证302。
图3(b)简单地示出了受保护内容320和发行许可证302通过发送者消息服务器325从发送者310发送到主体消息服务器330。依照示例实施例,主体335并不需要直接向RMS服务器315请求使用许可证,而是如下文所描述的,主体消息服务器330可代表主体获取使用许可证304。
参考图3(c),主体消息服务器330在接收到受保护内容320之后作出对使用许可证303的请求。更具体地,主体的消息服务器330将接收到的受保护内容320识别为经受权限管理。因此,主体消息服务器330作出对使用许可证303的请求,并将发行许可证302发送给RMS服务器315。
除发行许可证之外,RMS服务器也可要求权限账户证书(RAC),它如先前所讨论的可指示使用许可证304的请求者应当是可信的。尽管典型的权限管理服务要求在对使用许可证303的请求中使用主体335的RAC,这一附加安全特征可能不是需要的。特别地,由于使用许可证内的内容密钥是由RMS315加密成储存在主体锁箱340中的密钥,对于向错误的主体发送使用许可证304有极少的风险(如果有的话)。换言之,仅特定的主体具有适当的密钥来解锁内容密钥以解密受保护内容。因此,如果另一主体接收到具有加密成主体335的私钥的内容密钥305的使用许可证304,则它们无法解密内容密钥305并且访问受保护内容320。
尽管RMS服务器315可能不需要主体335的RAC,然而示例实施例提供要求主体消息服务器335使用诸如基本、Windows NTLM、Kerberos、X509证书、护照等常规协议的任一种来向RMS服务器认证其自身。或者,消息服务器330可通过使用其RAC和/或用与RAC相关联的私钥签署请求(或其部分),经由自定义证书认证过程来认证。认证过程至少确保了主体消息服务器330是可代表主体335获取使用许可证304的授权机构。
一旦RMS服务器315验证了发行许可证302(并将主体消息服务器330识别为代表主体335接收使用证书304的授权机构),它可向消息服务器330发送使用许可证304。该使用许可证304包括内容密钥305,它如上所述先前已储存在RMS315的数据库中,或被加密并包括在发送给RMS服务器的发行许可证302中。如上所述,当在使用许可证304中提供时,内容密钥304被加密成储存在锁箱340中的主体335的私钥(未示出)。
主体消息服务器330然后储存具有已加密内容密钥305和受保护消息320的使用许可证304,以供主体335将来检索。示例实施例提供包含已加密内容密钥305的使用许可证304可与受保护消息320分离地储存。因此,如果受保护内容具有多个接收者,则仅一个受保护消息320需要存储,由此节省了宝贵的存储器。
其它示例实施例提供主体消息服务器330调节权限管理服务器315上的负载的能力。具体地,如果受保护消息320打算供多个主体使用,则主体消息服务器330可能成批地处理RMS服务器可容纳的对使用许可证304的请求。尽管邮件可以被稍微延迟,然而RMS服务器将不会被淹没和崩溃,或者由于服务器被淹没或被请求过载而对主体拒绝许可证。
如图3(d)所示,主体335可从主体消息服务器330获取受保护内容320和具有已加密内容密钥305的使用许可证,而无需联系RMS服务器315。如在以前,主体现在可将使用许可证连同受保护内容密钥仪器传递给锁箱dll 340,后者然后解密内容密钥305并随后解密内容320。内容然后可被传递到适当的应用程序以供查看或依照权限表达式来使用。
示例实施例还提供锁箱340可对照实际内容核查所接收的散列以验证内容未被改变或破坏。如果内容被损害,则该内容应当被丢弃。
在其它示例实施例中,使用许可证可对每一用户或每一机器签发。当对每一用户签发时,单个使用许可证可被复制并由在多个机器上注册的用户使用。在此实施例中,在上文相对于图1(a)和1(b)描述的登记过程中,用户应当从每一机器向RMS服务器注册。所接收到的用于加密和解密内容密钥的解密密钥对为每一机器创建的每一锁箱是相同的。因此,用户可将使用许可证复制到它们所注册的任何机器上,并使用该机器上的锁箱来查看或使用受保护内容。
其它实施例允许使用许可证对每一机器签发,即,用于加密包括在使用许可证中的内容密钥的私钥是机器专用的;因此,用户能够访问的每一机器必须具有其自己的使用许可证。在此实施例中,主体消息服务器330可获取或接收用于主体335具有的多个机器的多个使用许可证304。例如,主体消息服务器330可认识到主体335具有多个机器,并且因此获取用于主体335的机器的每一个的多个使用许可证304。或者,RMS服务器315可认识到主体335具有多个机器,它们所有都需要其自己的特定使用许可证,并因此向主体消息服务器330提供适当的使用许可证304。
本发明也可按照包括功能步骤和/或非功能动作的方法来描述。以下是可在实施本发明时执行的动作和步骤的描述。通常,功能步骤按照所实现的结果来描述本发明,而非功能动作描述了用于实现特定结果的更具体的行动。尽管可以安特定的顺序描述或要求保护功能步骤或非功能动作,然而本发明不限于任何特定的顺序或动作和/或步骤的组合。
图4示出了用于预许可经受权限管理的内容以当主体无法访问权限管理服务器时允许主体访问内容的示例步骤和动作。用于确定(410)消息经受权限管理的步骤包括由消息服务器接收(405)在对消息的访问是通过权限管理服务器来控制的这一点上而经受权限管理的消息的动作。仅消息的一部分需要通过权限管理服务器来控制,以使接收到的消息被确定为经受权限管理。经受权限管理的消息的部分可以被加密,并且也可以是受保护的内容、受保护的文档、受保护的日历项目或受保护的会议请求。
用于使用(420)接收到的发行许可证来向权限管理服务器标识消息的步骤可包括由消息服务器接收(415)发行许可证的行动。发行许可证可包括对若干主体的引用,使得当消息服务器请求使用许可证时,权限管理服务器可确认该主体预期是能够访问该消息的。发行许可证还可包括限制允许主体在消息上执行的操作类型的权限表达式。例如,权限表达式可限制主体在重许可、打印、复制、转发、共享、委托和保存时的操作。或者,权限表达式可以是默认值,例如,只读,它可由管理员对每一企业不同地配置。权限表达式还可包括过期特征,它限制权限表达式可用的次数和时间段。另外,发行许可证可包括用于验证消息未被改变的散列,以及用于验证发行许可证有效的权限管理服务器的签署。
用于获取(430)使用许可证的步骤可包括消息服务器代表主体请求(425)使用许可证并接收(427)使用许可证的动作。作出对使用许可证的请求,以允许主体访问消息,并且该请求包括发行许可证,以向权限管理服务器标识消息。接收使用许可证,使得主体可访问消息而无需向权限管理服务器请求使用许可证。通过权限管理服务器控制的消息的一部分可被加密,并且使用许可证可包括可用于解密所加密的消息部分的内容密钥。请求(425)使用许可证的动作还包括向权限管理服务器发送权限账户证书,以验证消息服务器具有代表主体获取使用许可证的授权。此外,消息服务器可代表主体请求多个使用许可证,使得主体可访问多个机器上的消息。另外,使用许可证可与消息分离地储存在消息服务器上。
本发明的范围内的实施例也包括携带或具有计算机可执行指令或在其上储存数据结构的计算机可读介质。这类计算机可读介质可以是可由通用或专用计算机访问的任一可用介质。作为示例而非局限,这类计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或可用来以计算机可执行指令或数据结构的形式携带或储存所期望的的程序代码手段并可由通用或专用计算机访问的任一其它介质。当通过网络或另一通信连接(或者硬布线、或者无线、或硬布线和无线的组合)向计算机传输或提供信息时,计算机适当地将该连接视为计算机可读介质。由此,任一这类连接适当地称为计算机可读介质。上述的组合也应当包括在计算机可读介质的范围内。计算机可执行指令包括,如,促使通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。
图5及以下讨论旨在提供对适于在其中实现本发明的计算环境的简要概括描述。尽管并非所需,但本发明将在诸如由网络环境中的计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。计算机可执行指令、相关的数据结构以及程序模块表示了用于执行此处所揭示的方法的步骤的程序代码手段的示例。这一可执行指令或相关数据结构的特定顺序表示了用于实现在这类步骤中所描述的功能的相应行动的示例。
本领域的技术人员可以理解,本发明可以在具有多种类型计算机系统配置的网络计算环境中实践,包括个人计算机、手持式设备、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机等等。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接(或者通过硬布线链路、或者通过无线链路、或通过硬布线或无线链路的组合)的本地和远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
参考图5,用于实现本发明的示例系统包括常规计算机520形式的通用计算装置,包括处理单元521、系统存储器522以及将包括系统存储器522的各类系统组件耦合至处理单元521的系统总线523。系统总线523可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。系统存储器包括只读存储器(ROM)524和随机存取存储器(RAM)525。基本输入/输出系统(BIOS)526,包含如在启动时协助在计算机520内的元件之间传输信息的基本例程,可储存在ROM 524中。
计算机520也可包括用于对磁硬盘539进行读写的磁硬盘驱动器527、用于对可移动磁盘529进行读写的磁盘驱动器528以及用于对可移动光盘531如CD-ROM或其它光介质进行读写的光盘驱动器530。光盘驱动器530是光介质记录器的一个示例。磁硬盘驱动器527、磁盘驱动器528以及光盘驱动器530分别通过硬盘驱动器接口532、磁盘驱动器接口533和光驱接口534连接至系统总线523。驱动器及其相关的计算机可读介质为计算机520提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管此处描述的示例性环境采用了磁硬盘539、可移动磁盘529以及可移动光盘531,然而也可以使用用于储存数据的其它类型的计算机可读介质,包括盒式磁带、闪存卡、数字多功能盘、Bernoulli盒式磁盘、RAM、ROM等等。
包括一个或多个程序模块的程序代码手段可储存在硬盘539、磁盘529、光盘531、ROM 524或RAM 525中,包括操作系统535、一个或多个应用程序536、其它程序模块537以及程序数据538。主体可以通过键盘540、定位设备542或其它输入设备(未示出),如麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等向计算机520输入命令和信息。这些和其它输入设备通常通过耦合至系统总线523的串行端口接口546连接到处理单元521。可选地,输入设备也可以通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。监视器547或另一显示设备也通过接口,如视频适配器548连接到系统总线523。除监视器之外,个人计算机通常包括其它外围输出设备(未示出),如扬声器和打印机。
计算机520可以在使用到一个或多个远程计算机,如远程计算机549a和549b的逻辑连接的网络化环境中操作。远程计算机549a和549b的每一个可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,并通常包括许多或所有相对于计算机520所描述的元件,尽管在图5中仅示出了存储器存储设备550a和550b及其关联的应用程序536a和536b。图5描述的逻辑连接包括局域网(LAN)551和广域网(WAN)552,这里示出作为示例而非局限。这类网络环境常见于办公室范围或企业范围计算机网络、内联网以及因特网。
因此,本发明可以在通过计算机网络连接到光介质记录器的计算机中实施。在某些新系统中,系统总线523被封装并通过诸如TCP/IP网络等新传输来发送。例如,ISCSI(因特网SCSI或因特网小型计算机系统接口)是基于TCP/IP的协议的一种相当公知的实现,用于在基于IP的存储设备、主机和主体之间建立和管理连接。
当在LAN网络环境中使用时,计算机520通过网络接口或适配器553连接至局域网551。当在WAN网络环境中使用时,计算机520可包括调制解调器554、无线链路或用于通过广域网552,如因特网建立通信的其它装置。调制解调器554可以是内置或外置的,通过串行端口接口546连接至系统总线523。在网络化环境中,相对于计算机520所描述的程序模块或其部分可储存在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用通过广域网552建立通信的其它装置。
本发明可以用其它具体形式来实施而不脱离其精神或本质特征。所描述的实施例在所有方面都被认为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而非上文的描述来指示。落入权利要求书的等效技术方案的意义和范围之内的所有改变都被包含在其范围之内。