基本输入输出系统的保护设备与方法与流程

文档序号:11775176阅读:250来源:国知局
基本输入输出系统的保护设备与方法与流程

本发明涉及一种微电子,特别是涉及能保护计算系统中基本输入/输出系统(basicinput/outputsystem,bios)的装置与方法。



背景技术:

计算平台有各种形式和大小,例如:桌上型计算机、笔记型计算机、平板计算机、个人数字助理(pda)和智能手机。在这些不同形式的计算平台中,只有少数会采用非常强大的工具。

当计算平台被拆开之后,几乎所有形式的计算平台是共享相同的基本结构或配置。在其核心是一个中央处理单元(通常是微处理器)、用于储存程序的存储器(以硬盘或固态硬盘的形式)、执行程序的更快的存储器(通常为随机存取存储器)以及储存基本输入/输出系统(basicinput/outputsystem,bios)的存储器。

对这些平台而言,bios是分层编程的最底层,其能启动标准的操作系统和应用程序,而使用特定计算平台所配置的硬件来执行操作。bios通常与硬件接口有大量的关联性,所以当平台配置有改变时,较高阶层的程序不需要修改就可容纳这些改变。当然,当有改变时,bios通常会被升级,这就是为什么bios的储存通常与操作系统和应用程序的储存分离。

bios不仅包括了计算平台的基本操作,其亦包括配置数据和安全数据(例如计算系统是否被授权来执行特定的应用程序等)。因为bios包含了安全数据,所以其通常是骇客之类的目标。例如,藉由修改系统的bios,未授权的使用者便能执行未经授权的程序。因此,对系统设计者极为重要的是,当系统不工作而bios正在操作时,bios的有效性和完整性能得到保护和保证。

因此,为了能支持升级及/或重新编程以支持系统配置的改变,一方面希望系统的bios能容易进行存取。而在另一方面,保护或限制对bios的内容进行存取是很重要的,以避免未经授权者的篡改。

实现一个或两个上述目标的一些尝试会导致架构被限制。例如,移动储存的bios到类似系统的微处理器的同一芯片上以防止bios被篡改,但却完全违背了容易升级的目的,因为bios不再是实体存取。其他技术强调bios内容的加密,从保护的观点来看这是有利的,但是这会削减系统的性能。因为每次需要使用到无法接受的数量的操作来对bios内容进行解密。

因此,需要一种能支持计算系统的bios内容的可存取性以及升级,也能保护bios内容免遭未经授权篡改的新颖技术。



技术实现要素:

本发明提供较佳的技术,用以解决上述问题并满足其他问题及缺点以及习知的受限。

本发明提供了一种技术,用于保护计算系统的bios免于攻击。在一实施例中,提供了一种基本输入输出系统的保护设备,用以保护一计算系统内的一基本输入输出系统。上述保护设备包括一基本输入输出系统只读存储器、一窜改检测器、一乱数产生器以及一联合测试工作群组控制链。上述基本输入输出系统只读存储器包括:基本输入输出系统内容,其中上述基本输入输出系统内容储存为可读文本;以及,一加密讯息文摘,其中上述加密讯息文摘包括对应于上述基本输入输出系统内容的一第一讯息文摘的一加密版本。上述窜改检测器耦接于上述基本输入输出系统只读存储器,用以在所规定的间隔与事件发生的集合时产生一基本输入输出系统检查中断、根据上述基本输入输出系统检查中断而对上述基本输入输出系统内容以及上述加密讯息文摘进行存取、指示一微处理器产生对应于上述基本输入输出系统内容的一第二讯息文摘以及对应于上述加密讯息文摘的一解密讯息文摘、比较上述第二讯息文摘与上述解密讯息文摘,以及当上述第二讯息文摘不相同于上述解密讯息文摘时,防止上述微处理器的操作。上述乱数产生器设置在上述微处理器内,其中在完成了一目前基本输入输出系统检查之后,上述乱数产生器产生一乱数,其中上述乱数是用来设定下一个所规定的间隔,以及上述所规定的间隔是可随机改变的。上述联合测试工作群组控制链用以编程在一窜改检测微码储存器的上述所规定的间隔与事件发生的集合。

再者,本发明提供一种基本输入输出系统的保护方法,用以保护一计算系统内的一基本输入输出系统。储存基本输入输出系统内容以及一加密讯息文摘至一基本输入输出系统只读存储器,其中上述加密讯息文摘包括对应于上述基本输入输出系统内容的一第一讯息文摘的一加密版本。编程在一窜改检测微码储存器的所规定的间隔与事件发生的集合。产生一基本输入输出系统检查中断,以便在上述所规定的间隔与事件发生的集合中断上述计算系统的正常操作。回应于上述基本输入输出系统检查中断,存取上述基本输入输出系统内容以及上述加密讯息文摘,并使用用来产生上述第一讯息文摘与上述加密讯息文摘的相同演算法与密钥来产生对应于上述基本输入输出系统内容的一第二讯息文摘以及对应于上述加密讯息文摘的一解密讯息文摘。比较上述第二讯息文摘与上述解密讯息文摘。当上述第二讯息文摘不相同于上述解密讯息文摘时,防止一微处理器的操作。使用在上述微处理器内的一乱数产生器,在完成了一目前基本输入输出系统检查之后产生一乱数,其中上述乱数是用来设定下一个所规定的间隔,以及上述所规定的间隔是可随机改变的。

再者,本发明提供另一种基本输入输出系统的保护设备,用以保护一计算系统内的一基本输入输出系统。上述保护设备包括一基本输入输出系统只读存储器、一窜改检测器、一乱数产生器以及一联合测试工作群组控制链。上述基本输入输出系统只读存储器,包括:基本输入输出系统内容,其中上述基本输入输出系统内容储存为可读文本;以及,一加密讯息文摘,其中上述加密讯息文摘包括对应于上述基本输入输出系统内容的一第一讯息文摘的一加密版本。上述窜改检测器耦接于上述基本输入输出系统只读存储器,用以在所规定的间隔与事件发生的集合时产生一基本输入输出系统检查中断、根据上述基本输入输出系统检查中断而对上述基本输入输出系统内容以及上述加密讯息文摘进行存取、指示一微处理器产生对应于上述基本输入输出系统内容的一第二讯息文摘以及对应于上述加密讯息文摘的一解密讯息文摘、比较上述第二讯息文摘与上述解密讯息文摘,以及当上述第二讯息文摘不相同于上述解密讯息文摘时,防止上述微处理器的操作,其中上述事件发生包括输入/输出存取。上述乱数产生器设置在上述微处理器内,其中在完成了一目前基本输入输出系统检查之后,上述乱数产生器产生一乱数,其中上述乱数是用来设定下一个所规定的间隔,以及上述所规定的间隔是可随机改变的。上述联合测试工作群组控制链,用以编程在一窜改检测微码储存器的上述所规定的间隔与事件发生的集合。

再者,本发明提供另一种基本输入输出系统的保护方法,用以保护一计算系统内的一基本输入输出系统。储存基本输入输出系统内容以及一加密讯息文摘至一基本输入输出系统只读存储器,其中上述加密讯息文摘包括对应于上述基本输入输出系统内容的一第一讯息文摘的一加密版本。编程在一窜改检测微码储存器的所规定的间隔与事件发生的集合,其中上述事件发生包括输入/输出存取。产生一基本输入输出系统检查中断,以便在上述所规定的间隔与事件发生的集合中断上述计算系统的正常操作。回应于上述基本输入输出系统检查中断,存取上述基本输入输出系统内容以及上述加密讯息文摘,并使用用来产生上述第一讯息文摘与上述加密讯息文摘的相同演算法与密钥来产生对应于上述基本输入输出系统内容的一第二讯息文摘以及对应于上述加密讯息文摘的一解密讯息文摘。比较上述第二讯息文摘与上述解密讯息文摘。当上述第二讯息文摘不相同于上述解密讯息文摘时,防止一微处理器的操作。使用在上述微处理器内的一乱数产生器,在完成了一目前基本输入输出系统检查之后产生一乱数,其中上述乱数是用来设定下一个所规定的间隔,以及上述所规定的间隔是可随机改变的。

