首页> 中国专利> 使用状态证实的受保护操作系统引导的系统和方法

使用状态证实的受保护操作系统引导的系统和方法

摘要

一种用于受保护的操作系统引导的机制,它防止无赖组件在操作系统上装载,并由此防止系统密钥在不当环境下被泄漏。在机器启动步骤的一部分发生之后,操作系统装载器被运行,装载器被证实,且正确的机器状态被核实为存在和/或被创建。一旦装载器经检验为合法的装载器,并且装载器所运行的机器状态被核实为正确的,即可知装载器的未来表现以防止可能导致系统密钥泄露的无赖组件的装载。在已知装载器的表现对系统密钥安全的条件下,证实器可解封系统密钥并把它提供给装载器。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-05-27

    专利权的转移 IPC(主分类):G06F9/445 变更前: 变更后: 登记生效日:20150507 申请日:20050530

    专利申请权、专利权的转移

  • 2009-01-21

    授权

    授权

  • 2007-08-29

    实质审查的生效

    实质审查的生效

  • 2006-01-04

    公开

    公开

说明书

技术领域

本发明一般地涉及计算领域。更具体地,本发明提供一种机制,以确保系统从一已知安全状态开始运行,且该机制可被用于以一种为系统正确表现提供充分保证的方式引导系统。这种对正确表现的保证进而可防止一个或多个密钥在不适当的情况下被分配。

发明背景

计算机安全往往取决于能否预知软件组件的表现。一般地,一个系统的安全可产生自一个前提,即一个其表现被理解的已知程序,它从一个已知的良好状态开始运行,就将以一种可预言的方式继续。反之,对安全性的妨碍-其可能涉及使计算机系统的表现出乎设计者预期一般会通过替代或更改一已知程序、或在不理解程序表现的状态中运行该程序来实现。如此,为计算机环境提供安全的一个方面包括:核实在用的是一个已知程序且该程序是从一个已知的良好状态开始运行的。

表现的可预见性特别重要的一个领域就是在操作系统及其组件的装载中。尽管操作系统本身可能被设计成为其表现提供某种级别的可信度,但由于保护操作系统免受攻击的基础设施尚未建立或正在建立过程之中,在这类操作系统被装载前的时间正是系统非常容易遭受攻击的时间。因此,确保操作系统以一种可预见的方式装载对保护操作系统免受一定类的攻击而言很重要。

能由操作系统非安全装载引起的安全漏洞的一种类型涉及到对激活某些受限功能的一个或多个密钥的保护。作为例子而非限制,微软的WINDOWS操作系统采用一种系统密钥,即“SYSKEY”,其通过使进程的正确性能依赖于SYSKEY的有效性而用于保护各种各样的进程。例如,解密由操作系统以加密后的格式保存的私有信息所需要的密钥可由SYSKEY推论出来。

依照惯例,执行受限操作所需的密钥受登录过程保护。通常,用户在开始使用系统之前必须正确地认证自己,例如,通过提供正确的登录凭证,诸如用户名/密码组合。仅在用户正确认证后,这些密钥方得以使用,并且在认定用户正确登录失败前,系统将仅允许用户进行有限次数的尝试,例如,三次。这种类型的对试图登录次数的限制防止在某种情况下,比方说,一台偷来的膝上型计算机,未经授权的用户通过使用穷举法猜测出密码而激活受限功能的使用,。然而,使用登录程序保护对密钥的访问假定:操作系统装载器正确地装载了有正确登录程序的操作系统,并且密钥的使用尚未由其它可能运行的无赖代码激活。如果相反使用的是无赖加载器,且该无赖加载器导致一无赖登录程序被装载到该操作系统,则在未经输入正确的凭证的情况下,密钥的使用也可能被激活,或密钥甚至可能被泄漏。由于操作系统的装载为系统漏洞提供了可能,在此情形下,对密钥的保护要求操作系统的装载要在其可被证实是正确地发生的环境下发生。

