专利名称:用于提供安全固件的技术的制作方法
技术领域:
10001
本发明的实施例涉及微处理器和微处理器系统。更具体地,本
发明的实施例与用于在微处理器系统中提供软件安全的技术相关。
背景技术:
以上描述的现有技术具有一个问题,B卩,在某些非易失性存储 器中的引导块是可以被用户访问的,并且可以对存储在其中的代码进行修 改,从而损害了运行在该系统中的软件的信任链。现有技术的另一个缺点 是,该现有技术要求服务器系统包括引导块。在软件的完整性受到例如病 毒、蠕虫等的恶意入侵者的威胁的计算系统中,对于其中运行的软件(包 括固件)的完整性进行验证就变得越来越重要。此外,在不期望、甚或不 能接受有停机时间的系统中,现有安全技术无法提供令人满意的软件安全
解决方案。
0005
本发明的实施例以实例方式示出,且不局限于附图中的图表,
其中,'在所述附图中相同的标记指示相同的元件,在这些附图中
0006
图1是示出可结合本发明的一个实施例使用的各种软件组件的 示图; 在本发明的一个实施例中,可以在复位时刻验证固件的完整性, 在该时刻可以通过使用处理器相关软件(例如,嵌入式"微代码")调用可 信的代码模块(即,已认证代码模块,即"ACM")来测量固件组件,其中 该可信的代码模块可以在固件模块被调用之前,在该系统启动过程中验证 该固件的完整性。通常处理器微代码与处理器硬件一样可信,这是因为处 理器微代码源于处理器制造商,并且与硬件相同,该处理器微代码是在制 造的时候被加工到硅中的。此外,处理器微代码典型地被编程到处理器 ROM中,并且不能够通过外部或内部代理(agent)修改。因此,处理器微 代码能够用作最低代码级,在该级上可以建立包括OS的代码信任链。在一 个实施例中,ACM (已认证代码模块)可以是与微代码和/或固件相分离的 软件模块,而在其他实施例中,AC可以是微代码或固件的一部分。0013
通过在引导时间验证固件的安全性,固件被包括在运行于系统
中的软件的信任链中,从而后续运行的软件,例如os,能够信赖底层固件
的完整性,从而创建从固件层到OS到运行于OS中的应用程序的软件信任
链。此外,本发明的实施例能够创建从固件层直到os和系统软件堆栈中的
各应用程序层的系统软件的信任链,而且在建立了所述信任链之后不需要 重新引导系统或关闭电源。在不能容忍系统停机时间的服务器应用中,这 将尤其有益。
0014
通过将从微代码到全部固件组件的信任链扩展到OS, 一个实施
例使得固件能够被成功地集成到可信os的信任域中。因此,可信的OS能
够使用平台固件来完成各种功能,例如可靠性、可用性及适用性(RAS) 平台管理任务。
在一个实施例中,这三个模块位于计算系统内的不同位置中。 例如,在一个实施例中,微代码被编程到处理器内的微代码ROM (只读存 储器)逻辑中,ACM可以位于非易失性存储器(例如,闪存存储器)中, 以及固件被存储在计算系统内的非易失性存储器(例如,闪存存储器)或 其它存储设备中的存储器中。 尽管通过参照示例性实施例对本发明进行了描述,该描述并不 旨在被解释为某种限定意义。对所述示例性实施例以及其它实施例的各种 修改,对与本发明相关的技术领域的技术人员是显而易见的,并被认为属 于本发明的精神和范围内。
权利要求
1.一种系统,包括用于存储固件的第一存储器;用于执行微代码以验证所述固件的完整性的处理器。
2、 如权利要求l所述的系统,还包括第二存储器,用于存储已鉴权代 码(AC)模块,以对所述固件执行散列函数。
3、 如权利要求2所述的系统,其中所述散列函数生成可用于验证所述 固件的完整性的结果。
4、 如权利要求3所述的系统,其中所述微代码通过固件接口表(FIT) 内的第一指针,调用所述AC模块。
5、 如权利要求4所述的系统,其中所述散列函数的结果将被存储在平 台控制寄存器中,以便由可信的平台模块使用。
6、 如权利要求1所述的系统,其中固件接口表(FIT)的地址被存储 在所述微代码中且距所述微代码起点4GB—0xl8B的位置处,所述固件接 口表包括用于验证所述固件的完整性的程序的地址。
7、 如权利要求6所述的系统,其中所述第一存储器是闪存存储器器件。
8、 如权利要求2所述的系统,其中所述第二存储器是高速缓存存储器。
9、 一种机器可读介质,其中存储有指令集,如果由机器执行所述指令 集,则使得所述机器实现一种方法,该方法包括定位包括已认证代码(AC)模块的地址的固件接口表(FIT)入口; 对所述AC模块进行认证; 执行散列函数,以对固件模块进行认证; 存储所述散列函数的结果;如果成功定位了所述FIT、认证所述AC模块成功、以及认证所述固件 成功,则引导操作系统。
10、 如权利要求9所述的机器可读介质,其中处理器的微代码负责在 执行所述散列函数之前,定位所述FIT。
11、 如权利要求10所述的机器可读介质,其中所述散列函数的结果被 存储在平台控制寄存器中,以便由可信的平台模块使用。
12、 如权利要求9所述的机器可读介质,其中所述FIT的地址被存储 在所述微代码中且位于距所述微代码起点4GB—0xl8B的位置处。
13、 如权利要求12所述的机器可读介质,其中所述安全位置位于相对 所述微代码起点OxfiKTO的地址处。
14、 如权利要求10所述的机器可读介质,其中所述己认证固件是代码 信任链的一部分,所述代码包括所述微代码和所述操作系统。
15、 如权利要求9所述的机器可读介质,其中所述固件存储在闪存存 储器器件中。
16、 如权利要求15所述的机器可读介质,其中所述AC模块从高速缓 存存储器中执行。
17、 一种处理器,包括微代码,用于使得与计算机系统对应的固件模块的完整性得到验证。
18、 如权利要求17所述的处理器,其中所述微代码用于定位已认证代 码(AC)模块,所述AC模块包括用来验证所述固件模块完整性的程序。
19、 如权利要求18所述的处理器,其中所述程序为散列函数。
20、 如权利要求19所述的处理器,其中所述散列函数产生可用于验证 所述固件模块的完整性的结果。
21、 如权利要求20所述的处理器,其中所述微代码通过固件接口表 (FIT)内的第一指针,调用所述AC模块。
22、 如权利要求21所述的处理器,其中所述散列函数的结果存储在平 台控制寄存器中,以便由可信的平台模块使用。
23、 如权利要求22所述的处理器,其中所述FIT的地址存储在所述微 代码中且位于距所述微代码起点4GB—0xl8B的位置处。
24、 如权利要求22所述的处理器,还包括用来存储所述AC模块的高 速缓存存储器。
25、 一种方法,包括开启计算机系统,其中与所述计算机系统内的处理器相对应的微代码 负责使得所述计算机系统的固件得到验证; 使用所述计算机系统。
26、 如权利要求25所述的方法,其中所述微代码用于定位已认证代码 (AC)模块,以便验证所述固件。
27、 如权利要去25所述的方法,其中所述微代码用于对所述固件执行 散列函数。
28、 如权利要求25所述的方法,其中,如果验证了所述固件,则引导 与所述计算机系统对应的操作系统。
29、 如权利要求28所述的方法,其中,如果成功地验证了所述固件, 则所述微代码、所述固件、和所述操作系统构成可信的代码链。
30、 如权利要求25所述的方法,还包括在不关闭所述计算机系统的情 况下,更新并验证所述固件。
全文摘要
一种用于验证固件的技术。本发明的一个实施例使用处理器的微代码来验证系统的固件,使得所述固件能够与操作系统一起被包括在代码信任链中。
文档编号G06F21/00GK101375287SQ200780003174
公开日2009年2月25日 申请日期2007年2月15日 优先权日2006年2月15日
发明者S·库马尔, S·达塔 申请人:英特尔公司