再者,本发明提供另一种基本输入输出系统的保护设备,用以保护一计算系统内的一基本输入输出系统。上述保护设备包括一基本输入输出系统只读存储器、一窜改检测器、一乱数产生器、一联合测试工作群组控制链、一熔丝以及一存取控制元件。上述基本输入输出系统只读存储器包括:基本输入输出系统内容,其中上述基本输入输出系统内容储存为可读文本;以及,一加密讯息文摘,其中上述加密讯息文摘包括对应于上述基本输入输出系统内容的一第一讯息文摘的一加密版本。上述窜改检测器耦接于上述基本输入输出系统只读存储器,用以在所规定的间隔与事件发生的集合时产生一基本输入输出系统检查中断、根据上述基本输入输出系统检查中断而对上述基本输入输出系统内容以及上述加密讯息文摘进行存取、指示一微处理器产生对应于上述基本输入输出系统内容的一第二讯息文摘以及对应于上述加密讯息文摘的一解密讯息文摘、比较上述第二讯息文摘与上述解密讯息文摘,以及当上述第二讯息文摘不相同于上述解密讯息文摘时,防止上述微处理器的操作。上述乱数产生器设置在上述微处理器内,其中在完成了一目前基本输入输出系统检查之后,上述乱数产生器产生一乱数,其中上述乱数是用来设定下一个所规定的间隔,以及上述所规定的间隔是可随机改变的。上述联合测试工作群组控制链,用以编程在一窜改检测微码储存器的上述所规定的间隔与事件发生的集合。上述熔丝用以指示是否对上述所规定的间隔与事件发生的集合的编程禁能。上述存取控制元件耦接于上述熔丝以及上述联合测试工作群组控制链,用以判断上述熔丝的状态,以及当熔丝被烧断时,指示上述联合测试工作群组控制链将上述所规定的间隔与事件发生的集合的编程禁能。

再者,本发明提供另一种基本输入输出系统的保护方法,用以保护一计算系统内的一基本输入输出系统。储存基本输入输出系统内容以及一加密讯息文摘至一基本输入输出系统只读存储器,其中上述加密讯息文摘包括对应于上述基本输入输出系统内容的一第一讯息文摘的一加密版本。透过一熔丝的状态,指示是否对所规定的间隔与事件发生的集合的编程致能或禁能。判断上述熔丝的状态,以及当上述熔丝被烧断时,对上述所规定的间隔与事件发生的集合的编程禁能。当上述熔丝没有被烧断时,编程在一窜改检测微码储存器的上述所规定的间隔与事件发生的集合。产生一基本输入输出系统检查中断,以便在上述所规定的间隔与事件发生的集合中断上述计算系统的正常操作。回应于上述基本输入输出系统检查中断,存取上述基本输入输出系统内容以及上述加密讯息文摘,并使用用来产生上述第一讯息文摘与上述加密讯息文摘的相同演算法与密钥来产生对应于上述基本输入输出系统内容的一第二讯息文摘以及对应于上述加密讯息文摘的一解密讯息文摘。比较上述第二讯息文摘与上述解密讯息文摘。当上述第二讯息文摘不相同于上述解密讯息文摘时,防止一微处理器的操作。使用在上述微处理器内的一乱数产生器,在完成了一目前基本输入输出系统检查之后产生一乱数,其中上述乱数是用来设定下一个所规定的间隔,以及上述所规定的间隔是可随机改变的。

再者,本发明提供另一种基本输入输出系统的保护设备,用以保护一计算系统内的一基本输入输出系统。上述保护设备包括一基本输入输出系统只读存储器、一窜改检测器、一乱数产生器、一联合测试工作群组控制链、一熔丝、一机器特定寄存器以及一存取控制元件。上述基本输入输出系统只读存储器包括:基本输入输出系统内容,其中上述基本输入输出系统内容系储存为可读文本;以及,一加密讯息文摘,其中上述加密讯息文摘包括对应于上述基本输入输出系统内容的一第一讯息文摘的一加密版本。上述窜改检测器耦接于上述基本输入输出系统只读存储器,用以在所规定的间隔与事件发生的集合时产生一基本输入输出系统检查中断、根据上述基本输入输出系统检查中断而对上述基本输入输出系统内容以及上述加密讯息文摘进行存取、指示一微处理器产生对应于上述基本输入输出系统内容的一第二讯息文摘以及对应于上述加密讯息文摘的一解密讯息文摘、比较上述第二讯息文摘与上述解密讯息文摘,以及当上述第二讯息文摘不相同于上述解密讯息文摘时,防止上述微处理器的操作。上述乱数产生器设置在上述微处理器内,其中在完成了一目前基本输入输出系统检查之后,上述乱数产生器产生一乱数,其中上述乱数是用来设定下一个所规定的间隔,以及上述所规定的间隔是可随机改变的。上述联合测试工作群组控制链用以编程在一窜改检测微码储存器的上述所规定的间隔与事件发生的集合。上述熔丝用以指示是否对上述所规定的间隔与事件发生的集合的编程禁能。上述机器特定寄存器用以储存一特定值。上述存取控制元件耦接于上述熔丝、上述机器特定寄存器以及上述联合测试工作群组控制链,用以判断上述熔丝被烧断,以及当上述特定值在储存在于上述机器特定寄存器的期间符合于上述存取控制元件的无效值,则指示上述联合测试工作群组控制链将上述所规定的间隔与事件发生的集合的编程致能。

再者,本发明提供另一种基本输入输出系统的保护方法,用以保护一计算系统内的一基本输入输出系统。储存基本输入输出系统内容以及一加密讯息文摘至一基本输入输出系统只读存储器,其中上述加密讯息文摘包括对应于上述基本输入输出系统内容的一第一讯息文摘的一加密版本。透过一熔丝的状态,指示是否对所规定的间隔与事件发生的集合的编程禁能。储存一特定值于一机器特定寄存器。判断上述熔丝被烧断,以及当上述特定值在储存在于上述机器特定寄存器的期间符合于上述存取控制元件的无效值,指示一联合测试工作群组控制链将上述所规定的间隔与事件发生的集合的编程致能。编程在一窜改检测微码储存器的上述所规定的间隔与事件发生的集合。产生一基本输入输出系统检查中断,以便在上述所规定的间隔与事件发生的集合中断上述计算系统的正常操作。回应于上述基本输入输出系统检查中断,存取上述基本输入输出系统内容以及上述加密讯息文摘,并使用用来产生上述第一讯息文摘与上述加密讯息文摘的相同演算法与密钥来产生对应于上述基本输入输出系统内容的一第二讯息文摘以及对应于上述加密讯息文摘的一解密讯息文摘。比较上述第二讯息文摘与上述解密讯息文摘。当上述第二讯息文摘不相同于上述解密讯息文摘时,防止一微处理器的操作。使用在上述微处理器内的一乱数产生器,在完成了一目前基本输入输出系统检查之后产生一乱数,其中上述乱数是用来设定下一个所规定的间隔,以及上述所规定的间隔是可随机改变的。

附图说明

图1是显示设置在现今计算系统的主机板的实体元件的框图;

图2是显示图1中各元件相互连接的框图,用以说明计算系统如何配置基本输入/输出系统;

图3是显示根据本发明一实施例所述的架构的框图,用以保护计算系统的基本输入/输出系统;

图4是显示根据本发明一实施例所述的周期性架构的框图,用以保护计算系统的基本输入/输出系统;

图5是显示根据本发明一实施例所述的基于事件架构的框图,用以保护计算系统的基本输入/输出系统;

图6是显示根据本发明一实施例所述的基于驱动架构的框图,用以保护计算系统的基本输入/输出系统;

图7是显示根据本发明一实施例所述的安全基本输入/输出系统窜改保护架构的框图;以及

图8是显示根据本发明一实施例所述的可编程的安全基本输入/输出系统窜改保护架构的框图。

具体实施方式

为让本发明的上述和其他目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合附图,作详细说明如下:

本发明的示范以及说明的实施例描述如下。为了清楚起见,并非实际实施的所有特征都描述于此。对于本领域技术人员将会理解,在任何这种实际实施例的开发,许多特定于实现的决策均达到特定目标,例如符合与系统相关以及商业相关的约束,可从一实施方式改变成另一个。此外,将会理解,这种开发成果可能是复杂以及耗时,但是对于具有本发明的优势的本领域技术人员仍然是例行任务。对本领域技术人员而言,较佳实施例的各种修改是显而易见的,且于此所定义的一般原理可以应用到其他的实施例。因此,本发明并不旨在局限于所示以及本文所描述的具体实施例,而是应被赋予最宽的范围相一致的原则以及所公开的本发明的新颖特征。