在检验操作系统加载进程的安全方面出现的一个问题是合法的操作系统加载可以包括很多不同程序(例如,有大量不同的“可任选只读存储器”,它们是在系统引导步骤期间运行的操作系统前置程序)、以及有大量不同的可做为操作系统装载的一部分运行的步骤。因此,在一次加载期间有几乎无法计数的不同的合法机器状态,识别所有这些状态并检验该机器处于一已知良好的状态可能被证明是一项不可行的任务。然而,并非装载步骤的所有部分都与安全性意义。让该装载过程运行而不试图评估其安全性,然后在启动任何可影响安全相关功能的步骤,诸如密钥的分配之前,将环境设置到一已知良好状态可能更为有效率。更一般地,只要在允许任何与安全相关的动作发生之前能将系统设置到一已知良好状态,任意系统可被允许运行一段时间而不作任何安全评估。

基于上述考虑,需要一克服现有技术缺点的机制。

发明内容

本发明提供了在操作系统的装载可被核实是正确执行的环境下的操作系统的装载。当机器启动时,执行最初的启动步骤(例如,BIOS、可任选只读存储器、主引导记录、引导扇区等等)。在这些早期步骤被执行后,操作系统装载器被启动并可执行各种各样的初步任务。在操作系统装载器被启动并执行了这些初步任务后,执行对操作系统装载器的证实。

证实包括对装载器本身或装载器的一部分执行有效性测试(例如校验和,或其它以评估装载器的身份或正确性为目标的测试);以及评估当前机器状态(或强迫该机器符合一已知良好的状态)。若装载器或相关部分已知为正确的,并且机器状态是一个在此状态中装载器先前曾被核实表现正确的状态,则装载器的表现可以预见。如此,可以确保运行于正确机器状态下的正确装载器将不会装载会导致激活受限功能(例如,加密过的密钥,诸如系统密钥)的数据在不适当的环境下被分配的组件。

较佳地,证实由运行于高保证环境中的证实器来执行。高保证环境是指在此环境中,有可能提供相对高的保证度,使在此环境中执行的进程按照预期的方式运行。因此,证实器将正确运行的保证源于该证实器被运行于高保证环境的进程所检验这一事实(例如,通过检证实它的二进制版本的签名)、以及源于在高保证系统中的进程会被正确完成的基本信任。或至少有在一定程度的保证,即高保证环境将不会干涉或不允许干涉在此类环境中运行的进程的正确运行;还必须有另外的信任基础,即在高保证环境中实现一进程的程序将以所期望的执行方式正确地执行。高保证环境可提供密封存储器,这是一种的存储器设施,在其中数据可被密封给一个特殊对象(例如,一个特殊程序),且高保证环境用这种方式控制,使经密封的数据不会被释放给除此数据被密封的对象之外的任何其它对象(可由高保证环境核实)。证实器可以使用该密封存储将密钥(例如,SYSKEY)密封给自己证实,并可拒绝解封密钥,除非是给正确对的象、且环境(例如机器状态)在某种标准下是令人满意的。

发明的其它特征在下文描述。

附图简要说明

上述发明内容以及下文对优选实施方式的详细描述,结合附图阅读将更好理解。出于例证本发明的目的,在附图中给出本发明的示例性构造;然而,本发明不限于所揭示的具体方法和手段。在附图中:

图1是发明诸方面可在其中实现的示例性计算机环境的方框图;

图2是采用一进程的系统的方框图,该进程的正确操作依赖于系统密钥;

图3是一种加密文件系统的方框图,该系统通过使解密依赖于系统密钥来保护加密数据免遭未经授权的解密;

图4是根据本发明各方面的带证实的示例引导进程的流程图;

图5是根据本发明各方面的示例证实器的方框图;以及

图6是根据发明各方面的保护系统密钥的示例进程的流程图。

具体实施方式

概览

在一个操作系统之下可能发生的几个进程的正确运行依赖于一个或多个密钥。对这些密钥的访问可能受控于一个认证程序,比如登录程序,该程序将拒绝激活密钥的使用,除非用户提供正确的凭证,诸如用户名/密码组合。因此,通过在没有正确的凭证时登录程序拒绝激活密钥的使用,若干个进程(例如,对加密文件的解密)对于不知道密码的用户可被中断(或完全防止)。虽然登录程序可以有效地对密钥的访问进行门控(gating),操作系统装载器有可能受骗而装载一个另外的会违背登录程序所设定的认证规则来分配密钥的组件。因此,当密钥以此方式被分配时,保护密钥就要求保护操作系统的装载过程。本发明提供可用于保护装载过程的机制。

