CN1323354C - 用通电自检基本输入输出***检测对存储器中代码的修改 - Google Patents
用通电自检基本输入输出***检测对存储器中代码的修改 Download PDFInfo
- Publication number
- CN1323354C CN1323354C CNB2004100879797A CN200410087979A CN1323354C CN 1323354 C CN1323354 C CN 1323354C CN B2004100879797 A CNB2004100879797 A CN B2004100879797A CN 200410087979 A CN200410087979 A CN 200410087979A CN 1323354 C CN1323354 C CN 1323354C
- Authority
- CN
- China
- Prior art keywords
- code
- measurement result
- storer
- bios
- post
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及用通电自检基本输入输出***检测对存储器中代码的修改,具体提供了在POST操作期间用POST BIOS检测对置于存储器中的代码的修改的方法、计算机程序产品和***。POST BIOS可在POST操作期间测量继承BIOS代码和支持继承BIOS代码的代码,将测量结果保存到安全位置。在***在活动状态下运行之后,在一段时间的不活动之后,***可进入睡眠状态。在***接收到唤醒事件之后,引导模块代码可测量保存在存储器中的继承BIOS代码和支持继承BIOS代码的代码。引导模块代码可比较该测量结果与POSTBIOS保存在安全位置的值。如果测量结果不等于保存在安全位置的值,则表明检测到了对继承BIOS代码和/或支持继承BIOS代码的代码的修改。
Description
技术领域
本发明涉及可信和安全计算领域,尤其涉及用通电自检(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包括所有BIOS 36(存储在TBB 40之外的闪存42中的POST BIOS 36)、嵌入式固件38以及TBB 40。TBB 40是可信平台的中心,包括保存引导模块代码50的闪存42的一部分,所述引导模块代码包括“用于测量的信任核心根”(Core Root of Trust for Measurement(CRTM))52。TBB 40还包括一个可信平台模块(Trusted Platform Module(TPM))44,以及CRTM 52与TPM 44到主板30的可信连接46。
根据TCPA规范,CRTM 52和TPM 44是主板30上仅有的可信部件,也就是,它们推定是安全的,并被隔离起来而不会被第三方设备供应商或者软件“窜改”。只有获得授权的平台制造商(或者其代理)才能更新或者修改其中所包含的代码。CRTM 52是在平台重置时获得对平台20的控制权的TBB 40的可执行部件。这样,对于所有类型的平台重置,CPU 32总是开始执行引导模块代码50内的CRTM代码52。对平台的信任系基于CRTM 52,对所有测量的信任系基于其完整性。
可信任平台的基本前提是确保不可信的设备或者软件没有被装入***中。信任是在由平台重置启动的前引导状态(pre-boot state)期间建立的。平台重置可以是冷启动(加电)、硬件重置或者一般由用户的键盘输入导致的热启动。在平台重置之后,CPU 32用CRTM52平台初始化代码执行代码。信任链(chain of trust)始于CRTM 52。
在该架构中,BIOS包括引导模块代码50和POST BIOS 36。引导模块代码50和POST BIOS是独立的部件,可以各自更新而相互无关。引导模块代码50位于闪存42的在TBB 40内的一部分中,而POST BIOS36位于闪存42的在TBB 40之外的另一部分中。这样,制造商或者第三方供货商可以更新、修改或者维护POST BIOS 36,而只有制造商才能修改或者更新引导模块代码50。
如前所述,CRTM 52和TPM 44推定为可信的。这样,在平台重置之后,执行引导模块代码50中的CRTM 52,CRTM 52测量将要向其移交控制权的实体(在这里的情况下是POST BIOS 36)。“测量一个实体”的意思是散列(混编,hashing)该实体中的代码,产生该代码的日志,然后将其扩展到TPM 44中的平台配置寄存器(PCR)48中。
TPM 44包括多个PCR 48(48a-d),它们中的一部分被指定为前引导环境(pre-boot environment),被总称为引导PCR 48a。每一个引导PCR 48a专用于收集与引导序列的特定阶段相关的具体信息。例如,一个引导PCR 48a(PCR[0])可以保存来自CRTM 52、POST BIOS 36以及所有物理上连接到主板30的固件38的测量结果。
测量了POST BIOS 36之后,将控制权交给POST BIOS 36,或者然后继续引导***,确保硬件设备能够运行。POST BIOS 36可以在POST操作期间将保存在TBB 40内的闪存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 BIOS 36获取控制权,它就负责测量它将向其移交控制权的实体。随着POST BIOS 36在引导序列中的进展,引导PCR 48a中的值在测量实体的时候发生变化。
在引导到操作***(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接口支持代码的内容,如果这些代码没有被存储在安全区中(例如在TBB 40内)而是被存储在非安全区例如存储器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接口支持代码,因为这些代码没有被保存在安全区中(例如TBB 40内)(图1),而是被保存在非安全区例如存储器33中(图1)。例如,特洛伊木马程序可能被植入继承BIOS代码中,以获取用户在唤醒***100时输入的硬文件(hardfile)口令击键(图1)。在获取口令之后,另一个用户就可以访问该***的操作***,从而移走所述硬文件的内容以存储到另一个***中。但是,如果在脱离睡眠状态之前检测到对所述继承BIOS代码或者用于支持继承BIOS代码的代码的修改,则可以防止***被唤醒,从而防止病毒获取口令击键。因此,在现有技术中,需要在脱离睡眠状态时检测对***引导之后的继承BIOS代码或者用来支持继承BIOS代码的代码的修改。下面结合图2描述在脱离睡眠状态时检测对***引导之后的继承BIOS代码或者用来支持继承BIOS代码的代码的修改的方法。
在讨论图2之前,请注意TCPA计算***100(图1)包括连接到存储器33(图1)以及闪存42(图1)的位于存储POST BIOS 36(图1)的TBB 40(图1)之外的一部分的CPU 32(图1)。另外,CPU 32被连接到TBB 40,后者包括闪存42的存储引导模块代码50(图1)的一部分。CPU 32可以被配置为执行可以被装载到存储器33中的引导模块代码50和POST BIOS 36的指令。在图2中,这些指令被描述为由引导模块代码或者POST BIOS 36分别执行的步骤。还应注意,CPU 32还可以被配置为执行在探测对继承BIOS代码或者用来支持继承BIOS代码的代码的修改时涉及的存储器33中载入的其他的指令,例如启动POST操作、引导到操作***、使***进入睡眠状态。
本发明的实施方式包括被编程为执行这里所描述的方法的计算机***,以及计算机程序产品。根据计算机***的实现方式,用于执行所述方法的指令组驻留于总体上按照上述配置的一个或者多个计算机***的存储器例如存储器33中。直到被TCPA计算***100需要之前,所述指令组可以作为计算机程序产品存储在另一计算机存储器中。另外,所述计算机程序产品也可以被存储在另一台计算机中,在需要时通过网络或者外部网络比如因特网被传输到用户工作站。本领域的普通技术人员理解,指令组的物理存储器可以在物理上改变存储指令组的介质,以便介质承载计算机可读的信息。所述改变可以是电的、磁的、化学的或者其他物理变化。
图2:在POST操作期间用POST BIOS探测对置于存储器中的代码的修改的方法。
图2是根据本发明的一个实施例,在POST操作期间,用POSTBIOS 36(图1)探测对置于存储器33(图1)中的代码,例如继承BIOS代码、ACPI代码和USB接口支持代码,的修改的方法。
见图2,并结合图1。在步骤201,启动POST操作。POST是用保存在存储器中的初始化设置来配置***100的初始化代码。
在步骤202,POST BIOS 36从闪存42的在TBB 40内的部分检索出继承BIOS代码和用来支持继承BIOS代码的代码。由于继承BIOS代码和用来支持继承BIOS代码的代码被保存在闪存42的位于TBB 40内的部分中,这些代码位于安全的位置。安全位置可以是指被隔离开而不能被第三方设备供应商或者软件“窜改”的区域。
在步骤203,POST BIOS 36测量所检索出来的代码(继承BIOS代码和用来支持继承BIOS代码的代码)。这里所说的测量是指对代码进行散列(hashing)。在步骤204,将测量结果保存在一个安全区中。在一个实施例中,可以用加密算法对测量结果加密,并保存在闪存42的位于TBB 40内的部分中。加密在本领域中是公知的,因此为了简明起见在此不详细描述。在另一种实施例中,测量结果可以被保存在可以被锁定的EEPROM 35中,例如可以在存储测量结果时在EEPROM35上设置一个硬件位,从而使EEPROM 35不能被访问。在执行引导模块代码50时,例如在收到唤醒事件时,可以重置EEPROM 35上的硬件位,从而使EEPROM 35可被引导模块代码50访问。在另一种实施方式中,所述测量结果可以被保存在TPM模块44内。
在步骤205,POST BIOS 36在存储器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的在TBB 40内的部分、EEPROM模块35、TPM模块44中的、由POST BIOS 36在步骤203在POST操作期间对继承BIOS代码和用来支持继承BIOS代码的代码进行的测量结果的值进行比较。在一种实施方式中,如上所述,继承BIOS代码和用来支持继承BIOS代码的代码的测量结果可以被保存在可被锁定的EEPROM 35中,比如在存储所述测量结果时设置EEPROM 35上的一个硬件位,从而使EEPROM 35不可访问。在执行引导模块代码50时,比如收到唤醒事件时,可以重置EEPROM 35上的硬件位,从而使EEPROM 35可被引导模块代码50访问。引导模块代码50然后就能够读出在步骤203在POST操作期间由POST BIOS 36对继承BIOS代码和用来支持继承BIOS代码的代码进行的测量结果。
如果步骤211的测量结果等于保存在安全位置例如闪存42的在TBB 40内的部分的、由POST BIOS 36在步骤203在POST操作期间对继承BIOS代码和用来支持继承BIOS代码的代码进行的测量结果的值,那么,在步骤213,引导模块代码50使用唤醒***100的正常处理来唤醒***100。
但是,如果步骤211的测量结果不等于保存在安全位置比如闪存42的在TBB 40内的部分的、由POST BIOS 36在步骤203在POST操作期间对继承BIOS代码和用来支持继承BIOS代码的代码进行的测量结果的值,那么,在步骤214,引导模块代码50指出对继承BIOS代码和/或用来支持继承BIOS代码的代码进行了修改。例如,引导模块代码50可以向***100的用户发出一个出错消息,指出存储器33被窜改了。
在步骤215,引导模块代码50重启***100,从而将继承BIOS代码和用来支持继承BIOS代码的代码恢复到其正常值。
注意,方法200可以包括其他的或者另外的步骤,这些步骤为了简明起见没有描述。还要注意,方法200可以按照与图示不同的顺序被执行,图2所示的顺序只不过是为了说明问题。还应注意,方法200中的某些步骤可以基本上同时执行。
尽管对所述***、方法和计算机程序产品的说明结合了几个实施例,但是不是要将本发明限定于这里所给出的特定形式。相反,本发明应当覆盖所附权利要求所限定的合理地被包括在本发明的实质范围内的各种变型、修改和等效方案。还应注意,标题也只是用于内容组织的目的而不是用来限定说明书或者权利要求的范围。
Claims (14)
1.一种用通电自检基本输入/输出***检测对置于存储器中的代码的修改的方法,包括下列步骤:
启动所述通电自检操作;
从闪存中检索出代码;
测量所述检索出来的代码,生成第一测量结果;
将所述第一测量结果保存到一个安全区中;
将所述检索出来的代码保存到位于非安全区的存储器中;
在接收到一个唤醒事件后测量保存在所述非安全区中的所述存储器中的所述检索出来的代码,产生第二测量结果;
如果所述第一测量结果不等于所述第二测量结果,则指出保存在所述存储器中的所述检索出来的代码被修改了;
其中,所述检索出来的代码包括下述代码中的一个或者多个:继承基本输入/输出***代码,以及用来支持所述继承基本输入/输出***代码的代码。
2.如权利要求1所述的方法,还包括下述步骤:
如果所述第一测量结果等于所述第二测量结果,则唤醒***。
3.如权利要求1所述的方法,其中,所述指出保存在所述存储器中的所述检索出来的代码被修改了的步骤还包括给出错误消息。
4.如权利要求1所述的方法,还包括下述步骤:
重启***,从而将所述检索出来的代码恢复到其正常值。
5.如权利要求1所述的方法,其中,所述用来支持所述继承基本输入/输出***代码的代码包括下述代码中的一个或者多个:通用串行总线接口支持代码,以及用于电源管理例程的代码。
6.如权利要求1所述的方法,其中,所述安全区位于***的可信组成模块中。
7.如权利要求1所述的方法,其中,所述安全区包括可锁定的电可擦除可编程只读存储器模块。
8.一种***,包括:
存储器;
连接到所述存储器的处理器;
连接到所述处理器的闪存的第一部分,其中,所述闪存的该第一部分包括通电自检基本输入/输出***代码;以及
连接到所述处理器的可信组成模块,其中,该可信组成模块被配置为确保所述***的完整性,其中所述可信组成模块包括:
所述闪存的第二部分,其中,所述可信组成模块中所述闪存的该第二部分包括:
引导模块代码,其中,该引导模块代码包括用于重置所述***的代码;以及
在通电自检操作期间要由所述通电自检基本输入/输出***代码从所述闪存的所述第二部分移动到所述存储器的代码;
其中,所述处理器,响应于所述通电自检基本输入/输出***代码,包括:
用于在所述通电自检操作期间从所述闪存的所述第二部分检索出所述要移动到所述存储器的代码的装置;
用于测量所述检索出来的代码以生成第一测量结果的装置;
用于将所述第一测量结果保存到一个安全区中的装置;和
用于将所述检索出来的代码保存到所述存储器中的装置;
其中,所述处理器,响应于所述引导模块代码,包括:
用于在接收到一个唤醒事件后测量保存在所述存储器中的所述检索传来的代码以产生第二测量结果的装置;以及
如果所述第一测量结果不等于所述第二测量结果,则指出保存在所述存储器中的所述检索出来的代码被修改了的装置;
并且其中,所述检索出来的代码包括下述代码中的一个或者多个:继承基本输入/输出***代码,以及用来支持所述继承基本输入/输出***代码的代码。
9.如权利要求8所述的***,其中,响应于所述引导模块代码的所述处理器还包括:
如果所述第一测量结果等于所述第二测量结果,则唤醒所述***的电路。
10.如权利要求8所述的***,其中,所述指出保存在所述存储器中的所述检索出来的代码被修改了的电路还给出错误消息。
11.如权利要求8所述的***,其中,响应于所述引导模块代码的所述处理器包括:
如果所述第一测量结果不等于所述第二测量结果,则重启所述***从而将所述检索出来的代码恢复到其正常值的电路。
12.如权利要求8所述的***,其中,所述用来支持所述继承基本输入/输出***代码的代码包括下述代码中的一个或者多个:通用串行总线接口支持代码,以及用于电源管理例程的代码。
13.如权利要求8所述的***,其中,所述安全区位于所述可信组成模块中。
14.如权利要求8所述的***,还包括:
连接到所述处理器的可锁定的电可擦除可编程只读存储器模块,其中,所述安全区包括所述可锁定的电可擦除可编程只读存储器模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/734,960 | 2003-12-12 | ||
US10/734,960 US20050132177A1 (en) | 2003-12-12 | 2003-12-12 | Detecting modifications made to code placed in memory by the POST BIOS |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1627260A CN1627260A (zh) | 2005-06-15 |
CN1323354C true CN1323354C (zh) | 2007-06-27 |
Family
ID=34653495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100879797A Expired - Fee Related CN1323354C (zh) | 2003-12-12 | 2004-10-26 | 用通电自检基本输入输出***检测对存储器中代码的修改 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20050132177A1 (zh) |
CN (1) | CN1323354C (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112618B2 (en) | 2004-04-08 | 2012-02-07 | Texas Instruments Incorporated | Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making |
US7318151B1 (en) * | 2004-11-04 | 2008-01-08 | Network Appliance, Inc. | Method and system for firmware management |
US20070239976A1 (en) * | 2006-03-28 | 2007-10-11 | Inventec Corporation | Message displaying system and method |
US20070261117A1 (en) * | 2006-04-20 | 2007-11-08 | Boney Matthew L | Method and system for detecting a compressed pestware executable object |
US8863309B2 (en) * | 2006-04-27 | 2014-10-14 | Hewlett-Packard Development Company, L.P. | Selectively unlocking a core root of trust for measurement (CRTM) |
US20070294582A1 (en) * | 2006-05-05 | 2007-12-20 | Dell Products L.P. | Reporting software RAID configuration to system BIOS |
US8190868B2 (en) | 2006-08-07 | 2012-05-29 | Webroot Inc. | Malware management through kernel detection |
US20080148387A1 (en) * | 2006-10-18 | 2008-06-19 | Madina Shab H | Trusted platform module management system and method |
US8423832B2 (en) * | 2006-11-07 | 2013-04-16 | Hewlett-Packard Development Company, L.P. | System and method for preventing processor errors |
US8886955B2 (en) * | 2007-03-28 | 2014-11-11 | Nuvoton Technology Corporation | Systems and methods for BIOS processing |
US7945786B2 (en) * | 2007-03-30 | 2011-05-17 | Intel Corporation | Method and apparatus to re-create trust model after sleep state |
US20090144585A1 (en) * | 2007-12-04 | 2009-06-04 | Ting-Chun Lu | Debugging method of the basic input/output system |
US8099630B2 (en) * | 2008-07-29 | 2012-01-17 | International Business Machines Corporation | Hardware diagnostics determination during initial program loading |
TWI453596B (zh) * | 2008-10-23 | 2014-09-21 | Micro Star Int Co Ltd | 輸出bios偵錯碼的裝置與方法 |
US11489857B2 (en) | 2009-04-21 | 2022-11-01 | Webroot Inc. | System and method for developing a risk profile for an internet resource |
CN102934121B (zh) * | 2010-04-13 | 2016-07-27 | 惠普发展公司,有限责任合伙企业 | 安全***和方法 |
US9367327B2 (en) * | 2010-09-24 | 2016-06-14 | Intel Corporation | Method to ensure platform silicon configuration integrity |
US9262637B2 (en) * | 2012-03-29 | 2016-02-16 | Cisco Technology, Inc. | System and method for verifying integrity of platform object using locally stored measurement |
CN102929674B (zh) | 2012-11-02 | 2016-02-10 | 威盛电子股份有限公司 | 电子装置以及开机方法 |
US9721104B2 (en) * | 2013-11-26 | 2017-08-01 | Intel Corporation | CPU-based measured boot |
US10218696B2 (en) * | 2016-06-30 | 2019-02-26 | Microsoft Technology Licensing, Llc | Targeted secure software deployment |
US10248486B2 (en) * | 2016-09-29 | 2019-04-02 | Intel Corporation | Memory monitor |
WO2019036795A1 (en) | 2017-08-22 | 2019-02-28 | Absolute Software Corporation | MONITORING INTEGRITY OF A FIRMWARE USING "SILVER" MEASURES |
WO2019078872A1 (en) * | 2017-10-19 | 2019-04-25 | Hewlett-Packard Development Company, L.P. | BIOS POST MESSAGES |
TWI750442B (zh) | 2019-01-15 | 2021-12-21 | 緯穎科技服務股份有限公司 | 韌體安全防護方法與使用此方法的電子系統 |
CN114625431B (zh) * | 2022-03-03 | 2023-08-29 | 上海先楫半导体科技有限公司 | 低功耗模式下的芯片唤醒方法、***及芯片 |
CN114860339B (zh) * | 2022-04-28 | 2023-06-02 | 阿里巴巴(中国)有限公司 | 智能板卡的控制方法、电子设备的启动方法及电子*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5379342A (en) * | 1993-01-07 | 1995-01-03 | International Business Machines Corp. | Method and apparatus for providing enhanced data verification in a computer system |
CN1422404A (zh) * | 2000-02-14 | 2003-06-04 | 英特尔公司 | 模块化的bios更新机制 |
CN1440527A (zh) * | 2000-06-30 | 2003-09-03 | 英特尔公司 | 保护引导块数据和精确地报告引导块内容 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6263431B1 (en) * | 1998-12-31 | 2001-07-17 | Intle Corporation | Operating system bootstrap security mechanism |
US6993648B2 (en) * | 2001-08-16 | 2006-01-31 | Lenovo (Singapore) Pte. Ltd. | Proving BIOS trust in a TCPA compliant system |
EP1429224A1 (en) * | 2002-12-10 | 2004-06-16 | Texas Instruments Incorporated | Firmware run-time authentication |
US7337309B2 (en) * | 2003-03-24 | 2008-02-26 | Intel Corporation | Secure online BIOS update schemes |
US7017040B2 (en) * | 2003-12-04 | 2006-03-21 | Intel Corporation | BIOS update file |
-
2003
- 2003-12-12 US US10/734,960 patent/US20050132177A1/en not_active Abandoned
-
2004
- 2004-10-26 CN CNB2004100879797A patent/CN1323354C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5379342A (en) * | 1993-01-07 | 1995-01-03 | International Business Machines Corp. | Method and apparatus for providing enhanced data verification in a computer system |
CN1422404A (zh) * | 2000-02-14 | 2003-06-04 | 英特尔公司 | 模块化的bios更新机制 |
CN1440527A (zh) * | 2000-06-30 | 2003-09-03 | 英特尔公司 | 保护引导块数据和精确地报告引导块内容 |
Also Published As
Publication number | Publication date |
---|---|
US20050132177A1 (en) | 2005-06-16 |
CN1627260A (zh) | 2005-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1323354C (zh) | 用通电自检基本输入输出***检测对存储器中代码的修改 | |
US11520894B2 (en) | Verifying controller code | |
US9098301B2 (en) | Electronic device and booting method | |
US9785596B2 (en) | Redundant system boot code in a secondary non-volatile memory | |
US8086839B2 (en) | Authentication for resume boot path | |
US7533274B2 (en) | Reducing the boot time of a TCPA based computing system when the core root of trust measurement is embedded in the boot block code | |
US8028174B2 (en) | Controlling update of content of a programmable read-only memory | |
US9703635B2 (en) | Method, computer program, and computer for restoring set of variables | |
US7490250B2 (en) | Method and system for detecting a tamper event in a trusted computing environment | |
US9672112B2 (en) | Backing up firmware during initialization of device | |
US7412596B2 (en) | Method for preventing system wake up from a sleep state if a boot log returned during the system wake up cannot be authenticated | |
US9098305B2 (en) | Computer system and bootup and shutdown method thereof | |
US20030074548A1 (en) | Method and system for tracking a secure boot in a trusted computing environment | |
CN105807848B (zh) | 一种触控工控机 | |
CN101663643A (zh) | 选择性地擦除***存储器的方法和*** | |
TWI534707B (zh) | 電腦系統及其開關機方法 | |
US20140006765A1 (en) | Information processing apparatus and start-up control method | |
US20070174600A1 (en) | Interface for communicating physical presence requests | |
JP2009251680A (ja) | 情報処理装置の起動方法及び起動プログラム | |
CN113742737B (zh) | 计算机主板芯片安全管理方法、装置、计算机设备 | |
EP4095725A1 (en) | Electronic device and security protection method | |
WO2022025927A1 (en) | Operational change control action | |
CN113849821A (zh) | 一种信息处理方法 | |
CN111356965A (zh) | 睡眠状态检测 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070627 Termination date: 20091126 |