本发明将根据下列附图来描述。描绘在附图中的不同结构、系统和装置仅作为说明,并不会使得本领域技术人员对本发明难以理解。不过,下列图示是用来叙述与解释本发明的示范例。使用在此的字与词组应该被了解和理解成有与本领域技术人员所了解的字与词组相一致的意义。用语或词组没有特别的定义,也就是,与平常的及本领域技术人员所了解的惯例的意义不同的定义的意思是意味着在此使用一致的名称或词组。到了名称或词组意思是有特别意义的程度,也就是,意义与本领域技术人员所了解的不同,这样的特别定义将明确地列举在直接地与明确地提供特别定义给该名称或词组的定义方式里的详细说明中。

集成电路(integratedcircuit,ic)是制造在一小块半导体材料(通常是硅)内的一组电子电路。集成电路也被称为芯片、微芯片或晶粒(die)。

中央处理单元(centralprocessingunit,cpu)是执行计算机程序(又称为“计算机应用”或是“应用”)的指令的电子电路(例如“硬件”),其中电子电路对数据执行包括算术运算、逻辑运算以及输入/输出操作等运算。

微处理器是作为在单一集成电路的中央处理单元的电子元件。微处理器会接收数字数据以作为输入、根据从一存储器(无论是在芯片内或芯片外)所读取的指令来处理该数据,以及产生由指令所规定的运算结果来当作输出。通用的微处理器可以使用在桌上型计算机、移动电话或是平板计算机,并进行如计算、文书编辑、多媒体显示和浏览网际网路的使用。微处理器亦可设置在嵌入式系统,以控制各种各样的装置,包括设备、移动电话、智能手机和工业控制装置。

多核心处理器又称为多核心微处理器,多核心处理器是具有制造在单一集成电路的多个中央处理单元的微处理器。

指令集架构(instructionsetarchitecture,isa)或是指令集是关于编程的计算机架构的一部分,包括数据类型、指令、寄存器、寻址模式、存储器架构、中断与异常管理以及输入/输出。指令集架构包括由特定中央处理单元所实施的一组运算码(opcode,即机器语言指令)以及本机命令的规格。

x86-相容微处理器是能执行计算机应用的微处理器,其中该计算机应用是根据x86指令集架构所编程。

微码(microcode)是复数微指令。微指令(又称为“本机指令”)是由微处理器的子单元所执行的一种指令。示范性的子单元包括整数单元、浮点(floatingpoint)单元、mmx单元以及载入/储存单元。例如,微指令可直接由精简指令集计算机(reducedinstructionsetcomputer,risc)微处理器所执行。对复杂指令集计算机(complexinstructionsetcomputer,cisc)微处理器而言,例如x86-相容微处理器,x86指令会被转译(translate)成相关的微指令,以及相关的微指令是直接由cisc微处理器内的一个子单元或多个子单元所执行。

熔丝是一种导电架构,通常安排成细丝。可藉由施加电压于细丝及/或流经细丝的电流而在选定的位置来烧断细丝。可使用习知制造技术来设置熔丝于晶粒上,以便在全部可编程的区域来配置细丝。在制造之后,将熔丝架构烧断(或未烧断),能提供设置在晶粒上的对应元件所需要的程序化。

有鉴于先前技术中关于在可信任的计算系统中保护关键程序以及数据,以及现今系统中的技术来检测及/或防止对这些程序与数据进行窜改,下面的图1-图2将描述现今系统中的bios。随后,本发明将描述于图3-图7中。

参考图1,框图100是显示设置在现今计算系统的主机板102(又称为系统板)的实体元件。主机板102的元件包括微处理器104(又称为中央处理单元、处理器、处理器芯片等)、易失性存储器106(又称为随机存取存储器,ram)、芯片组108(又称为存储器控制器、存储器集线器、输入/输出集线器或桥芯片(例如北桥或是南侨))、通常被插入至插座112的基本输入输出系统(basicinput/outputsystem,bios)只读存储器(readonlymemory,rom)110以及硬盘接口114。主机板102通常跟完成特定计算机配置所需的其他元件(例如电源供应器)被安装在计算机机壳内(例如桌上型计算机或笔记型计算机机壳、移动电话机壳、平板计算机机壳、机上盒机壳)。如本领域技术人员所知,还有许多额外的元件和零件(例如时脉产生器、风扇、连接器、图形处理器等)被安装在主机板102上,而为了简化描述,这些额外的元件和零件将不显示。此外,图1所显示的元件104、106、114、108、110与112可以不同形式被设置在主机板102上,且值得注意的是,所显示的元件104、106、114、108、110与112是参照他们所公认的名称。在此实施例中,微处理器104是经由主机板102板上的实体接口(未显示)而耦接于元件106、114、108、110与112,通常为金属走线(trace)。值得注意的是,由于bios只读存储器110在工厂及/或领域中容易遭受到相当频繁的更换,因此将插座112设置在主机板102上。

参考图2,框图200是显示图1的元件104、106、114、108、110与112相互连接的示意图,用以说明计算系统如何配置基本输入/输出系统(basicinput/outputsystem,bios)。框图200显示微处理器204,其中微处理器204包括芯片内(on-chip)高速缓存存储器230。微处理器204是经由存储器总线216而耦接于低速随机存取存储器206。微处理器204亦经由系统总线218耦接于芯片组208,以及芯片组208分别经由硬盘接口总线224以及只读存储器总线220而耦接于硬盘接口214以及bios只读存储器(rom)210。bios只读存储器210可经由bios编程总线222而耦接至可选的bios编程接口(未显示)。如本领域技术人员所知,图2所显示的配置的变化可包括芯片组208,其亦提供了接口透过系统总线218而到随机存取存储器206,而不是直接存储器总线216,并可提供其他类型的总线(未显示),用于连接微处理器204到其他类型的周边接口(例如快速周边组件互连(pciexpress)、图形处理器)。

在操作上,如本领域技术人员所知,应用程序234(例如微软)储存在硬盘(或是固态盘)上(未显示),其经由硬盘接口214所存取。因为硬盘是一个比较缓慢的装置,应用程序234在被执行之前,通常会被传送到外部的随机存取存储器206。然后,部分的应用程序234会被缓存以供微处理器204在其内部的缓存存储器230内执行。当应用程序234的指令要求微处理器204来执行系统层级的操作(例如储存文件至硬盘)时,来自操作系统软件232的指令(例如储存要求)会被微处理器204所执行,其中来自操作系统软件232的指令亦被从硬盘载入至随机存取存储器206并缓存存入内部的缓存存储器230。操作系统软件232提供了一种更通用的接口,能致能应用程序234来执行系统层级的功能,而不需要特定已知的系统设定。操作系统软件232亦考虑到微处理器204会同时执行多个应用程序234,并且更执行后台操作以有效管理随机存取存储器206的使用。

然而,操作系统232事实上是在现今计算系统中软件的中间层级。为了实际连接至计算系统的硬件(例如硬盘),操作系统232必须执行储存在bios只读存储器210内的bios236的指令。bios236通常为许多的小程序,其是作为计算系统的最低层级的软件,并用以连接操作系统232至计算系统的硬件。相似于操作系统232,bios236会提供通用接口给计算机硬件,以允许操作系统232能存取硬件而不需要特定的接口设计。bios236可使系统设计者能改变计算系统的硬件(例如硬盘、芯片组208、随机存取存储器206),而不需要变更到操作系统232或是应用程序234。然而,当系统设定改变时,bios236必须被更新,而这就是为什么插座112和/或bios编程总线222必须设置在主机板102,其将使得bios只读存储器210能容易被更换或是重新被编程。在一些系统设定中,可经由bios只读存储器总线220直接重新编程bios只读存储器210。因此,为了对bios236进行变更,几乎全部现今的计算系统都有提供上面的架构。bios只读存储器210是一个独立的元件,以便容易进行重新编程或是更换。

在全部的计算系统设定中,bios236是非常必要的特性,因为其指令可以致能应用程序234以及操作系统232来直接连接硬件。除了能提供连接至系统硬件之外,bios236会执行其他一些系统上必要的正常功能。例如,当系统开机后,bios236内的开机自我检测程序(power-onselftest,post)会被执行,以便进行硬件测试,并对系统的正确设定以及运行进行验证。bios236亦包括程序能识别并指派系统资源给新安装的装置。bios236更包括程序能从硬盘下载操作系统232至随机存取存储器206,并将系统控制传送给操作系统232。最后,bios236包括程序能检测以及防止计算系统的篡改(tampering)。

由于bios236在计算系统的安全性以及操作上是重要的,因此常常成为被非法侵入(hack)以及以其他未经授权的形式进行篡改的一个主要目标。例如,许多众所皆知的操作系统具有由设备制造商根据计算系统内的bios236所给定的规定,因此允许制造商能贩卖具有预先安装的操作系统的计算系统。通常,制造商会将标记(或“记号”)编程到bios236的特定位置,以及当操作系统开机时,会从bios236的特定位置读取出标记,以确认是在授权的系统上被开机。如果标记不存在或是不正确,则操作系统将无法开机。