示例性计算装置

图1示出了一种可实现发明各方面的示例性计算环境。计算系统环境100仅为一合适的计算机环境的例子,并非意于暗示对本发明的使用范围和功能性的任何限制。计算环境100也不应解释为对在示例性操作环境100中说明的任何一个组件或组件的组合有任何的的依赖或需求。

本发明可运行在大量其它的通用或专用计算系统环境或配置中。适于本发明使用的众所周知的计算系统、环境和/或配置包括而非限于:个人计算机、服务器、手持或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子、网络计算机、小型计算机、大型计算机、嵌入系统、包括任何以上系统或设备的分布式计算环境等等。

本发明可以在由计算机执行的计算机可执行指令,诸如程序模块的一般上下文中描述。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可在分布式计算环境中实践,在分布式计算环境中,任务是由通过通信网络或其它数据传输媒质连接的远程处理设备执行的。在分布式计算环境中,程序模块或其它数据可以位于本地的和远程的包括记忆存储设备在内的计算机存储器介质中。

参考图1,实施本发明的一示例性系统包括计算机110的形式的通用计算设备。计算机110的组件可包括而不限于:处理单元120、系统存储器、和把包括系统存储器在内的各种系统组件耦合到处理单元120的系统总线121。处理单元120可表示多多逻辑处理单元,诸如在多线程处理器上支持的那些逻辑处理单元。系统总线121可以是包括存储器总线或存储器控制器、外设总线、使用各种各样的总线架构中的任何一种的局部总线在内的几种总线结构类型中的任何一种。作为例子而非限制,这些结构包括:工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型工业标准架构(EISA)总线、视频电子标准协会(VESA)局部总线、以及互连外围设备(PCI)总线(也称Mezzanine总线)。系统总线121也可实现为通信设备之间的点对点连接、交换结构等等。

计算机110通常包括各种各样的计算机可读介质。计算机可读介质可以是能够被计算机110访问的任何可用介质,计算机可读介质包括易失性和非易失性介质、可移动式和不可移动式介质。作为例子而非限制,计算机可读介质可包括计算机存储器介质和通信媒质。计算机存储器介质包括以任何方法或技术实现的用于诸如计算机可读指令、数据结构、程序模块或其它数据等信息的保存的易失性和非易失性、可移动式和不可移动式介质。计算机存储器介质包括但不限于:RAM、ROM、EPROM、闪存或其它存储器技术、CD-ROM、DVD、或其它光学存储器、卡式磁带、盒式磁带、磁碟存储器或其它磁性存储器设备、或任何其它可以用来保存想要的信息并能被计算机110访问的介质。通信媒质通常以诸如载波或其它传输机制的经调制的数据信号的形式来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传递媒质。术语“经调制的数据信号”是指一种其一个或多个特征被以在其中编码信息方式设置或改变的信号。作为例子而非限制,通信媒质包括诸如有线网络或直线连接的有线媒质,以及诸如声音、射频、红外线及其它的无线媒质的无线媒质。由上述形成的任何组合也包括在计算机可读介质的范围内。

系统存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132的易失性和/或非易失性存储器形式的计算机存储介质。通常在ROM 131中存储有基础输入/输出系统(BIOS)133,其包含辅助在计算机110的元件之间传送信息的基础例程,比如在启动时。RAM 132通常包含立即可访问的和/或目前正被处理单元120操作的数据和/或程序模块。作为例子而非限制,图1说明了操作系统134、应用程序135、其它程序模块136以及程序数据137。

计算机110也可以包括其它可移动式/不可移动式、易失性/非易失性存储器设备。仅作为例子,图1例示有读取或写入不可移动式非易失性磁性介质的硬盘驱动器141、读取或写入可移动式非易失性磁盘152的磁盘驱动器151、以及读取或写入诸如CD ROM或其它光学介质的可移动式非易失性光盘156的光盘驱动器155。在示例性操作环境中可用的其它可移动式/不可移动式、易失性/非易失性计算机存储介质包括而不限于:卡式磁带、闪存卡、DVD、数字录像带、固态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-常指鼠标、轨迹球或触摸屏-的输入设备输入命令和信息到计算机20。其它输入设备(未示出)可包括麦克风、操作杆、游戏手柄、卫星天线、扫描仪等等。这些及其它输入设备经常通过耦合到系统总线的用户输入接口160连接到处理单元120,但也可以通过其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)来连接。监视器191或其它类型的显示设备也可通过诸如视频接口190的接口连接到系统总线121。除监视器外,计算机还可以包括通过输出外设界接口195连接的诸如扬声器197和打印机196的其它外围输出设备。

