用于保护闪速存贮器的方法和装置的制作方法

文档序号:6746524阅读:139来源:国知局
专利名称:用于保护闪速存贮器的方法和装置的制作方法
背景技术
发明领域本发明涉及防止闪速存贮器的未打算或未授权修改的应用领域。更具体地说,本发明涉及提供对存贮在闪速存贮器的代码。例如基本输入/输出系统和程序(BIOS)等的修改保护。
相关技术描述当前,当PC机首先初始化或者复位时,它开始在预定的存贮单元中执行基本输入/输出系统程序(BIOS)。该BIOS首先执行加电自检(POST)程序,在POST中所有的系统硬件设备(例如中断控制器、直接存贮器存取(DMA)控制器。以及定时器/计数器)被测试并且被编程为正常操作。在完成POST后,BIOS扫描用于BIOS扩展软件的另一预定存贮区。
BIOS扩展软件可以被包含在硬件扩展插件中。通常,图形适配卡、局域网(LAN)适配卡、以及其它硬件扩展插件具有BIOS扩展软件。BIOS扩展软件允许所述扩展硬件将其自己的中断服务程序映射到BIOS功能集,借此使该功能集适应使用这些定制的硬件。
该BIOS功能集根据软件中断定义,意味着BIOS和任何BIOS扩展软件必须修改中断向量表(假定处理器以实模式运行时写BIOS软件)。程序通过产生软件中断来使用BIOS功能,程序寻找中断向量表中特定BIO功能的地址并且将控制传送至其中断服务程序。
由DOS程序跟随的公共过程修改中断向量表以截取BIOS调用(或者诸如键盘输入等其它中断)、检查或处理任何相关数据。然后将处理器的控制传送至最初的目标BIOS程序。例如,当在键盘上按压键时,产生一硬件中断,该中断使BIOS从键盘接口获取相关的数据,在需要时翻译该数据,并且将其存储在一队列中。此后,一程序能够产生一软件中断,该软件中断请求BIOS提供来自键盘的下一个键输入。
由于BIOS是在复位后获得处理器的控制的第一个程序,因此极需任何安全设计。因此,BIOS必须防止在机器处于不安全的操作模式的任何时期中。特别是在BIOS存储在闪速存贮器中的情况下的修改。BIOS存储在闪速存贮器中以允许现场更改和BIOS的重新编程。
典型地,对BIOS的访问由系统控制器芯片或芯片组控制。该系统控制器包括有诸如中断控制器、DMA控制器和存贮控制器等所有标准PC体系结构的功能。该访问控制包括用于修改闪速存贮器的重新编程功能和用于访问闪速存贮器的功能,该闪速存贮器用于包含于BIOS中的程序的执行。
现存的用于防止闪速存贮器的非有意的修改的公用方法是采用寄存器联锁方法,其中两个或多个寄存器必须以一特定次序写入特定的值,以便允许闪速存贮器的重新编程。当前的闪速存贮器保护方法的一个例子示于