上面的例子是编程现今bios236的许多不同类型的安全特性之一,且提供了bios安全功能的深入讨论。要注意的是,对系统设计者来说,系统上bios236是篡改的主要目标,因此bios236的保护是主要关心的事项。在上面的例子中,骇客编辑(或重新编程)bios236的目的是为了将计算系统呈现为授权系统给受保护的操作系统,或是修改bios,使得操作系统认为其系在授权系统上运作,然而实际上并不是。

如先前所描述,大多数现今的bios只读存储器110为主机板102上的单独元件,且被安装在插座112,以便在当系统硬件改变而需要变更bios236时能方便进行更换。因此,在缺少其他安全架构的情况下,像先前所描述的非法侵入是有可能。

因此,系统设计人员已经开发出许多不同的技术来对系统以及运作在系统上的应用程序234和/或操作系统232进行检测并防止窜改(tamper)。例如,在美国专利公开号2005/0015749中,mittal提出藉由提供安全存储器部分以及包括加密技术的逻辑来对程序以及数据进行加密与解密,以保护软件不会被篡改。然而,bios系储存在系统软件的独立存储器空间,因此在移动bios至如微处理器的相同芯片的情况下,无法防止任何形式的窜改。于是,透过更换芯片能轻易对bios进行更新。

在美国专利公告号7,831,839中,hatakeyama公开一种安全开机只读存储器以及处理器,其中安全开机只读存储器包括加密开机码(例如bios)而处理器包括硬件解密单元。当处理器开机时,已加密的bios会被读取至处理器的内部存储器,而解密单元会对bios进行解密以及认证。如果成功,则处理器会进入安全处理模式,且全部的bios要求之后会从内部存储器被执行。虽然hatakeyama提供了经由自己内容的加密来保护bios的架构,为了能有效执行,必须使用芯片内本地存储器来储存已解密的bios。如本领域技术人员所知,现今bios程序(包括系统设定数据)的大小为百万位元组(megabytes)。因为提供可储存百万位元组数据的芯片内本地存储器会增加微处理器的尺寸以及耗电量,其将降低元件的可靠度而增加全次的成本,因此hatakeyama的bios保护方法是不利的。

已经开发出来的其他技术是对全部或一部份的bios内容进行加密,当每次进行bios要求时,需进行解密。因此,这样的技术会降低了计算系统的性能,特别是在开机时,因为即使使用了芯片内的加密硬件,解密本质上还是缓慢的过程。因此,从性能上来看,加密bios内容是不想要的。

因此,所有上述技术(标记、划分安全存储器、芯片内本地bios存储器、加密bios内容)不容易对系统bios只读存储器进行存取,且同时会降低性能影响。因此,本发明提供新颖的技术来应用于bios只读存储器,以克服这些限制,其中这些安装在插座的bios只读存储器容易被升级。接着,提供未加密(例如可读文本)的bios内容(例如指令及/或设定数据)。然后,在开机后,能检测初始的窜改,而不会明显降低系统的性能。本发明将描述于图3-图7。

参考图3,图3系显示根据本发明一实施例所述的架构的框图300,用以保护计算系统的bios。框图300的描述设置在单一芯片并被封装以安装在主机板上的微处理器(例如处理器、cpu等),如先前所描述。在一实施例中,微处理器相容于x86架构,并且能执行x86指令集的全部指令。在另一实施例中,微处理器是设置在单一芯片的多核心处理器。在另一实施例中,微处理器是虚拟处理核心,其表示能共同使用处理器的逻辑部分内操作系统的实体处理器。为了描述本发明,微处理器的必要元件将描述于后,其中如本领域技术人员所知的许多其他元件(例如载入/储存逻辑、缓存存储器、排序逻辑等)将简化。

微处理器包括提取(fetch)逻辑302,其经由总线324而耦接于转译器(translator)304。转译器304经由总线326而耦接于执行逻辑306。执行逻辑306包括密码机(crypto)/散列单元(hashunit)308,其经由总线322而耦接于密钥储存器310。微处理器亦包括总线接口318,用以连接微处理器至芯片组。总线接口318经由总线328而耦接于重置控制器312。重置控制器312会接收重置信号reset,并产生关机信号shutdown。重置控制器312包括窜改检测器314,其中窜改检测器314经由总线noboot而耦接于开机载入器316。重置控制器312经由窜改总线tbus而耦接于执行逻辑306。

在操作上,提取逻辑302用以提取程序指令(来自应用程序、操作系统及存储器中的所缓存的bios)来执行。程序指令会经由总线324而提供至转译器304。转译器304会将程序指令转译为一或多个微指令,其中微指令会由执行逻辑306内的一或多个元件执行,以便执行程序指令所指定的操作。微指令(又称为微码或是韧体)是微处理器所特有的,且无法在封装层级(packagelevel)被存取。

在正常操作的情况下,在开机之后,bios指令以及设定数据会被纪录且缓存于虚拟存储器,并由提取逻辑302进行提取以供执行。然而,微处理器的正常操作是发生在成功的重置以及开机顺序之后。重置控制器312接收重置信号reset,并指示执行逻辑306来执行微码,以执行自我测试以及启动系统。为了检测bios的窜改以及防止设置有微处理器的系统的未被授权的操作,在启动之前,重置控制器312会经由总线接口318来提取bios只读存储器(未显示)的全部内容,并经由窜改总线tbus来提供所提取的内容至执行逻辑306。在一实施例中,bios只读存储器的内容包括数字签章(数字签章)(又称为散列(hash)或是讯息文摘(digest)),其储存在bios只读存储器的特定位置内。如本领域技术人员所知,根据所使用的特定散列运算,对应于bios只读存储器(尺寸为4百万位元组)的散列的数字签章在尺寸上是非常小(例如256位元),并且由bios只读存储器的特定内容所独有。于是,假如只读存储器的内容被改变,则被改变的内容的散列将导致不同的数字签章。

在储存至bios只读存储器之前,微处理器的制造商会使用密钥(cryptographickey)来对数字签章进行加密,其中密钥由bios制造商所提供。在微处理器的制造过程中,密钥会被编程至密钥储存器310,之后会无法经由程序指令进行存取。在一实施例中,密钥是微处理器所独有的。在一实施例中,密钥储存器310的内容仅由密码机/散列单元308在窜改检测微码的控制下进行存取。窜改检测微码会指示重置控制器312来提取bios只读存储器的内容,其中内容包括已加密的数字签章,以及所提取的内容会经由窜改总线tbus而提供至执行逻辑306。同时地,窜改检测微码会指示密码机/散列单元308来根据散列演算法而执行bios的散列,其中bios制造商系使用散列演算法来产生数字签章。在一实施例中,散列演算法可以是散列(securehash)演算法(例如sha-0、sha-1等)。其他实施例是使用任何已知的讯息摘要(messagedigest)演算法。窜改检测微码亦会指示密码机/散列单元308来使用储存在密钥储存器310的密钥,来对从bios只读存储器提取出来的已加密数字签章进行解密。在一实施例中,密码机/散列单元308系使用数字加密标准(digitalencryptionstandard,des)演算法来对密钥进行解密。在另一实施例中,密码机/散列单元308系使用进阶加密标准(advancedencryptionstandard,aes)演算法。其他实施例是使用任何已知的密码演算法。密码机/散列单元308所产生的数字签章以及已解密的数字签章会经由窜改总线tbus提供至窜改检测器314,其中已解密的数字签章的加密版本储存在bios只读存储器的特定位置。

窜改检测器314会对两数字签章进行比较。如果两数字签章是相同的,则窜改检测器314会指示开机载入器316可经由总线noboot,来开始进行微处理器的正常启动顺序(bootsequence)。如果两数字签章是不同的,则窜改检测器314会提供关机信号shutdown,并指示开机载入器316来停止启动顺序。关机信号shutdown会指示微处理器中剩下的元件来切断电源或是进入防止(preclude)正常运行的模式。

根据本发明的实施例,每次微处理器被重置,仅需要对储存在bios只读存储器的特定位置的加密讯息文摘进行解密,即对256位元串进行解密,而不是4百万位元组串。此外,本发明的实施例允许使用储存在实体可存取的配置上的可读文本(plaintext)bios指令/数据,如图1-图2所描述的配置。bios容易被更新,而系统性能不会降低。不需要使用到用来储存已解密bios的昂贵的内部本地存储器。此外,储存在bios只读存储器内并用来对讯息文摘加密的密钥系无法由程序指令所存取。密钥仅能由密码机/散列单元308直接存取。