计算机110可以在使用逻辑连接到一台或多台远程计算机,如远程计算机180的网络环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络计算机、对等设备或其它普通的网络节点,并且通常包括上述关于计算机110描述的许多或全部元件,虽然在图1中仅例示了记忆存储器设备181。图1中描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它的网络。这些网络环境在办公室、企业级计算机网络、企业内部互联网和因特网中很常见。

在LAN网络化环境中使用时,计算机110通过网络接口或适配器170被连接到LAN 171。在WAN网络环境中使用时,计算机110通常包括调制解调器或其它用于在诸如因特网的WAN 173上建立通信的手段。内置或外置的调制解调器172可通过用户输入接口160或其它适当的机制连接到系统总线121。在网络环境中,关于计算机110描述的程序模块或程序模块的一部分,可以存储在远程记忆存储器设备中。作为例子而非限制,图1例示了驻留在存储器设备181上的远程应用程序185。应该领会,所展示的网络连接是示例性的,也可以使用其它在计算机之间建立通信链接的方法。

受密钥保护的行动

计算环境可以使用一密钥,在该环境中发生的某些进程正确操作与否依赖于该密钥。微软的WINDOWS操作系统所使用的系统密钥即“SYSKEY”正是此类密钥的一个例子,但不是限制性例子。在一个优选实施例中,进程所依赖的密钥是一个唯一的、加密的随机单平台的密钥,即,假定有两台机器,很可能这两台机器有不同的密钥。因此,依赖于这些密钥的进程不太可能方便地从一个平台携带到另一个平台-至少到这样的程度,即采用有效机制以确保一个平台的密钥在此平台以外的其它平台上是难以获得的。

图2展示了一个示例性系统,在此系统内运行一依赖于密钥的进程。进程202依赖于密钥204以正确地操作。应该注意,进程202并不限于传统观念中的进程一即,可由操作系统管理并被分配一个地址空间的执行单元-而是更一般地指可以在计算机上执行的任何操作或系列操作。更应该注意,虽然本例中展示的是依赖于密钥的进程,但此处的术语“进程”并非限于执行加密操作的进程。

如图2所示,如果密钥204对进程202是可用的输入,则进程202正确操作。另一方面,如果密钥204不可用作对进程202的输入,则进程202不会正确操作。密钥保护机制206控制对密钥204的访问-即,取决于是否满足了相应的安全条件,机制206向进程202提供或不提供密钥204。例如,在机制206激活密钥204的使用之前,用户或许必须登录并提供正确的密码。

应该注意,有时拒绝密钥204以防止进程202的正确运行是所期望的结果。例如,对文件的加密/解密是受密钥204保护的进程202的一个例子。对文件的正确加密会依赖于对密钥204的访问。如果用户不能正确地登录并通过认证,则理想的是文件的解密不继续执行,因为用户不能登录可能表明计算机正在被目标用户以外的人操作(例如,在被盗的膝上计算机的情形中)。因此,密钥保护机制206可以使对密钥204的访问依赖于对相关安全条件的满足,并且在那些相关安全条件未得满足时,可使用密钥204的拒绝来中断需要中断的进程。机制206以这种方式中断进程的能力依赖于那些进程正确操作时对密钥204的需求,因为正是这种依赖性激活了密钥204的拒绝来中断进程。