图1中,其中有寄存器A2、第一密钥4、第一比较器6、寄存器B8、第二密钥10、第二比较器14、以及与门12。寄存器A2在其从写线18接收到一“写允许”信号时从数据通路16接收数据。寄存器A2的值由比较器6与第一密钥4的值比较。如果寄存器A2的值等于第一密钥4的值,则比较器6产生一写允许信号至与门12。类似地,比较器14比较存在寄存器B8和第二密钥中的值,并且,如果存在寄存器B中的值等于存在第二密钥10中值,则比较器14产生一“BIOS写允许”信号至信号线20上。
通常,在含有图1的寄存器联锁的系统复位后,寄存器A2和寄存器B8存有值0。另外,当存在寄存器A2中的值(即,0)不等于存在密钥4中的值(即,16进制数“0×00AA55FF)时,在比较器6输出逻辑0至与门12时寄存器B8不能接收值。为了允许快速擦除和编程,寄存器B8必须存有值“0×FF55AA00”。为了允许访问寄存器B8,寄存器A2必须存有值“0×00AA55FF”,如图1所示。
因此,为了允许编程闪速存贮器中的快速BIOS程序,寄存器A2通过使用数据通路16和写信号线18首先加载值“0×00AA55FF”。当寄存器A2这样配置完毕后,比较器6将输出“写允许”信号至与门12,该信号将允许写信号线18上后来的写信号通过采用数据通路16配置寄存器B8的值为“0×FF55AA00。当寄存器B8这样配置完毕后,比较器14将经由信号线20输出一“BIOS写允许”信号以便允许为了重新编程而访问闪速存贮器(未示出)。
虽然以特定顺序将两个特定值写到两个特定寄存器单元的方法减少了偶然删除的概率,但是,由于该访问顺序必须由硬件开发者以某种形式公开,以便第三方BIOS程序开发者使用,因此,该方法不禁止故意的或有害的闪速存贮器的擦除或重新编程。
因此,需要的是一种能够只允许授权的个人修改闪速存贮器的保护方法。另外,该保护方法必须在不需要提供只有每个被保护的机器才有的硬件的情况下允许用于闪速存贮器的保护。
发明概述为了提供对存有诸如基本输入/输出系统等程序的闪速存贮器的保护以防止任何未授权的重新编程企图,安装一种系统存贮控制器,其中提供一种模式,在该模式中处理器被限制只访问闪速存贮器(即,一其中处理器只执行来自闪速存贮器的指令而不执行来自诸如主系统存贮器或高速缓存等任意其它存贮器的指令的模式)。通过设置或清除系统存贮控制器中的一控制寄存器,该模式能够被允许或禁止。在系统复位后的缺省模式将为对闪速存贮器中的程序限制指令执行。
另外,该存贮控制器应包含一组寄存器,该组寄存器可用于定义除闪速存贮器之外的存贮空间(即,主系统存贮器的区域)可访问性的限制区域。仅当该控制器操作于该限制访问模式(即,当处理器只执行来自闪速存贮器的指令)时,处理器才能访问这些寄存器。该寄存器将由一个或多个寄存器对构成,其中每一对将由一基址寄存器和一界限寄存器构成。在系统操作于限制模式时,该基址和界限寄存器将定义除处理器可访问的闪速存贮器之外的一存贮区域。其在复位后的缺省值为0(即,在复位后,在限制模式中不允许“扩展”的存贮器访问。
另外,一闪速存贮器编程寄存器用于允许闪速存贮器的擦除或重新编程。只当存贮控制器操作于限制模式中时,该闪速存贮器编程寄存器才被联锁以允许这些功能。
为了重新编程一闪速存贮器,将采用下列步骤1.含有一新的用于闪速存贮器的闪速存贮器映象的一闪速存贮器升级程序加载到主系统存贮器并且运行。该闪速存贮器升级程序含有一由销售商的专用密钥“签名”的数字签名;该数字签名是利用该销售商的专用密钥加密的该闪速存贮器升级程序的原始散列值。
2.该闪速存贮器升级程序调用存贮在闪速存贮器的当前程序中的一特定功能,请求安装该新的闪速存贮器映象。该调用确定位于主系统存贮器中的闪速存贮器升级程序的地址和大小。
3.该当前程序设置存贮控制器操作在一限制模式,并且允许对含有该闪速存贮器升级程序的系统存贮器部分的扩展存贮器访问。
4.然后,该当前程序通过下列过程验证(包括该新的闪速存贮器映象的)该闪速存贮器升级程序的源和内容(a)采用存贮在该当前程序中的销售商公用密钥解密该数字签名以获得该原始散列值(hashvalue);(b)独立计算用于驻留在主系统存贮器中的该闪速存贮器升级程序的一散列值;以及(c)比较从解密该数字签名获得的原始散列值与该独立产生的散列值以找到一匹配。
5.如果这两个散列值匹配,则表示存储在主存贮器中的闪速存贮器升级程序起源于授权的创建者并且没有修改,然后,存储在闪速存贮器中的该当前程序允许重新编程闪速存贮器并且将处理器的控制返回到该闪速存贮器升级程序。
6.然后,该闪速存贮器升级程序擦除闪速存贮器并且拷贝该新的闪速存贮器映象至闪速存贮器中。该新程序代码含有与当前程序相同的特定功能以允许将来的现场升级,并且还包括该销售商的公用密钥的拷贝。另外,在本发明的另一最佳实施例中,该闪速存贮器升级程序的每个后来的版本可以含有一修改的或不同的密钥。在这个最佳实施例中,该更新(Update)程序的每个不同版本具有不同的密钥,这就需要多个数字签名,对先前使用的每个密钥采用一个数字签名,以确保能够更新该程序的任何先前的版本而不必搜索位于其间的所有修改。而且,每个更新程序将包含所有先前的密钥,以保证该闪速存贮器还能被“降级”至该程序代码的先前版本。
7.仍然从主系统存贮器中执行的该闪速存贮器升级程序然后将处理器的控制转移至现在位于闪速存贮器中的包含在新的闪速存贮器映象中的程序,该程序依次将存贮控制器返回到正常操作并且如象产生一复位那样开始其正常的初始化序列。
上面提供的安全方法不需要系统初始化于一安全模式中并且能够在系统的正常初始化过程之后实现。因此,根据系统复位,位于闪速存贮器中的程序(例如BIOS)将获得处理器的控制,设置存贮控制器以允许对系统存贮器的非限制访问,并且正常地进行下去。当想要修改闪速存贮器中的程序时,就从步骤1开始执行,如上所示,并且在执行闪速存贮器升级程序之前不需要处理器或系统处于一特殊模式中。
通过采用上述的保护方法,只有销售商的专用密钥的拥有者才能分配软件以修改当前程序。在闪速存贮器重新编程处理过程中禁止未使用存贮器的能力防止还未经过密码检验的任何代码获得系统的控制。另外,没有存贮在闪速存贮器或授权的存贮器空间中的对当前程序的扩充将不允许执行,并且因此防止包含在一扩充中的“无赖”程序越权修改闪速存贮器。暗中破坏该安全处理的唯一方法是通过改变硬件操作或泄露销售商的专用密钥。原始代码本身的基本完整性和任何修改能够通过经济和管理手段保证,并且因此不需要只有每个机器才有的任何硬件支持。
本发明还不依赖BIOS必须从自举处理的开始获取控制以确保阻止非法修改。
这种保护设备中高度机密的寄存器的方法不仅可用于允许闪速存贮器的编程,而且可用于其中硬件寄存器的偶然修改可能导致严重后果的其它应用。
从下面的详细描述和附图中,本发明的其它目的、性能和优点将变得明白。
附图的简要描述图1描述了用于防止对BIOS的修改的先有技术的寄存器联锁。
图2描述了根据本发明的一最佳实施例配置的一系统。
图3描述了包含本发明的最佳操作的一流程图。
发明的详细描述本发明提供了一种用于防止闪速存贮器的未授权修改的方法和装置。基于解释的目的,下面描述了一些具体的实施例以便提供本发明的充分理解。但是,本领域的技术人员将明白的是,通过阅读本说明,在没有这些细节的情况下仍可以实施本发明。而且,虽然本发明采用闪速存贮器来描述,但是,如果不是所有的方面,则本发明的大多数方面适用于通用存贮器。而且,为了避免使本发明模糊不清,下面没有详细描述公知的元件、设备、处理步骤等等。
另外,将涉及诸如Rivest、Shamir和Adleman(RSA)公用密钥加密系统等加密方法,这些加密方法可用于加密和数字签名。但是,在不脱离本发明的精神和范围的情况下,可以采用任何允许用于源和内容消息证实的加密系统。实质上,公共密钥的密码术用于安全系统以验证安全软件的源和内容并且保护用于批量密码术的密钥。
还涉及的另一技术是“散列”。它类似于检验和运算,但是数学上更严密,将在两个不同的数据块上相同检验的可能性减小至可忽略的比率。一个散列值将是一只有一个信息块才有的数值,使得如果该信息块中任意部分的信息被修改,则其后产生的散列值将不同。采用检验和运算或者采用散列运算,以及实际上采用哪一种散列算法,这些都与这里描述的本发明无关。这一制定想要留给操作于安全平台上的任何安全软件系统的实现者。
通过一发送者利用在一信息块中的数据产生一散列值并且然后用该发送者的专用密钥加密所产生的散列值,一“签名”被产生以用于该信息块。因此,该加密的散列值是销售商对该信息块的签名。
为了证实从销售商发出的信息块并且还为了确定没有对该信息块进行任何修改,接收者首先对该信息块产生一散列值,然后利用销售商的公共密钥解密该签名以获得最初产生的散列值。如果由接收者产生的散列值匹配从附在信息块中的签名中提取的解密的散列值,则被接收的信息块可以被相信来自销售商并且没有改变地接收。
图2描述了根据本发明的最佳实施例配置的系统,包括处理器102、存贮控制器104、系统存贮器106、闪速存贮器108、存贮器地址/窗口检测器110、系统存贮器访问允许寄存器112、存贮器窗口控制114、闪速存贮器编程逻辑116、闪速存贮器编程允许寄存器118、第一与门120、或门122、第二与门124和非门126。
如图2所示,处理器102通过数据信号线202和地址信号线204耦合至存贮控制器104,存贮控制器104通过采用存贮器数据信号线206和存贮器地址信号线208耦合至系统存贮控制器106。存贮控制器104还通过采用存贮器数据信号线206和存贮器地址信号线208耦合至闪速存贮器108,存贮器窗口控制114也耦合至存贮器数据信号线206。存贮器窗口控制114还经由范围信号线214提供一输出至存贮器地址/窗口检测器110。
存贮控制器104和处理器102通过采用高速缓存允许信号线210和地址信号线204耦合至存贮器地址/窗口检测器110。存贮器地址/窗口检测器110还耦合至第一与门120,该第一与门120的输出耦合至系统存贮器访问允许寄存器112,以便控制写值到系统存贮器访问允许存贮器112。系统存贮器访问允许寄存器112的输出和来自存贮器地址/窗口检测器110的一访问允许输出通过或门122传送并且由存贮控制器104通过采用访问允许信号线212接收。系统存贮器访问允许寄存器的这个输出还传送到非门126。
非门126的输出分别传送给存贮器窗口控制器114和第二与门124。第二与门124的输出传送至闪速存贮器编程允许寄存器118,该寄存器118的输出又连接到闪速存贮器编程逻辑116。闪速存贮器编程逻辑116耦合至闪速存贮器118。
存贮控制器104将处理器102使用的地址空间中的地址翻译为其它系统部件需要的任何地址。因此,例如,如果处理器102试图执行指令或访问来自闪速存贮器108或系统存贮器106的数据,则所有的数据和命令将通过存贮控制器104。通过不翻译与用于访问系统存贮器106的地址空间相关的请求,存贮控制器104能够防止处理器102访问系统存贮器106。存贮控制器104能够操作于不高速缓存任何内容的模式。在该最佳实施例中,存贮控制器104在其正在经由访问允许信号线212接收访问允许信号的同时,将允许访问系统存贮器106。而且,存贮控制器具有一模式,在该模式中将不处理对处理器外的高速缓存(2级高速缓存)的访问。如下所述,该模式由存贮器地址/窗口检测器110控制。
系统存贮器访问允许寄存器112用于在正常操作期间产生经由访问允许信号线212的访问允许信号。通过修改系统存贮器访问允许寄存器112,对系统存贮器106的访问被允许或者被禁止—即,通过存在系统存贮器访问允许寄存器112中的值控制访问系统存贮器106的所有请求。但是,不管存贮在系统存贮器访问允许寄存器112中的值,如下所述,通过存贮器地址/窗口检测器110能够允许对系统存贮器106的访问。
在一最佳实施例中,系统存贮器访问允许寄存器112包括一位并且能实现为一触发器。当系统存贮器访问允许寄存器112含有逻辑值“0”时,除非存贮器地址/窗口检测器110产生一逻辑“1”至或门122以经由访问允许信号线212提供一逻辑值“1”至存贮控制器104,存贮控制器104将不允许处理器102访问系统存贮器106。因此,在该最佳实施例中,访问允许信号由逻辑值“1”表示。
在该最佳实施例中,在启动时,例如当有一硬件复位时,系统存贮器访问允许寄存器112无效—即,系统存贮器访问允许寄存器112含有逻辑“0”,因此禁止访问系统存贮器106。因此,仅仅闪速存贮器108中的BIOS程序能够为了执行而被访问。在系统初始化处理期间复位向量进入并且开始在BIOS中执行,应该做的首要事情之一是写系统存贮器访问允许寄存器112,以便允许对系统存贮器106的所有访问。
通过采用地址信号线204,存贮器地址/窗口检测器110具有监视由处理器102访问的地址的能力,该检测器110规定只有运行在闪速存贮器108中的程序能够修改系统存贮器访问允许寄存器112,以便允许存贮控制器104提供对系统存贮器106的访问。因此,如果存贮器地址/窗口检测器110检测到处理器102正在由存于闪速存贮器108的程序中执行,则由于该检测器110将只允许访问系统存贮器访问允许寄存器112,因此,操作于系统存贮器106中的程序不能修改系统存贮器访问允许寄存器112。
存贮器地址/窗口检测器110根据在线性地址映象中的情况操作,除了任何其它的“程序存贮器”之外,通常,在原始PC体系结构的第一兆字节中的高端64KB被分配给BIOS,并且BIOS的任何扩展存贮在分配给BIOS的在该64KB之下的一区域中。因此,用于中断控制器的BIOS扩展和其它的程序及数据位于与存储在闪速存贮器108中的程序不同的存贮器范围。如果一机器是真正的PC兼容,则BIOS将从其中执行的地址范围是公知的。
另外,如上所述,通过产生一具有逻辑值“1”的信号至或门122,存贮器地址/窗口检测器110能够“超越”由系统存贮器访问允许寄存器112实现的对访问系统存贮器106的禁止。如下所述,存贮器地址/窗口检测器110将超越对访问系统存贮器106的禁止以用于存贮在存贮器窗口控制114中的地址。
而且,通过产生一高速缓存无效信号经由高速缓存允许信号线210分别送到处理器102和存贮控制器104,存贮器地址/窗口检测器110能够使一高速缓存无效,该高速缓存或者是处理器102的局部高速缓存(1级高速缓存),或者是处理器外的高速缓存(2级高速缓存)。
因此,存贮器地址/窗口检测器110能够发送一允许在存贮控制器104和处理器102中进行高速缓存的控制信号,并且存贮器地址/窗口检测器110还触发出一允许信号,允许一写信号通过到系统存贮器访问允许寄存器(system memory access enable register)112。当CPU执行于适当的范围时,存贮器地址/窗口检测器110能够监视地址以便检测。
存贮器窗口控制114打开一“有效”的存贮器的地址范围,在该地址范围中,在经过某些点期间,通过存贮器地址/窗口检测器110发出重新允许存贮控制器104提供对系统存贮器106的访问的访问允许信号,处理器102能够访问所述修改的程序。在一最佳实施例中,存贮器窗口控制114含有一基址寄存器(未示出)和一界限寄存器(未示出),仅当系统存贮器访问允许寄存器112设置为禁止状态时,存贮器窗口控制114才是可以访问的。
图3描述了根据本发明的用于重新编程闪速存贮器108的一系列操作。
在块302中,用于(含有当前BIOS的)闪速存贮器108的含有新的闪速存贮器映象(例如,新的BIOS映象)的闪速存贮器升级程序被加载到系统存储器106中并执行。该闪速存贮器升级程序含有用销售商的专用密钥“签名”的数字签名;在原始散列值已经利用销售商的专用密钥加密后,该数字签名是该闪速存贮器升级程序的原始散列值。然后操作继续到块304。
在块304中,在闪速存贮器升级程序开始执行后,闪速存贮器升级程序调用在存于闪速存贮器108的当前程序中的特定功能,请求安装新的闪速存贮器映象。该调用确定位于系统存贮器106中的闪速存贮器升级程序的地址和大小。因此,当闪速存贮器升级程序含有新BIOS映象开始执行时,它将控制转移至存于闪速存贮器108中的程序(当前BIOS),请求修改当前BIOS。
闪速存贮器升级程序的地址和大小分别存储到包含于存贮器窗口控制114中的基址寄存器和界寄存器。如上所述,存贮器窗口控制114可以含有多于一对的基址寄存器和界寄存器,以便提供其中闪速存贮器升级程序不包含在一个连续的地址空间的环境。
在块306中,在处理器开始根据存贮在闪速存贮器108中的当前程序操作后,通过经由高速缓存允许信号线210发生一高速缓存禁止信号,存贮器地址/窗口检测器110首先禁止处理器102和存贮控制器104的高速缓存。应该注意的是,高速缓存不一定在修改的所有阶段中都必须被禁止。高速缓存只是必须被清洗(即,清除所有数据和指令)直到在闪速存贮器升级程序(和封装的新的闪速存贮器映象)被证实后为止。
处理器102从闪速存贮器108中的程序(例如BIOS)取一指令,并且该指令是寄存器I/O写指令。BIOS想要写系统存贮器访问允许寄存器112以便禁止对系统存贮器106的访问。当该写指令在一总线写周期中发出时,存贮器地址/窗口检测器110确定在先的指令读取使得突然发生了来自(闪速存贮器中的)BIOS内部的寄存器I/O写指令,并且存贮器地址/窗口检测器110允许该寄存器I/O写指令象来自BIOS的寄存器I/O写指令一样完成。
如果处理器102正在执行存贮在系统存贮器106中的程序并且发出一寄存器I/O写指令以便修改系统存贮器访问允许寄存器112,则由于存贮器地址/窗口检测器110确定该寄存器I/O写指令突然发生自正在执行存贮于系统存贮器106中的程序的处理器102,因此,用于该寄存器I/O写指令的总线写周期被载断。因此,只有包含于闪速存贮器108中的程序能够修改系统存贮器访问允许寄存器112的状态。
而且,当存贮器地址/窗口检测器110检测到处理器102正在执行于闪速存贮器108的物理地址空间时—即处理器102正在执行来自当前BIOS的代码,存贮器地址/窗口检测器110产生一代表逻辑“1”的信号至第一与门120,以便通过写一具有逻辑值“0”的信号至系统存贮器访问允许寄存器112来允许系统存贮器访问允许寄存器112无效。当系统存贮器访问允许寄存器112含有逻辑值“0”时,除非存贮器地址/窗口检测器110输出一具有逻辑值“1”的信号,或门122的输出将为逻辑值“0”—即,如果存贮器地址/窗口检测器110输出一逻辑值“1”至或门122,才将允许对系统存贮器106的访问。
如上所述,存贮器窗口控制114含有一些在系统存贮器106被“封锁”后定义系统存贮器106中的一组可访问地址空间的寄存器。通过读包含在存贮器窗口控制114中的所述寄存器,存贮器地址/窗口检测器110将允许访问由存贮器窗口控制114定义的一部分系统存贮器106,从而“超越”通过设置系统存贮器访问允许寄存器112而引起的对访问系统存贮器106的整体禁止。换句话说,当处理器102请求从该组可访问地址空间读取数据或指令时,即使系统存贮器访问允许寄存器112已经“封锁”了系统存贮器106,存贮器地址/窗口检测器110也可发出一访问允许超越而允许访问该可访问的地址空间。特别地,如果请求的访问是在由存贮器窗口控制114的那些寄存器定义的地址空间范围内,则存贮器地址/窗口检测器110才将允许存贮控制器104提供对系统存贮器106的访问—即,存贮器地址/窗口检测器110才将经由访问允许信号线212输出一具有逻辑值“1”的信号至存贮控制器104。
因此,在闪速存贮器108中的当前程序首先设置存贮控制器104操作在一“限制”模式,该“限制”模式禁止系统存贮器106,所以处理器102不能访问系统存贮器106中的任何内容。然后,在闪速存贮器108中的当前程序允许对包含闪速存贮器升级程序的部分系统存贮器的扩展存贮器访问。
在块308中,在闪速存贮器108中的当前程序通过下列过程验证(包括新的闪速存贮器映象的)该闪速存贮器升级程序的源和内容(a)采用存贮在该当前程序中的销售商公用密钥解密该数字签名以获得该原始散列值;(b)单独计算用于驻留在主系统存贮器中的该闪速存贮器升级程序的一散列值;以及(c)比较从解密该数字签名获得的原始散列值与该单独产生的散列值以找到一匹配。
如果这两个散列值匹配,则表示存储在主存贮器中的闪速存贮器升级程序起源于授权的创建者并且没有被修改,然后操作将继续到块310。如果这两个散列值不匹配,则升级将被中止。在一替换实施例中,用户可以在另一步骤(未示出)中被通知失败的升级。
在块310中,通过利用一编程允许信号设置闪速存贮器编程允许寄存器118,存储在闪速存贮器108中的该当前程序允许重新编程闪速存贮器108,并且在一预定入口位置将处理器102的控制转移至包含在系统存贮器106中的闪速存贮器升级程序。如上所述,只要系统存贮器访问允许寄存器112处于允许状态,则对将不允许重新编程闪速存贮器108的闪速存贮器编程允许寄存器存在一联锁。为了设置系统存贮器访问允许寄存器112至禁止状态,该禁止状态允许访问闪速存贮器编程允许寄存器,则需要处理器102执行包含在闪速存贮器108中的原始核准的程序(例如,BIOS)。在该系统中,只有在闪速存贮器108中的原始程序才能允许自身被替换。
在块312中,通过采用闪速存贮器编程逻辑116,闪速存贮器升级程序擦除闪速存贮器108并且拷贝新的闪速存贮器映象至闪速存贮器108。新的程序代码含有与当前程序相同的特定功能,包括销售商的公共密钥的一个拷贝,以便支持将来的现场升级。然后操作继续到块314。
在块314中,仍然从系统存贮器106中执行的该闪速存贮器升级程序将处理器的控制转移至现在位于闪速存贮器中的包含在新的闪速存贮器映象中的程序,该程序依次将存贮控制器104返回到正常操作并且好象产生一复位那样开始其正常的初始化序列。该修改操作然后结束。
在正常操作中,在一硬件复位后闪速存贮器108中的程序(例如,BIOS)立即获得控制。BIOS然后初始化所有的硬件并且然后在将控制转移至操作系统之前加载该操作系统。通过能够在一非安全操作模式中启动,然后为了修改BIOS而切换到一安全操作模式并然后返回,然后重新初始化并完成启动,本发明根据正常的情况起作用。因此,该保护方法不需要系统最初在一安全模式中启动。
虽然闪速存贮器修改程序启动了整个闪速存贮器修改功能,但是,系统安全的真正关键是确保仅当处理器102正在执行来自闪速存贮器108的指令时,才可能改变到安全操作模式—即,仅当处理器102正在执行来自闪速存贮器108的指令时,才可能修改系统存贮器访问允许寄存器112。
另外,由于通过强制处理器102只能从由核准的闪速存贮器程序占有的特定物理范围的存贮器中执行,没有其它软件能够访问控制进行修改的能力的寄存器,因此,系统保护阻止了其中将一无赖中断加入BIOS扩展中的企图的实现。
还应理解的是,虽然在该最佳实施例中,密钥检验由软件“严格地进行”—即,签名的解密和用于修改程序的散列值的独立产生通过采用处理器102执行来自闪速存贮器108的代码而完成,因此应该理解的是,通过采用其它的方法,包括专门用途的集成电路,能够完成解密和散列值的比较。
虽然本发明已经参照各附图而进行了具体的描述,但应该明白的是,这些附图仅用于解释而不应被看作是对本发明范围的限制。在不脱离本发明的精神和范围的前提下,本领域的技术人员可以对本发明作出各种变化和修改。
权利要求
1.在一具有一处理器、一系统存贮器、一闪速存贮器和一存贮控制器的计算机系统中,一种方法包括步骤加载含有一新的闪速存贮器映象和一数字签名的一闪速存贮器升级程序至一部分所述系统存贮器中;配置所述存贮控制器以限制所述处理器只访问所述存贮器和所述部分所述系统存贮器;用所述数字签名验证所述闪速存贮器修改程序;以及只有当所述闪速存贮器升级程序真实时才修改所述闪速存贮器。
2.如权利要求1的方法,其中所述加载步骤包括加载所述闪速存贮器修改程序到包含在所述系统存贮器中的一组地址中,所述地址组只有一起始地址和一长度;加载所述起始地址至一基址寄存器;以及加载所述长度至一界限寄存器。
3.如权利要求2的方法,其中所述配置步骤包括提供一存贮器访问禁止信号至所述存贮控制器;以及设置一存贮器地址窗口检测器以产生一存贮器访问允许信号至所述存贮控制器。
4.如权利要求3的方法,其中所述配置步骤还包括提供一高速缓存访问禁止信号至所述存贮控制器和所述处理器。
5.如权利要求1的方法,其中所述验证步骤包括步骤解密所述数字签名以获得一原始散列值;计算用于所述闪速存贮器修改程序的一独立散列值;以及比较所述原始散列值和所述独立散列值以确定一匹配。
6.如权利要求1的方法,其中所述修改步骤包括设置一闪速存贮器编程允许寄存器以便允许编程所述闪速存贮器;以及执行所述闪速存贮器升级程序。
7.在一具有一处理器、一系统存贮器、一闪速存贮器、一存贮控制器的计算机系统中,一装置包括—存贮器地址/窗口检测器耦合至所述处理器、所述存贮控制器、第一逻辑门的第一输入和第二逻辑门的第一输入,所述第一逻辑门具有一耦合至所述存贮控制器的输出,并且所述第二逻辑门具有用于接收一系统存贮器访问允许信号的第二输入;—存贮器窗口控制耦合至所述系统存贮器、所述存贮控制器、所述闪速存贮器、所述存贮器地址/窗口检测器、第三逻辑门的输出和第四逻辑门的第一输入,所述第四逻辑门具有用于接收一闪速存贮器编程允许信号的第二输入;—系统存贮器访问允许寄存器耦合至所述第二逻辑门的输出、所述第一逻辑门的第二输入、以及所述第三逻辑门的一输入;以及—闪速存贮器编程允许寄存器耦合至所述第四逻辑门的输出;—闪速存贮器编程电路耦合至所述闪速存贮器编程允许寄存器和所述闪速存贮器。
8.如权利要求7的装置,其中所述第一逻辑门是或门。
9.如权利要求7的装置,其中所述第二逻辑门是与门。
10.如权利要求7的装置,其中所述第三逻辑门是非门。
11.如权利要求7的装置,其中所述第四逻辑门是与门
12.如权利要求7的装置,其中所述系统存贮器包括一高速缓冲存贮器。
13.如权利要求7的装置,其中所述存贮器窗口控制包括一组寄存器。
14.如权利要求13的装置,其中所述的寄存器组包括一基址寄存器和一界限寄存器。
全文摘要
在一具有一处理器(102)、一系统存贮器、一闪速存贮器和一存贮控制器(104)的计算机系统中,一种方法包括步骤:加载一映象和一数字签名至一部分系统存贮器(106);配置该存贮控制器以限制该处理器只访问闪速存贮器(108)和该部分系统存贮器(106);用该数字签名验证该闪速存贮器修改程序;以及,只有当该闪速存贮器升级程序真实时才修改该闪速存贮器。
文档编号G11C16/22GK1229513SQ97197388
公开日1999年9月22日 申请日期1997年6月25日 优先权日1996年6月28日
发明者P·E·马蒂森 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1