参考图4,图4是显示根据本发明一实施例所述的周期性架构的框图400,用以保护计算系统的bios。图3的架构在启动时对系统的bios进行保护,但是当系统正常操作时,bios有可能会被窜改。因此,在系统的操作期间与上电时,需要能保护bios不被非法侵入。因此,提出了周期性的架构来完成这个目的。

框图400是描述设置在单一芯片并被封装以安装在主机板上的微处理器,如先前所描述。在一实施例中,微处理器相容于x86架构,并且能执行x86指令集的全部指令。在另一实施例中,微处理器是设置在单一芯片的多核心处理器。在另一实施例中,微处理器是虚拟处理核心,其表示能共同使用处理器的逻辑部分内操作系统的实体处理器。为了描述本发明,微处理器的必要元件将描述于后,其中如本领域技术人员所知的许多其他元件(例如载入/储存逻辑、缓存存储器、排序逻辑等)将简化。

微处理器包括提取逻辑402,其经由总线424而耦接于转译器404。转译器404经由总线426而耦接于执行逻辑406。执行逻辑406包括密码机/散列单元408,其经由总线422而耦接于密钥储存器410。执行逻辑406亦包括乱数产生器430。微处理器亦包括总线接口418,用以连接微处理器至芯片组。总线接口418经由总线428而耦接于重置控制器412。重置控制器412会接收重置信号reset,并产生关机信号shutdown。重置控制器412包括窜改检测器414,其中窜改检测器414经由总线noboot而耦接于开机载入器416。窜改检测器414包括窜改计时器432。重置控制器412经由窜改总线tbus以及乱数总线rbus而耦接于执行逻辑406。

在操作上,图4的架构内元件所执行的方式大体上相似于图3的架构内的相同名字元件。然而,除了在重置开机顺序的期间检测bios的窜改,图4的架构亦包括能周期性地检查bios的窜改检测微码以及元件,以判断计算系统在操作时bios是否被窜改。对密钥而言,窜改计时器432无法被程序指令所存取,而是专门由窜改检测器414以及窜改检测微码所存取。在一实施例中,窜改计时器432在一时间间隔中对系统的正常操作进行中断,其中时间间隔系由窜改检测微码所设定。在一实施例中,时间间隔为1毫秒,其是足够时间来检测在被非法入侵的bios只读存储器中欲取代bios只读存储器的实体攻击。1毫秒的时间间隔亦足够来检测欲对现有的bios只读存储器进行重新编程的攻击。当时间间隔被中断时,重置控制器412会经由总线接口418来提取bios只读存储器(未显示)的全部内容,并经由窜改总线tbus而提供所提取的内容至执行逻辑406。窜改检测微码会指示重置控制器412来提取bios只读存储器的内容,其中内容包括已加密的数字签章,以及所提取的内容会经由窜改总线tbus而提供至执行逻辑406。同时地,窜改检测微码会指示密码机/散列单元408来根据散列演算法而执行bios的散列,其中bios制造商使用散列演算法来产生数字签章。窜改检测微码亦指示密码机/散列单元408可使用储存在密钥储存器410的密钥来对从bios只读存储器提取出来的已加密数字签章进行解密。密码机/散列单元408所产生的数字签章以及已解密的数字签章会经由窜改总线tbus提供至窜改检测器414,其中已解密的数字签章的加密版本储存在bios只读存储器的特定位置。

窜改检测器414会对两数字签章进行比较。如果两数字签章是相同的,则窜改检测器414会在计时器中断发生时的时间点来恢复微处理器的控制。如果两数字签章是不同的,则窜改检测器414会提供关机信号shutdown。关机信号shutdown会指示微处理器中剩下的元件来切断电源或是进入防止正常运行的模式。

在另一个实施例中,窜改计时器432不使用固定的时间间隔。在完成周期性的bios非法入侵的检查,窜改检测微码指示乱数产生器430来产生乱数,其输入至窜改计时器432,以产生下一次bios非法入侵检查的下一个时间间隔。在此方式中,执行入侵检查的时间是无法预期与预料的。

相似于图3的架构,根据本发明的实施例,图4的周期性架构执行操作仅需要对储存在bios只读存储器的特定位置的加密讯息文摘进行解密,即对256位元串进行解密,而不是4百万位元组串。此外,在系统的正常操作期间,周期性的架构会保护安全系统远离bios的非法入侵。

参考图5,图5是显示根据本发明一实施例所述的基于事件(event-based)架构的框图500,用以保护计算系统的bios。当计算系统在正常操作时,图4的架构可当作另一实施例来保护系统bios,但是其中一个是基于事件的发生,而非时间的流逝。这些事件可包括(但并非用以限定):硬盘存取(或是其他形式的输入/输出存取)、改变至虚拟存储器映射(mapping)(此架构可使用在虚拟处理系统的系统设定)、改变至速度以及通常发生在现今计算系统的其他种类的事件。因此,提供基于事件架构来完成这个目的。

框图500是描述设置在单一芯片并被封装以安装在主机板上的微处理器,如先前所描述。在一实施例中,微处理器相容于x86架构,并且能执行x86指令集的全部指令。在另一实施例中,微处理器是设置在单一芯片的多核心处理器。在另一实施例中,微处理器是虚拟处理核心,其表示能共同使用处理器的逻辑部分内操作系统的实体处理器。为了描述本发明,微处理器的必要元件将描述于后,其中如本领域技术人员所知的许多其他元件(例如载入/储存逻辑、缓存存储器、排序逻辑等)将简化。

微处理器包括提取逻辑502,其中提取逻辑502经由总线524而耦接于转译器504。转译器504经由总线526而耦接于执行逻辑506。执行逻辑506包括密码机/散列单元508,其经由总线522而耦接于密钥储存器510。执行逻辑506亦包括乱数产生器530。微处理器亦包括总线接口518,用以连接微处理器至芯片组。总线接口518经由总线528而耦接于重置控制器512。重置控制器512接收重置信号reset,并产生关机信号shutdown。重置控制器512包括窜改检测器514,其经由总线noboot而耦接于开机载入器516。窜改检测器514包括事件检测器542,其接收输入/输出存取信号i/oaccess、虚拟存储器映射改变信号vmmap、处理器速度改变信号speed、以及其他事件信号other。重置控制器512经由窜改总线tbus以及乱数总线rbus而耦接于执行逻辑506。

在操作上,图5的架构内元件所执行的方式大体上相似于图3与图4的架构内的相同名字元件。然而,除了在重置开机顺序的期间检测bios的窜改,图4的架构亦包括能检查bios的窜改检测微码以及元件,以判断当计算系统在操作时bios是否被窜改。bios的有效性检查是根据事件的发生,而不是根据时间。发明人注意到在现今计算系统中,微处理器会执行一些规律地发生的事件,例如i/o存取(即硬盘、快速周边组件互连(pciexpress))、核心时脉速度改变、操作系统呼叫、系统状态改变等。因此,事件检测器542所接收的信号仅是个例子,并非用以限定框图500中能用来触发bios检查的事件的类型。

相似于密钥,无法经由执行程序指令来对事件检测器542进行存取,而事件检测器542仅能由窜改检测器514以及窜改检测微码所存取。在一实施例中,当上述事件之一者发生时,事件检测器542会中断系统的正常操作,即信号i/oaccess、vmmap、speed与other之一者存在时。在另一实施例中,当复数个上述事件之一者发生时,事件检测器542会中断系统的正常操作。在另一实施例中,当复数事件发生时(例如i/o存取以及核心时脉速度改变),事件检测器542会中断系统的正常操作。所选择的事件以及发生的次数是由窜改检测微码所设定。当中断发生时,重置控制器512会经由总线接口518来提取bios只读存储器(未显示)的全部内容,并经由窜改总线tbus而提供所提取的内容至执行逻辑506。窜改检测微码会指示重置控制器512来提取bios只读存储器的内容,其中内容包括已加密的数字签章,以及所提取的内容会经由窜改总线tbus而提供至执行逻辑506。窜改检测微码会指示密码机/散列单元508来根据散列演算法而执行bios的散列,其中bios制造商使用散列演算法来产生数字签章。窜改检测微码亦指示密码机/散列单元508,使用储存在密钥储存器510的密钥来对从bios只读存储器提取出来的已加密数字签章进行解密。密码机/散列单元508所产生的数字签章以及已解密的数字签章会经由窜改总线tbus提供至窜改检测器514,其中已解密的数字签章的加密版本储存在bios只读存储器的特定位置。