图3展示了一个依赖于密钥204的具体(但非限制性的)进程。在图3的例子中,示例进程是一个以加密格式存储文件和对已加密文件解密的加密文件系统(EFS)302。应该注意,这种文件加密的一个目的是在膝上计算机被偷地情况下,保护膝上计算机上的数据不被小偷恢复。当文件304被生成后要储存时,该文件被提供给EFS 302。然后EFS 302对文件304加密,并把文件304转换成加密后的文件306,文件306被储存在硬盘141上。当做出检索加密文件306的请求时,EFS 302检索加密文件306并解密该文件生成解密后的文件308。(在实践中,解密的文件308的实质内容与原始文件304是一样的,虽然在图3中为了清楚起见是分别显示了文件的两个实例:文件304是原始文件,解密后的文件308是文件304经EFS 302加密、储存、检索并解密后的同一文件。)

应该注意到,给EFS 302的一项输入是内容密钥310。内容密钥310是一个起到加密方法的一项输入作用的对称性密钥。内容密钥310用于对文件304加密以便创建加密文件306,也用于解密加密文件306以便创建解密的文件308。可以领会,在某个易于检索的地点储存密钥310可快速使EFS 302保护数据的能力无效:如果内容密钥在硬盘上很容易得到,或如果它很容易从膝上型计算机的某些已知特征(例如,处理器的序列号)推导出来,则文件是否以加密的格式储存将没有区别,因为小偷能很容易地找到密钥并将文件解密。因此,通过某种只有在真正的所有者的协作下才能得到密钥的方式来保护密钥是值得想望的。保护密钥的一个方法是使用密钥生成模块312,该模块接收密钥204作为输入,并导出作为密钥204的函数的内容密钥310。因此,在密钥204将仅在合适的安全环境中被提供的限度内,密钥310也同样仅在合适的安全环境中被提供。换言之,通过使内容密钥310的导出依赖于密钥204的可用性,凡是提供给密钥204的保护可以延伸到内容密钥310。例如,如果提供密钥204要求用户通过提供正确的密码而登录,则可保证内容密钥310只有在用户正确登录时才可用。

因此,保护密钥204不在错误的环境中被分发很重要,因为其它进程会依赖于密钥204只在正确的安全上下文(例如,一个合法的登录用户,他提供正确的密码)出现时被分发。如上所述,导致机器在一种可能以误用为结果的方式中分配密钥204的情形是:在不安全的环境中引导程序,在此环境中,操作系统的无赖组件可取代正确的组件(假设正确组件可以保护密钥204)。因此,在下文中描述一种确保在密钥204可被分配前机器是在已知(安全)的环境下被引导的机制。

带状态证实的引导进程

图4展示了在一个引导步骤使用的典型事件顺序。

最初,机器接通电源。通常机器被设定为当电源被开启时开始执行在某个固定地址的指令。通常包含在这个地址的指令被认为是“BIOS”402,即“基础输入/输出系统”。在BIOS 402执行到结束时,BIOS 402启动被称作“可任选只读存储器(option ROM)”404的小程序。可任选只读存储器是执行诸如为机器设置硬件密码、或选择几个操作系统中的哪一个被引导等非常基础的早期引导功能的程序。可任选只读存储器404执行之后,机器被指令装载主引导记录(MBR)406。

MBR 406是可执行程序。MBR 406通常驻留于计算机硬盘的第一个扇区,并以在分区表中查找其它的引导要使用的分区来开始。(例如,一个磁盘可以划分给不同的操作系统使用,并且每一个操作系统可能需要一个不同的引导步骤)。正确的分区查找到后,MBR 406将控制权传递到与该分区相关联的引导扇区408。引导扇区随后开始装载操作系统装载器410的进程,操作系统装载器410最终将装载操作系统。应该注意,MBR 406在图4中只是为展示这样的一个组件是如何适应示例引导进程的,本发明并非限于使用MBR 406的引导步骤。

在操作系统装载器410运行期间,该装载器和机器状态被证实(450)。在此上下文中的“机器”可指物理机或虚拟机。证实是由运行于高保证环境的可信软件组件(下文将更具体地描述其一实施例)执行,因此在一定程度上可以保证/信赖装载器410的证实被正确地完成。基本上,通过在操作系统装载器410对机器有控制权时证实机器状态的相关方面及通过证实装载器410,可提供某种级别的担保:操作系统组件(例如,硬件抽象层、内核、驱动器等等(416))的不合法或无赖版本稍后将不会被装载,直到登录程序418被运行。直到登录程序418被运行的时候防止无赖组件被装载很重要,因为操作系统被装载后将做的第一件事就是运行对密钥204的访问进行门空(gate)的登录程序418,如果无赖组件能被装载,则这些组件会引起登录程序418以一种会导致密钥204在不适当的环境中被分配的方式失常表现,由此影响所有依赖于如上所述的对密钥204的保护的组件的安全。因此,对密钥204的保护可以通过对机器从操作系统装载器410开始运行到登录程序完成这段时间的状态进行严密的控制而达到。

