用通电自检基本输入输出系统检测对存储器中代码的修改的制作方法

文档序号:6435015阅读:143来源:国知局
专利名称:用通电自检基本输入输出系统检测对存储器中代码的修改的制作方法
技术领域
本发明涉及可信和安全计算领域,尤其涉及用通电自检(POST)基本输入/输出系统(BIOS)检测对置于存储器中的代码,例如继承BIOS,所做的修改。
背景技术
随着在日常的商务交易中使用个人计算机系统,计算机的安全问题越来越重要。不安全的个人计算机禁止进行电子商务(e-buisiness),因为用户不愿意(这样是有理由的)向易受侵入者和病毒攻击的系统传输高度个人和敏感的信息。许多个人计算机(PC)制造商已经取得了各自的进展,通过在新型号中增加“智能卡”或者嵌入式安全芯片,来朝提高安全性的方向发展,但是,PC工业仍然缺乏协调一致的努力来开发安全技术,这妨碍了这样的技术在各制造商之间一致地、可兼容地发展。
由于意识到了这样的潜在风险,及其妨碍电子商务的负面影响,在主要PC厂商之间形成了一个开放的联盟,来开发和提出采用硬件和软件技术在平台层次加强安全性的技术的标准。该开放联盟就是通常所知的可信计算平台联盟(Trusted Computing Platform Alliance(TCPA)(当前也称为可信计算联盟(Trusted Computing Group(TCG)),但是在这里称为TCPA),已经提出了一种包括新的硬件、BIOS和操作系统规范的标准,因此PC厂商能够基于共同的工业标准提供更为可信和安全的PC平台。该标准的细节可见TCPA PC SpecificImplementation Specification,1.00 RC 1(Aug.16,2001)(http://www.trustedcomputinggroup.org),该文献在此引为参考。
在这里简单地讨论一下计算系统的引导过程是合适的。计算系统的运行要求有基本输入/输出系统(BIOS)。BIOS是控制基本硬件操作比如与硬盘驱动器、软盘驱动器和键盘的交互作用的代码。
当计算机重置或者初次开机时,开始一个引导过程。首先,执行通电自检(POST)。POST是使用保存在存储器中的初始化设置来配置系统的初始化代码。POST配置了系统之后,就是BIOS来使用POST配置的硬件来控制硬件的基本操作。在将系统的控制权交付给操作系统时完成引导过程。为了完成引导过程,POST必须结束其执行。
POST和BIOS都可以在存储设备比如闪存中保存为单个闪存映像(flash image)。该映像可以被称为“引导代码”。如果POST和BIOS的闪存映像被破坏,则无法完成系统的引导。
为了从有缺陷的闪存映像错误恢复,系统可以包括一个引导模块。一个引导模块可以是指闪存中的一个区域,该区域包含被称为“引导模块代码”的代码,所述代码包括足以将计算机系统启动并从引导介质或者可引导的设备读取恢复映像的一段代码。换句话说,引导模块代码可以被视为一个自主的“迷你BIOS”,其代码足以从引导介质或者类似介质读出新的BIOS映像。该引导模块代码可以在计算机加电或者重置时被执行。该引导模块代码还可以,如下面将要讨论的,在将计算机从睡眠状态唤醒时被执行。
图1的框图用于描绘一个根据TCPA标准的TCPA计算系统100。如图所示,该PC架构包括系统IC、平台20、主板或者平板30以及可信组成模块(trusted building block(TBB))40。系统10包括平台20和所有后引导部件(post-boot components)12。后引导部件12可以包括初始程序装入(IPL)代码13、操作系统14(包括为了用户或者代表用户执行操作的整个实体)、驱动程序15、服务程序16、应用程序17以及外设18例如显示器、键盘。平台20与用户之间提供和接收信息。平台20包括主板30和连接到主板30的外设22。外设22可以包括添加插接板20、机箱21、硬盘23以及软盘24。平台20还可以包括电源19。
主板30是由制造商提供的,包括一个或者多个CPU、存储器33、电可擦可编程只读存储器(EEPROM)35以及所有主要外设34(也就是与主板30直接连接、直接相互作用的设备)。另外,主板30包括所有BIOS36(存储在TBB40之外的闪存42中的POST BIOS36)、嵌入式固件38以及TBB40。TBB40是可信平台的中心,包括保存引导模块代码50的闪存42的一部分,所述引导模块代码包括“用于测量的信任核心根”(Core Root of Trust for Measurement(CRTM))52。TBB40还包括一个可信平台模块(Trusted Platform Module(TPM))44,以及CRTM52与TPM44到主板30的可信连接46。
根据TCPA规范,CRTM52和TPM44是主板30上仅有的可信部件,也就是,它们推定是安全的,并被隔离起来而不会被第三方设备供应商或者软件“窜改”。只有获得授权的平台制造商(或者其代理)才能更新或者修改其中所包含的代码。CRTM52是在平台重置时获得对平台20的控制权的TBB40的可执行部件。这样,对于所有类型的平台重置,CPU32总是开始执行引导模块代码50内的CRTM代码52。对平台的信任系基于CRTM52,对所有测量的信任系基于其完整性。
可信任平台的基本前提是确保不可信的设备或者软件没有被装入系统中。信任是在由平台重置启动的前引导状态(pre-boot state)期间建立的。平台重置可以是冷启动(加电)、硬件重置或者一般由用户的键盘输入导致的热启动。在平台重置之后,CPU32用CRTM52平台初始化代码执行代码。信任链(chain of trust)始于CRTM52。
在该架构中,BIOS包括引导模块代码50和POST BIOS36。引导模块代码50和POST BIOS是独立的部件,可以各自更新而相互无关。引导模块代码50位于闪存42的在TBB40内的一部分中,而POST BIOS36位于闪存42的在TBB40之外的另一部分中。这样,制造商或者第三方供货商可以更新、修改或者维护POST BIOS36,而只有制造商才能修改或者更新引导模块代码50。
如前所述,CRTM52和TPM44推定为可信的。这样,在平台重置之后,执行引导模块代码50中的CRTM52,CRTM52测量将要向其移交控制权的实体(在这里的情况下是POST BIOS36)。“测量一个实体”的意思是散列(混编,hashing)该实体中的代码,产生该代码的日志,然后将其扩展到TPM44中的平台配置寄存器(PCR)48中。
TPM44包括多个PCR 48(48a-d),它们中的一部分被指定为前引导环境(pre-boot environment),被总称为引导PCR48a。每一个引导PCR48a专用于收集与引导序列的特定阶段相关的具体信息。例如,一个引导PCR48a(PCR
)可以保存来自CRTM52、POST BIOS36以及所有物理上连接到主板30的固件38的测量结果。
测量了POST BIOS36之后,将控制权交给POST BIOS36,或者然后继续引导系统,确保硬件设备能够运行。POST BIOS36可以在POST操作期间将保存在TBB40内的闪存42中的代码(这里称为“继承BIOS代码”)移动到存储器33。继承BIOS代码可以是指提供特定核心功能比如键盘和基本视频支持的代码。继承BIOS代码可以被放置在存储器33中的指定位置,比如E000:0和F000:0地址段(在原始个人计算机上BIOS的地址),或者在存储器地址空间的顶端。另外,POST BIOS36可以从闪存42到存储器33移动用于支持继承BIOS代码的功能的代码,比如用于USB键盘操作的通用串行总线(USB)接口支持代码,以及用于电源管理例程的代码例如高级配置和电源接口(AdvancedConfiguration and Power Interface(ACPI))代码。这些代码可以存储在存储器33的存储空间中与继承BIOS代码的位置不同的位置。
另外,一旦POST BIOS36获取控制权,它就负责测量它将向其移交控制权的实体。随着POST BIOS36在引导序列中的进展,引导PCR48a中的值在测量实体的时候发生变化。
在引导到操作系统(OS)14时,操作系统14通过比较引导PCR48a中的值与操作系统14所知的预先计算的值,来核实平台20的可信度。如果所述值匹配,则操作系统14确信引导是安全的,平台是可信的。系统100然后就可以始于了。如果所述值不匹配,则操作系统14得到可能存在破坏的警告,然后操作系统14可以采取措施来重建信任。
在系统100变为可用之后,系统100在不活动期间可以进入一种通常称为“睡眠状态”的状态。“睡眠状态”可以是指降低能耗的一种状态。
例如,在称为“S3”睡眠状态的状态下,系统可以只是使用电能来确保其存储器中的内容保持有效。系统100可以在一段时间不活动之后进入操作睡眠模式。在进入操作睡眠模式时,系统100的状态可以被保存在一个易失性存储器例如随机存取存储器(RAM)中。例如,在操作睡眠模式下,保存系统状态信息的寄存器内容可以被存储在易失性存储器中。
在存在诸如用户击键、收到电子邮件、传真等事件时,睡眠中的计算机系统可以被唤醒或者恢复。也就是,在存在唤醒事件时,计算机系统脱离操作睡眠模式,恢复正常操作状态。
在从睡眠状态唤醒系统100时,可以要求系统100的用户提供授权,比如口令,以使系统100被唤醒。在系统100唤醒期间,引导模块代码50可以访问继承BIOS代码以及支持继承BIOS代码所需的代码例如ACPI代码、USB接口支持代码,以唤醒系统100。
但是,某些程序,比如病毒,可能修改继承BIOS代码或者其他代码例如用于支持继承BIOS代码的ACPI代码、USB接口支持代码的内容,如果这些代码没有被存储在安全区中(例如在TBB40内)而是被存储在非安全区例如存储器33中的话。例如,特洛伊木马程序可能被植入继承BIOS代码中,以获取用户在唤醒系统100时输入的硬文件(hardfile)口令击键。在获取口令之后,另一个用户就可以访问该系统的操作系统,从而移走所述硬文件的内容以存储到另一个系统中。
但是,如果在脱离睡眠状态之前检测到对所述继承BIOS代码或者用于支持继承BIOS代码的代码的修改,则可以防止系统被唤醒,从而防止病毒获取口令击键。
因此,在现有技术中,需要在脱离睡眠状态时检测对系统引导之后的继承BIOS代码或者用来支持继承BIOS代码的代码的修改。

发明内容
上面所概括的问题在某些实施方式中可以至少部分被解决在POST操作期间,使POST BIOS测量继承BIOS代码和用来支持继承BIOS代码的代码,并将测量结果保存到一个安全位置。在POST操作期间,所述继承BIOS代码和用来支持继承BIOS代码的代码可以由POST BIOS保存在存储器中。在POST操作完成、操作系统被启动之后,系统可以在活动状态下运行。在一段时间的不活动之后,系统可以进入睡眠状态。在系统进入睡眠状态之后,当系统接收到唤醒事件时,引导模块代码可以测量存储器中的所述继承BIOS代码和用来支持继承BIOS代码的代码。引导模块代码可以比较测量结果与POSTBIOS在安全位置保存的值。如果测量结果与POST BIOS在安全位置保存的值不相等,则探测到了对继承BIOS代码和/或用来支持继承BIOS代码的代码的修改。
在本发明的一个实施例中,用POST BIOS探测对置于存储器中的代码的修改的方法可以包括启动POST操作的步骤。该方法还可以包括从闪存的位于一个安全区中的部分检索出代码的步骤。该方法还可以包括测量所检索出来的代码以产生第一测量结果。该方法还可以包括将所述第一测量结果保存在所述闪存的位于所述安全区中的部分中。该方法还可以包括将所述检索出来的代码保存在位于非安全区中的存储器中。该方法还可以包括,在接收到唤醒事件后,测量位于所述非安全区中的存储器中的所检索出来的代码,产生第二测量结果。该方法还可以包括,如果所述第一测量结果不等于所述第二测量结果,则指出保存在所述存储器中的所检索出来的代码被修改了。
上面非常概要地勾勒了本发明的一个或者多个实施例的特征和技术上的优点,以便在下面可以更好地理解本发明的详细说明。下面对构成本发明的权利要求的主题的本发明的另外的特征和优点详加说明。


结合附图阅读以下的详细说明可以更好地理解本发明。附图中图1图解了基于可信计算性能联盟(Trusted ComputingPerformance Alliance(TCPA))的计算系统中本发明的一个实施例;
图2是根据本发明的一个实施例,在POST操作期间用POSTBIOS探测对置于存储器中的代码的修改的方法的流程图。
具体实施例方式
本发明包括一种方法、计算机程序产品和系统,用于在POST操作期间用POST BIOS探测对置于存储器中的代码的修改。在本发明的一个实施例中,POST BIOS可以在POST操作期间测量继承BIOS代码和用来支持继承BIOS代码的代码,并将测量结果保存在一个安全位置,例如可信组成模块中的闪存模块、在操作系统启动之前能够被锁定以防止访问的EEPROM模块或者TPM模块。所述继承BIOS代码和用来支持继承BIOS代码的代码可以在POST操作期间由POST BIOS保存在存储器中。在POST操作完成后,启动操作系统,系统可以在活动状态下运行。在一段时间不活动之后,系统可以进入睡眠状态。在系统进入睡眠状态后,如果系统接收到唤醒事件,引导模块代码可以测量保存在存储器中的所述继承BIOS代码和用来支持继承BIOS代码的代码。然后,所述移动模块代码可以比较测量结果与POST BIOS36保存在所述安全位置的值。如果测量结果与POST BIOS保存在所述安全位置的值不相等,则是探测出了对继承BIOS代码和/或用来支持继承BIOS代码的代码的修改。
尽管对本发明的描述参考的是TCPA计算系统,但是应当注意,本发明可以应用于任何这样的计算系统在POST操作期间,POSTBIOS将代码保存在存储器的非安全区中。还应注意,将本发明的原理应用于这样的系统的实施方式也在本发明的范围之内。
还应注意,尽管对本发明的说明参照了继承BIOS代码和用来支持继承BIOS代码的代码,但是本发明的原理可以应用于在POST操作期间由POST BIOS置于存储器的非安全区中的任何代码。还应注意,将本发明的原理应用于这样的代码的实施方式也在本发明的范围之内。
在下面的说明中,提供了大量的细节以便对本发明有透彻的理解。但是,对于本领域普通技术人员来说显然的是,本发明的实施可以没有这些具体细节。在其他情况下,用框图的形式图示了公知的电路,以免不必要的细节使本发明变得不明显。在很大的程度上,省略了有关定时(同步)等的细节,这是由于这样的细节对于完整地理解本发明来说是不必要的,并且在本领域普通技术人员的技能范围之内。
如背景技术部分所述,某些程序,比如病毒,可以修改继承BIOS代码或者用于支持继承BIOS代码的其他代码例如ACPI代码、USB接口支持代码,因为这些代码没有被保存在安全区中(例如TBB40内)(图1),而是被保存在非安全区例如存储器33中(图1)。例如,特洛伊木马程序可能被植入继承BIOS代码中,以获取用户在唤醒系统100时输入的硬文件(hardfile)口令击键(图1)。在获取口令之后,另一个用户就可以访问该系统的操作系统,从而移走所述硬文件的内容以存储到另一个系统中。但是,如果在脱离睡眠状态之前检测到对所述继承BIOS代码或者用于支持继承BIOS代码的代码的修改,则可以防止系统被唤醒,从而防止病毒获取口令击键。因此,在现有技术中,需要在脱离睡眠状态时检测对系统引导之后的继承BIOS代码或者用来支持继承BIOS代码的代码的修改。下面结合图2描述在脱离睡眠状态时检测对系统引导之后的继承BIOS代码或者用来支持继承BIOS代码的代码的修改的方法。
在讨论图2之前,请注意TCPA计算系统100(图1)包括连接到存储器33(图1)以及闪存42(图1)的位于存储POST BIOS36(图1)的TBB40(图1)之外的一部分的CPU32(图1)。另外,CPU32被连接到TBB40,后者包括闪存42的存储引导模块代码50(图1)的一部分。CPU32可以被配置为执行可以被装载到存储器33中的引导模块代码50和POST BIOS36的指令。在图2中,这些指令被描述为由引导模块代码或者POST BIOS36分别执行的步骤。还应注意,CPU32还可以被配置为执行在探测对继承BIOS代码或者用来支持继承BIOS代码的代码的修改时涉及的存储器33中载入的其他的指令,例如启动POST操作、引导到操作系统、使系统进入睡眠状态。
本发明的实施方式包括被编程为执行这里所描述的方法的计算机系统,以及计算机程序产品。根据计算机系统的实现方式,用于执行所述方法的指令组驻留于总体上按照上述配置的一个或者多个计算机系统的存储器例如存储器33中。直到被TCPA计算系统100需要之前,所述指令组可以作为计算机程序产品存储在另一计算机存储器中。另外,所述计算机程序产品也可以被存储在另一台计算机中,在需要时通过网络或者外部网络比如因特网被传输到用户工作站。本领域的普通技术人员理解,指令组的物理存储器可以在物理上改变存储指令组的介质,以便介质承载计算机可读的信息。所述改变可以是电的、磁的、化学的或者其他物理变化。
图2在POST操作期间用POST BIOS探测对置于存储器中的代码的修改的方法。
图2是根据本发明的一个实施例,在POST操作期间,用POSTBIOS36(图1)探测对置于存储器33(图1)中的代码,例如继承BIOS代码、ACPI代码和USB接口支持代码,的修改的方法。
见图2,并结合图1。在步骤201,启动POST操作。POST是用保存在存储器中的初始化设置来配置系统100的初始化代码。
在步骤202,POST BIOS36从闪存42的在TBB40内的部分检索出继承BIOS代码和用来支持继承BIOS代码的代码。由于继承BIOS代码和用来支持继承BIOS代码的代码被保存在闪存42的位于TBB40内的部分中,这些代码位于安全的位置。安全位置可以是指被隔离开而不能被第三方设备供应商或者软件“窜改”的区域。
在步骤203,POST BIOS36测量所检索出来的代码(继承BIOS代码和用来支持继承BIOS代码的代码)。这里所说的测量是指对代码进行散列(hashing)。在步骤204,将测量结果保存在一个安全区中。在一个实施例中,可以用加密算法对测量结果加密,并保存在闪存42的位于TBB40内的部分中。加密在本领域中是公知的,因此为了简明起见在此不详细描述。在另一种实施例中,测量结果可以被保存在可以被锁定的EEPROM35中,例如可以在存储测量结果时在EEPROM35上设置一个硬件位,从而使EEPROM35不能被访问。在执行引导模块代码50时,例如在收到唤醒事件时,可以重置EEPROM35上的硬件位,从而使EEPROM35可被引导模块代码50访问。在另一种实施方式中,所述测量结果可以被保存在TPM模块44内。
在步骤205,POST BIOS36在存储器33中保存继承BIOS代码和用来支持继承BIOS代码的代码。
在步骤206,完成POST操作。在步骤207,系统100引导到操作系统13。在步骤208,系统100被激活而可用。
在步骤209,系统100进入睡眠状态。在不活动期间,系统100可以进入睡眠状态以节电,如上所述。
在步骤210,系统100接收到一个唤醒事件。一个唤醒事件可以是,例如,用户的击键,或者接收到电子邮件。
在步骤211,引导模块代码50测量存储器33中的继承BIOS代码和用来支持继承BIOS代码的代码。在接收到唤醒事件之后的初始阶段,引导模块代码50可以测量存储器33中的继承BIOS代码和用来支持继承BIOS代码的代码。
在步骤212,引导模块代码50将步骤211中的测量结果与保存在安全位置比如闪存42的在TBB40内的部分、EEPROM模块35、TPM模块44中的、由POST BIOS36在步骤203在POST操作期间对继承BIOS代码和用来支持继承BIOS代码的代码进行的测量结果的值进行比较。在一种实施方式中,如上所述,继承BIOS代码和用来支持继承BIOS代码的代码的测量结果可以被保存在可被锁定的EEPROM35中,比如在存储所述测量结果时设置EEPROM35上的一个硬件位,从而使EEPROM35不可访问。在执行引导模块代码50时,比如收到唤醒事件时,可以重置EEPROM35上的硬件位,从而使EEPROM35可被引导模块代码50访问。引导模块代码50然后就能够读出在步骤203在POST操作期间由POST BIOS36对继承BIOS代码和用来支持继承BIOS代码的代码进行的测量结果。
如果步骤211的测量结果等于保存在安全位置例如闪存42的在TBB40内的部分的、由POST BIOS36在步骤203在POST操作期间对继承BIOS代码和用来支持继承BIOS代码的代码进行的测量结果的值,那么,在步骤213,引导模块代码50使用唤醒系统100的正常处理来唤醒系统100。
但是,如果步骤211的测量结果不等于保存在安全位置比如闪存42的在TBB40内的部分的、由POST BIOS36在步骤203在POST操作期间对继承BIOS代码和用来支持继承BIOS代码的代码进行的测量结果的值,那么,在步骤214,引导模块代码50指出对继承BIOS代码和/或用来支持继承BIOS代码的代码进行了修改。例如,引导模块代码50可以向系统100的用户发出一个出错消息,指出存储器33被窜改了。
在步骤215,引导模块代码50重启系统100,从而将继承BIOS代码和用来支持继承BIOS代码的代码恢复到其正常值。
注意,方法200可以包括其他的或者另外的步骤,这些步骤为了简明起见没有描述。还要注意,方法200可以按照与图示不同的顺序被执行,图2所示的顺序只不过是为了说明问题。还应注意,方法200中的某些步骤可以基本上同时执行。
尽管对所述系统、方法和计算机程序产品的说明结合了几个实施例,但是不是要将本发明限定于这里所给出的特定形式。相反,本发明应当覆盖所附权利要求所限定的合理地被包括在本发明的实质范围内的各种变型、修改和等效方案。还应注意,标题也只是用于内容组织的目的而不是用来限定说明书或者权利要求的范围。
权利要求
1.一种用通电自检(POST)基本输入/输出系统(BIOS)检测对置于存储器中的代码的修改的方法,包括下列步骤启动所述POST操作;从闪存中检索出代码;测量所述检索出来的代码,生成第一测量结果;将所述第一测量结果保存到一个安全区中;将所述检索出来的代码保存到位于非安全区的存储器中;在接收到一个唤醒事件后测量保存在所述非安全区中的所述存储器中的所述检索出来的代码,产生第二测量结果;如果所述第一测量结果不等于所述第二测量结果,则指出保存在所述存储器中的所述检索出来的代码被修改了。
2.如权利要求1所述的方法,还包括下属步骤如果所述第一测量结果等于所述第二测量结果,则唤醒系统。
3.如权利要求1所述的方法,其中,所述指示包括错误消息。
4.如权利要求1所述的方法,还包括下述步骤重启系统,从而将所述检索出来的代码恢复到其正常值。
5.如权利要求1所述的方法,其中,所述检索出来的代码包括下述代码中的一个或者多个继承BIOS代码,以及用来支持所述继承BIOS代码的代码。
6.如权利要求5所述的方法,其中,所述用来支持所述继承BIOS代码的代码包括下述代码中的一个或者多个通用串行总线(USB)接口支持代码,以及用于电源管理例程的代码。
7.如权利要求1所述的方法,其中,所述安全区位于系统的可信组成模块中。
8.如权利要求1所述的方法,其中,所述安全区包括可锁定的电可擦除可编程只读存储器(EEPROM)模块。
9.一种实现在机器可读介质中的计算机程序产品,用于通过通电自检(POST)基本输入/输出系统(BIOS)检测对存储器中的代码的修改,包括下列编程步骤启动所述POST操作;从闪存中检索出代码;测量所述检索出来的代码,生成第一测量结果;将所述第一测量结果保存到一个安全区中;将所述检索出来的代码保存到位于非安全区的存储器中;在接收到一个唤醒事件后测量保存在所述非安全区中的所述存储器中的所述检索传来的代码,产生第二测量结果;如果所述第一测量结果不等于所述第二测量结果,则指出保存在所述存储器中的所述检索出来的代码被修改了。
10.如权利要求9所述的计算机程序产品,还包括下述编程步骤如果所述第一测量结果等于所述第二测量结果,则唤醒系统。
11.如权利要求9所述的计算机程序产品,其中,所述指示包括错误消息。
12.如权利要求9所述的计算机程序产品,还包括下述编程步骤重启系统,从而将所述检索出来的代码恢复到其正常值。
13.如权利要求9所述的计算机程序产品,其中,所述检索出来的代码包括下述代码中的一个或者多个继承BIOS代码,以及用来支持所述继承BIOS代码的代码。
14.如权利要求13所述的计算机程序产品,其中,所述用来支持所述继承BIOS代码的代码包括下述代码中的一个或者多个通用串行总线(USB)接口支持代码,以及用于电源管理例程的代码。
15.如权利要求9所述的计算机程序产品,其中,所述安全区位于系统的可信组成模块中。
16.如权利要求9所述的计算机程序产品,其中,所述安全区包括可锁定的电可擦除可编程只读存储器(EEPROM)模块。
17.一种系统,包括存储器;连接到所述存储器的处理器;连接到所述处理器的闪存的第一部分,其中,所述闪存的该第一部分包括通电自检(POST)基本输入/输出系统(BIOS)代码;以及连接到所述处理器的可信组成模块(TBB),其中,该TBB被配置为确保所述系统的完整性,其中所述TBB包括所述闪存的第二部分,其中,所述TBB中所述闪存的该第二部分包括引导模块代码,其中,该引导模块代码包括用于重置所述系统的代码;以及在POST操作期间要由所述POST BIOS代码从所述闪存的所述第二部分移动到所述存储器的代码;其中,响应于所述POST BIOS代码的所述处理器包括用于在所述POST操作期间从所述闪存的所述第二部分检索出所述代码的电路;用于测量所述检索出来的代码以生成第一测量结果的电路;用于将所述第一测量结果保存到一个安全区中的电路;用于将所述检索出来的代码保存到所述存储器中的电路;并且,其中,响应于所述引导模块代码的所述处理器包括用于在接收到一个唤醒事件后测量保存在所述存储器中的所述检索传来的代码以产生第二测量结果的电路;以及如果所述第一测量结果不等于所述第二测量结果,则指出保存在所述存储器中的所述检索出来的代码被修改了的电路。
18.如权利要求17所述的系统,其中,响应于所述引导模块代码的所述处理器还包括如果所述第一测量结果等于所述第二测量结果,则唤醒所述系统的电路。
19.如权利要求17所述的系统,其中,所述指示包括错误消息。
20.如权利要求17所述的系统,其中,响应于所述引导模块代码的所述处理器包括如果所述第一测量结果不等于所述第二测量结果,则重启所述系统从而将所述检索出来的代码恢复到其正常值的电路。
21.如权利要求17所述的系统,其中,所述检索出来的代码包括下述代码中的一个或者多个继承BIOS代码,以及用来支持所述继承BIOS代码的代码。
22.如权利要求21所述的系统,其中,所述用来支持所述继承BIOS代码的代码包括下述代码中的一个或者多个通用串行总线(USB)接口支持代码,以及用于电源管理例程的代码。
23.如权利要求17所述的系统,其中,所述安全区位于所述TBB中。
24.如权利要求17所述的系统,还包括连接到所述处理器的可锁定的电可擦除可编程只读存储器(EEPROM)模块,其中,所述安全区包括所述可锁定的EEPROM模块。
全文摘要
本发明涉及用通电自检基本输入输出系统检测对存储器中代码的修改,具体提供了在POST操作期间用POST BIOS检测对置于存储器中的代码的修改的方法、计算机程序产品和系统。POST BIOS可在POST操作期间测量继承BIOS代码和支持继承BIOS代码的代码,将测量结果保存到安全位置。在系统在活动状态下运行之后,在一段时间的不活动之后,系统可进入睡眠状态。在系统接收到唤醒事件之后,引导模块代码可测量保存在存储器中的继承BIOS代码和支持继承BIOS代码的代码。引导模块代码可比较该测量结果与POSTBIOS保存在安全位置的值。如果测量结果不等于保存在安全位置的值,则表明检测到了对继承BIOS代码和/或支持继承BIOS代码的代码的修改。
文档编号G06F1/00GK1627260SQ200410087979
公开日2005年6月15日 申请日期2004年10月26日 优先权日2003年12月12日
发明者戴维·卡罗尔·查里奈尔, 约瑟夫·怀恩·弗里曼, 兰戴尔·斯科特·斯普林菲尔德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1