窜改检测器514会对两数字签章进行比较。如果两数字签章是相同的,则窜改检测器514会在事件触发中断发生时的时间点来恢复微处理器的控制。如果两数字签章是不同的,则窜改检测器514会提供关机信号shutdown。关机信号shutdown会指示微处理器中剩下的元件来切断电源或是进入防止正常运行的模式。

在另一实施例中,在完成bios非法侵入检查时,窜改检测微码会指示乱数产生器530来产生乱数,而不是使用事件发生的次数。乱数会被输入至事件检测器542,以便设定发生在执行下一次bios非法侵入检查设定之前的接续事件的数量。在此实施例中,触发非法侵入检查的事件的数量无法经由微处理器所执行的秘密应用来预测及预期。在另一实施例中,乱数用来改变触发下一次bios非法侵入检查的事件的类型。

相似于图3与图4的架构,根据本发明的实施例,图5的事件触发架构执行操作仅需要对储存在bios只读存储器的特定位置的加密讯息文摘进行解密,即对256位元串(即已加密的讯息文摘)进行解密,而不是4百万位元组串(即全部的bios)。此外,在系统的正常操作期间,事件触发架构会保护安全系统远离bios的非法入侵,其中触发非法入侵检查的事件的数量以及类型无法被决定以及强迫。

参考图6,图6是显示根据本发明一实施例所述的基于分区(partition-based)架构的框图600,用以保护计算系统的bios。当计算系统在正常操作时,图6的架构可当作另一实施例来保护系统bios,但是其中一个是当窜改计时器中断(例如图3的实施例)或是系统事件所触发(例如图4的实施例)时,仅对bios的子集(subset)进行检查。因此,基于分区机制提供了一种用于性能是相当关键的设定,因为在每个触发点仅有一部份的bios被检查,于是对系统性能的影响较少。

在图6的实施例中,bios空间被划分为复数分区,其中每一分区具有对应的讯息文摘,其中讯息文摘系已加密并储存在bios只读存储器内所对应的位置。在一实施例中,对复数分区的每一分区来说,分区尺寸是相同的。在另一实施例中,复数分区具有不同的尺寸。在一实施例中,回应于bios检查触发(例如事件发生的计时器中断),复数分区中仅有一个分区会被检查。回应于bios检查触发,复数分区中的多个分区会被检查。在另一实施例中,回应于bios检查触发,复数分区中会被检查的分区数量由窜改检测微码所决定(例如一个重复的周期1-3-1-2)。

框图600是描述设置在单一芯片并被封装以安装在主机板上的微处理器,如先前所描述。在一实施例中,微处理器相容于x86架构,并且能执行x86指令集的全部指令。在另一实施例中,微处理器是设置在单一芯片的多核心处理器。在另一实施例中,微处理器是虚拟处理核心,其表示能共同使用处理器的逻辑部分内操作系统的实体处理器。为了描述本发明,微处理器的必要元件将描述于后,其中如本领域技术人员所知的许多其他元件(例如载入/储存逻辑、缓存存储器、排序逻辑等)将简化。

微处理器包括提取逻辑602,其中提取逻辑602经由总线624而耦接于转译器604。转译器604经由总线626而耦接于执行逻辑606。执行逻辑606包括密码机/散列单元608,其经由总线622而耦接于密钥储存器610。执行逻辑606亦包括乱数产生器630。微处理器亦包括总线接口618,用以连接微处理器至芯片组。总线接口618经由总线628而耦接于重置控制器612。重置控制器612接收重置信号reset,并产生关机信号shutdown。重置控制器612包括窜改检测器614,其经由总线noboot而耦接于开机载入器616。窜改检测器614包括分区选择器652。重置控制器612经由窜改总线tbus以及乱数总线rbus而耦接于执行逻辑606。

在操作上,图6的架构内元件所执行的方式大体上相似于图3-图5的架构内的相同名字元件。然而,除了在重置开机顺序的期间检测bios的窜改,图6的架构亦包括能检查bios的窜改检测微码以及元件,以判断当计算系统在操作时bios是否被窜改。bios的有效性检查是根据如先前所描述的触发的发生。根据触发的发生,分区选择器652会有效地选择bios的一或多个分区来进行检查。

相似于密钥,无法经由执行程序指令来对分区选择器652进行存取,而分区选择器652仅能由窜改检测器614以及窜改检测微码所存取。当bios检查触发发生时,计算系统的正常操作被中断,而分区选择器652会指示控制器612经由总线接口618来提取bios只读存储器(未显示)的一或多个分区的内容,并经由窜改总线tbus而提供所提取的内容至执行逻辑606。包括一或多个所对应的已加密的数字签章的内容会经由窜改总线tbus提供至执行逻辑606。窜改检测微码会指示密码机/散列单元608来根据散列演算法而执行一或多个分区的散列,其中bios制造商使用散列演算法来产生一或多个数字签章。窜改检测微码亦指示密码机/散列单元608,使用储存在密钥储存器610的密钥来对从bios只读存储器提取出来的所对应的一或多个已加密数字签章进行解密。密码机/散列单元608所产生的一或多个数字签章以及已解密的一或多个数字签章会经由窜改总线tbus提供至窜改检测器614,其中已解密的一或多个数字签章的加密版本系储存在bios只读存储器的一或多个特定位置。

窜改检测器614会对一或多对的数字签章进行比较。如果全部的比较是相同的,则窜改检测器614会在事件触发中断发生时的时间点来恢复微处理器的控制。如果数字签章是不同的,则窜改检测器614会提供关机信号shutdown。关机信号shutdown会指示微处理器中剩下的元件来切断电源或是进入防止正常运行的模式。

在另一实施例中,在完成bios非法侵入检查时,窜改检测微码会指示乱数产生器630来产生乱数,而不是检查固定或是循环数字的复数分区。乱数会被输入至分区选择器652,以便设定发生在执行下一次bios非法侵入检查设定之前的接续事件的数量。在此实施例中,在检查点触发时有效的分区的数量无法经由微处理器所执行的秘密应用来预测及预期。在不同实施例中,乱数用来指示欲检查的复数分区的下一分区。

参考图7,图7是显示根据本发明一实施例所述的bios窜改保护架构的框图700。图7的实施例提供了完整的配置,不仅在开机时以及重置时执行计算系统的bios的全面检查,并且在结合参考图4-图6的技术所使用的操作,亦能对系统的bios提供全面的保护。

框图700是描述设置在单一芯片并被封装以安装在主机板上的微处理器,如先前所描述。在一实施例中,微处理器相容于x86架构,并且能执行x86指令集的全部指令。在另一实施例中,微处理器是设置在单一芯片的多核心处理器。在另一实施例中,微处理器是虚拟处理核心,其表示能共同使用处理器的逻辑部分内操作系统的实体处理器。为了描述本发明,微处理器的必要元件将描述于后,其中如本领域技术人员所知的许多其他元件(例如载入/储存逻辑、缓存存储器、排序逻辑等)将简化。

微处理器包括提取逻辑702,其中提取逻辑702经由总线724而耦接于转译器704。转译器704经由总线726而耦接于执行逻辑706。执行逻辑706包括密码机/散列单元708,其经由总线722而耦接于密钥储存器710。执行逻辑706亦包括乱数产生器730。微处理器亦包括总线接口718,用以连接微处理器至芯片组。总线接口718经由总线728而耦接于重置控制器712。重置控制器712接收重置信号reset,并产生关机信号shutdown。重置控制器712包括窜改检测器714,其经由总线noboot而耦接于开机载入器716。窜改检测器714包括窜改计时器732、事件检测器742以及分区选择器752。事件检测器742接收输入/输出存取信号i/oaccess、虚拟存储器映射改变信号vmmap、处理器速度改变信号speed以及其他事件信号other。重置控制器712经由窜改总线tbus以及乱数总线rbus而耦接于执行逻辑706。

在操作上,图7的架构内元件所执行的方式大体上相似于图3-图6的架构内的相同名字元件。然而,除了在重置开机顺序的期间检测bios的窜改,图7的架构亦包括能检查bios的窜改检测微码以及元件,以判断当计算系统在操作时bios是否被窜改。bios的有效性检查是根据来自窜改计时器732的计时器中断以及如图5所描述的事件触发的发生。根据计时器中断或是事件触发的发生,分区选择器752会有效地选择bios的一或多个分区来检查,如图6所描述。