证实450在操作系统装载器410运行期间发生。证实包括证实装载器及机器状态,也可以包括将机器状态设置于一已知良好状态。证实及设置机器状态背后的基本想法是将机器置于这样一种状态:如果装载器执行时机器处于该状态,则该装载器将不会装载任何无赖组件或者以一种会导致安全漏洞的其它方式表现。证实450确保装载器代码事实上是以前被核实为正确表现的代码,也确保机器处于该已知代码将正确表现的状态(或核实该机器已处于该状态、或将机器设置到该状态)。应该领会,此技术能够藉机器现存的(安全的)状态之力以确保机器将来的状态也会是安全的,并且通过操作系统装载器410的表现不但被知道和理解而且被严格限制这一事实使这种藉力成为可能。基于此观点,应该领会证实450不应太早发生,例如,在执行可任选只读存储器404或MBR 406之时,由于来自众多不同资源的各种各样的代码以及作为执行这些代码的结果机器所可能被置入的五花八门的状态,使得难以-如果不是不可能-在运行这些各种不同的代码模组时确定机器的表现。因此,不用关心在装载器410运行之前机器是处于什么状态更为可取,只要在装载器410运行的时候,机器可被置于一合法的状态。

在一优选实施例中,装载器410的执行被分为两个阶段:阶段1(412)和阶段2(414)。较佳地,在进入阶段2前,实现阶段2的代码被证实(450),然后执行证实程序450的可信代码从一定义好的入口点跳入阶段2。(执行证实的“可信的代码”是以上提到的运行于一高保证环境的程序。本领域的技术人员应该理解,“可信的”并不意味绝对可靠,而只是意味有假定该代码将正确完成它的工作的某些基础。由于程序的表现可能受它运行所处的环境的影响,在一高保证环境中运行可信的代码意味着可信的代码将正确操作:(1)在符合某些预期的环境中,能够相信可信的代码正确的执行它的功能,以及(2)能够相信高保证环境正确地提供一符合某些预期的环境。)然后阶段2可以(依照某种定义的标准)证实任何从阶段1接收的信息。阶段1和阶段2间的分隔线反映这样一个事实,即引导步骤的某些方面可以在不经任何安全核实的情况下执行,并不对某些安全相关的任务(诸如密钥204的分配)产生任何后果,只要相关的程序和状态可以在可能导致此类安全相关的任务不被正确执行的事件开始运行之前的某个时点被证实。而且,在引导进程中过早地试图证实状态也可能有问题:合法的引导步骤采用的实际执行路径是非常易变的,所以在这样易变的环境下难于定义有效的或无效的机器状态之间的差异。允许装载经历这些易变的状态继续进行,而无需试图确定机器所经过的任何状态是否有效可能是有意义的。阶段1因而表示不经任何证实而继续进行的装载部分。在阶段1的结尾,装载器和机器状态被证实,并且阶段2开始。这样一条分隔线的假定是:进程可以不需任何安全限制而执行,直到某一点-在这一点上有关机器的所有相关因素被证实并且机器被置于一已知良好状态,这在本质上使之前所有可能置机器于一种从安全角度无法接受的状态的所有行动的作用无效。装载进程中阶段1和阶段2之间的分隔线出现的精确点是高度环境特异性的(例如,装载器代码象什么?作为装载的一部分需要完成什么任务?),并代表了一种折衷:一方面,,分隔线应该足够晚,以便为了将来的动作,合法装载表现的变化量要足够少,少到可以切实可行地区别合法表现与不合法的表现。如上文解释的,在前期装载步骤中,可任选只读存储器的巨大数量以及其它变量使得可能的执行路径的数量大到难以区别合法表现与不合法表现的程度。另一方面,分隔线应该足够早,早于任何可以影响安全性的事件(如登录程序的装载),比如导致密钥被不适当的分发。一般地,阶段1和阶段2之间的分隔线允许人们在“自然”(或“开放”或“未经证实的”)状态中运行任意系统一段时间,并随后启动核实表现(如高保证环境)所必需的随便什么组件,并随后使用此类组件证实机器的当前状态(或迫使机器进入一已知良好状态),在该点上,做一些今后可能影响安全性(如密钥的分配)的事情的进程被允许继续进行。

