专利名称:采用安全存储器分区来实现安全执行的方法和装置的制作方法
技术领域:
本发明的实施例涉及处理器中的安全执行。具体地说,本发明涉及一种采用安全存储器分区来实现安全执行的方法和装置。
安全执行包括保证执行的完整性和保证代码和数据的保密性。多种类型的威胁会有损系统的完整性或保密性。例如,恶意软件可能会利用操作系统中的弱点。直接存储器访问装置能够不需要处理器支持来读取物理存储器。可采用逻辑分析器来观察处理器和存储器之间的通信量。还可利用处理器的内置调试模式或探测模式来进行攻击,或者物理地修改系统中各部件的互连性以便观察和修改部件之间的通信来进行攻击。攻击者还可使硬件处于异常的电压、温度或频率下,从而损害系统的执行并可能使硬件“泄露”秘密。另外,攻击者还可选择性地除去处理层以暴露出隐藏有秘密的装置结构,或者采用离子束来检查装置内的信号流。
一些安全方案、如基于公开密钥/秘密密钥密码术的方案采用需要保密的专用数据或代码。在一些情况中,所使用的编码算法是公知的,而密码强度在于使密钥保密。中间数据、如程序的控制流信息应当不被暴露,因为这可能使得更容易确定秘密密钥。在此方面,可采用处理器体系结构的条件分配能力来消除秘密数据的转移,然而很难设计出代码来满足此要求。对于一些应用,一部分密码强度是在算法本身的保密性中。在这种情况下,执行环境需要保证甚至是执行代码以及输入数据和所有中间结果都保密。
在一些系统中,采用特殊的安全协处理器来保护主处理器的代码和数据。已知的系统没有为主处理器提供有效的装置来保护主处理器内的专用代码或数据(如密钥)不受攻击,例如采用恶意软件、直接存储器访问装置、逻辑分析器,利用系统的调试/探测模式,或者修改硬件来泄露秘密,从而进行攻击。
图2是根据本发明一个实施例的具有安全执行部件的处理器和具有安全分区的存储器的部分框图。
图3是虚拟和物理存储器分区的部分框图。
图4表示根据本发明一个实施例的处理指令的方法的流程图。
图5表示根据本发明一个实施例的处理指令的另一方法的流程图。
具体描述本发明的实施例通过将敏感代码和数据存储在安全存储器分区中而实现安全执行。敏感代码和数据可包括用于验证经网络接收的传输的可靠性和完整性的代码和数据,并可包括存储在如DVD或CD-ROM等媒体中的内容。安全存储器分区可由体系结构定义为处理器的通用地址空间内的地址范围。分区可以是虚拟存储单元或物理存储单元的地址范围。地址范围可由基址和范围来指定。安全存储器分区可具有固定的入口点。在另一实施例中,敏感代码和数据在写到存储器中之前由处理器上的硬件加密,并在其被读回到处理器中之后被解密,从而保护敏感代码和数据免于泄露。本发明的不同实施例提供了针对不同级别威胁的保护。实施例提供了针对基于恶意软件和智能输入/输出装置的攻击、采用逻辑分析器的攻击以及包括将处理器从插槽中拔出然后将其放到完整性受损的平台上的硬件攻击的高度保护。
安全执行系统的实施例
图1是根据本发明一个实施例的可实现安全执行的计算机系统的部分框图。计算机100包括部件101,其中可包括处理器110、芯片组102、系统存储器120、网络接口卡103、非易失性大容量存储器104、输入/输出(I/O)装置107和基本输入/输出系统(BIOS)ROM108。处理器110可与芯片组102相连。用语“相连”包括直接连接、间接连接和间接通信等。芯片组102还可与系统存储器120、网络接口卡103、非易失性大容量存储器104、输入/输出装置107和BIOSROM 108相连。这些装置可通过总线如系统总线、外围部件接口(PCI)总线等与芯片组102相连。网络接口卡103可与网络130相连。计算机100还可包括其它部件,例如协处理器、调制解调器等。
处理器110可以是通用微处理器,例如由California,Santa Clara的Intel公司生产的PENTIUM类处理器。在另一实施例中,处理器可以是专用集成电路(ASIC)、控制器、微控制器等。芯片组102可以是一个或多个集成电路芯片,用作在处理器和计算机系统的其它部件之间进行数据传送的集线器或核心。在一个实施例中,芯片组102包括执行所谓的“北桥功能”的存储器控制集线器(MCH)和执行所谓的“南桥功能”的输入/输出控制集线器(ICH)。系统存储器120是适合于存储数字信息的任何装置,例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等、或者它们的任何组合。在一个实施例中,系统存储器120是易失性存储器。处理器110、芯片组102、系统存储器120和BIOS ROM 108可以安装在计算机100的系统主板上。
网络接口卡103可包含逻辑以采用标准网络协议进行通信。网络130可以是局域或广域计算机网络,例如可以为内部网或因特网。非易失性大容量存储器104可以是适合于存储数字信息的任何装置,例如闪速存储器、硬盘、光学数字存储装置、磁电存储装置、DVD、CD-ROM等、或者它们的任何组合。图1表示的非易失性大容量存储器104包括光存储器105和软盘驱动器106。输入/输出装置107可以是键盘、鼠标、显示屏、打印机等或者它们的任何组合。BIOS ROM108可包含用于控制外围设备如键盘、显示屏、盘驱动器、串行通信接口的代码。BIOS ROM 108还可包含用于执行其它杂项功能的代码。
图2是根据本发明一个实施例的具有安全执行部件的处理器和带有安全分区的存储器的部分框图。图2表示了处理器210和系统存储器220,作为计算机系统、如图1所示计算机系统100的一部分。处理器210和系统存储器220可以与图1所示的处理器110和系统存储器120相同。处理器210可例如通过芯片组、如图1所示芯片组102与系统存储器220相连。
处理器210可包括执行单元211、如算术逻辑单元,它可与寄存器文件212相连。寄存器文件212可包括多个寄存器,诸如通用寄存器、标志寄存器、指令指针、变址寄存器等、或者它们的组合。寄存器文件212可包括安全分区寄存器214。执行单元211可与片上基本输入/输出系统(BIOS)215、处理器密钥存储元件216和随机数发生器(RNG)单元217相连。片上BIOS 215可包含烧写的逻辑,供处理器用来与其它系统部件、如系统存储器120进行通信,并可包含在处理器启动(引导)时运行的逻辑。此逻辑可包括如下所述的引导安全性逻辑241。另外,片上BIOS 215可包括在系统启动时将来自BIOSROM 108的指令装入系统存储器的逻辑(如固件、微码等)。处理器密钥存储元件216包含秘密密钥,处理器210可采用秘密密钥来验证和鉴别从其它系统部件和从其它计算机系统接收的信息。处理器密钥可烧写到处理器密钥存储元件216中。随机数发生器单元217可以是采用任何随机化函数的硬件随机数发生器。在一个实施例中,随机数发生器单元217利用物理器件中的统计现象(例如热噪声)来提供随机数。
在此实施例中,执行单元211还可与包含管理如下所述的存储器中安全分区的逻辑的安全分区实施逻辑218相连。在另一实施例中,安全分区实施逻辑218与密码逻辑219相连,后者对要存储在安全分区中的信息加密,并对从安全分区读出的信息进行解密。密码逻辑219可以是实现如数据加密标准(DES)、Rivest-Shamir-Adleman(RSA)或数字信号标准(DSS)加密之类算法的硬件逻辑。在一个实施例中,密码逻辑219采用平台指定密钥而不是存储在处理器密钥存储元件216中的处理器密钥。安全分区实施逻辑218和密码逻辑219可以与翻译旁视缓冲器(TLB)213相连,TLB 213可用于将处理器210的地址空间内的虚拟地址映射到系统存储器220和其它可由处理器210存取的存储器中的物理存储器地址。
图2还表示了包括安全存储器分区223的系统存储器220。安全存储器分区223可以是只能被驻留在安全分区内的代码访问的物理存储器或虚拟存储器的一部分。在一个实施例中,安全分区223由两个安全分区寄存器214定义。例如,安全分区223由指定虚拟存储器中的安全分区开头的安全分区虚拟地址基址寄存器和指定安全分区大小的安全分区虚拟地址范围寄存器来定义。在图2中,所示的安全分区223映射到系统存储器220中的物理存储器地址。安全存储器分区223可包含安全数据部分225和安全代码部分226。安全代码部分226例如可存储信任的验证实施指令242,用于应用密码算法和验证经网络接收的传输(或者存储在媒体、如DVD或CD-ROM中的内容)的可靠性和完整性。安全数据部分225可包含由安全代码使用的数据,例如秘密密钥和中间数据(例如安全指令的控制流信息)。安全代码部分226可具有入口点228,如下所述地使用。
图2所示的实施例可如下操作。处理器210通过采用引导安全逻辑来验证BIOS代码(例如BIOS ROM 108中的代码),从而保证平台的完整性,引导安全逻辑例如为处理器微码或片上BIOS验证固件代码,在图2中表示为引导安全逻辑241。然后安全BIOS 108又确认芯片组中任何其它保护机制的存在。根据一个实施例,当处理器210被启动时,它可以通过扫描存储器并确定安全分区的位置来创建安全分区。然后处理器可以编制安全分区基址寄存器和安全分区范围寄存器来定义安全分区。这些寄存器可以是一次写入寄存器。在其它实施例中,可采用其它机制来创建安全分区。然后处理器可将验证实施指令242和相关数据、如密钥复制到系统存储器220的安全存储器分区223中。在另一实施例中,在处理器引导过程中将验证实施指令242从非易失性大容量存储器、如硬盘驱动器复制到安全存储器分区223中。在此实施例中,处理器210可采用存储在片上BIOS215中的引导安全逻辑241和存储在处理器密钥存储元件216中的密钥数据来验证复制到安全存储器分区223中的验证实施指令242和数据的可靠性和完整性。此验证可确定存储在非易失性存储器中的验证实施指令242是否已经被攻击所破坏或损坏。将引导安全逻辑241存储在处理器中和将验证实施指令242存储在非易失性存储器中比将验证实施指令242烧写在处理器本身中的成本更低。
在一个实施例中,安全分区实施逻辑218监测由处理器210进行的对存储器的任何访问。这种访问可包括执行存储在存储器中的指令,或者执行可操作存储器中数据的指令。当指令读取存储在存储单元中的数据或向此存储单元写入数据时,指令操作存储器中的该存储单元中的数据。在此实施例中,安全分区实施逻辑218在处理器210执行指令之前检查各指令。如果指令是向安全存储器分区223内除分区入口点228外的存储单元的转移,那么安全分区实施逻辑确定不应执行此指令。在这种情况下,分区指令逻辑将转移到中断处理器。安全分区实施逻辑218允许执行从分区内存储单元到分区内另一存储单元的转移,并允许执行到分区入口点228的转移。入口点228可包含验证例程的起点,此例程验证跳转到安全分区的软件的可靠性。因此,例如,此例程可防止未授权或恶意的程序执行安全代码。另外,通过为安全代码226强加入口点,安全分区实施逻辑218可防止未授权或恶意代码绕过验证例程。在另一实施例中,当指令未存储在分区入口点且先前执行的指令为分区开头之前的指令时,安全分区实施逻辑确定不执行此指令。因此,如果分区入口点228不是分区中的第一指令,那么安全分区实施逻辑218将防止处理器随后进入到安全分区中入口点以外的点处。
在此实施例中,当指令位于安全分区之外并尝试在安全分区内的存储单元进行操作(例如从中读出或写入)时,安全分区实施逻辑确定不执行此指令。因此,只有安全代码部分226中可信任的指令才能对安全存储器分区223的安全数据部分225内的数据进行操作。在此实施例中,安全数据不能被位于安全分区内的代码存取接受。在另一实施例中,安全分区中的代码可访问安全分区之外的数据。在另一实施例中,如果指令不具有适当的读/写权限,那么安全分区实施逻辑218可确定不执行试图对分区的安全数据部分225内的数据进行操作的指令。在另一实施例中,当安全分区之外的指令试图对安全分区内的存储单元进行操作时,安全分区实施逻辑218可转移到中断处理器。当一个指令试图对安全数据部分内的数据进行操作而没有适当的读/写权限时,也可以转移到中断处理器。
在一个实施例中,安全存储器分区223可以是虚拟存储器中的分区。在一个实施例中,处理器的地址空间是虚拟存储器地址空间,并且所有指令根据虚拟地址来对存储器进行寻址。在此实施例中,安全分区在处理器210中由虚拟地址、如虚拟地址基址寄存器和虚拟地址范围寄存器所指定。通过根据虚拟地址来指定安全分区,安全分区实施逻辑可更早地位于流水线中。翻译旁视缓冲器213可将这些虚拟地址转换为物理地址。用于安全分区的虚拟地址到物理地址的映射可通过信赖的机制来完成。
图3是虚拟和物理存储器分区的部分框图。图3表示具有小应用程序空间367和核心空间365的虚拟存储器360。小应用程序空间367和核心空间365映射到物理存储器320内的安全分区323。安全分区323中的信息可被调出到非易失性存储器340中的安全非易失性空间345中。非易失性存储器340可以是闪速存储器。在一个实施例中,安全非易失性空间345只包括安全分区323中的一小部分代码或数据。
在一个实施例中,验证实施指令242和相关数据以加密形式存储在安全分区223中,从而在从处理器210到存储器的传送或在存储在存储器中时保护代码和数据不会泄露。根据此实施例,安全代码和数据在它们从存储器中的安全分区传送到处理器210中之后被密码逻辑219解密,使得执行单元211可对代码和数据起作用。相反,安全代码和数据在它们从处理器210中传送到存储器中的安全分区之前被密码逻辑219加密。这样就可以保护安全代码和数据免受通过例如直接存储器访问、逻辑分析器或离子束进行的攻击。如果采用足够强度的加密,即使攻击者可确定安全分区的内容,也无法确定安全代码或数据。在一个实施例中,可采用共享密码算法、如Diffi Helman方法来对安全代码和数据进行加密和解密。在这样的实施例中,可采用覆盖密钥来覆盖数据,此覆盖密钥不是共享的。覆盖密钥可通过启动逻辑来产生。在另一实施例中,系统具有多个处理器,覆盖密钥由系统处理器共享。
在另一实施例中,计算机系统具有在非易失性大容量存储器、如硬盘中的安全分区。非易失性大容量存储器中的安全分区也可以是易失性大容量存储器中的安全分区的补充。根据此实施例,非易失性存储器中的分区只可由安全代码寻址。
可采用随机数发生器217来执行密码算法或产生新密钥。处理器可采用安全的非易失性(NV)存储器来保持当前的单调值。
图4表示根据本发明一个实施例的处理指令的方法的流程图。此指令例如可以是将由处理器、如图1和2所示的处理器110或210执行的汇编语言指令。在执行之前检查指令(401)。当指令是对虚拟存储器的存储单元分区中某一单元的未授权访问时,作出不执行此指令的决定。在一个实施例中,当指令操作分区内存储单元中的数据且指令并不存储在分区中时,作出不执行此指令的决定(402)。在另一实施例中,当指令是从分区外存储单元到分区内的分区入口点以外的存储单元的转移时,作出不执行此指令的决定(403)。根据另一实施例,当指令未存储在分区入口点并且先前执行的指令为紧接分区开头之前的指令时,作出不执行此指令的决定(404)。如果作出指令经过授权的判决,则执行此指令(405)。例如,当指令从分区内的存储单元转移到分区内的另一存储单元时以及当指令从分区外的存储单元转移到分区入口点时,可以执行此指令。根据一个实施例,此方法包括当作出不执行此指令的决定时转移到中断处理器(406)。
图5表示根据本发明一个实施例的处理指令的另一方法的流程图。根据一个实施例,从存储器中的安全分区将加密指令读到处理器中(501)。指令已经采用了任何密码技术进行加密。所读取的指令例如采用如图2所示的密码逻辑219进行解密(502)。然后执行所解密的指令。在一个实施例中,如果指令是从安全分区中读出数据的指令(503),那么从安全分区中读出数据,对所读取的数据进行解密(504)。在另一实施例中,如果指令是将数据写入安全分区的存储单元中的指令(505),那么对数据进行加密,且将加密数据写入安全分区(506)。在另一实施例中,确定指令是否为从安全分区中读取数据或向安全分区中的存储单元写入数据的指令包括将数据的虚拟地址与安全分区的边界进行比较。
安全特权级别(SPL)
在一个实施例中,定义了两个“安全特权级别”。一个特权级别称为安全核心特权级别,可用于只执行原始安全函数/服务。第二特权级别可定义成用于执行处理器或第三方提供的安全代码。此第二特权级别可称为小应用程序特权级别。新的安全特权级别(SPL)可与执行的特权级别的现有概念正交。因此在这个实施例中,用于给定虚拟地址范围的访问(执行/读/写)特权不仅成为当前特权级别(CPL)的函数,而且成为当前SPL(CSPL)的函数。CSPL表明了与当前执行有关的安全特权级别。CSPL的缺省值可为3。在这种情况下,当CSPL为3时,此执行模型可称为缺省执行模型。当CSPL为缺省值以外的其它值时,执行模型可称为“隐藏执行”模型。
两个特权级别可称为为0的SPL(对核心来说)和为1的SPL(对小应用程序来说)。复合特权级别可称为环x,y,其中x为当前执行的CPL,而y为当前执行的CSPL。因此,如果当前执行的特权级别为3.3,这就意味着当前应用在缺省环3下执行。然而,如果当前特权级别为3.0,这就意味着执行的当前特权级别为环3,并具有与安全核心特权级别相关的访问权限。在一个实施例中,CSPL在实模式下总为3,在这种情况下不存在对实模式中隐藏执行的支持。
核心特权级别该体系结构可定义用于核心特权级别的新的虚拟地址范围。新的虚拟地址范围可由虚拟地址基址寄存器核心(VABRk)和虚拟地址范围寄存器核心(VARRk)来定义。由VABRk和VARRk所指定的虚拟地址范围可定义成具有与之相关的核心级别安全访问权限,可称为安全核心空间或核心的安全存储器分区。
在一个实施例中,只有安全核心空间内的代码才可在此空间内读或写。在这种情况下,安全核心空间内的数据和代码的完整性和保密性不会被位于此空间之外的代码所损坏。在另一实施例中,安全核心空间内的代码可从任何虚拟地址空间内读取数据或向其中写入数据,只要这种存取是被允许的,这例如可通过现有的分段和分页保护机制来进行。在另一实施例中,定义了只有在安全核心特权级别下才可执行的指令。在另一实施例中,核心虚拟地址空间可自由地再定位。在另一实施例中,安全分区的大小在引导时间是固定的,并不受通用系统软件的控制。例如,只有预装操作系统固件或片上微码能够写入虚拟地址范围寄存器中。在这种情况下,虚拟地址范围寄存器或者完全不能由软件写入(它由处理器微码写入),或者可在复位后只写一次(如果由固件写入的话)。
在另一实施例中,存在着到安全核心空间的固定入口点,并且从这个空间外部转移到安全核心空间中除入口点的预定义偏移量以外的偏移量是非法的。可通过任何控制转移机制从具有缺省安全特权的地址空间进入安全核心空间,只要它是到固定入口点。在另一实施例中,在核心安全特权级别下代码所请求的核心服务可以是请求者的当前特权级别的函数。在此实施例中,进入安全核心空间的入口点处的代码检查调用者的当前特权级另和当前安全特权级别,以便确定是否允许所请求的服务。在一个实施例中,安全核心地址空间可通过任何控制转移机制退出到具有x.3的当前安全特权级别的空间。在安全核心采用调用/返回机制以改变程序流的情况下,安全核心可能需要管理其安全栈空间以及安全和非安全应用栈空间之间的转移。
小应用程序特权级别此体系结构可定义处理器的通用虚拟地址空间内的新的虚拟地址范围。此虚拟地址范围可由两个寄存器来定义虚拟地址基址寄存器小应用程序(VABRa)和虚拟地址范围寄存器小应用程序(VARRa)。由VABRa和VARRa定义的地址范围具有小应用程序级别,可具有与之相关的安全访问权限,并可称为安全小应用程序空间。
在一个实施例中,对于与小应用程序安全特权级别相对应的虚拟地址空间来说,读写访问权限被限于在地址范围内执行且带有小应用程序或核心安全特权级别的代码。在一个实施例中,定义安全小应用程序空间的应用必须还在相同处理的上下文中的相同当前特权级别下定义安全核心空间。在一个实施例中,核心或小应用程序的隐藏执行代码以外的任何代码都不能在安全小应用程序空间内进行读或写。因此,安全小应用程序地址空间内数据和代码的完整性和保密性不会被不具有安全访问权限(即当前安全特权级别为3)的代码所损坏。在这个实施例中,安全小应用程序空间内的代码不能读或写安全核心地址空间内的数据,并且安全小应用程序空间内的代码可以读和/或写安全核心空间以外的任何其它地址范围,只要它是现有分段和分页保护机制所允许的。安全小应用程序空间可自由地再定位。分区的大小在引导时间是固定的,并且不受通用系统软件的控制。在这个实施例中,只有预装操作系统固件或片上微码能够写入VARRa寄存器中。因此,寄存器VARRa完全不能由软件写入(在其由处理器微码写入的情况下),或者可在复位后只写一次(如果由固件写入的话)。
在一个实施例中,只能从安全核心空间进入安全小应用程序空间中。在这个实施例中,从缺省安全空间转移到安全小应用程序空间中是非法的,但是对从安全核心空间到安全小应用程序空间中的入口点却无限制。在这个实施例中,从具有缺省安全特权的地址空间调用安全小应用程序空间中的函数需要到安全核心空间中的固定入口点的控制转移,并且需要用于请求当前安全小应用程序空间内的函数的适当“凭证”。安全小应用程序地址空间可通过任何控制转移机制退到当前安全特权级别为3的空间。然而,如果小应用程序想调用具有缺省安全性的空间内的函数,则它通过到其安全核心空间的函数调用来实现此目的。
在一个实施例中,安全小应用程序空间和安全核心空间之间的转移与具有缺省安全性的地址空间和安全核心空间之间的转移相似,只是小应用程序被允许调用其它的安全核函数。在这个实施例中,安全小应用程序空间可采用任何控制转移机制来控制安全小应用程序空间内的转移,但所有中断会导致从安全小应用程序空间中离开。只有安全核心支持安全小应用程序栈空间的管理以及安全和非安全应用栈空间之间的转移时,安全小应用程序空间才可使用调用/返回机制。在安全核心内对这种能力的支持是可选的。
安全物理存储器(RAM和非易失性)分区在一个实施例中,安全扩展在物理存储器中定义一个“安全”分区。如果处理器只实现安全核心特权级别,那么安全物理空间的大小等于或大于安全核心空间的大小。如果处理器支持安全核心和小应用程序特权级别,那么物理分区的大小可等于或大于安全核心和小应用程序空间之和。安全物理存储器分区可由物理地址基址寄存器(PABR)和物理地址范围寄存器(PARR)来定义。在一个实施例中,安全物理存储器分区的基址和范围在引导时间都是固定的,因此不受通用系统软件的控制。只有预装操作系统固件可写入PABR或PARR寄存器中。因此这些寄存器只能在复位后写入一次。
可采用物理地址分区在虚拟地址机制启用(如处理器在受保护模式下执行)时为安全虚拟地址分区提供物理存储器。当虚拟地址机制禁用(如处理器处于实模式)时,处理器硬件可能不允许任何对安全物理存储器分区的访问,并且在实模式中任何对安全物理存储器分区的访问会导致非法的操作陷阱。
在一个实施例中,安全物理存储器分区可作为处理器芯片、即同一封装中的单独芯片中的物理存储器或者作为外部系统存储器的一部分而设置。在安全物理存储器分区作为外部系统存储器的一部分来实现的情况下,如果存储器控制器也实现一对与PABR和PARR相似的寄存器,并且保证此地址空间不会被DMA装置访问,这是有利的。预装操作系统BIOS可验证芯片组中适当保护机制的存在。安全物理存储器的一部分可与非易失性存储器相对应。用于NV物理存储器分区的基址可与PABR相同。还设置了额外的范围寄存器、即NV存储器范围寄存器或NMRR,定义了安全NV存储器分区的大小且只能由SPL 0代码写入。安全NV存储器空间可属于同一封装中的单独芯片,或者是外部部件的一部分。在一个实施例中,只有请求是安全核心空间内运行的代码发起的,此NV存储器才可被访问。
在一个实施例中,在安全地址空间内存在四个体系结构分区1)安全小应用程序空间,2)与小应用程序地址空间相关的用于执行小应用程序所请求的安全核函数的安全物理存储器,3)用于核心代码和数据的安全物理存储器,以及4)安全NV存储器。用于小应用程序空间的安全物理存储器和与小应用程序执行相关的一部分安全核心空间可以是基于每次处理的资源。安全核心空间可实现函数以保存安全小应用程序物理地址空间的内容的加密版本,以及为从安全小应用程序代码中调用的安全核函数而保留的一部分安全核心空间。安全核心地址空间还可实现函数以恢复安全小应用程序物理存储器和与小应用程序空间相关的一部分安全核心空间。这些函数实现安全小应用程序物理存储器和与几次处理之间的小应用程序空间相关的核心内存的“虚拟化”。通过保持与安全NV存储器中的交换状态相关的散列值,以及与这个保存状态的示例相对应的“独特标记”,可以提供换出状态的完整性。
在一个实施例中,可提供足够的安全核心物理存储器来实现同时执行几个核函数,不需要允许在执行中间换出由安全驱动器所启动的核函数。在另一实施例中,一旦为执行安全函数分配的安全核心空间正在使用,那么对核心安全函数的任何其它请求均被阻止,直到先前执行的安全函数完成为止。
处理器密钥在一个实施例中,处理器除独特ID之外还具有秘密/公开密钥对。密钥对可以是RSA密钥对、DSS密钥对或者一些其它密钥对,其中RSA密钥对最有利。秘密密钥可“烧写”在处理器中,并只能与特定的核心安全函数一起使用。这些安全函数只能在特权级别cp1.0(因此在核心安全空间内)执行。公开密钥也可设置在处理器中并带有相关的认证。片上NV存储器可设置用于整个秘密和公开密钥。这足以为构成公开和秘密密钥的足量分量提供存储空间,使得处理器在上电时能够采用片上微码或核心代码来计算整个密钥而不会泄露秘密密钥。与密钥的带符号值相对应的一部分公开密钥认证也应设置在片上NV存储器中。在一个实施例中,用于1024位秘密密钥的RSA密钥对需要处理器上隐藏NV存储器中的1344位512位用于P分量,512位用于Q分量,320位用于公开密钥认证(假定认证中的签名为DSS签名)。
除秘密和公开密钥之外,处理器还可具有片上NV单元中的DES密钥的56位(或者应具有对三重DES的支持)。此密钥还可为处理器保密,并且只用于执行DES函数以对外部安全物理存储器进行存储/读出。在一个实施例中,采用平台指定DES密钥来代替处理器指定DES密钥。
安全特权级别和处理器操作模式的交互作用在一个实施例中,缺省处理器执行和当前安全特权级别之间存在最小的交互作用。在另一实施例中,当虚拟翻译机制关闭(即处理器处于实模式)时,CSPL强制为3(即缺省模式),访问安全物理地址分区是非法的。此安全机制可对实模式或虚拟模式禁用。在这个实施例中,当虚拟翻译机制起作用(即处理器处于受保护模式)时,任何对安全虚拟地址分区的访问的TLB漏失均直接由处理器采用新的翻译算法来处理。TLB漏失可能不会导致任何与TLB相关的错误。
在一个实施例中,用于安全地址空间的虚拟-物理映射的页转换入口格式这样定义,使得在安全地址空间内,访问权限只由CSPL控制。当执行来自任一安全虚拟分区的代码时,性能监测能力无效。在存在着由中断或外部中断引起的安全核心或小应用程序空间的转出的情况下,可将适当的寄存器保存在安全核心空间内的预定义块中。在存在着用于将临时值保存在寄存器中的外部系统存储器的情况下,在将安全地址空间内的数据写入外部存储器之前,处理器可采用平台指定的“覆盖密钥”通过片上DES单元来自动对这些值加密。在将这些寄存器保存在安全物理存储器中后,相应处理的寄存器值可变成一些合法但无意义的值。例如,大多数数据/地址寄存器可变成全“零”,但EIP可变成一些固定的合法值。
转移出安全地址空间可由核心安全虚拟地址分区内的片上微码或中断机制来处理。在外部存储器用于安全物理地址分区的情况下,一些实现可支持采用DES并用平台的“覆盖密钥”来从安全虚拟地址分区中获得指令流的加密版本。
在一个实施例中,可以定义新的安全转移(TSR)。根据此实施例,任何将程序控制从其它空间转到安全核心空间内的控制转移机制提供在此寄存器中的调用者的CPL和CSPL。在安全核心空间中的入口点的代码可检查这些位和所请求的服务,从而确定是否允许所请求的服务。例如,几项安全服务只能由CPL为0的代码(即安全驱动器)来请求。在一个实施例中,TSR寄存器只能由硬件或安全核心代码(CSPL为0)来更新。
在一个实施例中,存在着安全核心空间的固定入口点。在此实施例中,到任何其它偏移地址的转移都是非法的。寄存器之一可指定将在安全或应用地址空间内执行的函数号。一些函数可能需要额外的参数如输入操作数、将用于解密目标代码/数据的密钥等。在一个实施例中,不允许从具有缺省安全性(CSPL为3)的地址空间到安全小应用程序空间的控制转移。在另一实施例中,预定义用于安全虚拟地址空间的高速缓存控制位,选择安全物理存储器空间的“反写”属性。
安全指令可提供安全指令来实现本发明的函数。这些指令可分类成支持安全函数所需的指令,或者用于提高安全函数或不同特权级别之间转移的性能的指令。在一个实施例中,最小本机安全函数需要此实现能支持“逻辑分析器”威胁级的核心安全特权级别。可用于支持此函数级别的指令为(1)在cp1.0特权级别下读取处理器秘密密钥的指令,(2)在cp1.0特权级别下写入平台“覆盖”密钥和另一模型指定寄存器中的指令,(3)在任何CPL或CSPL下读取处理器的公开密钥及其认证的指令,以及(4)在任何CPL或CSPL下读取RNG的指令。
还可定义其它指令来便于实现,并加速带有不同安全特权的地址空间之间的转移。这些可包括转移“提示”指令,它指明即将到来的控制转移指令实际上包含当前安全特权级别的改变。此指令可以如下指令来实现将控制转移到安全小应用程序空间中的代码的指令、将控制转移到安全核心空间的指令、和/或将控制转移到缺省安全特权级别的指令。可采用的另一指令是用于存储到安全NV存储器中的指令。通过使在设计的前端而不是后端就知道当前存储指向NV存储器,可帮助实现此指令。
软件模式存在着可能的实现安全核心空间的大量选项。在一个实施例中,安全核心只能实现一个安全函数。在另一实施例中,安全核心可通过简单地以宏码实现其它函数来支持其它函数。在另一实施例中,安全核心可实现允许安全驱动器一次只调用一个函数的策略。在这种情况下,先前的安全函数应当在任何其它安全函数执行启动之前完成。在另一实施例中,安全核心只可支持其资源内的一个活函数,但允许由安全驱动器进行安全核心空间的虚拟化。这种方法会导致显著的开销,用于加密部分执行的函数的状态并执行新加载函数的完整性检查。另一实施例在安全核心空间中提供了足够的空间,允许多个安全函数同时起作用,并且不支持此空间的“虚拟化”。
在一个实施例中,当CSPL为3的应用想调用核心安全函数时,应当通过在CPL为0和CSPL为3时运行的安全驱动器作出请求。出于性能原因,该体系结构可允许应用调用在其相关安全小应用程序中的函数,并且不会有通过安全驱动器调用的开销。CSPL为3的应用可通过安全核心空间来作出这种请求,只要按照对进入安全核心空间的入口点的限制。在固定入口点的安全核心代码可负责验证调用者是否具有请求指定服务的适当特权级别(PL和SPL)。为此,可以定义新的寄存器、即转移状态寄存器(TSR),以便提供到安全核心和小应用程序空间中调用者的PL和SPL。
出于性能原因,可允许安全小应用程序通过控制转移指令将控制转移回应用中。为了保持执行的保密性,只有安全核心为安全栈提供支持,小应用程序才应采用调用指令来将控制转移给应用。在一个实施例中,不在安全核心空间上增加验证调用者的负担,而是通过安全驱动器只允许从应用到安全小应用程序空间的控制请求的转移。在一个实施例中,基础结构还允许安全小应用程序通过直接控制转移指令来调用核心空间中的安全函数,只要按照对入口点的限制。安全核心空间可仅提供与当前安全小应用程序相关的足够空间,以便支持每次进行一个活安全函数调用。在一个实施例中,即使可从任何CPL和任何CSPL进入安全核心空间,在入口点的安全核心代码确保从给定的PL和SPL只能进行允许的安全核心服务请求。在入口点的安全核心代码可检查转移状态寄存器(TSR)中的请求者的特权级别,以便作出决定。
寄存器可采用寄存器来管理安全分区机制。这些寄存器可包括用于安全核心虚拟地址空间、小应用程序虚拟地址空间、物理存储器地址空间和非易失性存储器地址空间的基址寄存器和范围寄存器。寄存器还可设置成用以存取各种处理器密钥。这些寄存器可包括用于处理器秘密密钥的寄存器、用于具有与认证对应的签名的处理器公开密钥的寄存器、以及处理器DES“覆盖密钥”。寄存器可以是只读寄存器。
其它寄存器可包括转移状态寄存器,它提供要转移到安全地址空间中的调用者的PL和SPL。另外,独特标记号寄存器可保持分配给隐藏执行的特定示例的标记号。可采用中断安全特权级别寄存器来记录安全特权级别。这些寄存器可以是读/写寄存器。
安全核心和小应用程序虚拟地址空间管理在一个实施例中,安全核心和小应用程序地址空间只在虚拟-物理翻译机制启用时才定义。安全能力可以不依靠操作系统的存储器管理程序来提供安全虚拟地址分区到安全物理存储器的映射。可在安全虚拟地址分区和安全物理存储器分区之间定义固定的映射。可以不对安全虚拟地址空间的访问和修改故障作出规定,高速缓存控制位可设置为“反写”模式。在一个实施例中,无需操作系统服务来建立安全虚拟地址空间和安全物理存储器地址空间之间的链接。在另一实施例中,不存在关于这些虚拟地址分区的缺页故障的概念。
安全虚拟空间可采用固定线性映射来映射到安全物理空间。页转换可以是PABR和VARRk寄存器的功能。可以预定义访问权限。这些访问权限可允许用于所有CPL的执行/读/写权限,因此使虚拟安全分区能够驻留在任何CPL。在此实施例中,一旦在入口点的安全核心代码允许到安全地址空间的转移,则在安全分区内对于给定虚拟地址的访问许可只由CSPL控制。
在一个实施例中,安全虚拟地址空间可自由地再定位。在此实施例中,安全虚拟分区无论在何时再定位,此再定位的安全虚拟分区的所有先前的有效映射均为无效。这样,无论何时作出到新的安全虚拟分区的转移,都存在为此新分区建立的新的有效TLB入口。在另一实施例中,增强用于具有缺省安全性的虚拟地址空间的TLB机制,以便确保用于这些PTE的物理存储器页面地址不会与安全物理存储器空间重叠。潜在的重叠可能会导致非法操作故障。
中断在一个实施例中,用于核心和小应用程序地址的隐藏执行可由软件和/或通过外部中断来中断。体系结构机制可设置成允许保存处理的上下文,此处理可处于核心或小应用程序安全特权级别下的隐藏执行的中间。即使在安全特权级别之一中执行时处理由于单步执行而中断,硬件和软件机制也可确保执行的保密性和完整性一直保持到威胁模型。用于处理中断的机制依赖于处理器体系结构的特征。在一个实施例中,如果在安全特权级别中执行的代码被中断,则在现有中断微码中添加例程以解决安全问题。在另一实施例中,定义了新的安全中断向量表来处理这些中断。在此实施例中,当程序在安全特权级别中执行时任何中断将被重定向到安全核心地址空间中的处理程序。此安全中断处理程序可执行关键函数以确保中断代码的保密性和完整性,然后转移回到具有所有正确相关的中断状态信息的缺省中断向量。
安全级别说明不同的实现可提供对不同威胁级别的保护。例如,一些实现只提供针对软件、智能IO和逻辑分析器(仅观察模式)攻击的保护,而其它实现可提供针对包括来自离子束攻击的威胁的所有威胁模型的保护。针对威胁类别保护的能力定义了安全级别。所有安全级别应当提供针对简单硬件攻击的保护,这些硬件攻击包括将处理器拔出插槽并将其放到完整性受损的平台上,以便绕过对建立安全物理空间的高完整性BIOS的信赖。在一种实现中,通过采用处理器微码或片上BIOS验证固件代码来验证BIOS,处理器确保平台的完整性。在这种情况下,BIOS代码可确认在芯片组中是否存在任何所需的安全特征。
在安全级别1(SL-1)模型的一个实施例中,采用了用于映射安全虚拟地址分区的外部系统存储器和系统NV(闪速)存储器的受保护分区。在一个实施例中,采用公共平台密钥来对隐藏执行的代码进行加密,并将其以加密形式保存在受保护的物理存储器中。关于对装置的秘密密钥操作的一些函数,可采取预防措施以确保这些函数不具有任何依赖于装置的秘密密钥的各位的转移。这可通过采用条件转移指令或预测性能来实现。在一个实施例中,所有中间计算数据以明码形式只保存在处理器寄存器和片上高速缓存中。在一个实施例中,无论安全地址范围中的数据在何时需要被存储在外部受保护的物理存储器分区中,输出的数据均采用总线接口单元中的DES单元来加密。可能存在单独的DES单元或者可共享公共DES单元,用于对来自安全物理地址空间的输入数据和代码进行解密。如果DES单元采用至少一个56位DES密钥,这是有利的。一些实现可采用更大的密钥(在采用三重DES的情况下)。
对所有隐藏执行来说,安全级别1可解决直到逻辑分析器(观察模式)的安全威胁。当安全物理空间中的代码是加密形式时,通过主动修改外部总线信号来获得对处理器/平台秘密的访问是非常困难的。然而,此安全级别不会提供对这种攻击的任何担保。在另一实施例中,采用抗窜改软件来进行“已知文本”攻击均匀硬件。安全级别1模型还可提供一些保护,防止采用实现检测模式和调试挂钩来获得对实现指定状态的访问,以便对专用数据进行解密。另外,SL1模型可采用一些有限量的保护,防止用电压和频率窜改技术来使处理器的动作不正确以获得对专用数据的访问。
在SL-1模型中,物理存储器的安全分区的保护可通过虚拟-物理转换机制、处理器中的DES加密并经存储控制器中的物理存储器类型寄存器来提供。在SL-1模型中,可通过只在处理器存储装置内操作秘密数据来保证秘密数据的保密性。无论安全物理存储器地址范围内的数据何时写出到总线上,它都采用BIU中的DES单元来加密。对于一些系统来说,希望可用于从安全物理存储器中加密/解密数据/代码的DES单元采用平台指定的密钥而不是处理器指定的密钥。
由于在SL-1模型中,安全物理地址空间中的所有外部代码和数据可以用平台密钥来加密,因此无法通过只用逻辑分析器察看外部总线信号来对代码或数据进行解密。处理器/平台的秘密密钥可被保护在更高级别的威胁模型。由于外部代码被加密,因此很难知道函数中的哪些指令在访问秘密密钥,或者如何修改输入指令比特流以使处理器结束写出明码存储器中的专用数据。SL-1模型还可提供适度的保护,以防止采用处理器实现指定调试和机器检查机制以及电压和频率窜改技术来获得对处理器/平台秘密的访问。
安全级别2(SL-2)模型的实施例将安全级别提升到SL-1之上,这是通过为片上物理存储器提供至少一部分安全物理存储器分区来实现的。在这种情况下,所有安全NV存储器分区仍驻留在平台中。一些易失性安全物理存储器也可驻留在外部系统存储器中。对作为外部系统存储器的一部分的一部分安全易失性存储器的安全保护与SL-1级别相似。在SL-2安全模型中,可以从外部存储器中以加密形式下载用于隐藏执行的代码。然后对代码解密,并采用处理器片上存储器验证完整性。然后在处理器的片上存储器之外执行解密的代码。所有专用数据也可以明码形式保存在片上存储器中。
根据此模型的一个实施例,片上存储器是由安全驱动器管理的共享处理器资源。一部分片上存储器可由不同处理共享。片上存储器的此共享部分的虚拟化可由驱动器来完成。存在驱动器可用以提供加密和保存这部分片上存储器的能力的安全核函数。还存在一种可用以解密和恢复片上物理存储器先前保存的分区的安全核函数。专用数据到外部NV存储器的任何存储还可用相同DES来加密。SL-2模型可提供更高级别的保护,防止采用处理器实现指定的探测模式或调试挂钩以及通过电压和频率窜改的攻击。
在SL-2模型中,通过虚拟-物理转换机制、片上物理存储器并通过采用对作为外部系统存储器的一部分的那部分安全物理空间的DES加密,可提供对物理易失性存储器的安全分区的保护。与SL-1模型相比,SL-2模型可提升装置/平台秘密密钥和处理器隐藏执行的安全级别。如果外部物理存储器中的所有关键代码和数据以加密形式保存,并且只在片上物理存储器中以明码形式保存,那么攻击者无法通过只用逻辑分析器察看外部总线信号来对代码或数据进行解密。而且,在对片上存储器中的下载检查完整性时,隐藏执行的完整性不会由于采用逻辑分析器来驱动外部总线信号而损坏。SL-2模型还可提供更多的保护,以防止使用实现探测和调试挂钩来获得对实现指定状态的访问以对专用数据解密。SL-2模型还可采用另外的保护,防止利用电压和频率窜改技术来使处理器的操作不正确以获得对专用数据的访问。
安全级别3(SL-3)模型的实施例将安全级别提升到SL-2之上,这是通过设置片上安全NV存储器或在与处理器芯片相同的封装内引入安全NV存储器分区来实现的。在一个实施例中,一些易失性和非易失性存储器仍可作为系统存储器和系统NV存储器的一部分而保留。另外,此安全级别可提供更高级别的保护,以防止采用实现调试挂钩、机器检查机制、各种实现窜改方案以及采用辐射攻击。一些实现可提供盖在处理器和NV存储器硅上的保护芯片,以及处理器和安全NV存储器芯片之间的互连上的保护芯片,以便防止离子束攻击。对于易失性和非易失性存储器的分区处于系统资源中的情况,这些实现提供了至少仍到SL-1级别的安全性。
在SL-3模型的实施例中,物理易失性安全分区和NV存储器的保护通过虚拟-物理转换机制和片上物理存储器的组合来提供。此模型通过只在处理器存储器内操作秘密数据而确保了秘密数据的保密性。与SL-2模型相比,此模型可提升装置/平台秘密密钥和处理器隐藏执行的安全级别。在SL-3模型中,隐藏执行中涉及的所有存储器可设置在一个封装内。这就防止了在计算引擎和用于隐藏执行的存储器之间的任何内部信号的暴露。另外,在此模型中,片上(或相同封装)NV存储器还可允许针对任何硬件重放攻击的保护。SL-3模型可提供针对通过实现指定的探测和调试挂钩而泄露专用数据的保护。该模型还可提供针对各种窜改方法的保护,这些方法可导致处理器产生故障并且可能以明码形式将专用数据写出到外部总线上。一些实现还可提供覆盖在处理器和秘密存储区域上的保护性芯片,使得无法采用离子束攻击来获得对专用数据的访问。
安全核心地址空间内的宏函数可在安全核心地址空间内实现的一些宏函数为验证函数、密钥管理函数、嵌入验证核心、符号函数、检验函数、载入小应用程序函数、加密保存小应用程序、加密恢复小应用程序以及小应用程序空间内函数的调用。
结论本发明的实施例涉及采用安全存储器分区来实现安全执行的方法和装置。本发明提供了相对于具有特殊安全协处理器以保护主处理器的代码和数据的现有系统的若干优点。本发明由于无需协处理器而有效地降低了成本。另外,本发明是一种更高性能的解决方案,因为安全代码可在更高性能的通用处理器中执行。此外,本发明是一种更有效的解决方案,因为没有协处理器数据传送的开销。
在这里具体地说明和/或描述了本发明的几个实施例。然而可以理解,在不脱离本发明的精神和预期范围的前提下,上述说明覆盖了本发明的修改和变化并在所附权利要求的范围内。例如,存储器分区可在虚拟存储器或物理存储器中实现。作为另一示例,实施例可包括符合SL-1、SL-2或SL-3安全模型的特征。
权利要求
1.一种处理器,它包括i.执行单元;ii与所述执行单元相连的安全分区实施逻辑;以及iii.与所述执行单元相连的密码逻辑。
2.如权利要求1所述的处理器,其特征在于,所述处理器还包括多个安全分区寄存器。
3.如权利要求2所述的处理器,其特征在于,所述安全分区寄存器包括分区入口点寄存器。
4.如权利要求3所述的处理器,其特征在于,所述处理器还包括与所述密码逻辑相连的翻译旁视缓冲器,所述安全分区实施逻辑连接在所述执行单元和所述翻译旁视缓冲器之间。
5.一种计算机系统,它包括i.第一存储器;以及ii.处理器,它与所述第一存储器相连,并且包括安全分区实施逻辑,用以建立虚拟存储单元的分区。
6.如权利要求5所述的计算机系统,其特征在于,所述处理器还包括密码逻辑。
7.如权利要求6所述的计算机系统,其特征在于,所述计算机系统还包括非易失性存储器,所述安全分区逻辑还在所述非易失性存储器中建立存储单元的安全分区。
8.如权利要求6所述的计算机系统,其特征在于,所述非易失性存储器存储了验证实施指令,所述处理器还包括引导安全逻辑,用以检验所述验证实施指令的可靠性。
9.如权利要求6所述的计算机系统,其特征在于,所述处理器还包括分区入口点寄存器,用以存储所述第一存储器中的分区入口点。
10.一种处理指令的方法,它包括i.在执行指令之前检查所述指令;以及ii当所述指令是对虚拟存储器中存储单元的分区内的存储单元的未授权访问时,决定不执行所述指令。
11.如权利要求10所述的方法,其特征在于,所述决定不执行所述指令的步骤还包括转移到中断处理器。
12.如权利要求10所述的方法,其特征在于,当所述指令操作所述分区内的存储单元中的数据并且所述指令未存储在所述分区内时,所述指令是未授权的访问。
13.如权利要求10所述的方法,其特征在于,当所述指令是从所述分区外的存储单元的转移,所述转移是到所述分区内的存储单元,并且所述转移不是到分区入口点时,所述指令是未授权的访问。
14.如权利要求13所述的方法,其特征在于,当所述指令未存储在所述分区入口点并且先前执行的指令是紧接在所述分区开头之前的指令时,所述指令也是未授权的访问。
15.如权利要求14所述的方法,其特征在于,所述方法还包括i.当所述指令从所述分区内的存储单元转移到所述分区内的另一存储单元时,执行所述指令;以及ii当所述指令从所述分区外的存储单元转移到分区入口点时,执行所述指令。
16.一种处理指令的方法,所述方法包括i.从存储器中的安全分区将加密指令读入处理器;ii对所读取的指令进行解密;以及iii.执行所述解密的指令。
17.如权利要求16所述的方法,其特征在于,执行所述解密的指令包括i.确定所述指令是否为从所述安全分区读取数据的指令;以及ii如果所述指令是从所述安全分区读取数据的指令,则从所述安全分区读取数据并对所读取的数据进行解密。
18.如权利要求16所述的方法,其特征在于,执行所述解密的指令包括i.确定所述指令是否为将数据写入所述安全分区中的存储单元内的指令;以及ii如果所述指令是将数据写入所述安全分区中的指令,则对所述数据进行加密并将所述数据写入所述安全分区中的所述存储单元。
19.如权利要求17所述的方法,其特征在于,所述确定所述指令是否为从所述安全分区读取数据的指令的步骤包括将所述数据的虚拟地址与安全分区边界进行比较。
全文摘要
一种能够安全执行的处理器。处理器包括执行单元和保护存储器中分区的安全分区逻辑。处理器还包括与执行单元相连、对安全数据和代码进行加密和解密的密码逻辑。
文档编号G06F21/24GK1451117SQ01814609
公开日2003年10月22日 申请日期2001年6月7日 优先权日2000年6月30日
发明者M·米塔尔 申请人:英特尔公司