窜改计时器732、事件检测器742以及分区选择器752无法经由执行程序指令来进行存取,而分区选择器752仅能由窜改检测器714以及窜改检测微码所存取。当计时器中断或是事件触发发生时,计算系统的正常操作被中断,而分区选择器752会指示控制器712经由总线接口718来提取bios只读存储器(未显示)的一或多个分区的内容,并经由窜改总线tbus而提供所提取的内容至执行逻辑706。包括一或多个所对应的已加密的数字签章的内容会经由窜改总线tbus提供至执行逻辑706。窜改检测微码会指示密码机/散列单元708来根据散列演算法而执行一或多个分区的散列,其中bios制造商使用散列演算法来产生一或多个数字签章。窜改检测微码亦指示密码机/散列单元708,使用储存在密钥储存器710的密钥来对从bios只读存储器提取出来的所对应的一或多个已加密数字签章进行解密。密码机/散列单元708所产生的一或多个数字签章以及已解密的一或多个数字签章会经由窜改总线tbus提供至窜改检测器714,其中已解密的一或多个数字签章的加密版本储存在bios只读存储器的一或多个特定位置。

窜改检测器714会对一或多对的数字签章进行比较。如果全部的比较是相同的,则窜改检测器714会在事件触发中断发生时的时间点来恢复微处理器的控制。如果数字签章是不同的,则窜改检测器714会提供关机信号shutdown。关机信号shutdown会指示微处理器中剩下的元件来切断电源或是进入防止正常运行的模式。

在一实施例中,计时器中断以及事件触发的组合顺序由窜改检测微码所决定。在另一实施例中,由乱数产生器730在bios检查结束时所产生的乱数会指示是否下一bios检查会根据计时器中断或是事件触发而启动。如图4-图5所显示,在部分实施例中,乱数产生器730会随机地改变时间间隔及/或事件类型以及事件的数量。

在另一实施例中,在完成bios非法侵入检查时,窜改检测微码会指示乱数产生器730来产生乱数,而不是检查固定或是循环数字的复数分区。乱数会被输入至分区选择器752,以便设定在下一次bios非法侵入检查期间欲检查的分区的下一个数量。在此实施例中,在检查点触发时有效的分区的数量无法经由微处理器所执行的秘密应用来预测及预期。在不同实施例中,乱数用来指示欲检查的复数分区的下一分区。

参考图8,图8是显示根据本发明一实施例所述的可编程的安全基本输入/输出系统窜改保护架构的框图800。相似于图7的实施例,图8的实施例提供了完整的配置,不仅在开机时以及重置时执行计算系统的bios的全面检查,并且在结合参考图4-图6的技术所使用的操作,亦能对系统的bios提供全面的保护。再者,图8的实施例包括规定,以便对所规定的时间间隔、事件类型、事件的数量与顺序进行编程,其系用于触发一或多个bios分区的bios检查。

图8是描述设置在单一芯片并被封装以安装在主机板上的微处理器,如先前所描述。在一实施例中,微处理器相容于x86架构,并且能执行x86指令集的全部指令。在另一实施例中,微处理器是设置在单一芯片的多核心处理器。在另一实施例中,微处理器是虚拟处理核心,其表示能共同使用处理器的逻辑部分内操作系统的实体处理器。为了描述本发明,微处理器的必要元件将描述于后,其中如本领域技术人员所知的许多其他元件(例如载入/储存逻辑、缓存存储器、排序逻辑等)将简化。

微处理器包括提取逻辑802,其经由总线824而耦接于转译器804。转译器804经由总线826而耦接于执行逻辑806。执行逻辑806包括密码机/散列单元808,其经由总线822而耦接于密钥储存器810。执行逻辑806亦包括乱数产生器830。微处理器亦包括总线接口818,用以连接微处理器至芯片组。总线接口818经由总线828而耦接于重置控制器812。重置控制器812会接收重置信号reset,并产生关机信号shutdown。重置控制器812包括窜改检测器814,其中窜改检测器814经由总线noboot而耦接于开机载入器816。窜改检测器814包括窜改计时器832、事件检测器842以及分区选择器852。事件检测器842接收输入/输出存取信号i/oaccess、虚拟存储器映射改变信号vmmap、处理器速度改变信号speed以及其他事件信号other。重置控制器812经由窜改总线tbus以及乱数总线rbus而耦接于执行逻辑806。

微处理器亦包括窜改检测微码储存器853,系耦接于执行逻辑806以及重置控制器812。微处理器亦具有联合测试工作群组(jointtestactiongroup,jtag)控制链(chain)854,其耦接于窜改检测微码储存器853以及jtag总线接口元件855。jtag总线接口元件855经由jtag总线jt[1:n]与jtag控制器(未显示)进行通讯。jtag总线jt[1:n]的每一信号会接合至微处理器封装上所对应的连接接脚851。微处理器亦包括存取控制元件856,其经由总线bsonly而耦接于jtag控制链854。存取控制元件856亦可耦接于熔丝(fuse)858。存取控制元件856可另外耦接于机器特定寄存器857。

窜改检测微码储存器853可包括暂时储存器(例如随机存取存储器、寄存器等)、非暂时储存器(例如只读存储器、固定可编程逻辑等),或是暂时储存器与非暂时储存器的组合。从窜改检测微码储存器853所提取的微指令由已知机制指示给微处理器内的执行逻辑806,以执行其他已知操作的编程顺序。此外,可从窜改检测微码储存器853提取篡改检测微码,以执行上述用于执行基于间隔和基于事件的bios篡改检查的操作。

jtag总线jt[1:n]提供微处理器的边界扫描和测试,以及jtag总线jt[1:n]的状态由测试单元、除错器(debugger)或在微处理器的外部设备等所操作。jtag总线接口855接收通过总线jt[1:n]的jtag命令,并经过jtag控制链854路由(route)这些信号,以及jtag控制链854耦接到微处理器内全部可测试元件。除了jtag扫描和测试特征之外,微处理器的架构被扩充以允许对所规定的bios检查时间间隔、事件类型以及事件的数量和顺序进行编程,而这些事件类型由在窜改检测微码储存器853中的篡改保护的微码所使用,以触发如先前所描述的bios检查。为了完成这些操作,相关联的jtag命令经由控制链854且经过总线tcode而路由至窜改检测微码储存器853,以便编程所规定的bios检查时间间隔、事件类型以及事件的数量和顺序。

根据本发明图8的实施例更提供可防止未授权的使用者在正常边界扫描和测试操作之外执行任何jtag活动的机制。在一实施例中,微处理器包括熔丝858,其被烧断以指示有害或未授权的jtag活动将被禁能,其包括所规定的bios检查时间间隔、事件类型,以及事件的数量和顺序的编程。在处理器开机或重置时,存取控制元件856会检查熔丝858的状态。假如熔丝858未被烧断,则存取控制元件856经由总线bsonly来指示jtag控制链854,以允许全部jtag操作,其包括所规定的bios检查时间间隔、事件类型,以及事件的数量和顺序的编程。然而,假如熔丝858被烧断,则存取控制元件856会经由总线bsonly来指示jtag控制链854,以防止正常边界扫描和测试操作之外的所有jtag操作。因此,当熔丝858被烧断时,由微处理器经由jtag总线jt[1:n]所接收的用来编程所规定的bios检查时间间隔、事件类型,以及事件的数量和顺序的命令会被忽略,或以其他方式使得不可操作,如同所接收的尝试读取窜改检测微码储存器853的内容的命令。

然而,如果需要对所规定的bios检查时间间隔、事件类型以及事件的数量和顺序进行编程,或是在熔丝858被烧断之后而从窜改检测微码储存器853读取出微码,本发明实施例亦可提供一种技术,藉以暂时使篡改验证特征无效。因此,图8的实施例更包括耦接至存取控制元件856的机器特定寄存器857。假如熔丝858已经烧断,为了暂时能重新致能扩充的jtag操作,需要特定值出现在机器特定寄存器857中。在一实施例中,该特定值是仅为微处理器的制造商所知的值,其储存在存取控制元件856内。在某一批中所生产的所有微处理器的该特定值是共有的,或是可以是通用的已知值。在另一实施例中,该特定值是只有微处理器的制造商所知的值,其根据由密码机/散列单元808执行的所规定的加密演算法而经由特定数量的次数进行加密,且微处理器唯一的值会作为加密密钥,以执行特定数量的次数。