证实程序450

证实450本质上是证实操作系统装载器410(或更明确地,在一优选实施例中,证实装载器的阶段2)为一个已知可信程序、并且确保装载器其上的机器处于已知良好状态的动作。因此,证实有两部分:(1)检查装载器程序(或装载器程序的阶段2)以确保其就是名副其实的已知可信的程序,以及(2)更改相应的机器状态到一已知良好状态,已知装载器在此状态下会正确表现。执行(1)和(2)的前提是:运行在已知机器状态的已知程序将以已知的方式表现。

证实的第一部分-即检查装载器-可用多种方式执行。在最简单的例子中,可能有可与运行中的实际程序作比较的已知程序的散列(其可用密码签署以创建数字签名,或以某种不可欺骗的方式储存)。给整个程序作散列的问题是一个合法程序的不同实例的图像会有微小差异,所以,以要求已知程序和正在运行的程序实例之间完全一致的方式计算的散列可能限制性过强。较佳的是,证实以确保程序同所假想的一样,而又非过度限制的方式执行-例如,证实可以比较已知为固定的程序组件的散列,还可以对随着时间而改变的程序组件进行其它测试。执行证实的组件应该根据被证实的程序的细节量身定作;本发明不限于证实程序的任何特定技术。

证实的第二部分-即核实/设置机器状态-优选通过设置所有的状态相关“来源”为已知值来执行。通常,能影响操作系统的相关状态来自于三个来源:中央处理单元、芯片组(chipset)以及存储器。因此,这些东西可以在证实的时候置入已知良好状态-例如,中央处理单元可被置入一已知良好的状态-如ring 0,程序计数器指向一已知位置、将所有数据寄存器设为零、将除存储装载器程序的存储器之外的所有存储器设置为0,。如果已经核实装载器在此状态中的机器上正确表现,则检查装载器和置机器于已知良好状态相结合将确保直到登录程序418运行前的正确表现。如以上所讨论的,直到登录程序418运行前的正确表现的好处之一(而并非仅有的好处)是:将导致密钥204在不适合的环境中被分配的无赖组件将不会被装载。

应当注意,为使证实进程保护操作系统装载不受无赖组件影响,应该充分保证证实进程自身的正确执行。证实进程的正确性可通过将证实器作为运行于高保证计算环境之上或之中的可信代理来确保。例如,可能有一个可运行一组有限功能的小操作系统,然而此系统提供高保证度:这样的操作系统将依照其规范执行。这样的操作系统可与其它操作系统在一台机器上运行,并且由管理组件,诸如系统管理程序或虚拟机监视器,来执行高保证操作系统从系统上的其它(低保证)环境的隔离。在一实施例中,系统管理程序执行分区,这些分区是系统管理程序以相互隔离的方式维护的环境,并且在其中可以运行操作系统。此外,高保证组件对置信根(aroot of trust),比如应用并坚强地保护单平台密钥的硬件模块有独占访问权。证实器可以是一个运行于高保证环境的程序(或“代理”),此环境可在高保证环境自身可被信任抵抗攻击的限度内提供保证,该证实器将不会遭受来自高保证系统外的将导致其不正确表现的攻击。而且,如上所提,高保证环境可以提供密封存储(sealedstorage)(即,储存某些资料并只对该资料所密封到的对象释放该资料的能力),并且证实器可使用此密封存储来储存任何将要被分配的密钥。要注意的是,证实器可以是高保证环境的一个组成部分,但也可以是运行于高保证系统的一个单独的组件。

图5展示了一个依照以上所述的步骤来执行证实的证实器550的例子。证实器550具有评估装载器410的正确性和/或符合某组已知标准的能力。除此之外,证实器550具有评估和/或影响机器状态502的能力。使用这些能力的组合,证实器550可通过确保装载器410是所期望运行的装载器并提供确保装载器运行于其上的机器是处于装载器410已知将正确运行的状态中来确保装载器410将正确表现。

