专利名称:保护内存不受复位之后的攻击的制作方法
背景技术:
在本地或远程计算设备上进行的财政和个人交易的比率越来越高。然而,这些财政和个人交易部分依赖于尝试防止损失私密性、破坏数据和滥用数据等的安全加强(SE)环境的建立。
SE环境可运用各种技术来防止不同种类的攻击或对保护数据或秘密的未经授权的访问(例如社会安全号、帐号、银行存款余额、密码、授权密钥等等)。这种攻击中的一种是系统复位攻击。计算设备常支持用于启动系统复位的机构。例如可以通过复位按钮、LAN控制器、对芯片集寄存器的写入、或功率损失等等来启动系统复位。计算设备可能会运用可因系统复位而导致无效的处理器、芯片集和/或其它硬件保护。然而,系统存储器可以保留其全部或部分内容(攻击者在系统复位事件之后可能尝试访问的内容)。
这里通过附图作为示例来例示而限定本发明。为了简化和清楚说明,图中所示的元件不一定按比例绘制。例如为了清楚,可能会将一些元件的尺寸相对于其它元件夸大。另外,在认为合适的地方,在图中重复使用参考号来指示相应的或类似的元件。
图1示出计算设备的一个实施例。
图2示出可由图1的计算设备建立的安全增强(SE)环境的一个实施例。
图3示出建立和解除图2的SE环境的方法的实施例。
图4示出可由图1的计算设备用来保护存储在系统存储器中的秘密不受系统复位攻击的方法的实施例。
具体说明以下说明描述用于保护存储在计算设备的内存中的秘密不受系统复位攻击的技术。在以下说明中,为了提供对本发明的更完整的理解,列出了许多具体的细节,例如逻辑实施(logic implementation)、操作码、指定操作数的方法、资源分割/共享/复制实施、系统部件的类型和相互关系以及逻辑划分/集成选择。然而本领域的技术人员会理解不用这些具体细节也可以实施本发明。在其它例子中,为了使本发明清楚,没有详细示出控制结构、门电平电路和完整的软件指令序列。本领域的普通技术人员用所含的说明不必多余的实验就能实施合适的功能。
说明书中的对“一个实施例”、“一实施例”和“一示例实施例”等的引用指所述实施例可包括特定特征、结构或特性,但每个实施例可不一定包括特定的特征、结构或特性。另外,这些措词不必指同一实施例。另外,当结合实施例描述特定的特征、结构或特性时,不论清楚地说明与否,都应认为结合其它实施例实现这一特征、结构或特性属于本领域技术人员的常识。
在此对“对称”密码系统、密钥、加密或解密等的引用指用同一密钥加密和解密的密码技术。公知的于1993年作为联邦信息处理标准FIPS PUB 46-2公布的数据加密标准(DES)和于2001作为FIPS PUB 197公布的高级加密标准(AES)是对称密码系统的例子。这里对“非对称”密码系统、密钥、加密或解密的引用指分别用不同但相关的密钥加密和解密的密码技术。包括众所周知的Rivest-Shamir-Adleman(RSA)技术在内的所谓的“公共密钥”密码技术是非对称密码系统的例子。这里将非对称密码系统的两个相关的密钥之一称为私钥(因为它通常是保密的),而将其它密钥称为公共密钥(因为它通常是可以自由使用的)。在一些实施例中,可以用私钥或公共密钥来加密而将另一密钥用于相关联的解密。
这里将“散列”这一动词及相关的形式用于指对操作数或消息执行一个操作,以产生摘要值或“散列”。理想地,散列操作生成一摘要值,计算上不可能从该摘要值中找到具有该散列的消息,而且不能从摘要值中确定任何与具有该散列的消息有关的有用信息。另外,散列操作理想地生成散列以使得在计算上不可能确定两个产生同一散列的消息。尽管散列操作理想地具有上述特性,在实践中,很难、计算上密集、和/或实际上不可能从诸如消息摘要5函数和安全散列算法1(SHA-1)之类的单向函数生成的散列值中推出消息。
可以在硬件、固件、软件或任何它们的组合中实施本发明的实施例。也可以将本发明的实施例作为存储在机器可读媒体(可以由至少一个处理器读取和执行以执行这里所述的操作)上的指令来实施。机器可读媒体可包括用于以可由机器(例如计算设备)读取的形式存储或传送信息的任何机构。例如机器可读媒体可包括只读存储器(ROM);随机存储器(RAM);磁盘存储媒体;光存储媒体;闪存设备;电、光声或其它形式的传播信号(例如载波、红外信号、数字信号等)等等。
图1示出计算设备100的一个示例实施例。计算设备100可包括一个或多个通过处理器总线106耦合到芯片集104的处理器102。芯片集104可包括一个或多个将处理器102耦合到系统内存108、权标110、固件112和/或计算设备100的其它I/O设备114(例如鼠标、键盘、盘驱动器、视频控制器等)的集成电路块或芯片。
处理器102可支持安全进入(SENTER)指令的执行以启动诸如图2的SE环境之类的SE环境的建立。处理器102还可以支持安全退出(SEXIT)指令的执行以启动SE环境的解除。在一个实施例中,处理器102可将总线消息发送到与SENTER、SEXIT及其它指令的执行相关联的处理器总线106上。在其它实施例中,处理器102还可以包括对系统内存108进行访问的内存控制器(未示出)。
另外,一个或多个处理器102可包括专用内存116和/或具有对专用内存116的访问权,以支持鉴定码(AC)模块的执行。专用内存116可以用允许处理器102执行AC模块和防止其它处理器102和计算设备100的部件改变AC模块或干扰AC模块的执行的方式存储AC模块。在一个实施例中,专用内存116可以位于处理器102的高速缓冲内存中。在另一个实施例中,专用内存116可以位于与其高速缓冲内存分开的处理器102内部的内存区域。在其它实施例中,专用内存可以位于通过分离的专用总线与处理器102相耦合的分开的内部内存中。在另一些实施例中,专用内存116可以位于系统内存108中。在该实施例中,芯片集104和/或处理器102可以将系统内存108的专用内存116区域限制在特定操作模式的特定处理器102中。在另一些实施例中,专用内存116可以位于与耦合到芯片集104的专用内存控制器(未示出)的系统内存108相分离的内存中。
处理器102还可以包括诸如对称密钥、非对称密钥之类的密钥118、或其它类型的密钥。处理器102可以用处理器密钥118在执行AC模块之前来验AC模块。
处理器102可以支持一个或多个诸如实模式、保护模式、虚拟现实模式及虚拟机器模式(VMX模式)之类的操作模式。另外,处理器102可以在各受支持的操作模式中支持一个或多个特权级或环。通常,处理器102的操作模式和特权级定义可以用于执行的指令及执行这些指令的结果。具体来说,只有当处理器102处于合适的模式和/或特权级中时,处理器102才可以被许可执行某些特权指令。
处理器102还可以支持开始和结束AC模式的执行。在一示例实施例中,处理器102可以支持ENTERAC指令的执行,该指令从专用内存116中加载、验证并启动执行AC模块。然而,处理器102可以支持使处理器102加载、验证和/或启动执行AC模块的附加或不同的指令。这些其它指令可以是ENTERAC指令变体或可涉及其它操作。例如SENTER指令可以启动执行一个或多个帮助建立SE环境的AC模块。
在一示例实施例中,处理器102还支持EXITAC指令的执行,该指令结束执行AC模块并启动后AC代码。然而,处理器102可以支持使处理器102结束执行AC模块并启动后AC模块代码的附加或不同的指令。这些其它指令可以是EXITAC指令的变体或可涉及其它操作。例如SEXIT指令可以启动执行一个或多个帮助解除SE环境的AC模块。
芯片集104可包括将处理器102连接至与计算设备100的诸如系统内存108、权标110、和其它I/O设备114之类的部件接口的一个或多个芯片或集成电路块。在一个实施例中,芯片集104包括内存控制器120。然而,在其它实施例中,处理器102可包括所有或部分内存控制器120。
通常,内存控制器120为计算设备100的其它部件提供接口,以访问系统内存108。另外,芯片集104的内存控制器120和/或处理器102可以将内存108的某些区域定义成安全增强(SE)内存122。在一个实施例中,在处于合适的操作模式(保护模式)和特权级(例如OP)时,处理器102可仅访问SE内存122。
内存控制器120还可以包括指示系统内存108是锁定还是未锁定的内存锁定存储器(memory locked store)124。在一个实施例中,内存锁定存储器124包括一标记,可以设置该标记以指示系统内存108加了锁,或清零该标记以指示系统内存108未锁定。在一个实施例中,内存锁定存储器124还提供一个将内存控制器放在内存锁定状态或内存未锁定状态的接口。在内存锁定状态中,内存控制器120拒绝对系统内存108的不可信访问。相反,在内存未锁定状态中,内存控制器120允许对系统内存108可信或不可信访问。在其它实施例中,可以将内存锁定存储器124更新成仅对系统内存108的SE内存122部分锁定或解除锁定。在一个实施例中,可信访问包括由执行可信代码产生的访问和/或由特权指令产生的访问。
另外,芯片集104可包括在执行之前可被处理器用来验证AC模块的密钥126。与处理器102的密钥118相似,密钥126可包括对称密钥、非对称密钥或一些其它类型的密钥。
芯片集104还可以包括具有由电池130提供的备用电源的实时时钟(RTC)128。RTC128可包括电池故障存储器132和秘密存储器134。在一个实施例中,电池故障存储器132指示电池130是否已停止对RTC128供电。在一个实施例中,电池故障存储器132包括一个标记,可以清零该标记以指示正常操作,或设置该标记以指示电池故障。另外,秘密存储器134可以指示系统内存108是否可能包含秘密。在一个实施例中,秘密存储器134可含一个标记,可以设置该标记以指示系统内存108可能包含秘密,或清零该标记以指示系统内存108不包含秘密。在其它实施例中,可以将秘密存储器134和电池故障存储器132放在诸如权标110、处理器102、芯片集104的其它部分或计算设备的其它部件之类的其它地方。
在一个实施例中,秘密存储器134是作为具有由电池130提供的备用电源的单个易失内存位实施的。由电池提供的备用电源在经过系统复位时维持秘密存储器。在另一实施例中,秘密存储器134是作为诸如闪存位之类的不需要备用电源在经过系统复位时维持其内容的非易失内存位实施的。在一个实施例中,用可设置和清零的单个内存位来各自实施秘密存储器134和电池故障存储器132。然而,其它实施例可包括具有不同存储能力和/或使用不同状态编码的秘密存储器134和/或电池故障存储器132。
芯片集104还可以支持在诸如外设部件互连(PCI)、加速图形接口(AGP)、通用串行总线(USB)、低引线数(LPC)总线或任何其它种类的I/O总线之类的I/O总线(未示出)上的标准I/O操作。可以将权标接口136用于将芯片集104与包括一个或多个平台配置寄存器(PCR)138的权标相连。一个实施例中,权标接口136可以是LPC总线(低引线数(LPC)接口规范,英特尔公司1997年12月29日,版本1.0)。
权标110可包括一个或多个密钥140。密钥140可包括对称密钥、非对称密钥、和/或一些其它类型的密钥。权标110还可以包括一个或多个平台配置寄存器(PCR寄存器)138以记录和报告规格。权标110可以支持PCR引用操作,该操作返回标识的PCR寄存器138的引用或内容。权标110还可以支持对在标识的PCR寄存器138中接收到的规格进行记录的PCR扩展操作。在一个实施例中,权标110可包括如2001年12月1日,1.1a版本,可信计算平台联盟(TCPA)主规范中详细说明的可信平台模块(TPM)或其变体。
权标110还可以包括指示系统内存108是否包含或曾包含秘密的有秘密存储器142。在一个实施例中,有秘密存储器142可包含一个标记,可以将该标记设置成指示系统内存108在计算设备100的某一历史时间含有秘密,也可以清零该标记以指示在计算设备100的历史中从未含有秘密。在一个实施例中,有秘密存储器142包括一个单个的、非易失的、开始被清零的一次写入的内存位(一旦设置了就不可以再清零)。非易失、一次写入存储位可以用各种内存技术,例如闪存、PROM(可编程只读存储器)、EPROM(可擦可编程只读存储器)、EEPROM(电可擦可编程只读存储器),或其它技术来实施。在其它实施例中,有秘密存储器142包含响应于更新有秘密存储器142以指示系统内存108包含秘密而熔固的熔化的内存位置。
有秘密存储器142可以用其它方式实施。例如权标110可以提供允许更新有秘密存储器142以指示系统内存108包含秘密,并防止更新有秘密存储器142以指示系统内存108从未包含秘密的接口。在其它实施例中,有秘密存储器142位于其它地方,例如在芯片集104、处理器102、或计算设备100的其它部件中。另外,有秘密存储器142可以有不同的存储容量和/或利用不同的状态编码。
在另一实施例中,标记110可提供一个或多个命令,以用安全增强方式来更新有秘密存储器142。在一个实施例中,如果请求部件提供合适的密钥或其它认证,则权标110提供写命令来改变有秘密存储器142的状态(只更新有秘密存储器142的状态)。在此实施例中,为了指示系统内存108是否有秘密,计算设备100可以用安全增强的方式多次更新有秘密存储器142。
在一实施例中,固件112包括基本输入/输出系统例程(BIOS)144和安全清洁(SCLEAN)模块146。BIOS144通常提供处理器102在系统启动期间执行的低等级例程,以初始化计算设备100的部件和启动操作系统的执行。在一个实施例中,BIOS144的执行导致计算设备100在系统内存108可能包含秘密时,锁定系统内存108并启动执行SCLEAN146模块。当系统内存108被锁定时,执行SCLEAN模块146使计算设备100擦除系统内存108,从而将秘密从系统内存108中擦除。在一个实施例中,虽然系统内存108被锁定,内存控制器120允许诸如SCLEAN模块146之类的可信代码读写系统内存108的所有位置。然而,当锁定时,可信代码,例如,操作系统被禁止访问系统内存108。
SCLEAN模块可包括内存控制器120专用的代码。因此,SCLEAN模块146可以来自计算设备100的处理器102、芯片集104、主机板、或底板的制造商。在一个实施例中,制造商散列化SCLEAN模块146,以获取SCLEAN模块146的被称为“摘要”的值。然后,制造商可以用与处理器密钥118、芯片集密钥126、权标密钥140、或计算设备100的其它密钥相对应的非对称密钥以数字方式签署计数地标记摘要和SCLEAN模块146。随后,计算设备100用处理器密钥118、芯片集密钥126、权标密钥140、或计算设备100的其它与用于签署SCLEAN模块146的密钥相对应的权标来验证SCLEAN模块的真实性。
图2示出SE环境200的一个实施例。可以响应于例如系统启动、应用请求、操作系统请求等等之类的各种条件来启动SE环境200。如图所示,SE环境200可包括可信虚拟机器核心程序或监控器202、一个或多个标准虚拟机器(标准VM)204及一个或多个可信虚拟机器(可信VM)206。在一个实施例中,操作环境200的监控器202在最特权的处理器环(例如OP)以保护模式执行,以管理安全及在虚拟机器204、206之间提供障碍物。
标准VM204可包括在VMX模式的最特权处理器环(例如0D)执行的操作系统208,及一个或多个在VMX模式的较低特权处理器环(例如3D)执行的应用程序210。因为其中监控器202执行的处理器环比其中操作系统208执行的处理器环更有特权,操作系统208不具有计算设备100的自由控制,而是受监控器202的控制和限制。具体来说,监控器202可以防止操作系统208及其应用程序直接访问SE内存122和权标110。
监控器202可以执行一个或多个诸如核心程序代码的散列之类的可信核心程序212的测量,以获取一个或多个度量,可以使权标110用核心程序212的度量来扩展PCR寄存器138,并且可以将度量记录在存储在SE内存122中相关联的PCR日志中。另外,监控器202可以在SE内存122中建立可信VM206并在建立的可信VM206中开始可信核心程序212。
类似地,可信核心程序212可以采用诸如小应用程序代码的散列之类的小应用程序或应用程序214的一个或多个测量结果来获取一个或多个度量。经监控器202的可信核心程序212随后可以使物理权标110用小应用程序214的度量来扩展PCR寄存器138。可信核心程序212还可以将度量记录在与存储在SE内存122中的相关联的PCR日志中。另外,可信核心程序212可以在SE内存122的建立的可信VM206中开始可信小应用程序214。
响应于启动图2的SE环境,计算设备100还将计算设备100的监控器202和硬件构件的度量记录在权标110的PCR寄存器138中。例如处理器102可以诸如处理器族、处理器版本、处理器微码版本、芯片集版本和处理器102、芯片集104和物理权标110的物理权标版本之类的硬件标识符。然后,处理器102可以在一个或多个PCR寄存器138中记录获取的硬件标识符。
现参见图3,它示出建立SE环境200的简化的方法。在块300中,处理器102启动建立SE环境200。在一个实施例中,处理器102执行安全进入(SENTER)指令以启动建立SE环境200。计算设备100可响应于启动建立SE环境200,执行多个操作。例如计算设备100可以使处理器102同步并验证所有的处理器102加入了SE环境200。计算设备100可以测试计算设备100的配置。计算设备100还可以测量SE环境200的软件构件和硬件构件以获取度量,可以从该度量作出可信判定。计算设备100可以将这些度量记录在权标110的PCR寄存器138中,从而随后检索和验证该度量。
响应于启动建立SE环境200,处理器102可以在处理器总线106上发布一个或多个总线消息。芯片集104可以响应于一个或多个这些总线消息,更新块302中的有秘密存储器142并更新块304中的秘密存储器134。在一个实施例中,块302中的芯片集104通过权标接口136发送一个命令,使权标110更新有秘密存储器142,以指示计算设备100已启动建立SE环境200。在一个实施例中,块304中的芯片集104可更新秘密存储器134,以指示系统内存108有可能包含秘密。
在上述实施例中,有秘密存储器142和秘密存储器134指示系统内存108有能包含或可能已包含秘密。在另一实施中,计算设备100响应于将一个或多个秘密存储在系统内存108中,更新有秘密存储器142和秘密存储器134。因此,在此实施例中,有秘密存储器142和秘密存储器134指示系统内存108实际上是否包含或曾包含秘密。
在SE环境200建立之后,计算设备100可执行块206中的可信操作。例如计算设备100可以加入与需要在SE环境中执行交易的金融机构的交易。计算设备100可以响应于执行可信操作,将秘密存储在SE内存122中。
在块308中,计算设备100可以启动去除或解除SE环境200。例如计算设备100可响应于系统关闭事件、系统复位事件、操作系统请求等,启动解除SE环境200。在一个实施例中,处理器102之一执行安全退出(SEXIT)指令,以启动SE环境200的解除。
响应于启动解除SE环境200,计算设备100可执行许多操作。例如计算系统100可以关闭可信虚拟机器206。在块310中的监控器202可以擦除系统内存108中所有包含秘密或可能包含秘密的区域。在擦除系统内存108后,计算设备100可更新块312中的秘密存储器134,以指示系统内存108不包含秘密。在另一实施例中,监控器202用秘密存储器134跟踪系统内存108是否包含秘密并仅仅在系统内存108包含秘密时擦除系统内存108。在另一实施例中,监控器202用秘密存储器134跟踪系统内存108是否包含秘密并仅仅在系统内存108包含秘密时擦除系统内存108。
在另一实施例中,块312中的计算设备100还更新有秘密存储器142,以指示系统内存108不再有秘密。在一个实施例中,计算设备100将封闭在SE环境200中的密钥提供给权标110的写命令,并通过写命令更新有秘密存储器142,以指示系统内存108不包含秘密。通过要求封闭在SE环境200中的密钥更新有秘密存储器142,SE环境200有效地证实有秘密存储器142的准确性。
图4示出擦除系统内存108以保护秘密不受系统复位攻击的方法。在块400中,计算设备100经历系统复位事件。许多事件可以触发系统复位。在一个实施例中,计算设备100可以包含一物理按钮,可以驱动该按钮来启动电源循环复位(例如去除电源,然后重接电源)或使芯片集104的系统复位输入被执行。在另一实施例中,芯片集104可以响应于检测对特定内存位置或控制寄存器的写入,启动系统复位。在另一实施例中,芯片集104可以响应于通过诸如网络接口控制器或调制解调器之类的通信接口接收到的复位请求,启动系统复位。在另一实施例中,芯片集104可以响应于节电条件或其它电源故障减少在阈值以下,电源提供给芯片集电源104的OK或其它输入启动系统复位。
响应于系统复位,计算设备100可以将BIOS144作为接通电源、引导、或系统初始化过程的一部分执行。如上所述,在一个实施例中的计算设备100响应于解除SE环境200,从系统内存108中去除秘密。然而,系统复位事件可以防止计算设备100完成解除过程。在一个实施例中,BIOS144的执行使计算设备100确定系统内存108是否有可能包含块402中的秘密。在一个实施例中,计算设备100可以响应于确定秘密存储器134的标记已设置,确定系统内存108有可能包含秘密。在另一实施例中,计算设备100可以响应于确定电池故障存储132的标记和有秘密存储器142的标记已设置,确定系统内存108可能有秘密。
响应于确定系统内存108不包含秘密,计算设备100可以在块404中为系统内存108解除锁定,并在块406中继续其通电、引导、或系统初始化过程。在一个实施例,计算设备100通过清零内存锁定存储器124来解除锁定系统内存108。
在块408中,计算设备100可以响应于确定系统内存108可能包含秘密,锁定系统内存108免于不可信访问。在一个实施例中,计算设备100通过设定内存锁定存储器124的标记来锁定系统内存108。在一个实施例中,BIOS144通过由每个以下伪码片段更新内存锁定存储器124来使计算设备100锁定/解除锁定系统内存108<pre listing-type="program-listing"><![CDATA[IF BatteryFail THEN IF HadSecrets THEN MemLocked=SET ELSE MemLocked=CLEAR End ElseIF Secrets THEN MemLocked=SET ELSE MemLocked=CLEAR End END]]></pre>在一个实施例中,当设置了秘密存储器134、电池故障存储器132、有秘密存储器142、和内存锁定存储器124的各个标记时,Secrets(秘密)、BatteryFail(电池故障)、HadSecrets(有秘密)、和MemLocked(存储器锁定)变量各具有TRUE逻辑值,而当清零了各标记时,它们各具有FALSE逻辑值。
在一示例实施例中,先清零秘密存储器134和有秘密存储器142的标记并仅仅响应于建立SE环境200设置它们。见图3和相关说明。因此,如果计算设备100不支持SE环境200的建立,秘密存储器134和有秘密存储器142的标记将保持清零。如果BIOS144由以上伪码片段或由类似的模式更新内存锁定存储器124,由于BIOS144锁定系统内存108,不会使不支持和从未支持过SE环境200的计算设备100不可操作。
响应于确定系统内存108可能包含秘密,在块410中,计算设备100加载、认证和调用SCLEAN模块的执行。在一个实施例中,BIOS144使处理器102执行一个进入鉴定码(ENTERAC)指令,使处理器102将SCLEAN模块加载到其专用内存116中,认证SCLEAN模块,并响应于确定SCLEAN模块是真的,开始执行来自其专用内存116的SCLEAN模块。可以用若干不同的方式认证SCLEAN模块;然而,在一个实施例中,ENTERAC指令使处理器102认证如2001年12月31日递交的美国专利申请号10/039,961,名称Processor SupportingExecution of an Anthenticated Code Instruction中所述的SCLEAN模块。
在一个实施例中,计算设备100响应于确定SCLEAN不为真,生成系统复位事件。在另一实施例中,计算设备100隐含地相信BIOS144和SCLEAN模块146为真,并因此不明确地测试SCLEAN模块的真实性。
SCLEAN模块的执行导致在块412中计算设备100为擦除操作配置内存控制器120。在一个实施例中,计算设备100配置内存控制器120,以允许对系统内存108的所有可能包含秘密的位置的可信写入和读取访问。在一个实施例中,尽管系统内存108被锁定,诸如SLEAN模块之类的可信代码可以访问系统内存108。然而,当锁定时,诸如操作系统208之类的不可信代码禁止访问系统内存108。
在一个实施例中,计算设备100配置内存控制器120,以访问系统内存108的完整地址空间,从而允许将秘密从系统内存108中的任何位置擦除。在另一实施例中,计算设备100配置内存控制器120,以对诸如SE内存122之类的系统内存108的选定区域进行访问,从而允许从选定的区域中擦除秘密。另外,在一个实施例中的SCLEAN模块使计算设备100配置内存控制器120直接访问系统内存108。例如SCLEAN模块可以使计算设备100丧失高速缓存、缓冲的能力和其它可引起不直接访问系统内存108而进行读写服务的性能增强特征。
在块414中,SCLEAN模块使计算设备100擦除系统内存108。在一个实施例中,计算设备100将模式(例如零)写入系统内存108以重写系统内存108,然后返回所写入的模式以确保模式真的写入了系统内存108中。在块416中,计算设备100可根据写入的和从系统内存108读取的模式确定擦除操作是否成功。响应于确定擦除操作失败,SCLEAN模块可以使计算设备100返回至块412,以试图重新配置内存控制器(很有可能是不同的配置)并再次擦除系统内存108。在另一实施例中,SCLEAN可以使计算设备100关闭电源或可以响应擦除操作失败引起系统复位事件。
响应于确定擦除操作成功,在块418中,计算设备100解除锁定系统内存108。在一个实施例中,计算设备100通过清零内存锁定存储器124解除锁定系统内存108。在解除锁定系统内存108之后,在块420中,计算设备100退出SCLEAN模块并继续其引导、开电源、和/或初始化过程。在一个实施例中,处理器102执行SCLEAN模块的退出鉴定码(EXITAC)指令,使处理器102终止SCLEAN模块的执行,并启动BIOS144的执行,以便完成引导、上电和/或系统初始化过程。
尽管已参照示例实施例描述了本发明的某些特征时,但该说明并不旨在限制。示例实施例以及本发明的其它实施例的对本发明所属领域的技术人员来说很明显的各种变化被认为在本发明的精神和范围内。
权利要求
1.一种方法,其特征在于,包括响应于确定内存可能包含秘密,锁定内存;和写入锁定的内存,以重写内存可能包含的秘密。
2.如权利要求1所述的方法,其特征在于,还包括在系统引导过程中确定内存可能包含秘密。
3.如权利要求1所述的方法,其特征在于,还包括更新存储器,以指示内存可能包含秘密;和响应于指示内存可能包含秘密的存储器,锁定内存。
4.如权利要求3所述的方法,其特征在于,所述更新包括响应于建立安全增强环境,更新存储器,以指示内存可能包含秘密;和响应于解除安全增强环境,更新存储器,以指示内存不包含秘密。
5.如权利要求1所述的方法,其特征在于,还包括更新存储器,以指示存储器已经包含秘密;和响应于指示内存已经包含秘密的存储器,锁定内存。
6.如权利要求5所述的方法,其特征在于,还包括响应于建立安全增强环境,更新存储器,以指示内存已包含秘密;和在设置存储器之后,防止存储器被清零。
7.如权利要求1所述的方法,其特征在于,还包括更新具有备用电源的第一存储器,以指示内存是否可能包含秘密;更新第二存储器,以指示备用电源是否故障;响应于启动安全增强环境,更新一次更新的第三存储器以指示内存可能包含秘密;和响应于指示内存可能包含秘密的第一存储器或响应于指示备用电源故障的第二存储器和指示内存可能包含秘密的第三存储器,锁定内存。
8.如权利要求1所述的方法,其特征在于,其中所述锁定包括锁定对内存的不可信访问;和所述写入包括通过可信访问写入锁定内存的每个位置。
9.如权利要求1所述的方法,其特征在于,其中所述锁定包括锁定对部分内存的不可信访问;和所述写入包括写入内存的锁定部分。
10.一种方法,其特征在于,包括在系统复位事件之后锁定内存;从锁定内存中去除数据;及在数据从内存中去除后,解除锁定内存。
11.如权利要求10所述的方法,其特征在于,所述去除包括写入内存的每个物理位置,以重写数据。
12.如权利要求10所述的方法,其特征在于,所述去除包括将一个或多个模式写入内存中;并从内存读出该一个或多个模式,以验证该一个或多个内存已写入内存。
13.如权利要求12所述的方法,其特征在于,其中所述锁定包括锁定对内存的不可信访问;和所述写入包括通过可信访问写入内存的每个位置。
14.如权利要求12所述的方法,其特征在于,其中所述锁定包括锁定对部分内存的不可信访问;及所述写入包括写入内存的锁定部分。
15.一种权标,其特征在于,包括指示内存从未包含秘密并可以被更新,以指示内存曾包含秘密的非易失性、一次写入内存。
16.如权利要求15所述的权标,其特征在于,其中所述存储器包括在更新存储器时熔固的熔化内存位置。
17.如权利要求15所述权标,其特征在于,还包括允许更新标记以指示内存已经包含秘密并防止更新标记以指示内存从未包含秘密的接口。
18.如权利要求15所述权标,其特征在于,还包括响应于接收到授权密钥,允许更新标记以指示内存已经有秘密并允许更新标记以指示内存不包含秘密的接口。
19.一种装置,其特征在于,包括指示内存是否被锁定的内存锁定存储器;和响应于指示内存被锁定的内存锁定存储器,拒绝对内存的不可信访问和允许对内存的可信访问的内存控制器
20.如权利要求19所述的装置,其特征在于,还包括指示内存是否可能包括秘密的秘密存储器。
21.如权利要求20所述的装置,其特征在于,还包括指示向秘密存储器供电的电池是否已经故障的电池故障存储器。
22.一种装置,其特征在于,包括存储秘密的存储器;指示内存是否被锁定的内存锁定存储器;响应于指示内存已被锁定的内存锁定存储器,拒绝对内存的不可信访问的内存;和响应于确定内存可能包含秘密,在系统复位后更新内存锁定存储器的处理器。
23.如权利要求22所述的装置,其特征在于,还包括指示内存是否可能包含秘密的秘密标记,响应于建立安全增强环境,更新秘密标记,以指示内存可能包含秘密,并响应于解除安全增强环境,更新秘密标记,以指示内存不包含秘密的处理器。
24.如权利要求22所述的装置,其特征在于,还包括指示内存是否可能包含秘密的秘密标记,响应于一个或多个存储在内存中的秘密,更新秘密标记,以指示内存可能包含秘密,并响应于一个或多个从内存去除的秘密,更新秘密标记,以指示内存不包含秘密的处理器。
25.如权利要求22所述的装置,其特征在于,还包括指示内存是否有可能包含秘密的秘密标记;为秘密标记供电的电池;及指示电池是否故障的电池故障存储器。
26.如权利要求22所述的装置,还包括权标,其特征在于,所述权标包括指示内存是否已经包含秘密的有秘密存储器;及只有在接收到合适的鉴别密钥时才更新有秘密标记的接口。
27.如权利要求25所述的装置,其特征在于,还包括指示内存是否曾包含秘密的有秘密存储器,在更新指示内存已经包含秘密之后,所述有秘密存储器是不可改变的。
28.如权利要求27所述的装置,其特征在于,所述处理器在系统复位之后,根据秘密存储器、电池故障存储器和有秘密存储器更新内存锁定标记。
29.一种计算机可读媒体,其特征在于,包括在系统复位后使计算设备执行的指令根据内存是否可能包含秘密,锁定内存;从锁定的内存中去除秘密;并在去除秘密后解除锁定内存。
30.如权利要求29所述的计算机可读媒体,其特征在于,响应于执行的指令还使计算设备根据指示安全增强环境是否已建立而未完全解除的秘密存储器来确定内存可能包含秘密。
31.如权利要求30所述的计算机可读媒体,其特征在于,响应于执行的指令还使计算设备根据指示用于为秘密存储器供电的电池是否已经故障的电池故障存储器确定内存可能包含秘密。
32.如权利要求29所述的计算机可读媒体,其特征在于,响应于执行的指令还使计算设备根据指示内存是否已经包含秘密的有秘密存储器来确定内存可能包含秘密。
33.一种方法,其特征在于,包括启动计算设备的系统启动过程;和在系统启动过程中,清除计算设备的系统内存的内容。
34.如权利要求33所述的方法,其特征在于,所述清除包含写入系统内存的每个位置。
35.如权利要求34所述的方法,其特征在于,所述清除包含写入可能包含秘密的部分系统内存。
全文摘要
尝试保护秘密不受系统复位攻击的方法、装置和计算可读媒体。在一些实施例中,在系统复位后锁定内存并在解除锁定内存之前将秘密从内存中去除。
文档编号G06F21/00GK1659497SQ03813695
公开日2005年8月24日 申请日期2003年4月10日 优先权日2002年4月15日
发明者D·格垃洛克, D·普斯纳, J·萨顿二世 申请人:英特尔公司