专利名称:用于执行安全环境起始指令的系统和方法
技术领域:
本发明通常涉及微处理器系统,更具体地说,涉及可以在可信或安全环境中运行 的微处理器系统。
背景技术:
在本地或远程微型计算机上执行的金融和个人事务的增加量已经推动了“可信” 或“安全”微处理器环境的建立。这些环境试图要解决的问题是个人隐私的泄露或者数据 被破坏或滥用。用户不想公开他们的私人数据。他们也不想不当的事务改变或使用他们的 数据。这样的例子包括非故意地泄露医疗记录或者从在线银行或其它存款处因为电子方式 失窃资金。类似地,内容供给者设法保护数字内容(例如,音乐、其它音频、视频或其它类型 的一般数据)不会在未经授权的情况下被复制。现有的可信系统可以利用一套完全封闭的可信软件。这个方法实施起来相对简 单,但缺点是不允许同时使用市场上可买到的普通操作系统和应用软件。这个缺点限制了 对上述可信系统的认可。
本发明是以实施例的方式来说明的,而不是以限定的方式来说明的,附图中相近 的附图标记表示类似的部件,其中图1是在微处理器系统中执行的示例性软件环境的图。图2是依据本发明一个实施方案的某些示例性可信或安全软件模块和示例性系 统环境的图。图3是依据本发明一个实施方案的示例性可信或安全软件环境的图。图4A是依据本发明一个实施方案,适合于支持图3的安全软件环境的示例性微处 理器系统示意图。图4B是依据本发明另一实施方案,适合于支持图3安全软件环境的示例性微处理 器系统示意图。图5是依据本发明另一实施方案,适合于支持图3安全软件环境的示例性微处理器系统示意图。图6是依据本发明一个实施方案的软件成分执行的时线图。图7是依据本发明一个实施方案的软件和其它过程块的流程图。
具体实施例方式下面的说明描述了在微处理器系统内启动可信或安全环境的技术。在下面说明 中,为了更彻底地理解本发明,阐述了许多具体细节,例如逻辑实现、软件模块分配、加密技 术、总线信令技术,以及操作细节。然而,本领域技术人员将能理解,没有上述具体细节也可 以实施本发明。在其它情况下,为了不搞混本发明,没有详细表示控制结构、门电平电路和 全部软件指令序列。获悉本文所包含的说明的本领域普通技术人员无需超出常规的试验就 能够实现恰当的功能性。本发明是以微处理器系统的形式公开的。然而,以其它处理器的 形式也可以实施本发明,例如数字信号处理器、小型计算机或大型计算机。现在参考图1,图中所示为在微处理器系统中执行的一个示例性软件环境。图1中 所示的软件不是可信的(非可信的)。当在高特权级下运行时,操作系统150的大小和持续 更新使得按照适时方式进行任何信任分析非常困难。许多操作系统位于特权环(ring)零 (0)内,即最高特权级。应用152,154和156具有降低了很多的特权,典型地位于特权环三 (3)内。不同特权环的存在以及操作系统150和应用152,154,156分成这些不同特权环似 乎允许图1的软件按照可信模式运行,即基于决策来信任由操作系统150提供的设备。然 而,实际上进行上述信任决策经常是不切实际的。影响这个问题的因素包括运行系统150 的大小(代码行的数目),操作系统150可以是许多更新(新代码模块和补丁)的接收者 的事实,以及操作系统150也可以包含代码模块(例如由用户而不是操作系统开发者提供 的设备驱动器)的事实。操作系统150可以是通用操作系统,例如Microsoft Windows , Linux或Solaris ,或者可以是任何其它适当已知或另外可获得的操作系统。应用或操作系 统运行或正在运行的具体类型或名称不是关键的。现在参考图2,图中所示为依据本发明一个实施方案的某些示例性可信或安全软 件模块和示例性系统环境200。在图2的实施方案中,处理器202、处理器212、处理器222 和可选的其它处理器(未图示)图示为单独硬件实体。在其它实施方案中,正如不同部件和 功能单元的边界可以变化,处理器的数量也可以不同。在某些实施方案中,可以用在一个或 多个物理处理器上运行的单独硬件执行线程(thread)或“逻辑处理器”来替换这些处理器。处理器202,212,222可以包含某些专用电路或逻辑元件以支持安全或可信操作。 例如,处理器202可以包含安全输入(SENTER)逻辑204以支持执行专用SENTER指令,所述 指令可以启动可信操作。处理器202也可以包含总线消息逻辑206以支持系统总线230上 的专用总线消息,支持专用SENTER操作。在另外的实施方案中,芯片组240的存储控制功 能可以分配给处理器内的电路,对于多个处理器而言,可以包括在单个管芯上。在这些实施 方案中,专用总线消息也可以在这些处理器内部的总线上发送。由于几个原因,使用专用总 线消息可以增加系统安全性或可信任性。如果电路元件例如处理器202,212,222或芯片组 240包含本发明公开的实施方案的适当逻辑元件,则它们可以只发布或响应上述消息。因此 专用总线消息的成功交换可以有助于确保适当的系统配置。专用总线消息也可以允许通常 应该被禁止的活动,例如复位平台配置寄存器278。通过允许专用总线消息的发布只响应专 用安全指令,可以限制潜在的敌对非可信代码对某些总线事务进行侦测的能力。另外,处理器202可以包含安全存储器208以支持安全起始操作。在一个实施方案 中,安全存储器208可以是处理器202的内部高速缓存器,或许按照专用模式运行。在另外 的实施方案中,安全存储器208可以是专用存储器。其它处理器,例如处理器212和处理器222,也可以包括SENTER逻辑214,224、总线消息逻辑216,226、以及安全存储器218,228。
“芯片组”可以定义为一组电路和逻辑,它们支持存储器以及针对连接的一个或多 个处理器所进行输入/输出(I/O)操作。芯片组的单个元件可以组合在在单个芯片、一对 芯片上或分散在多个芯片中,包括处理器。在图2的实施方案中,芯片组240可以包括支持 存储器和I/O操作的电路和逻辑,以支持处理器202,212和222。在一个实施方案中,芯片 组240可以与许多存储页面250-262和设备访问页面表248连接,页面表248包含指示非 处理器设备是否可以访问存储页面250-262的控制信息。芯片组240可以包括设备访问逻 辑247,所述逻辑可以允许或拒绝从I/O设备到存储页面250-262的所选部分的直接存储器 存取(DMA)。在某一实施方案中,设备访问逻辑247可以包含允许或拒绝上述访问需要的所 有相关信息。在其它实施方案中,设备访问逻辑247可以访问保存在设备访问页面表248 内的上述信息。存储页面的实际数量不是重要的,并且将根据系统需求而变化。在其它实 施方案中,存储器访问功能可以在芯片组240的外部。在另外实施方案中,芯片组240的功 能还可以在一个或多个物理设备中分配。为支持专用SENTER操作,芯片组240可以另外包括它自己的总线消息逻辑242 来支持系统总线230上的专用总线消息。这些专用总线消息中的某些可以包括把关键字 (key)寄存器244的内容传递给处理器202,212或222,或者允许通过处理器202,212或 222检验专用的ALL-JOINED标志274。总线消息逻辑242的附加特征可以是把多个处理器 的总线活动记录在“EXISTS”寄存器272中以及把多个处理器的某一专用总线消息活动保 存在“JOINS”寄存器272中。EXISTS寄存器272和JOINS寄存器272的内容的等同性可以 用来设定专用的ALL-JOINED标志,以指示系统内所有处理器都在参与安全输入过程。芯片组240可以支持I/O总线上的标准I/O操作,所述I/O总线例如外设部件接 口(PCI)、加速图形接口(AGP)、通用串行总线(USB)、低引线数(LPC)总线或任何其它类型 I/O总线(未示出)。接口 290可以用来使芯片组240与标记276连接,标记276包含一个 或多个平台配置寄存器(PCR) 278,279。在一个实施方案中,接口 290可以是通过修改增加 了某些安全上的增强的LPC总线(低引线数(LPC)接口规范,英特尔公司1997年12月29 日的修订版1. 0)。上述安全上的增强的一个实施例是位置确认消息,利用以前保存的消息 头和地址信息,把标记276内的平台配置寄存器(PCR) 278作为目标。在一个实施方案中, 标记276可以包含专用安全特征,在一个实施方案中,可以包括可信平台模块(TPM) 281,该 模块在2001年12月1日由TCPA出版的版本为1. Ia的可信计算平台联合(TCPA)主要规 范中被公开(在本申请递交时从www. trustedpc. com可得到。在系统环境200内确定的两个软件成分是安全虚拟机监控程序(SVMM) 282模块和 安全起始授权码(SINIT-AC) 280模块。SVMM 282模块可以保存在系统盘或其它大容量存 贮器上,并且根据需要移动或复制到其它位置。在一个实施方案中,在开始安全启动过程之 前,SVMM 282可以移动或复制到一个或多个存储页面250-262。安全输入过程之后,可以创 建虚拟机环境,其中SVMM 282可以作为系统内最高特权代码来运行,可以用来允许或拒绝 在创建的虚拟机内的操作系统或应用直接访问某些系统资源。安全输入过程需要的某些动作可能超出简单硬件实施的范围,并且相反可以方便 地使用软件模块,其中所述软件模块的执行可以默认是可信的。在一个实施方案中,通过安 全起始(SINIT)代码可以执行这些动作。这里确定三个典型动作,但这些动作不应理解为是限定性的。一个动作可能要求对各种表示系统配置关键部分的控制进行检验,以确保所 述配置支持正确的安全环境实例。在一个实施方案中,一个要求的检验可以是,芯片组240 提供的存储控制器配置不允许两个或多个不同系统总线地址接触存储页面250-262内的 相同位置。第二个动作可以是配置设备访问页面表248和设备访问逻辑247,以保护SVMM 282存储驻留拷贝使用的那些存储页面不受非处理器设备干扰。第三个动作可以是计算 和记录SVMM 282模块的身份,并且把系统控制传递给它。这里“记录(register)”是指把 SVMM282信任测量结果放入寄存器,例如放入PCR278或放入PCR279。当进行了这个最后的 动作,潜在的系统用户可以检查SVMM282的可信度。处理器或芯片组的制造商可以生成SINIT代码。为此,可以信任SINIT代码来帮 助芯片组240的安全启动。为了分配SmiT代码,在一个实施方案中,众所周知的加密散列 由全部SINIT代码构成,生成一个被称为“摘要”的值。一个实施方案生成一个160位的值 来作为摘要。然后通过在一个实施方案中由处理器制造商拥有的私钥(private key)对摘 要进行加密,以形成数字签名。当SINIT代码与相应数字签名捆绑在一起时,这个组合可以 称为SINIT授权码(SINIT-AC) 280。如下所述,SINIT-AC 280的拷贝可以在后面验证。SINIT-AC 280可以保存在系统盘或其它大容量存储器上或者保存在固定媒介 中,并且根据需要移动或复制到其它位置。在一个实施方案中,在开始安全启动过程之前, SINIT-AC 280可以移动或复制到存储页面250-262以形成SINIT-AC存储驻留拷贝。任何逻辑处理器可以开始安全启动过程,并且因而可以被称为启动逻辑处理器 (ILP)。在本实施例中,处理器202为ILP,尽管系统总线230上的任何处理器能够成为ILP。 此时,SINIT-AC280存储驻留拷贝或SVMM282存储驻留拷贝都不被认为是可信的,因为除了 其它原因之外,另外的处理器或DMA设备可以重写存储页面250-262。然后,ILP(处理器202)执行专用指令。这个专用指令可以称为安全输入(SENTER) 指令,并且可以由SENTER逻辑204支持。SENTER指令的执行可以使ILP (处理器202)在系 统总线230上发布专用总线消息,然后为随后的系统动作等待相当长的时间间隔。SENTER 执行开始之后,这些专用总线消息之一,即SENTER BUS MESSAGE在系统总线230上广播。除 了 ILP之外的那些逻辑处理器可以称为响应逻辑处理器(RLP),它们用内部非屏蔽事件响 应SENTERBUS MESSAGE。在本实施例中,RLP包括处理器212和处理器222。RLP必须各自 终止当前操作,在系统总线230上发送RLP确认(ACK)专用总线消息,然后进入等待状态。 应该注意,ILP也在系统总线230上发送它自己的ACK消息。芯片组240可以包含一对寄存器,即“EXISTS”寄存器270和“JOINS”寄存器272。 这些寄存器可以用来检验ILP和所有RLP正在适当地响应SENTER BUSMESSAGE。在一个实 施方案中,通过在逻辑处理器所进行的任何系统总线事务中把“1”写入EXISTS寄存器270 的相应位,芯片组240可以把始终掌握在系统内的所有操作逻辑处理器的情况。在本实施 方案中,系统总线230上的每个事务必须包含标识字段(field),所述字段包含逻辑处理器 标识符。在一个实施方案中,这是由物理处理器标识符和每个物理处理器内硬件执行线程 的标识符构成。例如,如果在处理器222上执行的线程在系统总线230上引起任何总线事 务,则芯片组240将在该事务中发现这个逻辑处理器标识符,并且把“ 1 ”写入EXISTS寄存 器270内的相应位置286。安全启动过程期间,当处理器222上的那个同一线程在系统总线 230上发送它自己的ACK信息时,芯片组240也将发现这个标识符,并且把“ 1 ”写入JOINS寄存器272内的相应位置288。(在图2的实施例中,为了清楚每个物理处理器图示为只带有 单个执行线程。在另外实施方案中,物理处理器可以支持多个线程,因而支持多个逻辑处理 器。)当JOINS寄存器272的内容与EXISTS寄存器270的内容匹配时,则芯片组240可以设 置ALL-JOINED标志246,该标志表示所有处理器已经适当地响应了 SENTER BUS MESSAGE。在另一实施方案中,在ALL-JOINED标志246设置之后,EXISTS寄存器270和JOINS 寄存器272可以继续有助于安全性。在ALL-JOINED标志246设置之后直到可信或安全操 作结束期间,芯片组240可以继续监控并比较相对JOINS寄存器272的总线周期。在这期 间,如果芯片组240在任何时候从逻辑处理器中发现总线事务,而所述处理器不是当前在 JOINS寄存器272内所确定的,则芯片组240可以假设这个逻辑处理器不知何故已经“出现” 晚了。这将暗示上述逻辑处理器没有参加过安全启动过程,因此可能代表攻击者(安全威 胁)。在这样的情况下,芯片组240可以适当地响应以把这个攻击者保持在安全环境之外。 在一个实施方案中,芯片组240可以在这样的情况下强制系统复位。在第二个实施方案中, 在ACK总线消息断言之后的每个事务中,通过每个逻辑处理器在系统总线上断言专用的保 留信号,可以实现类似的“晚到”处理器检测。在本实施方案中,在ALL-JOINED标志246设 置之后,如果芯片组240观察到处理器启动的总线事务没有专用的断言信号,则芯片组240 可以再次假设这个逻辑处理器不知何故已经“出现”晚了,并且可能代表攻击者。发布SENTER BUS MESSAGE 之后,ILP (处理器 202)轮询 ALL-JOINED 标志 246 以 发现所有处理器何时和是否已经用它们的ACK适当地进行了响应。如果从未设置标志246, 几种实现是可能的。在ILP或芯片组内、或其它地方的监控定时器可以使系统复位。可选 地,系统可能中止并需要操作员复位。在任一情况下,尽管系统可能不继续运行,但安全环 境断言得到保护(其中如果不是所有的处理器都参与,安全启动过程就不结束)。在正常操 作中,在短时间之后,ALL-JOINED标志246被设置,并且ILP可以确保所有其它逻辑处理器 已经进入等待状态。当ALL-JOINED标志246被设置时,为了验证和随后执行包含在SINIT-AC280内的 SINIT代码,ILP (处理器202)可以把SINIT-AC 280拷贝和关键字284移入安全存储器208。 在一个实施方案中,这个安全存储器208可以是ILP (处理器202)的内部高速缓存器,或许 按照专用模式运行。关键字284表示与私钥对应的公钥(public key),私钥用来加密包含 在SINIT-AC 280模块内的数字签名,并且关键字284用来检验数字签名和由此验证SINIT 代码。在一个实施方案中,关键字284可能已经保存在处理器内,或许作为SENTER逻辑204 的一部分。在另一实施方案中,关键字284可以保存在芯片组240的只读关键字寄存器244 内,寄存器244由ILP读取。在又一实施方案中,不是处理器就是芯片组关键字寄存器244 可以实际保存关键字284的加密摘要,其中关键字284本身包含在SINIT-AC 280模块内。 在最后这个实施方案中,ILP从关键字寄存器244中读取摘要,计算关于嵌入在SINIT-AC 280内的关键字284的等同加密散列(hash),并且比较这两个摘要以确保所提供的关键字 284是确实可信的。然后,SINIT-AC拷贝和公钥拷贝可以在安全存储器208内存在。通过使用公钥拷 贝解密包含在SINIT-AC拷贝内的数字签名,ILP现在可以验证SINIT-AC拷贝。所述解码 产生加密散列摘要的原始拷贝。如果新计算出的摘要与这个原始摘要匹配,则SINIT-AC拷 贝和它包含的SINIT代码可以认为是可信的。
经由信令等待的RLP(处理器212,处理器222)的系统总线230以及将要启动安 全操作的芯片组240,ILP现在可以发布另一专用总线消息,即SENTERCONTINUE MESSAGE。 如下所概述的那样,通过把SINIT-AC模块的加密摘要值写入安全标记276内的平台配置寄 存器272中,ILP现在可以记录SINIT-AC模块的唯一身份。通过把执行控制传递给保存在 ILP安全存储器208内的可信SINIT代码拷贝,ILP对其SENTER指令的执行现在可以终止。 可信SINIT代码然后可以执行它的系统测试和配置动作,并且依照上述“记录”的定义,可 以记录SVMM存储驻留拷贝。可以按照几种方式完成SVMM存储驻留拷贝的记录。在一个实施方案中,运行在ILP上的SENTER指令把计算出的SINIT-AC摘要写入安全标记276内的PCR 278中。随后, 可信SINIT代码可以把计算出的存储驻留SVMM摘要写入同一 PCR 278或安全标记276内 的另一 PCR 279中。如果把SVMM摘要写入同一 PCR 278中,则安全标记276用新值(SVMM 摘要)弄乱原始内容(SINIT摘要),并且把结果写回PCR278。在第一次(开始)对PCR278 的写入被限制在SENTER指令的这些实施方案中,最后的摘要可以用作系统信任根(root oftrust)ο一旦可信SINIT代码已经结束它的执行,并且已经把SVMM的身份记录在PCR内, SINIT代码就可以把ILP执行控制传递给SVMM。在典型的实施方案中,ILP执行的最初 的SVMM指令表征为SVMM的自启动例程。在一个实施方案中,ILP可以把单独的RLP JOIN MESSAGE专用总线消息发送给每个RLP,在现在执行的SVMM拷贝的监督下,使每个RLP加入 操作。根据前面这个观点,如下面图3的讨论中所概述的那样,整个系统运行在可信模式 下。现在参考图3,图中所示为依据本发明一个实施方案的示例性可信或安全软件环 境。在图3的实施方案中,可以同时加载可信或非可信软件,并且可以在单个计算机系统上 同时执行。SVMM350可选择地允许或防止来自一个或多个非可信操作系统340和非可信应 用310-330的对硬件资源380的直接访问。在上下文中,“非可信”不是必定意味着操作系 统或应用正在行为不端,但是相互作用的码的大小和多样性使得可靠断言软件正在按要求 运行变得不切实际,并且不存在干扰它执行的病毒或其它外来码。在典型的实施方案中,非 可信代码是由在当今个人计算机上可以找到的普通操作系统和应用组成的。SVMM350也可选择地允许或防止来自一个或多个可信或安全核心程序360和一个 或多个可信应用370的对硬件资源380的直接访问。可以限制上述可信或安全核心程序 360和可信应用370的大小和功能性,从而有助于在其上面完成信任分析的能力。可信应用 370可以是在安全环境中可执行的任何软件代码、程序、例程或例程组。因此,可信应用370 可以是各种应用或代码序列,或者可以是相对小的应用,例如Java程序。由能改变系统资源保护或特权的操作系统340或核心程序360正常执行的指令 或操作可以被SVMM350拦住,并且可选择地允许、部分允许或拒绝。作为实施例,在典型的 实施方案中,被SVMM350拦住的指令变成了改变由操作系统340或核心程序360正常执行 的处理器页面表的指令,这将确保在它的虚拟机范围之外所述请求不试图要求改变页面特 权。现在参考图4A,图中所示为适合于支持图3的安全软件环境的微处理器系统400 的一个实施方案。CPU A 410,CPU B 414,CPU C 418和CPU D 422可以配置附加微码或逻辑电路以支持专门指令的执行。在一个实施方案中,这个附加微码或逻辑电路可以是图2的SENTER逻辑204。这些专用指令可以支持专用总线消息在系统总线420上的发布,系统 总线420可以使这些处理器在启动安全环境期间能够适当同步。在一个实施方案中,专用 总线消息的发布可以由电路支持,例如图2的总线消息逻辑206。类似地,芯片组430可以 类似于芯片组420,并且可以支持上述系统总线420上的专用周期。物理处理器的数量可 以根据具体实施方案的实施而变化。在一个实施方案中,处理器可以是Intel Pentium 级 的微处理器。经由PCI总线446,或者可选择地,经由USB442,集成控制器电路(IDE)总线 (未图示),小型计算机系统接口(SCSI)总线(未图示),或任何其它I/O总线,芯片组430 可以与大容量存储设备连接,例如固定媒介444或可移动媒介448。固定媒介444或可移动 媒介448可以是磁盘、磁带、磁碟、磁光驱动器、CD-ROM、DVD-ROM、闪存卡,或许多其它形式 的大容量存储器。在图4A的实施方案中,四个处理器CPU A 410、CPU B 414、CPU C 418和CPU D 422图示为四个单独硬件实体。在其它实施方案中,处理器的数量可以不同。实际上,物理 上离散的处理器可以用在一个或多个物理处理器上运行的分立的硬件执行线程来替换。在 后者的情况下,这些线程拥有许多附加物理处理器的特征。为了具有一般的表达来讨论使 用多个物理处理器和多个在处理器上的线程的任何混合,表达“逻辑处理器”可以用来描述 一个物理处理器或在一个或多个物理处理器内操作的线程。因此,一个单线程处理器可以 认为是一个逻辑处理器,多线程或多核心处理器可以认为是多个逻辑处理器。在一个实施方案中,芯片组430与改进的LPC总线450连接。改进的LPC总线450 可以用来把芯片组430与安全标记454连接。在一个实施方案中,标记454可以包括由可 信计算平台联合(TCPA)设想的TPM471。现在参考图4B,图中所示为适合于支持图3的安全软件环境的另一微处理器系统 490的实施方案。与图4A的实施方案不同,CPU A 410和CPU B 414使用系统总线A 402 可以连接到芯片组428,而CPU C 418和CPU D 422使用系统总线B 404可以连接到芯片组 428。在其它实施方案中,可以使用两个以上的系统总线。在另一替代实施方案中,可以使 用点对点总线。专用指令可以支持专用总线消息在系统总线A 402和系统总线B 404上的 发布,系统总线A 402和系统总线B404可以使这些处理器在启动安全环境期间能够适当地 同步。在一个实施方案中,专用总线消息的发布可以由电路支持,例如图2的总线消息逻辑 206。在一个实施方案中,芯片组428担负维护系统总线A 402和系统总线B 404上的 一致性和相干性。如果在系统总线A 402上发送标准或专用的总线消息,芯片组428把这 个信息(适当时)反映在系统总线B 404上,反之亦然。在可替代的实施方案中,芯片组428把系统总线A 402和系统总线B 404看作独 立子系统。在系统总线A 402上发布的任何专用总线消息只应用于该总线上的处理器,类 似地,在系统总线B 404上发布的任何专用总线消息只应用于该总线上的处理器。针对系 统总线A 402建立的任何受保护的存储器只可被连接到系统总线A 402的处理器访问,而 系统总线B 404上的处理器可以被看作非可信设备。为了访问为系统总线A 402上的CPU A 410和CPU B 414建立的任何受保护的存储器,系统总线B 404上的处理器CPU C 418和 CPU D 422必须执行它们自己的SENTER过程,创建一个被记录在案的环境,该环境等同于为系统总线A402上的处理器建立的环境。现在参考图5,表示依据本发明另一实施方案,适合于支持图3的安全软件环境的 示例性微处理器系统500的示意图。与图4A的实施方案不同,每个处理器(例如CPU A 510)可以包括某些芯片组功能(例如芯片组功能593),所述芯片组功能实现,例如,存储控 制器功能和设备访问逻辑功能。由此,这些芯片组功能允许存储器(例如存储器A 502)直 接连接到处理器。其它芯片组功能可以保留在独立的芯片组530中。在系统总线520上可 以发布专用总线消息。每个处理器可以间接访问连接到其它处理器的存储器,然而,与对处理器本身存 储器的访问相比,这些访问可能相当慢。在开始SENTER过程之前,软件可以把SINIT-AC566 和SVMM574的拷贝从固定媒介544移入本地存储器504, 形成SINIT-AC556拷贝和SVMM572 拷贝。在一个实施方案中,可以选择存储器504,因为它由确定为ILP的处理器直接访问,在 图5实施例中,这是CPU B514。可选择地,SINIT-AC566和SVMM574的拷贝可以放在连接到 其它(非ILP)处理器的其它存储器中,只要ILP514能够访问那些存储器。如图2中已经 描述的那样,CPU B ILP 514通过发布SENTER指令开始安全输入过程,并且具有类似的结 果和发布的总线周期。如上结合图2所述,芯片组530可以利用EXISTS寄存器576、JOINS 寄存器580和ALL-JOINED标志584,以确定所有处理器是否已经适当地响应了 SENTER BUS MESSAGE,并且把这个信息发送给ILP。ILP (CPU B 514)可以再次把SINIT-AC556的存储驻 留拷贝连同公钥564的拷贝一起移入安全存储器560。在SINIT-AC556确认和记录后,ILP 就可以继续进行SVMM存储驻留拷贝的确认和记录。现在参考图6,表示依据本发明一个实施方案的各种操作的时线图。图6的时线表 示结合示例性系统论述的全部操作时间表,上文结合图2讨论了所述系统。当软件决定安 全或可信操作是要求的,在时间610,任何软件定位并且复制SINIT-AC280和SVMM282拷贝 用于随后的SENTER指令。在本实施例中,软件把SINIT-AC280拷贝和SVMM282拷贝加载到 一个或多个存储页面250-262中。然后选择一个处理器作为ILP,在本实施例中是处理器 202,ILP在时间612发布SENTER指令。在时间614,ILP的SENTER指令发布SENTER BUS MESSAGE616。然后,在时间628进入“等待芯片组标志”状态之前,ILP在时间618发布它本 身的 SENTER ACK 608。每个RLP,例如处理器222,通过在时间620期间完成当前指令来响应SENTER BUS MESSAGE 616。然后,RLP发布它的SENTER ACK 622,然后进入状态634,其中它等待SENTER CONTINUE MESSAGE。芯片组240花费时间624来设定JOINS寄存器272以响应在系统总线230上观察 的SENTER ACK信息。当JOINS寄存器272的内容与EXISTS寄存器270的内容匹配时,芯 片组240在时间626设定ALL-JOINED标志246。在此期间,ILP在轮询ALL-JOINED标志246时可以保持在循环状态下。当 ALL-JOINED标志246被设定,并且ILP确定ALL-JOINED标志246是在时间630设定的,然 后,ILP 可以在时间 632 期间发布 SENTER CONTINUEMESSAGE0 当 SENTER CONTINUE MESSAGE 在时间636在系统总线230上传播时,RLP可以进入“等待加入”的状态。例如,处理器222 的RLP在时间周期638期间进入“等待加入”的状态。一旦发布SENTER CONTINUE MESSAGE, ILP于是(在时间周期640内)就可以把芯片组240的关键字寄存器244的公钥和SINIT-AC的拷贝加入它的安全存储器208,以形 成所述公钥拷贝和SINIT-AC拷贝。在另一实施方案中,关键字寄存器244可以包含公钥 摘要,实际公钥可以包含在SINIT-AC内或与其包含在一起。如上结合图2所述,一旦验证 SINIT-AC的拷贝,ILP于是就可以在安全存储器208内实际执行SINIT-AC的拷贝。SINIT-AC在安全存储器208内的拷贝开始执行之后,它随后(时间周期640期间) 确认并且记录SVMM的存储驻留拷贝。SVMM的拷贝记录在安全标记276的PCR278内之后, SVMM的存储驻留拷贝本身开始执行。此时,在正在进行的时间周期650期间,SVMM操作建 立在ILP内。ILP SVMM操作最初要做的事情之一是在系统总线230上发布单独的RLPJ0IN MESSAGES。一个实施例就是处理器222的JOIN MESSAGE 644。这个消息可以包括存储器 内的位置,在该位置上RLP处理器222可以加入被记录的SVMM存储驻留拷贝的执行。可选 择地,ILP SVMM操作可能已经把存储器位置记录在芯片组或存储器内的预定位置中,一旦 接收到JOIN MESSAGE,RLP就从所述位置取回它的开始地址。在接收到处理器222的JOIN MESSAGE并且确定它的开始地址之后,在时间周期646期间,RLP处理器222跳转到这个位 置,并且加入被记录的SVMM存储驻留拷贝的执行。在所有RLP已经加入被记录的SVMM存储驻留拷贝之后,安全操作在整个微型计算 机系统200上被建立起来。现在参考图7,表示依据本发明一个实施方案的软件和其它过程块 (processblock)的流程图。为了清楚,图7只表示用于单个有代表性的RLP的过程块。在 其它实施方案中,可以存在几个响应逻辑处理器。过程700从过程块710开始,这时,逻辑处理器复制能用来由随后的SENTER指令 进行访问的SINIT-AC和SVMM模块。在这个实施例中,在过程块712中,ILP把SINIT-AC和 SVMM代码从大容量存储器加载到物理存储器内。在替代的实施方案中,任何逻辑处理器可 以这样做,而不只是ILP。如在过程块714中所注,通过执行SENTER指令,处理器成为ILP。 在过程块716中,ILPSENTER指令在过程块716中发布SENTER BUS MESSAGE。然后,ILP在 过程块718中把它本身的SENTER ACK消息发送给芯片组。如判断过程块720所示,ILP于 是进入等待状态,等待芯片组设定其ALL-JOINED标志。在每个RLP在过程块770中接收到SENTER BUS MESSAGE之后,它以当前指令的结 束来暂停执行,然后在过程块772中发布它自己的SENTER ACK0如判断过程块774所示,每 个RLP于是进入等待状态,等待从ILP到来的SENTERCONTINUE MESSAGE。当接收到SENTER ACK信息时,芯片组设定JOINS寄存器内的相应位。当JOINS寄 存器的内容等于EXISTS寄存器的内容时,芯片组设定ALL-JOINED标志,给ILP发送信号以 从判断过程块720继续进行。一旦在YES路径上离开判断过程块720,ILP于是就在过程块722中发布SENTER CONTINUE MESSAGE。这给每个RLP发送信号以从判断过程块774继续进行。如判断过程块 776所示,然后每个RLP进入第二个等待状态,等待SENTER JOIN MESSAGE。同时,ILP在过程块724中把芯片组公钥和SINIT-AC存储驻留拷贝移入它自己的 安全存储器用于安全执行。ILP在过程块726中使用所述公钥验证SINIT-AC的安全存储 驻留拷贝,然后执行它。SINIT-AC的执行可以进行系统配置和SVMM拷贝的测试,然后记录SVMM身份,最后在过程块728中开始执行SVMM。作为在过程块728中执行的动作的一部分, ILP SINIT代码可以配置存储器和芯片组的设备访问页面表248和设备访问逻辑247,以保 护SVMM 282存储驻留拷贝使用的那些存储页面不受非处理器设备的干扰,如过程块754中 所示。ILP在SVMM控制下开始执行之后,在过程块730中,ILP给每个RLP发送单独的 SENTER JOIN MESSAGE。发送 SENTER JOIN MESSAGE 之后,ILP 随后在过程块 732 中开始 SVMM操作。SENTER JOIN MESSAGE的接收使每个RLP沿着YES路径离开由判断过程块776表 示的等待状态,且在过程块780中开始SVMM操作。SENTER J0INMESSAGE可以包含SVMM入 口点,RLP在加入SVMM操作时向该入口点分支。可选择地,ILP SVMM代码可以把适当的RLP 入口点记录在系统位置内(例如在芯片组内),RLP 一旦接收到SENTER JOIN MESSAGE就重 新取回它。虽然公开的不同实施方案包括两个或多个处理器(逻辑或物理处理器),但应该 理解,这样的多个处理器和/或多个线程系统以更详细的方式进行了描述以解释增加的复 杂性,所述复杂性与使带有多个逻辑或物理处理器的系统安全有关。在复杂程度较底的系 统中可能有利的实施方案可以只使用一个处理器。在某些情况下,一个物理处理器可以是 多个线程,从而可以包括多个逻辑处理器(因此具有所述的ILP和RLP)。然而,在其它情况 下,可以使用单个处理器、单线程系统,仍然利用所公开的安全处理技术。在上述情况下,可 以没有RLP ;然而,所述安全处理技术仍然起作用来减少以未授权方式能够窃取或操纵数 据的可能性。在前述说明书中,已经参考本发明的示例性实施方案对其进行了描述。然而,显然可以对本发明进行各种修改和变化而不脱离附属权利要求书所提出的本发明更宽的本质 和范围。因此把说明书和附图看作例证性的而不是限制性的。
权利要求
一种处理器,包括逻辑,用于响应于安全环境起始指令,将安全起始软件复制到安全存储器;以及开始执行安全存储器中的安全起始软件。
2.如权利要求1所述的处理器,其中所述逻辑将安全起始软件复制到安全存储器以用 于验证。
3.如权利要求1所述的处理器,其中所述逻辑通过将控制传递给安全起始软件,以开 始安全起始软件的执行。
4.如权利要求1所述的处理器,其中所述逻辑进一步在将安全起始软件复制到安全存 储器之前,确认另一个处理器已经进入等待状态。
5.如权利要求1所述的处理器,其中所述逻辑进一步提供一所述另一处理器在安全环 境下开始执行的位置。
6.一种处理器,包括总线事务逻辑,使所述处理器仅仅响应于安全指令而发出特殊总线事务以支持安全系 统环境的起始;其中所述起始包括验证安全虚拟机监控程序并开始安全虚拟机监控操作。
7.如权利要求6所述的处理器,其中所述特殊总线事务将传递信息以支持安全系统环 境的起始。
8.如权利要求7所述的处理器,其中所述信息包括一密钥。
9.一种方法,包括由第一处理器执行安全环境起始指令,包括将安全起始软件复制到安全存储器;以及由所述第一处理器响应于安全环境起始指令,执行安全存储器中的安全起始软件。
10.如权利要求9所述的方法,还包括响应于所述安全环境起始指令,验证所述安全 存储器中的安全起始软件。
11.如权利要求10所述的方法,其中响应于所述安全环境起始指令验证所述安全存储 器中的安全起始软件包括使用所述安全起始软件的数字签名。
12.如权利要求11所述的方法,其中所述安全起始软件的数字签名是通过所述安全起 始软件的散列来生成的。
13.如权利要求12所述的方法,其中所述安全起始软件的数字签名是通过所述安全起 始软件的散列来生成的。
14.如权利要求9所述的方法,还包括在执行了所述安全起始软件之后,执行安全虚 拟机监控程序。
15.如权利要求9所述的方法,还包括在将安全起始软件复制到安全存储器之前,确 认第二处理器已经进入等待状态。
16.如权利要求15所述的方法,还包括提供一所述第二处理器在安全环境下开始执 行的位置。
17.一种系统,包括第一处理器,用于响应于安全环境起始指令,将安全起始软件复制到安全存储器;以及开始执行安全存储器中的安全起始软件;以及第二处理器,在验证了所述安全存储器中的安全起始软件之后,从由所述第一处理器 提供的一位置开始在安全环境下的执行。
18.如权利要求17所述的系统,其中所述第一处理器进一步在将安全起始软件复制到 安全存储器之前,确认所述第二处理器已经进入等待状态。
19.如权利要求17所述的系统,还包括安全虚拟机监控程序,在执行了所述安全起始 软件之后开始执行。
20.一种机器可读介质,存储有安全环境起始指令,所述安全环境起始指令在经由一处 理器执行时,使得所述处理器将安全起始软件复制到安全存储器;以及 开始执行安全存储器中的安全起始软件。
全文摘要
描述了在微处理器系统内启动安全操作的方法和装置。在一个实施方案中,一个启动逻辑处理器通过停止其它逻辑处理器的执行,然后把起始和安全虚拟机监控软件载入存储器,来启动该过程。启动处理器然后把起始软件载入安全存储器进行验证和执行。起始软件然后在安全系统操作之前验证和记录安全虚拟机监控软件。
文档编号G06F21/22GK101833632SQ20101016198
公开日2010年9月15日 申请日期2003年3月20日 优先权日2002年3月29日
发明者戴维·格劳罗克, 詹姆斯·萨顿二世 申请人:英特尔公司