用于验证crtm的嵌入式控制器的制造方法
【专利摘要】在一个实施例中,一种计算系统包括嵌入式控制器,以验证可信度量核心根(CRTM)的供应者。
【专利说明】用于验证CRTM的嵌入式控制器
【背景技术】
[0001]计算系统具有基本输入/输出系统(BIOS)。BIOS是在启动时测试硬件的一组软件例程,启动操作系统,并且支持硬件设备间的数据传送。BIOS例程能够存储在非易失性存储设备上,如只读存储器、可编程只读存储器、可擦写可编程只读存储器、闪存或别的非易失性存储器。
【专利附图】
【附图说明】
[0002]本发明的一些实施例是关于以下附图描述的:
[0003]图1是根据示例实施例的包括嵌入式控制器的计算系统的框图;
[0004]图2是根据示例实施例的包括嵌入式控制器的计算系统的框图;
[0005]图3是根据示例实施例的保护可信度量核心根(CRTM)的方法的流程图;
[0006]图4是根据示例实施例的保护可信度量核心根(CRTM)的方法的流程图;以及
[0007]图5是根据示例实施例的包括计算机可读介质的计算系统的框图。
【具体实施方式】
[0008]计算系统能够包括存储BIOS例程的计算机可读介质。该计算机可读介质能够包括可信度量核心根(CRTM)。CRTM能够存储在计算机可读介质的不可改变部分上。计算机可读介质的不可改变部分不能被计算系统中如处理器这样的组件擦除或写入。CRTM能够创建信任链。
[0009]CRTM是引导块代码。该段代码被认为是可信的。CRTM用于度量其它实体的完整值,并且在平台的生命周期期间应当保持不变。CRTM是规范BIOS的扩展,其将首先被运行来在传递控制以前度量BIOS块的其它部分。然后,BIOS度量硬件和启动加载器,并且向启动加载器传递控制。启动加载器度量操作系统(OS)内核并且向OS传递控制。
[0010]存储BIOS和CRTM的计算机可读介质具有不可改变的部分,该不可改变的部分是通过防止主处理器或其它组件擦除或写入计算机可读介质的该部分而创建的。例如,计算机可读介质的不可改变的部分可以位于防止主处理器写入的地址范围。然而,如果从计算系统中移除计算机可读介质,则该计算机可读介质不包括防止该计算机可读介质的不可改变的部分被存储器程序员重新写入的保护。计算机可读介质还可以被在不可改变的地址部分具有不同代码的另一计算机可读介质替换。如果通过移除计算可读介质并替换计算机可读介质而损害CRTM,则信任链被破坏并且系统完整性的任何进一步度量都是不可信的。
[0011]通过计算系统的不改变的部分验证CRTM对建立信任链是重要的。虽然主处理器可能能够验证CRTM,但是处理器固件位于BIOS中,该BIOS直到CRTM用于验证BIOS例程的其余部分时才能够被验证。
[0012]在一个实施例中,计算系统能够包括非易失性存储器。该非易失性存储器能够包括一部分,该部分是可信度量核心根(CRTM)。计算系统中的嵌入式控制器能够验证CRTM的供应者。计算系统中的主处理器能够在验证真实性时运行CRTM来度量BIOS代码的其它部分。
[0013]在一个实施例中,保护可信度量核心根(CRTM)的方法包括用嵌入式控制器读取CRTM0该方法能够用嵌入式控制器对CRTM进行哈希运算来创建哈希值,并且用嵌入式控制器使用公钥对与CRTM —起包含的哈希值进行解密。能够确定这两个哈希值是否匹配,在匹配的情况下将该CRTM验证为来自具有关联私钥的已知源。如果被解密的哈希值是未预期的值,则能够停止嵌入式控制器代码的加载。
[0014]关于附图,图1是根据示例实施例的包括嵌入式控制器的计算系统的框图。计算系统100能够包括非易失性存储器120,非易失性存储器120包括一部分,该部分是可信度量核心根(CRTM) 130。CRTM是被认为可信的引导块代码。CRTM 130用于度量其它实体的完整性值。CRTM 130应在计算系统的生命周期期间保持不变。CRTM 130是在启动时在平台上运行的第一段代码。CRTM 130应该是被信任的,以向被信任的平台模块或另一组件正确报告在CRTM 130以后运行的第一软件/固件。
[0015]嵌入式控制器105能够验证CRTM 130的供应者。嵌入式控制器105可以例如包括接收来自键盘的击键信息或来自鼠标的光标移动信息的键盘控制器,对温度进行度量或对风扇进行控制的热控制器,或它们的组合。CRTM的供应者可以是例如计算系统的制造者。验证CRTM的供应者可以通过例如数字签名、CRC、校验和、或别的验证方法。数字签名可以用于识别谁产生文件或文档或者用于检测并跟踪对该文档已做出的任何改变。数字签名可以使用哈希函数和密码密钥。通过用嵌入式控制器确定CRTM是否来自特定供应者,第三方可能不能从计算系统100中移除非易失性存储器120并且用未由供应者签署的CRTM代码替换或改编存储器,并且然后启动具有被替换或被改编的存储器的计算系统。
[0016]计算系统包括处理器110,以在验证真实性时运行CRTM。CRTM的运行对BIOS代码的其它部分进行度量。在度量BIOS以后,CRTM能够将启动过程移交给BIOS代码。BIOS能够度量操作系统(OS)的启动加载器并且启动加载器能够度量OS。启动加载器是为组件或系统开始启动过程的代码,并且可以包括或者是固件。OS可以是从验证CRTM的嵌入式控制器开始的链的末端。
[0017]CRTM 130能够是不可改变的启动块。该不可改变的引导块不能被计算系统100的不可改变的启动块以外的应用程序写入或擦除。例如,如果正被写入CRTM的是已是CRTM一部分的代码的运行结果,则处理器和嵌入式控制器能够写入CRTM,使得不将未知代码写入 CRTM。
[0018]图2是根据示例实施例的包括嵌入式控制器的计算系统的框图。计算系统200可以包括由嵌入式控制器运行的哈希函数235,以确定来自CRTM的哈希值。嵌入式控制器205可以访问CRTM,并且基于哈希函数235读取数据。
[0019]嵌入式控制器可以包括只读存储器245。只读存储器245可以包括用于嵌入式控制器的启动加载器250。嵌入式控制器205可以提供CRTM的数字签名验证。只读存储器还可以包括哈希函数235。只读存储器245可以在嵌入式控制器上携带。嵌入式控制器可以不由例如改编程序修改。例如只读存储器245可以在相同封装内,在相同基板上,或者连接至嵌入式控制器。嵌入式控制器可以包括在只读存储器245中的密码密钥。该密码密钥能够用于非对称数据或对称数据的解密。解密密钥可以是嵌入式控制器205上的公钥,以解密来自CRTM 130的被加密的哈希值237。能够将被解密的数据与由嵌入式控制器从向基本输入输出系统(BIOS) 225的CTRM 130应用的哈希函数235中生成的数据相比较。比较能够引起验证CRTM 130是来自该供应者还是不来自该供应者。如果CRTM来自该供应者,那么启动过程继续并且CRTM度量BIOS。处理器110可以在验证CRTM的供应者以后并且通过控制器集线器215访问BIOS 225。
[0020]嵌入式控制器可以拒绝加载嵌入式控制器代码。嵌入式控制器可以基于只读存储器中的启动加载器来操作。启动加载器能够是确定嵌入式控制器的操作的固件。提供只读启动加载器防止嵌入式控制器固件被改变,这使嵌入式控制器可靠地确定CRTM的供应者。
[0021]图3是根据示例实施例的保护可信度量核心根(CRTM)的方法的流程图。保护可信度量核心根(CRTM)的方法300包括在305处中用嵌入式控制器读取CRTM。在315处,嵌入式控制器能够验证CRTM的数字签名。在一个实施例中,验证数字签名能够包括通过向从CRTM读取的数据应用哈希函数来计算哈希值。
[0022]关于CRTM的被加密的哈希值能够从CRTM中读取并且用嵌入式控制器进行解密。该存储的被加密的哈希值能够通过应用密钥对该哈希值进行解密来解密。该密钥可以是用于对称加密或非对称加密的密钥,如公钥和私钥加密技术。
[0023]嵌入式控制器能够确定被解密的哈希值与所计算的哈希值是否相匹配。如果被解密的哈希值是预期的哈希值,那么该CRTM来自已知的供应者。预期的哈希值能够通过将被解密的哈希值与由嵌入式控制器计算的CRTM的哈希值相比较来确定。匹配表明该CRTM是由已知的供应者供应的。
[0024]如果被解密的哈希值不是预期的值,那么不能认证该CRTM的供应者,因此不能确认该信任链的根为可信的。这可能发生,如果存储CRTM的非易失性存储器被移除并在计算系统以外被替换或被改编,或者如果非易失性存储器损坏,导致该非易失性存储器上的数据出错。如果被解密的哈希值不是预期的值,那么在325处嵌入式控制器停止加载用于该嵌入式控制器的固件代码。如果用于嵌入式控制器的固件不加载,那么计算系统不利用CRTM度量BIOS,并且不向BIOS传递控制,这防止计算系统完全启动操作系统。
[0025]图4是根据示例实施例的保护可信度量核心根(CRTM)的方法的流程图。方法400包括在405处用嵌入式控制器读取CRTM。在410处,嵌入式控制器能够对CRTM进行哈希运算,以产生被计算的哈希值。在415处,能够对加密的哈希值进行解密。在420处,能够进行确定,以确定被计算的哈希值是否是预期的值,如被解密的哈希值。
[0026]如果哈希值是预期的值,那么在435处用CRTM度量BIOS来继续信任链。CRTM可以由处理器运行来确定BIOS是否是可信的。在一个实施例中,由CRTM对BIOS的度量使用信任平台模块来存储度量结果,并且如果度量结果是相同的,则能够可选地存储在随后启动时仅由TPM发布的机密(密钥)。这些密钥可以用于例如封装存储。
[0027]如果该哈希不是预期的值,则在425处嵌入式控制器停止加载固件代码。如果确定该哈希值是非预期的值,则在430处,能够阻止CRTM在主处理器上运行。如果CRTM不能用于确认BIOS是可信的,那么系统将不继续启动。
[0028]图5是根据示例实施例的包括计算机可读介质515或516的计算系统500的框图。计算机可读介质515或516能够包括代码,该代码如果被运行则引起嵌入式控制器读取存储器上的BIOS的CRTM。该代码能够引起嵌入式控制器对CRTM进行哈希运算并且对在CRTM中的存储的被加密的哈希进行解密。代码能够引起嵌入式控制器继续从嵌入式控制器的启动加载器ROM中加载代码。
[0029]计算机可读介质515或516可以包括代码,该代码如果被运行则引起嵌入式控制器防止处理器用CRTM度量BIOS代码。
[0030]上述技术可以体现在计算机可读介质中,以将计算系统配置为运行本方法。计算机可读介质可以包括例如且不限于以下任意多个:包括磁盘和磁带存储介质的磁性存储介质,如小型盘介质(例如CD-ROM、CD-R等)和数字视频盘存储介质这样的光存储介质,全息存储器,包括如FLASH存储器、EEPROM、EPROM、ROM这样的基于半导体的存储器单元的非易失性存储器存储介质,铁磁数字存储器,包括寄存器、缓冲器或缓存、主存储器、RAM等的易失性存储介质,以及互联网,等等。其它新的以及各类的计算机可读介质可以用于存储和/或传输本文讨论的软件模块。计算系统可以以许多形式存在,这许多形式包括但不限于大型机,小型计算机,服务器,工作站,个人计算机,掌上电脑,个人数字助理,各种无线设备,以及嵌入式系统等等。
[0031]在前面的描述中,阐述多个细节来提供对本发明的理解。然而,本领域技术人员将理解本发明可以在没有这些细节的情况下实施。虽然已关于有限多个实施例公开本发明,但是本领域技术人员将领会由此带来的许多修改和变化。希望所附权利要求覆盖落入本发明的真正精神和范围内的这些修改和变化。
【权利要求】
1.一种计算系统,包括: 非易失性存储器,包括一部分,该部分是可信度量核心根(CRTM); 嵌入式控制器,验证所述CRTM的供应者;以及 主处理器,在验证真实性时运行所述CRTM来度量BIOS代码的其它部分。
2.如权利要求1所述的系统,其中所述CRTM是不可改变的启动块。
3.如权利要求1所述的系统,进一步包括只读存储器,该只读存储器用于在启动期间由所述嵌入式控制器运行的在所述嵌入式控制器上携带的启动代码。
4.如权利要求1所述的系统,其中所述嵌入式控制器是不能改编的。
5.如权利要求1所述的系统,进一步包括哈希函数,所述哈希函数由所述嵌入式控制器运行来确定来自所述CRTM的哈希值。
6.如权利要求5所述的系统,进一步包括公钥,所述公钥被存储在所述嵌入式控制器上来解密所述哈希值。
7.如权利要求6所述的系统,其中所述嵌入式控制器拒绝加载嵌入式控制器代码。
8.如权利要求7所述的系统,进一步包括只读存储器中的嵌入式控制器启动加载器。
9.一种保护计算系统上的可信度量核心根(CRTM)的方法,包括: 用嵌入式控制器读取所述CRTM ; 用所述嵌入式控制器验证所述CRTM的数字签名;以及 如果被解密的哈希与被计算的哈希不匹配,则停止嵌入式控制器代码的加载。
10.如权利要求9所述的方法,进一步包括:如果所述CRTM的数字签名验证失败,则阻止所述CRTM在处理器上运行。
11.如权利要求9所述的方法,进一步包括:如果所述CRTM的数字签名被验证,则用所述CRTM度量BIOS的一部分。
12.—种计算机可读介质,包括如果被运行则引起嵌入式控制器执行以下操作的代码: 读取存储器上的BIOS的CRTM ; 计算所述CRTM的哈希; 解密与所述CRTM —起包含的所述CRTM的被加密的哈希; 将被解密的哈希与被计算的哈希进行比较;以及 如果这些哈希不相等,则停止从所述嵌入式控制器的启动加载器ROM中加载代码。
13.如权利要求12所述的计算机可读介质,进一步包括如果被运行则引起嵌入式控制器执行以下操作的代码: 阻止处理器用所述CRTM度量BIOS代码。
【文档编号】G06F9/06GK103502932SQ201180070517
【公开日】2014年1月8日 申请日期:2011年4月29日 优先权日:2011年4月29日
【发明者】杰夫·让索纳, 莫尼·G·耶博里, 瓦利·阿利 申请人:惠普发展公司,有限责任合伙企业