用于执行安全环境初始化指令的系统和方法

文档序号:6511591阅读:193来源:国知局
用于执行安全环境初始化指令的系统和方法
【专利摘要】描述了在微处理器系统内初始化安全操作的方法和装置。在一个实施方案中,一个初始化逻辑处理器通过停止其它逻辑处理器的执行,然后把初始化和安全虚拟机监控软件载入存储器,来初始化该过程。初始化处理器然后把初始化软件载入安全存储器进行验证和执行。初始化软件然后在安全系统操作之前验证和记录安全虚拟机监控软件。
【专利说明】用于执行安全环境初始化指令的系统和方法
[0001]本申请是PCT国际申请号为PCT/US03/08762、国际申请日为2003年3月20日、母案的中国国家申请号为03811454.2、分案申请号为201010161984.3、题为“用于执行安全环境起始指令的系统和方法”的申请的分案申请的分案申请。
【技术领域】
[0002]本发明通常涉及微处理器系统,更具体地说,涉及可以在可信或安全环境中运行的微处理器系统。
【背景技术】
[0003]在本地或远程微型计算机上执行的金融和个人事务的增加量已经推动了“可信”或“安全”微处理器环境的建立。这些环境试图要解决的问题是个人隐私的泄露或者数据被破坏或滥用。用户不想公开他们的私人数据。他们也不想不当的事务改变或使用他们的数据。这样的例子包括非故意地泄露医疗记录或者从在线银行或其它存款处因为电子方式失窃资金。类似地,内容供给者设法保护数字内容(例如,音乐、其它音频、视频或其它类型的一般数据)不会在未经授权的情况下被复制。
[0004]现有的可信系统可以利用一套完全封闭的可信软件。这个方法实施起来相对简单,但缺点是不允许同时使用市场上可买到的普通操作系统和应用软件。这个缺点限制了对上述可信系统的认可。
【专利附图】

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