在结构上,证实器550可包括两个组件:通用部分504,和装载器专用部分506。“通用部分”504包括对各种各样的(或所有)证实器通用的代码。装载器专用部分506是具体涉及某个特殊装载器410的代码-即:一种理解装载器410(或装载器410的阶段2)看上去象什么、并执行测试以确保装载器410与此理解相符的代码。因此,装载器专用部分506可与通用部分504相组合形成一个完整的证实器。

证实器550是最终判定是否提供密钥204给装载器的组件(随后装载器将提供此密钥给操作系统,让操作系统以登录程序所允许的方式使用,如上所述)。证实器550可以通过在密封存储设施508中将密钥204密封给证实器550来保护密钥204。密封存储设施508是高保证计算环境的一个特征。密封存储设施508可准许在高保证环境中运行的组件把任意数据密封给组件自己,这样就没有其它组件可检索到这些数据。例如,证实器550的装载器专用部分506可以密封密钥204给自记。密封存储设施508将阻止装载器专用部分506以外的任何组件解封密钥204。因此,密钥204受到保护,因为它只能从装载器专用部分506获得,而装载器专用部分506将只分配密钥204到装载器专用部分506相信不会导致密钥204被不当分配的装载器。在另一实施例中,密钥基于包括证实器和装载器410的阶段2的组件组合被封装。在这样的实施例中,证实器506的装载器专用部分可被排除,因为密封存储机制本身在本质上确保正确的装载器的阶段2出现在密钥可被解封前,因为已知正确的装载器的阶段2的二进制版本是被密封的量度的一部分。

保护SYSKEY的示例进程

图6展示了依照上述的本发明各方面保护密钥的示例过程。在机器启动后的某时点,一操作系统装载器被执行(602)。在操作系统装载器的执行期间,装载器和机器状态被证实(604),由此根据上述的理由确保装载器将以可预见的方式表现。装载器和机器状态被证实后,装载器被用来装载操作系统,同时防止无赖组件被装载(606)。如以上讨论,装载器和机器状态的证实意味着已知装载器将来的表现不会导致无赖组件的装载。操作系统被装载后,对密钥的访问进行门控的登录程序被运行。

其它示例实施例

应该注意,本发明的机制不仅可用于操作系统的装载,还可一般地用于允许系统在自然的(未经证实的)状态下执行某些功能,同时要求证实在某些功能上继续。例如,计算机可以执行某些能够无需任何证实就可被执行的功能(例如,计算机可以充当无线电设备),但在执行更敏感的功能前(例如,从硬盘读取文件),必须执行证实过程。一般地,机器既可被看作一种器具也可被看作通用个人计算机,器具部分不要求证实/登录,通用个人计算机部分则要求。

此外,证实器并不限于是否给登录程序释放特定的密钥集,更一般地,还能被配置成给特定的软件堆栈提供具体密钥集-例如,某软件堆栈可以得到第一密钥,然而证实器可以仅给“经更严格证实过的”软件堆栈释放第二密钥。

除此之外,密钥并非必需在登录步骤中释放,而是可以在任意的证实步骤中提供。例如,DVD播放器的二进制版本可以在证实器确定该播放器是正确的二进制版本后得到DVD功能密钥,而不需要登录。

除此之外,某些程序可以以某种形式工作而无需证实,但在允许展露特定功能之前,则要求一类型的证实。例如,电话应用程序可以无需登录就开始,但在分配允许应用程序的密码功能进入工作的密钥前可要求登录。

应注意,提供前述的例子仅为说明的目的而决不是在任何意义上对本发明进行限制。尽管参考各种各样的实例描述了发明,要理解,这里使用的文字是描述性和说明性的文字,而非限制性的文字。此外,虽然本发明在这里是参考具体装置、材料和实例描述的,本发明无意于局限于其中揭示的细节,相反,本发明延伸到所有功能上等同的结构、方法及用途,如在所附权利要求书范围内者。得益于本说明书的教导的本领域的技术人员,可以在本发明中做各种修正或变化,而不背离本发明各方面的范围或精神。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号