因此,在开机/重置时,存取控制元件856会判断熔丝858是否被烧断。如果熔丝858被烧断,则存储控制元件856会检查机器特定寄存器857中的特定值。在一实施例中,假如机器特定寄存器857中的特定值是符合于存取控制元件856内的无效值(override),然后存取控制元件856会指示jtag控制链854来致能先前所描述的jtag操作。使用固定的间隔来检查机器特定寄存器857,以判断最初所检测到的无效值是否仍在其中。如果是,则允许jtag扩充操作。然而,当在机器特定寄存器857内检测不到该特定值时,则防止所扩展的jtag操作。

在另一实施例,存取控制元件856会判断熔丝858是否被烧断。假如熔丝858被烧断,则存取控制元件856会检查机器特定寄存器857中的特定值并使用密码机/散列单元808,以便使用微处理器唯一的值来作为密钥以执行特定数量的次数。假如机器特定寄存器857中的特定值符合加密值,则存取控制元件856会指示jtag控制链854来致能先前所描述的jtag操作。使用固定的间隔来检查机器特定寄存器857,以判断最初所检测到的无效值是否仍在其中。如果是,则允许jtag扩充操作。然而,当在机器特定寄存器857内检测不到该特定值时,则防止所扩展的jtag操作。

在操作上,图8的架构内元件所执行的方式大体上相似于图3-图7的架构内的相同名字元件,当熔丝858烧断时,可使用经由jtag总线接口855所编程的所规定的bios检查时间间隔、事件类型,以及事件的数量和顺序,或是藉由使用先前所编程的所规定的bios检查时间间隔、先前所编程的事件类型,以及先前所编程的事件的数量和顺序。在熔丝858被烧断且特定值储存在于机器特定寄存器857中时,本发明的一实施例会另外建立先前所编程的所规定的bios检查时间间隔、先前所编程的事件类型,以及先前所编程的事件的数量和顺序。于是,在熔丝858被烧断之后,可允许改变时间间隔、事件类型,以及事件的数量和顺序。

然而,除了在重置开机顺序的期间检测bios的窜改,图8的架构亦包括能检查bios的窜改检测微码以及元件,以判断当计算系统在操作时bios是否被窜改。bios的有效性检查是根据来自窜改计时器832的计时器中断以及如图5-图7所描述的事件触发的发生。根据计时器中断或是事件触发的发生,分区选择器852会有效地选择bios的一或多个分区来检查,如图6所描述。

窜改计时器832、事件检测器842以及分区选择器852无法经由执行程序指令来进行存取,而仅能由窜改检测器814以及窜改检测微码所存取。当计时器中断或是事件触发发生时,计算系统的正常操作被中断,而分区选择器852会指示重置控制器812经由总线接口818来提取bios只读存储器(未显示)的一或多个分区的内容,并经由窜改总线tbus而提供所提取的内容至执行逻辑806。包括一或多个所对应的已加密的数字签章的内容会经由窜改总线tbus提供至执行逻辑806。窜改检测微码会指示密码机/散列单元808来根据散列演算法而执行一或多个分区的散列,其中bios制造商系使用散列演算法来产生一或多个数字签章。窜改检测微码亦指示密码机/散列单元808,使用储存在密钥储存器810的密钥来对从bios只读存储器提取出来的所对应的一或多个已加密数字签章进行解密。密码机/散列单元808所产生的一或多个数字签章以及已解密的一或多个数字签章会经由窜改总线tbus提供至窜改检测器814,其中已解密的一或多个数字签章的加密版本系储存在bios只读存储器的一或多个特定位置。

窜改检测器814会对一或多对的数字签章进行比较。如果全部的比较是相同的,则窜改检测器814会在事件触发中断发生时的时间点来恢复微处理器的控制。如果数字签章是不同的,则窜改检测器814会提供关机信号shutdown。关机信号shutdown会指示微处理器中剩下的元件来切断电源或是进入防止正常运行的模式。

在一实施例中,计时器中断以及事件触发的组合顺序由窜改检测微码所决定。在另一实施例中,由乱数产生器830在bios检查结束时所产生的乱数会指示是否下一bios检查会根据计时器中断或是事件触发而启动。如图4-图5所显示,在部分实施例中,乱数产生器830会随机地改变时间间隔及/或事件类型以及事件的数量。

在另一实施例中,在完成bios非法侵入检查时,窜改检测微码会指示乱数产生器830来产生乱数,而不是检查固定或是循环数字的复数分区。乱数会被输入至分区选择器852,以便设定在下一次bios非法侵入检查期间欲检查的分区的下一个数量。在此实施例中,在检查点触发时有效的分区的数量无法经由微处理器所执行的秘密应用来预测及预期。在不同实施例中,乱数用来指示欲检查的复数分区的下一分区。

根据本发明实施例,微处理器的元件被配置来执行先前所描述的功能以及操作。元件包括逻辑、电路、设备或微码(即微指令或是本机指令)或其组合,或者被用来执行根据本发明所述的功能与操作的等效元件。微处理器内使用来完成功能与操作的元件可以与微处理器中用来执行其他功能和/或操作的其他电路、微码等共用。根据本发明的应用,微码是用来表示一或多个微指令。微指令(又称为本机指令)是由一个单元所执行的指令。例如,微指令可直接由精简指令集计算机(risc)微处理器所执行。对于复杂指令集计算机(cisc)微处理器而言,比如x86-相容微处理器,x86指令会被转译成相关的微指令,且相关的微指令会直接cisc微处理器中的一或多个单元所执行。

本发明及相对应叙述内容所提供的软件或是演算法及符号表示一计算机存储器里的数据位元的操作。这些内容及图示可使本领域的技术人员有效地表达相关内容予本领域的其他技术人员。使用上述的演算法用以表达自我前后一致的顺序。这些步骤需要物理量的物理级操作。一般而言,这些物理量可能是光、电或是磁性号,其可被储存、转换、整合、比较及其他操作。有些为了方便,这些信号会被称为位元、值、元件、符号、特性、项目、数量或其他相关内容。

然而,需注意的是,这些相似的术语系与物理量有关,并且只是用以方便说明这些物理量。除非另外特别说明,不然上述的术语(如处理、估算、计算、判断、显示、或其他相关术语)指的是一计算机系统、一微处理器、一中央处理单元或相似的电子计算机装置的动作及处理,其操作并转换数据,其表示物理性、计算机系统的寄存器及存储器的数量,用以得到其他相似计算机系统的存储器、寄存器或其他相似的资讯储存装置、或显示装置的物理量的数据。

需注意到的是,本发明实现软件的方法是在程序储存媒体或其他相似型态的传送媒体上进行编码。程序储存媒体可能是电子式(如只读存储器、快闪只读存储器、电可擦除只读存储器)、随机存取存储器磁性装置(如软盘或硬盘)或光学式(如只读光盘存储器cdrom)、以及其他只读或随机存取元件。同样地,传送媒体可能是金属导线、双绞线、同轴电缆、光纤、或其他习知相似的传送媒体。本发明并不限制在这些实施例。

虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明,任何所属技术领域中包括通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视后附的权利要求所界定者为准。

附图标记

100、200、300、400、500、600、700~框图;

102~主机板;

104、204~微处理器;

106~易失性存储器;

108、208~芯片组;

110、210~基本输入输出系统只读存储器;

112~插座;

114、214~硬盘接口;

206~随机存取存储器;

216、218、220、222、224、322、324、326、328、422、424、426、428、522、524、526、528、622、624、626、628、722、724、726、728、822、824、826、828、noboot、tcode、bsonly、jt[1:n]~总线;

230~缓存存储器;

232~系统软件;

234~应用程序;

236~基本输入输出系统;

302、402、502、602、702、802~提取逻辑;

304、404、504、604、704、804~转译器;

306、406、506、606、706、806~执行逻辑;

308、408、508、608、708、808~密码机/散列单元;

310、410、510、610、710、810~密钥储存器;

312、412、512、612、712、812~重置控制器;

314、414、514、614、714、814~窜改检测器;

316、416、516、616、716、816~开机载入器;

318、418、518、618、718、818~总线接口;

430、630、730、830~乱数产生器;

432、732、832~窜改计时器;

542、742、842~事件检测器;

652、752、852~分区选择器;

851~接脚;

853~窜改检测微码储存器;

854~jtag控制链;

855~jtag总线接口元件;

856~存取控制元件;

857~机器特定寄存器;

858~熔丝;

i/oaccess~输入/输出存取信号

other~其他事件信号

rbus~乱数总线;

reset~重置信号;

shutdown~关机信号;

speed~处理器速度改变信号;

tbus~窜改总线;以及

vmmap~虚拟存储器映射改变信号。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1