本发明专利申请是国际申请号为PCT/US2005/030490,国际申请日为2005年8月26日,进入中国国家阶段申请号为2000580049553.5,名称为“受保护计算环境”的发明专利申请的分案申请。
具体实施方式
以下结合附图提供的详细描述旨在作为现有示例的描述,且并非旨在表示可构建或利用现有示例的唯一形式。该描述结合示例阐述了这些示例的功能以及用于构建和操作这些示例的一系列步骤。然而,不同的示例可实现相同或等效的功能和序列。
尽管现有示例在本文中被描述和说明为在计算机操作***中实现,但所述***被描述为一示例而非限制。如本领域技术人员所理解的,现有示例适于在各种不同类型的计算机***中应用。
介绍
图2是示出处理媒体内容106并利用倾向于对攻击有抵抗力的受保护环境203的受信任应用程序202的框图。术语“受信任应用程序”在本文中使用时可被定义为使用在受保护环境中运行的进程使它们倾向于对攻击205有抵抗力、并限制对正在处理的任何媒体内容106或其它数据的未经授权访问的一种应用程序。因而,在受保护环境中运行的应用程序的组件或元件通常被视为“受信任”,因为它们倾向于限制未经授权访问并倾向于对攻击有抵抗力。这样的应用程序202可被视为是受信任应用程序本身,或者它可使用另一受信任应用程序来保护其进程和/或数据的一部分。
例如,受信任媒体播放器202可被设计成播放媒体内容106,该媒体内容106通常仅在获得许可后才能使用以使该媒体内容106不能以未经授权方式访问。这种受信任应用程序202只在计算环境200可提供所需安全级别时(诸如通过提供对攻击205有抵抗力的受保护环境203)才可操作和/或处理媒体内容106。
当在本文中使用时,术语“进程”可被定义为驻留于内核空间、用户空间和/或操作***和/或计算环境的任一其它空间和/或在其中运行的程序(包括可执行代码、机器指令、变量、数据、状态信息等)的一个实例。
数字权限管理***204等可与受保护环境204一起使用。使用数字权限管理***204仅作为一个示例提供,并且不可与受保护环境或安全计算环境一起使用。通常数字权限管理***使用倾向于制作昂贵并且会负面地影响计算性能的防篡改软件(“TRS”)。使用受信任应用程序202可使提供增强保护所需的TRS功能的量最小化。
本领域技术人员所公知的各种机制可替换、附加或连同典型的数字权限管理***使用。这些机制可包括但不限于加密/解密、密钥交换、口令、许可证等。因而,数字权限管理在本文中使用时可以是像解密经加密媒体、使用口令来访问数据、或其它防篡改机制一样简单的机制。执行这些任务的机制可以非常简单或完全包含在受信任应用程序202内,或可经由与不同于受信任应用程序202的复杂***通信的接口来访问。
图3是示出可包括在受保护环境203中的受信任应用程序202的示例性组件的框图。受信任应用程序202通常将受保护环境203用于其子组件302-304的至少一部分。受信任应用程序的其它组件301不可使用受保护环境。参与处理媒体内容或数据、可调用免遭攻击或未经授权访问的增强保护级别的组件302-304可在受保护环境203内运行。受保护环境203可由单个的受信任应用程序202、或可能地由多个受信任应用程序使用。可替换地,受信任应用程序202可使用多个受保护环境。受信任应用程序202还可耦合于和/或使用数字权限管理***204。
在所示示例中,源302和宿303被示为在受保护环境203中运行的媒体管线304的一部分。受保护环境203倾向于确保:一旦已接收到并解密了受保护和/或加密内容309,受信任应用程序202及其组件就防止对内容309的未经授权访问。
数字权限管理204可进一步提供受信任应用程序202和内容309的保护方法。通过许可证308、设备证书311和其它安全机制的***,内容提供者通常能确信加密内容309已被传送给适当的获授权设备,并且该内容309被按计划地使用。
图4是示出用于从服务供应商407处将数字媒体内容410下载到使用受保护环境203的一示例性受信任应用程序202的***的框图。在所示示例中,受信任应用程序202被示为在两个地方401、403使用。该受信任应用程序202可在CE设备401或PC 403中使用。数字媒体410可经由服务提供者407和因特网405下载以供受信任应用程序202使用。可替换地,数字媒体可经由诸如网络、CD或DVD盘、或其它存储媒体的其它机制而变得对受信任应用程序可用。此外,数字媒体410可以加密形式309提供,从而需要取数字权限管理***204形式的解密密钥、许可证、证书等***。提供给受信任应用程序的数据或媒体内容410可被或可不被保护,即加密等。
在一示例中,受信任应用程序202可利用数字权限管理(“DRM”)***204等以及受保护环境203。在该情形中,受信任应用程序202通常被设计成通过将内容的使用限制于由内容提供者经由策略授权的使用来承认并遵从内容的使用策略。实现这个可涉及执行通常询问内容证书、随后作出有关是否对一条内容采取所请求动作的判定的代码。该功能可至少部分地由数字权限管理***204提供。数字权限管理***的一个示例在1999年4月12日提交的美国专利申请No.09/290,363、各自在2002年6月28日提交的美国专利申请No.10/185,527、10/185,278和10/185,511中提供,这些申请通过引用全部结合于此。
构建可在CE设备401或PC 403中使用的受信任应用程序202可包括确保解密和处理内容309的受信任应用程序202因没有受到恶意攻击的危险而“安全”。因而,受保护环境203通常指不易于受攻击的环境。
如图所示,受信任应用程序202在消费电器设备401中运行,该消费电器设备401可与也提供一受信任应用程序的PC 403周期性地同步。PC 403又耦合(404)到因特网405。因特网连接允许数字媒体410由服务提供者407提供。该服务提供者407可经由因特网405将许可证和经加密媒体406传送给受信任应用程序202。一旦经加密媒体被递送和解密,它就易于受到各种形式的攻击。
受保护环境和可能的攻击
受保护计算环境倾向于提供限制黑客获得对内容的未经授权访问的环境。黑客可包括装作是***管理员的黑客。***管理员通常具有对实质上在计算机上执行的所有进程的全面控制,但这种访问可能并不合乎需要。例如,如果***用户已被授予使用一媒体文件的许可证,则不同于用户的***管理员能访问该媒体文件应当是不可接受的。受保护环境倾向于有助于创建其中解密和处理内容的代码可在不给予黑客对经解密内容的访问权限的情况下运行的进程。受保护环境也可限制对诸如管理员的特权用户、和/或否则可获得对受保护内容的未经授权访问的任何其它用户的未经授权访问。保护可包括保护典型的用户模式进程(图1,103)和内核模式进程(图1,104)以及它们所处理的任何数据。
在内核中运行的进程易于受到攻击。例如,在典型操作***的内核中,创建了可允许管理员不受限制地访问的对象,包括进程。因而,通常具有全权访问特权的管理员实质上可访问所有进程。
受保护内容可包括指示内容的获授权使用的策略或相似信息。这种策略可经由DRM***或其它安全机制实施。通常,对受保护内容的访问通过可实施策略的DRM***或其它机制授予。然而,具有***完全访问权限的***管理员可改变DRM***的状态或机制以无视内容策略。
受保护环境倾向于提供一受保护空间,该受保护空间限制对正在处理的媒体内容的未获授权访问(甚至对诸如管理员的高特权用户也是如此)。当受保护环境连同数字权限管理***等一起使用时可创建受信任应用程序,在该受信任应用程序中内容提供者可感到提供了使数字媒体免遭未经授权访问的充分安全性,还可使内容策略以及可与该媒体内容相关联的任何其它数据、密钥或保护机制一起免遭篡改。
攻击矢量
当前的操作***(“OS”)体系结构通常呈现可危害媒体应用程序的数个可能攻击矢量和正在处理的任何数字媒体内容。出于本示例的目的,可在OS中发生的攻击被分成两类攻击,它们是内核模式攻击和用户模式攻击。
第一类攻击是内核模式攻击。内核模式通常被视为是基于操作***受信任的。操作***核心以及大多数***和***驱动器可用内核模式运行。通常在内核中运行的任何一条代码易于被在内核中运行的任意另一条代码侵入,而对于用户模式而言则并非这种情形。此外,以内核模式运行的代码通常对基本上所有用户模式进程具有访问权。CPU也可提供对各种代码类型提供特权级别。内核模式代码通常由这样的CPU分配以最高级别的特权,通常给予其对***的全权访问。
第二类攻击是用户模式攻击。以用户模式运行的代码可取决于它分配到的特权级别而可以或不可以被***视为受信任代码。该特权级别可根据所运行的用户环境或帐户来确定。在管理员帐户环境中运行的用户模式代码可全权访问在该***上运行的其它代码。此外,以用户模式运行的代码可被分割以防止一个用户访问另一个用户的进程。
这些攻击可被进一步地分解成特定攻击矢量。受保护环境通常被设计成免遭未经授权访问,否则可通过这些攻击矢量的一个或多个获得这些未经授权访问。受保护环境可免遭攻击矢量破坏而得到保护,这些矢量可包括:进程创建、恶意用户模式应用、将恶意代码载入一进程、恶意内核代码、无效信任授权、以及外部攻击矢量。
进程创建是一可能的攻击矢量。操作***通常包括允许父进程创建子进程的“创建进程”机制。恶意父进程可通过更改创建进程代码或通过更改它所创建的数据来对正在创建的子进程作出未经授权的更改。这可导致危害可由恶意父进程创建的子进程处理的数字媒体。
恶意用户模式应用程序是一可能的攻击矢量。操作***通常包括管理员级特权。正在运行的具有管理员特权的进程可对许多操作***机制以及几乎在计算机上运行的所有进程有不受限制的访问权。因而,在例如Windows中,正在运行的具有管理员特权的恶意用户模式应用程序可获得对许多在计算机上运行的其它进程的访问权,并由此危害数字媒体。类似地,在任何用户环境中运行的进程可被在相同环境中运行的任何恶意进程攻击。
将恶意代码载入一安全进程是一可能的攻击矢量。将恶意代码附加或添加到一进程中是有可能的。这种受危害进程不能得到信任,并可获得对该经更改进程所处理的任何媒体内容或其它数据的未经授权访问。
恶意内核模式代码是一可能的攻击矢量。操作***通常包括一“***级别”的特权。例如,在Windows中,以内核模式运行的所有代码通常作为***运行,并且因此可具有最大特权。通常的结果是以内核模式运行的驱动器可具有攻击例如任何用户模式应用程序的最大机会。这种恶意内核模式代码的攻击可危害数字媒体。
无效信任授权机构(TA)是一可能的攻击矢量。TA可参与媒体许可证的验证,且可随后“开启”数字媒体的内容。TA可专用于一媒体类型或格式,并通过媒体提供者或其合伙人实现。这样,TA可***和/或可被提供为动态链接库(“DLL”)等。DLL可通过包括恶意代码的可执行代码载入。为了使TA确保该媒体被准确使用,它需要确保它在其中运行的进程是安全的。否则数字媒体会受到危害。
外部攻击是另一可能的攻击矢量。存在不需要恶意代码在***中运行来攻击它的一组攻击。例如,将调试程序附加于一进程、或将一内核调试程序附加于机器、在桌面上的二进制文件中寻找敏感数据等都是寻找和危害数字媒体或可访问数字媒体的进程的可能机制。
图5是示出可由以未经授权方式尝试访问媒体内容和其它通常呈现在计算环境100中的数据500的用户或机制利用的示例性攻击矢量507-510的框图。受保护环境可阻碍这些攻击矢量使得对受信任应用程序和它们处理的数据的未经授权访问受到限制,并提供对攻击的抵抗力。这些攻击可由可包括可执行代码的***或机制的用户发起。媒体应用程序105在示图的中央示出,且攻击矢量507-510倾向于集中在访问由应用程序105存储和/或处理的敏感数据500。
一可能攻击矢量509可经由恶意用户模式应用程序502启动。在示例性操作***架构中,父进程和具有管理员特权的任一进程通常对诸如正在处理媒体内容的一进程的其它进程以及它们所处理的数据具有不受限制的访问权。这种对媒体内容的访问是未经授权的。因而,受保护环境可确保受信任应用程序和它所处理的媒体内容对其它用户模式应用程序的攻击有抵抗力。
一可能攻击矢量508是恶意代码503在进程501中的载入。具有对来自外部的攻击有抵抗力的安全进程通常仅与在内部运行的形成该进程的代码一样安全。假设DLL和其它代码通常被载入进程以供执行,可在受保护环境中提供一种机制,该机制可确保在将代码载入进程之前相信所载入代码可在该进程内运行。
一可能攻击矢量510是通过恶意内核模式代码504。以内核模式104运行的代码通常具有最大特权。结果可以是以内核模式运行的驱动器可具有多个攻击其它应用程序的机会。例如,驱动器可能能够直接在另一进程中访问存储器。其结果是驱动器一旦运行就可访问包含经解密的“加密媒体内容”(图3,309)的进程存储器。通过确保在内核中运行的代码是如本示例提供的非恶意代码,可防止内核模式攻击。
一可能攻击矢量507是通过对***100的外部攻击506。该群体表示通常不需要恶意代码在***100上运行的那组攻击。例如,将一调试程序附加于该***上的应用程序和/或进程、在机器中搜索敏感数据等。可创建受保护环境来抵抗这些类型的攻击。
创建和维护受保护环境
图6是示出用于创建和维护倾向于限制对媒体内容和其它数据的未经授权访问的受保护环境的过程600的流程图。当计算机***启动(602)并且载入操作***的内核,且内核安全标记被设置(604)成初始值时,序列600开始。该过程在通常创建受保护环境且将应用程序载入其中(606)的时间内继续。该过程包括通过受保护环境的周期性检查(608),以寻求确保***在需要安全进程的时间保持安全。
在本文中使用时,术语“内核”被定义为用于计算环境、***或设备的操作***的中央模块。该内核模块可以计算机可执行指令和/或电子逻辑电路的形式来实现。通常,内核负责计算环境的存储器管理、进程和任务管理、以及存储介质管理。术语“内核组件”在此使用时被定义为构成内核一部分的基本控制机制、模块、计算机可执行指令和/或电子逻辑电路。例如,内核组件可以是负责载入其它内核组件以便于构建一全面运行内核的“载入器”。
现在归纳创建和维护受保护环境的过程:
1.框602表示计算机***的启动。这通常以常称为引导进程并包括从盘或其它某存储介质载入操作***开始。
2.通常引导进程期间的起始操作之一是载入内核及其组件。本示例提供内核组件的验证,并且如果都被成功验证为安全,则将指示内核的标记设置为安全。这在框604中示出。
3.在计算机***被视为全面运行之后,用户可启动可能需要一受保护环境的诸如受信任媒体播放器的应用程序。本示例向安全内核提供在受保护环境内运行的应用程序,如框606所示。
4.一旦受保护环境已经被创建并且应用程序的一个或多个进程已被载入其中并正在运行,受信任环境就可周期性地检查内核安全标记以确保该内核保持安全,如框608所示。即,从受信任应用程序开始运行的时间点看,可周期性地作出检查以确定是否载入了任何未经授权的内核组件,包括在载入新的内核组件的任何时候。这些未经授权的内核组件可攻击受信任应用程序或它可能正在处理的数据。因此,如果载入任一这些组件,则可正确地设置内核安全标记。
载入和确认安全内核
图7是示出用于创建一示例性安全计算环境200的示例性内核组件720-730和其它组件710-714的框图。该示图示出包含通常存储在盘等上的数个组件710-730,其中的几个组件用来在计算机启动时构成操作***的内核。箭头604指示将内核组件载入存储器以形成***的操作内核的过程。所载入的内核750被视为包含其各个组件751-762以及指示内核对受保护环境而言是否被视为安全的内核安全标记790。该内核安全标记790被描述为“标记”并不意味着是限制性的;它可被实现为布尔变量、或更复杂的数据结构或机制。安全计算环境200和/或内核750的各个组件或元件是可更新和/或可个性化的。
内核组件720-730通常是“经签名的”并可包括证书数据738,证书数据738可允许内核验证这些组件是它们所声称的组件,并且它们未经修改和/或不是恶意的。签名块和/或证书数据738可在每个内核组件720-730和/或每个所载入的内核组件760、762中存在。签名和/或证书数据738对每个组件是唯一的。签名和/或证书数据738可在创建和维护受保护环境时使用,如下所述。通常组件由其供应商以安全表示该组件之源和/或指示它是否已被篡改的方式“签名”。签名可被实现为组件报头的散列(有时称为“报头图像散列”),或通过使用其它技术来实现。一常规证书或证书链也可与一组件包括在一起,它们可被用来确定是否可相信该组件。签名和/或证书数据738通常在分发公用之前被添加到一组件。本领域技术人员将熟悉这些技术及其用途。
当典型的计算***被启动或“引导”时,操作***的载入过程或“内核载入器”751通常可从盘等将内核组件载入到***存储器的一部分中以构成操作***的内核。一旦所有内核组件被载入并运行,则计算机和操作***被视为“经引导的”并准备好正常操作。
计算环境中的内核组件#1720到内核组件#n730、以及取消列表714、内核转储标记712和调试程序710以及调试凭证711可被存储在盘或其它存储介质上。箭头604指示从其存储位置读取各个组件714-730并将其载入***存储器以形成功能操作***内核750的内核载入进程。内核转储标记712被描述为“标记”并不意味着是限制性的;它可被实现为布尔变量、或更复杂的数据结构或机制。
内核载入器751以及内核的受保护环境(“PE”)管理部分752、取消列表754、以及两个内核组件720和722被示为载入到内核中,后者为框760和762,以及指示用于要被载入到内核中的附加内核组件的空间的指示-764和770。最后,内核750包括可用来指示内核750当前是否被视为安全的内核安全标记790。该示图被作为一个示例提供,且并非是限制性或完整的。为清晰起见,内核载入器751、内核的PE管理部分752和/或内核的其它组件被示为不同的内核组件,但实际上它们可与内核的其它部分相区分,或可不与它们相区分。
包括在计算环境200内的可以是取消列表714,它可结合与内核组件760和762相关联的签名和证书数据738一起使用。该对象714可保留到列表714的创建日期为止不再被视为有效的签名、证书和/或证书链列表。取消列表714被示为作为对象754载入到内核中。这些列表被保存是因为例如组件760和762的经有效签名和证明的组件后来会被发现具有某问题。该***可使用这样的列表754来在载入内核组件720-730时检查它们,这些组件720-730可被正确签名和/或具有受信任的证书数据738但随后可被认为是不可信任的。这种取消列表754通常将包括版本信息755,从而它可更容易地按需标识、管理和更新。
***的可影响内核安全性的另一组件是调试程序710。调试程序通常可不被视为内核的一部分,但可出现在计算环境200中。包括那些称为内核调试程序、***分析程序等的调试程序可具有对***和在***上运行的进程以及任何数据的宽泛访问权。调试程序710可能能够访问计算环境200中的任何数据,包括不应以除获授权之外的方式访问的媒体内容。另一方面,调试通常是开发新功能的一部分,并且在受保护环境内调试旨在处理受保护媒体内容的代码通常是可能的。调试程序710因而可包括指示调试程序710在***上的出现获得授权的调试凭证711。由此对调试程序710以及任何附随凭证711出现的检测可以是创建和维护受保护环境(图6,600)的一部分。
计算环境200可包括内核转储标记712。该标记712可被用来指示在灾难性***故障的情形中有多少内核存储器可用于检查。或者,该标记或相似标记可指示***的全存储器转储。这样的内核和/或存储器转储可用于在诸如故障之后的事后调试。如果这种标记712指示基本上所有的存储器可用于对转储的检查,则内核750可被视为是不安全的,因为黑客可运行揭示***存储器中的受保护介质、然后促使可导致可用于检查的存储器包括含有所揭示媒体内容的灾难性故障状况的应用程序。由此,内核转储标记712可用于创建和维护受保护环境(图6,600)。
图8和图9是示出用于载入内核组件以创建一示例性安全计算环境的一示例性过程604的流程图。该过程604在内核载入器已启动且内核的PE管理部分已被载入并运行之后开始。未在这些附图中示出的是,内核的PE管理部分可验证内核载入器本身和/或先前已载入的任何其它内核元件。验证可被定义为确定一给定组件是否被视为安全和可信任的,如本过程604的部分2所示。
如以下相关于内核组件使用的术语“被授权安全使用”具有以下具体含义。包含未被授权安全使用的任何组件的内核不提供受保护环境可在其内运行的安全计算环境。相反情形也可能不为真,因为它取决于诸如攻击矢量的其它因素。
1.框801示出载入过程604在内核的PE管理部分已被载入并运行之后开始。在此之前载入内核中的任何组件可被如上所述地验证。
2.框802示出内核安全标记在开始时被设置为TRUE(真),除非在内核的PE管理部分之前载入的任何组件或该组件本身被发现是不安全的,此时内核安全标记可被设置成FALSE(假)。实际上TRUE或FALSE的指示可采取各种形式;在此使用TRUE或FALSE仅仅是一个示例并且并不表示是限制性的。或者,内核安全标记开始时可被设置成FALSE,而在后来当发现内核安全时可被设置成TRUE。
3.框804指示对调试程序在计算环境中的出现的检查。或者调试程序可远程地驻留并可经由网络或与计算环境中一进程的其它通信介质附加于计算环境。如果未检测到调试程序,则载入过程604在框810继续。否则它在框809继续。未在示图中示出的是,该检查可周期性地执行且内核安全标记的状态可被相应地更新。
4.如果检测到一调试程序,则框806示出对调试凭证的检查,该调试凭证可指示在出现受保护环境时调试可在***上获得授权。如果未出现这样的凭证,则内核安全标记可被设置成FALSE,如框808中所示。否则载入过程604在框810继续。
5.框810示出内核转储标记的检查。如果该标记指示全内核存储器转储等是可能的,则内核安全标记可被设置成FALSE,如框808中所示。否则载入过程604在框812继续。未在示图中示出的是,该检查可周期性地执行且内核安全标记的状态可被相应地更新。
6.框812示出将取消列表载入内核。在取消列表可被用来检查调试凭证或其它先前载入的凭证、签名、证书数据等的情形中,该步骤可比所示序列更早地进行(在载入要检查的凭证等之前)。未在示图中示出的是,一旦载入该组件,就可检查任一和全部先前载入的内核组件,以查看是否已按取消列表取消了其签名和/或证书数据。如果已取消了任一个,则内核安全标记可被设置成FALSE,且载入进程604在框814继续。注意,取消列表可以或不可以被载入到内核中以用于创建和维护受保护环境。
7.框814示出到该示图的第二部分的转换,该第二部分在图9中示出并在框901继续。
8.框902示出对要载入的任何附加内核组件的检查。如果所有组件已被载入,则载入过程604通常是完整的,且内核安全标记保持它上次所设置的或为TRUE或为FALSE的任何状态。如果有其它内核组件要载入,则载入过程604在框906继续。
9.框906示出对要载入的下一组件的有效签名的检查。如果该签名无效,则内核安全标记可被设置成FALSE,如框918所示。否则载入过程604在框908继续。如果没有组件签名可用,则该组件可被视为不安全且内核安全标记可被设置成FALSE,如框918所示。签名有效性可通过检查有效签名列表的匹配、和/或通过检查签名者的身份是否是一受信任实体来确定。如安全技术领域中的技术人员所熟悉的,也可使用其它方法来验证组件签名。
10.框908示出对组件的证书数据的检查。如果证书数据无效则内核安全标记可被设置为FALSE,如框918所示。否则载入过程604在框910继续。如果没有组件证书数据可用,则该组件可被视为不安全且内核安全标记可被设置成FALSE,如框918所示。证书数据有效性可通过检查该组件的证书数据以查看该组件是否被授权安全使用来确定。如本领域技术人员所熟悉的,也可使用其它方法来验证组件证书数据。
11.框910示出根据载入到内核中的取消列表检查组件的签名。如果该签名出现在列表上指示它已被取消,则内核安全标记可被设置成FALSE,如框918所示。否则载入过程604在框912继续。
12.框912示出根据取消列表检查组件的证书数据。如果证书数据出现在列表上指示它已被取消,则内核安全标记可被设置成FALSE,如框918所示。否则载入过程604在框914继续。
13.框914示出检查组件签名以确定它是否可使用。该检查可通过检查组件的叶证书数据以查看该组件是否被授权安全使用来进行。证书数据中的某些属性可指示该组件是否被批准用于受保护环境用途。如果为否,则该组件不可被适当签名且内核安全标记可被设置成FALSE,如框918所示。否则载入过程604在框916继续。
14.框916示出对组件的根证书数据的检查。该检查可通过检查组件的根证书数据以查看它是否在受信根证书列表上来进行。如果为否,则该组件可被视为不安全且内核安全标记可被设置成FALSE,如框918所示。否则载入过程604在框920继续。
15.框920示出将组件载入内核,在该内核中现在组件被视为运行。然后载入过程604返回到框902以检查要载入的任何其它组件。
创建受保护环境
图10是示出安全计算环境200的框图,该安全计算环境200将应用程序105载入一示例性受保护环境203以形成通常对攻击有抵抗力的受信任应用程序。在本示例中,内核可与图7所述的相同且已被载入,***200被视为全面运行。作为示例,此时用户启动媒体应用程序105。媒体应用程序105可要求创建受保护环境203,以使其进程和/或组件的一个或多个在其内运行。受保护环境创建过程606创建受保护环境203,并载入应用程序105和/或其组件,如下所述。
图11是示出用于创建受保护环境并将一应用程序载入受保护环境的一示例性过程606的流程图。该过程606包括创建一安全进程的初始步骤、然后验证要载入其中的软件组件、接着将该软件组件载入新的安全进程并使其运行。在成功时,结果可以是软件组件在安全内核所支持的受保护环境中运行。这种软件组件以及它所处理的任何数字媒体内容或其它数据可使其免受包括以上所述的各种攻击。
1.框1101示出受保护环境创建过程606的开始。这通常是在某应用程序或代码要求受保护环境运行时。
2.框1102示出受保护环境的建立。尽管未在示图中示出,这可通过要求操作***创建一新的安全进程来完成。后来载入并在该安全进程中运行的代码可被视为在受保护环境中运行。如果内核安全标记被设置为FALSE,则“创建新的安全进程”请求会失败。这会是因为该***作为整体可被视为是不安全且不适合受保护环境和要求受保护环境的任何应用程序或数据的。或者,“创建新的安全进程”请求会成功,且被载入该新进程的组件可得到***被视为不安全的通知以使该组件相应地更改其运行。否则,过程606在框1106继续。
3.框1106示出对要载入新安全进程或受保护环境的软件组件的有效签名的检查。如果该签名无效则过程606可失败,如框1118所示。否则过程606在框1108继续。未在该过程中示出的是也可对创建新安全进程的程序或其等效体检查有效签名。因而,对于创建新安全进程的组件本身和/或程序,如果没有签名可用则该组件可被视为不安全且过程606会失败,如框1118所示。签名有效性可通过检查对有效签名列表的匹配和/或通过检查签名者的身份是否是一受信任实体来确定。如安全技术领域的技术人员所熟悉的,也可使用其它方法来验证组件签名。
4.框1108示出对软件组件的证书数据的检查。如果证书数据无效则过程606可失败,如框1118所示。否则过程606在框1110继续。如果没有组件证书数据可用,则组件可被视为不安全且过程606会失败,如框1118所示。证书数据有效性可通过检查组件的证书数据以查看该组件是否被授权安全使用来确定。如本领域技术人员所熟悉的,也可使用其它方法来验证组件证书数据。
5.框1110示出根据取消列表检查组件的签名。如果该签名出现在列表上指示它已被取消则过程606会失败,如框1118所示。否则过程606在框1112继续。
12.框1112示出根据取消列表检查组件的证书数据。如果该证书数据出现在列表上指示它已被取消则过程606会失败,如框1118所示。否则过程606在框1114继续。
13.框1114示出对组件签名的检查以确定是否可接受它以供使用。该检查可通过检查组件的叶证书数据以查看该组件是否被授权安全使用来进行。证书数据中的某些属性可指示是否准予该组件在受保护环境中使用。如果为否,则该组件可被视为未经适当签名且过程606会失败,如框1118所示。否则过程606在框1116继续。
14.框1116示出对组件的根证书数据的检查。该检查可通过检查组件的根证书数据以查看它是否列示于受信任根证书列表上来进行。如果为否,则该组件可被视为不安全且过程606会失败,如框1118所示。否则,过程606在框1120继续。
15.框1118示出载入软件组件失败,然后是框1130,即受保护环境创建过程606结束。
16.框1120示出软件组件被载入受保护环境,在该环境中该软件组件被视为运行,然后是框1130,即受保护环境创建过程606结束。
随时间的流逝确认安全内核
图12是示出利用一示例性受保护环境202来周期性地检查(608)安全计算环境200的安全状态790的一示例性受信任应用程序的框图。在本示例中,计算环境200和内核750可与图7和8所述的相同。内核750已被载入且计算机200被视为完全运行。此外,受保护环境已被创建且受信任应用程序的适当组件已被载入其中并运行,从而建立了利用受保护环境202(下文中简称为“受保护环境”)的受信任应用程序。
受保护环境202可对内核752的PE管理部分进行周期性的检查以确定随着时间的流逝内核750是否保持安全。要执行该周期性检查是因为新组件有可能在任何时间被载入内核750,包括可被视为不安全的组件。如果这种情况发生,则内核安全标记790的状态会变成FALSE,且在受保护环境202中运行的代码有机会作出适当响应。
例如,考虑在具有安全内核750的PC 200上启动的媒体播放器应用程序,以及在受保护环境202中运行、处理数字媒体内容且仅被许可安全使用的媒体播放器应用程序的一部分。在本示例中,如果在媒体播放器应用程序处理媒体内容时载入了被视为不安全的新内核组件,则检查内核安全状态过程240将标注内核安全标记790已变成FALSE,指示该内核750不再安全。
或者,取消列表745可被更新,且先前被视为安全的内核组件不再被视为安全,从而导致内核安全标记790被设置为FALSE。此时应用程序可接收到***200不再被视为安全的通知并可终止运行,或采取其它适当动作来保护它自己和/或它正在处理的媒体内容。
图13是示出用于周期性地检查安全计算环境的安全状态的一示例性过程608的流程图。该过程608可由受保护环境202用来确定随着时间的流逝该内核是否保持安全。受保护环境202可周期性地使用该过程608来检查内核的当前安全状态。受保护环境202和/或在其中运行的软件组件可使用该当前安全状态信息来适当地更改其操作。该过程的周期性激活可使用常规技术来实现。
示图示出用示例性伪码例示的受保护环境202与内核752的PE管理部分之间的通信序列608。该通信可包括检查取消列表的版本,这可给予应用程序指定至少某版本的取消列表的能力。可使用常规技术来用密码术保护该通信序列。
1.受保护环境202对内核的PE管理部分作出IsKernelSecure(MinRLVer)呼叫1320,以查询内核的当前安全状态。包括在该呼叫1320中的是期望使用的取消列表的最低版本(MinRLVer)。
2.内核的PE管理部分作检查以查看作为调用进程的受保护环境是否安全。如果为否,则它可向受保护环境提供一返回(安全标记=FALSE)指示1322,并且通信序列608完成。该安全检查可通过内核的PE管理部分对受保护环境检查有效签名和/或证书数据来实现,如上所述。
3.否则,内核的PE管理部分响应于呼叫1320检查内核安全标记。如果该标记的状态为FALSE,则它可向受保护环境提供返回(安全标记=FALSE)指示1324,并且通信序列608完成。
4.否则,内核的PE管理部分对取消列表检查取消列表版本信息。如果取消列表具有比IsKernelSecure(MinRLVer)呼叫1320中所请求的老的版本信息,则可能有若干个选项。首先,如示图中所示,内核的PE管理部分可向受保护环境提供返回(安全标记=FALSE)指示1326,并且通信序列608完成。
或者,且未在示图中示出,适当版本的取消列表可被定位并载入到内核中,所有内核组件可使用该新的或经更新的列表来重新验证,内核安全标记在适当时更新,并重复该通信序列608的前一步骤#3。
5.否则,内核的PE管理部分可向受保护环境提供返回(安全标记=FALSE)指示1328,并且通信序列608完成。
示例性计算环境
图14是示出其中可实现用于建立包括受保护环境203的安全计算环境的过程、***和方法的一示例性计算环境1400的框图。示例性个人计算机1400仅是可提供安全计算环境和/或受保护环境的计算***或设备的一个示例,并且并非旨在将本申请中所述示例限制在该特定计算环境或设备类型中。
适当的计算环境可用多个其它通用或专用***来实现。公知***的示例可包括但不限于,个人计算机(“PC”)1400、手持式或膝上型设备、基于微处理器的***、多处理器***、机顶盒、可编程消费电器、游戏控制台、消费电器设备、蜂窝式对话、PDA等。
PC 1400包括耦合到各个***设备1403、1404、1415、1416等的计算设备1401形式的通用计算***。计算设备1401的各个组件可包括一个或多个处理器(包括CPU、GPU、微处理器等)1407、***存储器1409、以及耦合各个***组件的***总线1408。处理器1407处理各种计算机可执行指令以控制计算设备1401的运行,并经由诸如网络连接1414等的各种通信连接与其它电子和/或计算设备(未示出)通信。***总线1408表示任意数目的几类总线结构,包括存储总线或存储器控制器、***总线、加速图形端口、和/或使用各种总线架构的任一种的处理器或局域总线。
***存储器1409可包括诸如随机存取存储器(RAM)的易失性存储器、和/或只读存储器(ROM)的非易失性存储器形式的计算机可读介质。基本输入/输出***(BIOS)可被存储在ROM中。RAM通常包含可由一个或多个处理器1407即时访问和/或当前操作的数据和/或程序模块。作为示例,所示载入到***存储器以作运行的是利用受保护环境203的一受信任程序202,以及正在处理的媒体内容106。
大容量存储设备1404和1410可通过耦合到***总线来耦合于计算设备1401或结合到计算设备1401中。这样的大容量存储设备1404和1410可包括读取和写入可移动、非易失性磁盘(例如“软盘”)1405的磁盘驱动器,和/或读取和写入非易失性光盘1406,诸如CD-ROM、DVD-ROM等的光盘驱动器。计算机可读介质1405和1406通常包括在软盘、CD、DVD、便携式存储棒等上提供的计算机可读指令、数据结构、程序模块等。
任意数目的程序或模块可被存储在硬盘1410、其它大容量存储设备1404、以及***存储器1409上(通常受可用空间限制),包括例如操作***、一个或多个应用程序、其它程序模块和/或程序数据。这种操作***、应用程序、其它程序模块和程序数据(或其某个组合)各自可包括本文中所述***和方法的一个实施例。内核组件720-730连同其它操作***代码可被存储在盘1410上。媒体应用程序105和/或数字权限管理***204连同其它应用程序可被存储在盘1410上。这些组件720-730和应用程序105、204可被载入***存储器1409并运行。
显示设备1416可经由诸如视频适配器1411的接口耦合到***总线1408。用户可经由诸如键盘、定点设备、操纵杆、游戏垫、串行端口等任何数目的不同输入设备1403来与计算设备1400通信。这些和其它输入设备可经由可耦合***总线1408的输入/输出接口1412耦合到处理器1407,并且可通过诸如并行端口、游戏端口和/或通用串行总线(USB)等的其它接口和总线结构耦合。
计算设备1400可在使用通过一个或多个局域网(LAN)、广域网(WAN)、因特网、无线链路、光学链路等与一个或多个远程计算机和/或设备的通信连接的网络化环境中运行。计算设备1400可经由网络适配器1413或可替换地经由调制解调器、DSL、ISDN接口等耦合到一网络。
通信连接1414是通信介质的一个示例。通信介质通常在诸如载波或其它传输机制的已调制数据信号中体现计算机可读指令、数据结构、程序模块、或其它数据,且包括任何信息输送介质。术语“已调制数据信号”意指在信号中用对信息编码的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、射频、红外线和其它无线介质的无线介质。
本领域技术人员将认识到用来存储计算机可读程序指令的存储设备可分布在网络上。例如远程计算机或设备可存储被描述为软件的***的一个示例。本地或终端计算机或设备可访问(多个)远程计算机或设备,并下载软件的部分或全部以运行一(多个)程序。或者,本地计算机可通过在本地终端上执行部分软件指令并在远程计算机和/或设备上执行部分软件指令来按需下载软件或分布式地处理该软件。
本领域技术人员还将认识到通过利用本领域技术人员所公知的常规技术,软件指令的全部或一部分可通过诸如数字信号处理器(“DSP”)、可编程逻辑阵列(“PDA”)、分立电路等专用电子电路来执行。术语电子装置在本文中使用时包括含有任意软件和/或固件的计算设备和消费电子设备,和/或不含有任意软件和/或固件的电子设备或电路。
术语计算机可读介质可包括***存储器、硬盘、大容量设备及其相关联介质、通信介质等。