首页> 中国专利> 生成用在隔离执行环境中的密钥层组

生成用在隔离执行环境中的密钥层组

摘要

本发明是一种生成用在受保护平台的隔离执行环境中的密钥层组的方法、装置和系统。为了对运行在隔离执行模式中的特定代码进行加密,使用了包括用于标准对称加密算法的一系列对称密钥的密钥层组。受保护平台包括一个处理器,所述处理器配置成正常执行模式和隔离执行模式之一。密钥存储器存储一个初始密钥,对于平台来说所述初始密钥是唯一的。基于所述初始密钥,一个位于受保护平台中的加密密钥生成器生成所述密钥层组。所述加密密钥生成器生成一系列对称的加密密钥,用于保护被装载的软件代码的秘密。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-08

    未缴年费专利权终止 IPC(主分类):G06F1/00 授权公告日:20080507 终止日期:20180314 申请日:20010314

    专利权的终止

  • 2008-05-07

    授权

    授权

  • 2003-08-13

    实质审查的生效

    实质审查的生效

  • 2003-05-28

    公开

    公开

说明书

技术领域

本发明涉及微处理器。特别地,本发明涉及平台的安全性。

背景技术

微处理器和通信技术的发展为超越传统经营方式的应用开辟了很多机会。电子商务(E-commerce)和企业对企业(B2B)交易现在非常流行,并在全球市场中持续增长。不幸的是,虽然现代微处理器系统为用户进行经营、通信和交易提供了方便高效的方法,但它们在恶意攻击前也是脆弱的。这些攻击的几个实例包括病毒、入侵、破坏安全和篡改。因此为保护计算机系统的完整性和提高用户的信任度,计算机安全性正变得越来越重要。

恶意攻击引起的威胁有几种方式。由黑客发起的远程入侵攻击可能扰乱一个连有上千个甚至上百万个用户的系统的正常运转。一个病毒程序可能破坏单用户平台的代码和/或数据。

用于防止攻击的现有技术有许多缺陷。反病毒程序只能扫描和检测已知病毒。使用加密或其它安全技术的安全协处理器或智能卡在处理速度、存储容量和灵活性方面存在局限性。此外,重新设计操作系统会引起软件兼容性方面的问题,并且在开发过程中需要巨额的投资。

附图说明

通过下面对本发明的详细描述,本发明的特性和优点会变得很清楚,其中:

图1A是根据本发明一个实施例的操作系统的示意图。

图1B是表示根据本发明一个实施例的操作系统和处理器中各不同元素的可访问性的示意图。

图1C示出了一个计算机系统,其中可以实现本发明的一个实施例。

图2是根据本发明一个实施例的加密密钥(cipher key)生成器的示意图。

图3是根据本发明一个实施例生成密钥层组(key hierarchy)的进程的示意图。

图4示出了根据本发明一个实施例保存初始密钥用于数据备份和恢复的系统的示意图。

图5是根据本发明一个实施例生成密钥层组的进程的流程图。

发明内容

在下面的说明中,使用一些术语用来讨论本发明的一些特性。例如,“平台”包括硬件设备和/或对其中存储的信息执行不同功能的软件。平台的例子包括,但不局限于,计算机(例如台式机、膝上型电脑、手提式电脑、服务器、工作站等),桌面办公设备(例如打印机、扫描仪、传真机等),无绳电话,电视机顶盒等。“软件模块”包括执行特定功能的代码。“安全内核(nub)”指一系列指令代码,可能是软件模块中的一个代码子集。“连接”广义地定义为一个或多个信息承载介质(例如电线、光纤、电缆、总线或无线信号技术)。

另外,术语“信息”定义成一个或多个比特的数据、地址和/或控制。“散列函数”是一个数学函数或其它函数,能够执行一个单向转换,把信息转换成固定长度的表示方式。通常,这种表示方式称为“散列值”或“摘要”,它的长度大大地小于原始信息。

本发明是一种生成用在受保护平台的隔离执行环境中的密钥层组的方法、装置和系统。为了对运行在隔离执行模式中的特定代码进行加密,使用了包括用于标准对称加密算法的一系列对称密钥的密钥层组。受保护平台包括一个处理器,这个处理器配置成正常执行模式和隔离执行模式之一。密钥存储器存储一个初始密钥,对平台来说这个初始密钥是唯一的。基于这个初始密钥,一个位于受保护平台中的加密密钥生成器生成所述密钥层组。所述加密密钥生成器生成一系列对称的加密密钥,用于保护被装载的软件代码的秘密。

在下面的说明中,为了解释的目的,阐述了许多的细节以便彻底理解本发明。但是,对于本领域的技术人员来说很明显,要实现本发明,这些特定的细节并不是必须的。在别的例子中,一些公知的电子结构和电路用方框图来表示以便清楚地描述本发明。

                          体系概述

提供计算机系统或平台安全性的一个主要原则就是隔离执行体系结构的概念。隔离执行体系结构包括直接或间接与计算机系统或平台的操作系统交互的硬件或软件组件的逻辑和物理定义。一个操作系统和处理器可以有多层结构,称之为环,对应于不同的操作模式。一个环就是被设计用来在操作系统内执行专门任务的一个硬件和软件组件的逻辑分支。这个分支通常是基于优先级的级别,也就是改变所述平台的能力大小。例如环-0是最内层的环,处在层级结构中的最高层。环-0包括最关键、优先级最高的组件。另外,环-0中的模块可以访问低优先级的数据,但反之则不行。环-3是最外层的环,处在层级结构中的最低层。环-3通常包括用户级或应用级,优先级最低。环-1和环-2表示中间的环,优先级递减。

图1A是本发明一个实施例的逻辑操作体系50的示意图。逻辑操作体系50是一个操作系统和处理器的组件的抽象。逻辑操作体系50包括环-010,环-120,环-230,环-340和一个处理器安全内核装载器52。处理器安全内核装载器52是一个处理器执行程序(Processor Executive,PE)处置器(handler)的实例。PE处置器用于处理和/或管理处理器执行程序(PE),这将在后面讨论。逻辑操作体系50有两种操作模式:正常执行模式和隔离执行模式。逻辑操作体系50中的每一个环都可以运行在两种模式。处理器安全内核装载器52只能运行在隔离执行模式。

环-0 10包括两部分:正常执行环-0 11和隔离执行环-0 15。正常执行环-0 11包括操作系统中的关键软件模块,常称之为内核。这些软件模块包括基本操作系统(例如内核)12,软件驱动程序13,硬件驱动程序14。隔离执行环-0 15包括操作系统(OS)安全内核16和处理器安全内核18。OS安全内核16和处理器安全内核18分别是OS执行程序(OperatingSystem Execut ive,OSE)和处理器执行程序(PE)的一个实例。OSE和PE是运行在受保护环境中的执行实体的一部分,这个受保护环境与一个隔离区域和隔离执行模式相关联。处理器安全内核装载器52是一个保存在系统中的芯片组上的受保护引导程序装载器代码,负责把处理器安全内核18从处理器或芯片组装载到一个隔离区域,这将在后面解释。

类似地,环-1 20,环-2 30和环-3 40分别包括正常执行环-1 21,环-2 31,环-3 41和隔离执行环-1 25,环-2 35,环-3 45。特别地,正常执行环-3包括N个应用程序421到42N,隔离执行环-3包括K个小程序461到46K

隔离执行体系结构的一个概念是在系统存储器中生成一个隔离区,它受到计算机系统中的芯片组和处理器的双重保护。这个隔离区也可以在高速缓冲存储器中,由翻译后援缓冲器(Translation Look asideBuffer,TLB)访问检查来保护。此外,这个隔离区还可以细分成多个隔离存储区域,这将在后面讨论。只有处理器前端总线(FSB)才被允许访问这个隔离区,要使用特殊的总线(例如,存储器读和写)周期,称之为隔离读写周期。这些特殊的总线周期也用来侦听。这些隔离读写周期由运行在隔离执行模式的处理器发出。这个隔离执行模式由处理器的一个特权指令结合处理器安全内核装载器52进行初始化。处理器安全内核装载器52校验并装载环-0安全内核软件模块(例如处理器安全内核18)到隔离区域。这个处理器安全内核18为隔离执行提供与硬件相关的服务。

处理器安全内核18的一个任务是校验并装载环-0 OS安全内核16到隔离区域,并产生密钥层组的根,这个根对于平台、处理器安全内核18和OS安全内核16的结合是唯一的。处理器安全内核18提供了隔离区域的初始生成和低层管理,包括校验、装载和记录操作系统安全内核16,并且管理用于保护操作系统安全内核秘密的对称密钥。处理器安全内核18也可以为由其它硬件提供的低层安全性服务提供应用编程接口(API)的抽象。

操作系统安全内核16提供与基本OS 12(例如操作系统中的非保护段)的服务的连接,提供隔离区域内的页面管理,并负责把环-3应用程序模块45,包括小程序461到46K装载到分配在隔离区域中的受保护页面之中。操作系统安全内核16也可以装载环-0的支持模块。

操作系统安全内核16也可以选择支持隔离区域和普通存储器(例如非隔离区域)之间的数据页面调动。如果这样,OS安全内核16也要负责在把隔离区域的页面调到普通存储器之前对隔离区域页面进行加密和散列,以及在恢复页面时对页面内容进行检查。隔离模式的小程序461到46K和它们的数据对于所有的软件攻击具有防篡改和防监视功能,这些攻击可能来自于其它小程序,也可能来自于非隔离空间的应用程序(例如421到42N)、动态链接库(DLL)、驱动程序,甚至是基本操作系统12。只有处理器安全内核18或OS安全内核16可以干涉或监视这些小程序的执行。

图1B是表示本发明一个实施例的操作系统10和处理器中各不同元素的可访问性的示意图。为了图示清楚,只画出了环-0 10和环-3 40中的元素。在逻辑操作体系50中的各个不同元素根据它们的环的层次和执行模式访问一个可访问物理存储器60。

可访问物理存储器60包括一个隔离区域70和一个非隔离区域80。隔离区域70包括小程序页面72和安全内核页面74。非隔离区域80包括应用程序页面82和操作系统页面84。只有运行在隔离执行模式的操作系统和处理器中的元素可以访问隔离区域70。环-0操作系统和处理器中的所有元素都可以访问非隔离区域80。

正常执行环-0 11包括基本操作系统12,软件驱动程序13和硬件驱动程序14,它既可以访问OS页面84,也可以访问应用程序页面82。正常执行环-3包括应用程序421到42N,它只能访问应用程序页面82。但是,正常执行环-0 11和环-3 41都不能访问隔离区域70。

隔离执行环-0 15包括OS安全内核16和处理器安全内核18,既可以访问隔离区域70,包括小程序页面72和安全内核页面74,也可以访问非隔离区域80,包括应用程序页面82和OS页面84。隔离执行环-3 45包括小程序461到46K,只能访问应用程序页面82和小程序页面72。小程序461到46K驻留于隔离区域70。

图1C是可以实现本发明一个实施例的平台100的示意图。平台100包括一个处理器110,一个主机总线120,一个存储器控制中心(MCH)130,一个系统存储器140,一个输入/输出控制中心(ICH)150,一个非易失性存储器或系统闪存160,一个随机数发生器166,一个大容量存储设备170,输入/输出设备175,一个令牌总线180,一个主板(MB)令牌182,一个读取器184和令牌186。MCH 130可以集成到芯片组中,这个芯片组可以集成很多功能,例如隔离执行模式、主机-外设总线接口、存储器控制。类似地,ICH 150也可以与MCH 130一起或单独集成到芯片组中,来执行I/O功能。为清楚起见,没有画出所有的外设总线。可以设想,平台100也可以包括外设总线,例如外设部件互连(PCI),加速图形端口(AGP),工业标准体系结构(ISA)总线和通用串行总线(USB)等。

处理器110代表任一种体系的中央处理器,例如复杂指令集计算机(CISC)和精简指令集计算机(RISC),超长指令字体系(VLIW)以及混合体系。在一个实施例中,处理器110是与Intel体系结构(IA)处理器兼容的处理器,例如奔腾(PentiumTM)系列、IA-32TM和IA-64TM。处理器110包括正常执行模式112和隔离执行电路115。正常执行模式112是处理器110运行在非保护环境中的模式,或者是运行在不具有隔离执行模式所提供的安全特性的正常环境中的模式。隔离执行电路115提供一种运行机制使处理器110可以运行在隔离执行模式上。隔离执行电路115为隔离执行模式提供软件和硬件支持。这种支持包括配置隔离执行,定义隔离区域,定义(例如解码和执行)隔离指令,生成隔离访问总线周期和产生隔离模式中断。

在一个实施例中,平台100可以是一个单处理器系统,例如桌面计算机,它只有一个主中央处理单元,如处理器110。在别的实施例中,平台100可以包括多个处理器,例如处理器110,110a,110b等,如图1C所示。这样,平台100可以是一个包括任意多个处理器的多处理器计算机系统。例如,多处理器平台100可以作为一个服务器或工作站环境的一部分。处理器110的基本说明和操作会在下面详细讨论。本领域的技术人员可以理解,处理器110的基本说明和操作可以应用到图1C中所示的处理器110a和110b上,也可以应用到根据本发明一个实施例的多处理器平台100中的任意数目的处理器。

处理器110也可以有多个逻辑处理器。逻辑处理器,有时也称为线程,是物理处理器中的一个功能单元,它具有按照一定划分规则分配的一个体系结构状态和物理资源。在本发明申请文本中,“线程”和“逻辑处理器”的意思是相同的。一个多线程处理器是一个拥有多个线程或多个逻辑处理器的处理器。一个多处理器系统(例如包括处理器110,110a和110b的系统)可以拥有多个多线程处理器。

主机总线120提供接口信号,以允许处理器110或处理器110,110a和110b与其它处理器或设备如MCH 130进行通信。除了正常模式,主机总线120还为隔离访问总线模式提供相应的通信接口信号,用于处理器110被配置成隔离执行模式时的存储器读写周期。隔离访问总线模式也施加于在处理器110处于隔离执行模式时开始的存储器访问。如果地址在隔离区域地址范围之内并且处理器110初始化成隔离执行模式,那么隔离访问总线模式也施加于指令预读取和超高速缓存回写周期。如果使用隔离访问总线周期并且处理器110初始化成隔离执行模式,那么处理器110响应侦听周期会转到隔离区域地址范围之内的缓冲存储地址。

MCH 130控制并配置存储器和输入/输出设备,例如系统存储器140和ICH 150。MCH 130提供接口电路用来识别和服务施加于包括隔离存储器读写周期的存储参考总线周期的隔离访问。此外,MCH 130还包含存储器范围寄存器(如基址寄存器和长度寄存器),用来表示系统存储器140中的隔离区域。一旦配置好,MCH 130拒绝任何没有使用隔离访问总线模式的对隔离区域的访问。

系统存储器140存储系统代码和数据。系统存储器140一般是由动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)来实现的。系统存储器140包括可访问物理存储器60(在图1B中示出)。可访问物理存储器包括一个被装载的操作系统142,隔离区域70(在图1B中示出)和一个隔离控制和状态空间148。被装载的操作系统142是操作系统中被装载到系统存储器140中的那一部分。被装载的操作系统142一般是由引导代码从大容量存储器中装载的,引导代码保存于一个引导存储器中,例如引导只读存储器(ROM)。隔离区域70(在图1B中示出)是由处理器110运行在隔离执行模式时定义的存储器区域。对隔离区域的访问是由处理器110和/或MCH130或其它集成了隔离区域功能的芯片组限制和执行的。隔离控制和状态空间148是一个类似于输入/输出(I/O)的独立地址空间,由处理器110和/或MCH 130来定义。隔离控制和状态空间148主要包含隔离执行控制和状态寄存器。隔离控制和状态空间148并不与任何现有地址空间交叉,并可以使用隔离总线周期访问。系统存储器140也可以包括其它未在图中示出的程序或数据。

ICH 150代表系统中的一个具有隔离执行功能的已知的单独的点。为清楚起见,只画出一个ICH 150。平台100也可以有很多与ICH 150类似的ICH。当有多个ICH时,选择一个指定的ICH来控制隔离区域的配置和状态。在一个实施例中,这种选择是由外部的短接引线(strappingpin)来完成的。本技术领域中的人员知道,也可以使用其它方法来选择,包括使用可编程配置寄存器。除了传统的I/O功能外,ICH 150还有很多功能,用来支持隔离执行模式。特别地,ICH 150包括隔离总线周期接口152,处理器安全内核装载器52(在图1A中示出),摘要存储器154,加密密钥存储器155,加密散列单元157,隔离执行逻辑处理管理器156和令牌总线接口159。

隔离总线周期接口152包括与隔离总线周期信号接口的电路,用来识别和服务隔离总线周期,例如隔离读写总线周期。

如图1A所示,处理器安全内核装载器52包括处理器安全内核装载器代码和它的摘要(例如散列)值。处理器安全内核装载器52由适当的隔离指令(例如Iso-Init)调用并转移到隔离区域70。处理器安全内核装载器52从系统闪存中拷贝处理器安全内核代码18(例如存储在非易失性存储器160中的处理器安全内核代码18)到隔离区域70,校验并记录它的完整性,并管理一个用于保护处理器安全内核秘密的对称密钥。在一个实施例中,处理器安全内核装载器52是由只读存储器(ROM)实现的。为了安全起见,处理器安全内核装载器52是固定不变、防篡改、不可替换的。

摘要存储器154存储装被载软件模块的摘要(例如散列)值。特别地,我们希望摘要存储器存储审核日志的散列值(或计算散列值所需要的值的状态)。审核日志包含很多审核日志条目。每一个审核日志条目至少包括被装载的代码,例如处理器安全内核18,操作系统OS安全内核16及其它被装载到隔离区域中的关键模块(例如环-0模块)的加密散列值。特别地,审核日志是一系列数据,用来表示平台100启动后哪些信息被成功地装载到系统存储器140中了。例如,这些表示性的数据可以是平台100当前启动周期中每一个被装载到系统存储器140中的软件模块的散列值。这样,审核日志可以作为标记装载到平台中的各种信息(例如用来控制隔离执行的配置和操作的环-0代码)的指纹,并用来验证当前隔离执行的状态。

加密密钥存储器155保存一个对称的加密/解密密钥,例如初始密钥(在后面会详细讨论)。初始密钥对于平台100是唯一的。在一个实施例中,初始密钥是由一个外部硬件随机数发生器产生的并在制造时就编程到输入/输出控制中心(ICH)150的熔丝中。在另一个实施例中,初始密钥是由平台自身来产生的;当平台100第一次启动时,使用平台内部的硬件随机数发生器166来产生。在两个例子中,初始密钥都是存储在加密密钥存储器155的受保护非易失性存储器中。但是,应该认识到初始密钥也可以存储在平台别的区域中的受保护非易失性存储器中。

加密散列单元157包括对输入信息执行单向散列函数的逻辑。术语“单向”说明没有一个简单的逆函数可以从固定长度的散列值中恢复出可识别的原始信息。散列函数的例子包括由加州雷德伍德RSA数据安全公司提供的MD5算法;或者是安全散列算法(SHA-1),它符合1995年出版的安全散列标准FIPS 180-1,即“联邦信息处理标准公告”(“FederalInformation Processing Standards Publication”,1995年4月17日)。加密散列单元157可以用来执行散列函数以产生处理器安全内核密钥、OS安全内核密钥和小程序密钥。这些密钥会在后面详细讨论。

隔离执行逻辑处理管理器156负责管理运行在隔离执行模式的逻辑处理器的运行。在一个实施例中,隔离执行逻辑处理管理器156包括一个逻辑处理器计数寄存器,该寄存器追踪参与隔离执行模式的逻辑处理器的数目。令牌总线接口159与令牌总线180相接口。

非易失性存储器160存储非易失性的信息。一般地,非易失性存储器160是由闪存来实现的。非易失性存储器160包括处理器安全内核18。

处理器安全内核18提供隔离区域(在系统存储器140中)的初始建立和低级管理,包括校验、装载和记录操作系统安全内核16,并且负责管理用于保护OS安全内核秘密的对称密钥。处理器安全内核18也可以为由其它硬件提供的低层安全性服务提供应用编程接口(API)的抽象。处理器安全内核18也可以由原始设备制造商(OEM)或操作系统销售商(OSV)通过启动盘发行。

大容量存储设备170存储一些归档信息,例如代码(例如处理器安全内核18)、程序、文件、数据、应用程序(例如421到42N)、小程序(例如461到46K)和操作系统。大容量存储设备170可以包括光盘CD ROM 172,软盘174,硬盘驱动器176和任何其它磁存储或光存储设备。大容量存储设备170提供一种可以读取机器可读介质的装置。

I/O设备175可以包括执行I/O功能的任何I/O设备。I/O设备175的例子包括输入设备控制器(例如键盘、鼠标、跟踪球、定点设备),媒介卡(例如声卡、视频卡、图形卡),网卡及其它外围控制器。

令牌总线180提供了ICH 150与系统中不同令牌的接口。令牌是一种执行指定的具有安全性的输入/输出功能的设备。令牌具有与智能卡相似的特点,包括至少一对保留的公共/私有密钥对,并具有利用私有密钥对数据进行签名(sign)的功能。连接到令牌总线180的令牌的例子包括主板令牌182,令牌读取器184和其它便携式令牌186(例如智能卡)。在ICH150中的令牌总线接口159通过令牌总线180与ICH 150连接,以确保当被命令来检验隔离执行状态时,相应的令牌(例如主板令牌182和令牌186)只对有效的隔离摘要信息进行签名。为了安全起见,令牌应该连接到摘要存储器。

当在软件中实现时,本发明中的各元素是完成各种必要任务的代码段。程序或代码段可以存储在机器可读介质中,如处理器可读介质,或者以载有计算机数据信号的载波或调制载波的形式通过传输介质传输。处理器可读介质包括任何可以存储或传输信息的介质。处理器可读介质的例子包括电子电路、半导体存储设备、只读存储器(ROM)、闪存、可擦可编程只读存储器(EPROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)连接等。计算机数据信号包括任何可通过传输介质传播的任何信号,传输介质的例子有电子网络通道、光纤、空气、电磁波、射频连接等。代码段可以通过计算机网络,如Internet,Intranet等下载。

              生成用在隔离执行环境中的密钥层组

本发明是一种生成用在受保护平台的隔离执行环境中的密钥层组的方法、装置和系统。为了对运行在隔离执行模式中的特定代码进行加密,使用了用于标准对称加密算法的一系列对称密钥组成的密钥层组。

图2是本发明一个实施例的加密密钥生成器200的示意图。这个加密密钥生成器包括一个密钥发生器210和一个密钥选择器220。当前在隔离执行环境中活动(也就是已经被装载到隔离存储器区域中)的软件代码有一个与之相关的装载软件代码密钥225。当前活动的装载软件代码用于装载随后的软件代码。随后被装载到隔离执行环境中的软件代码有一个与之相关的ID值,用被装载的软件代码ID值228来表示。ID值228可以是被装载的软件代码的散列值。但是,它也可以是被装载的软件代码的经证实的(approved)ID值。

在一个实施例中,ID值228是一个被装载的软件代码的经证实的ID值,该ID值228可以以证书的方式传送到当前活动的装载软件代码,所述证书通过保存在活动的装载软件代码中的一个证书校验根密钥进行校验。在一个实施例中,证书由证书内容和证书内容的数字签名组成。证书内容可以至少包含被装载的软件代码的散列值和ID值228。一个可以使用的证书的例子是SPKI授权证书(参见IETF RFC 2693,InternetEngineering Task Force Request for Comments(因特网工程任务组征求意见)2693,“SPKI Certificate Theory(SPKI证书理论)”,E1lison等,1999年9月)。但是,本领域技术人员应该认识到,有许多不同的证书格式可以使用。

装载软件代码密钥225和被装载的软件代码ID值228输入到密钥发生器210。然后密钥发生器210为被装载的软件代码生成一个被装载的软件代码密钥230。密钥发生器210使用一个具有加密散列性质的函数生成被装载的软件代码密钥230。这样,在一个实施例中,密钥发生器210可以使用散列函数。密钥发生器对装载软件代码密钥225和被装载的软件代码ID值228进行散列,生成被装载的软件代码密钥230。例如,可以使用基于SHA-1的HMAC(参见IETF RFC 2104,Internet Engineering TaskForce Request for Comments(因特网工程任务组征求意见)2104,“HMAC:Keyed-Hashing for Message Authentication(HMAC:用于消息认证的加密散列)”,Krawcyzk等,1997年2月)。但是,应该认识到另外一些被广泛接受的加密散列函数也可以使用。进一步,在一个实施例中,加密散列单元157(图1C)可以用来执行散列函数。同样,应该认识到有许多不同类型的其它单向函数也可以用来生成被装载的软件代码密钥230。

通常,被装载的软件代码密钥230的长度与散列函数输出值的长度相同,但它的长度可以是任意的,只要它有足够的位数能保证加密的安全性。但是,被装载的软件代码密钥230也许不够小,不适合用于所希望的对称加密算法,例如三重DES(数据加密标准)或AES(由美国国家标准与技术研究所(National Institute of Standards and Technology,NIST)采用的新型高级加密标准(Advanced Encryption Standard))。因此,密钥选择器220使用密钥选择函数从较长的被装载的软件代码密钥230中选择长度合适的密钥(例如112位、168位、128位或256位),用来产生一个对称加密密钥240用于被装载的软件代码。

密钥发生器210执行一个生成函数G(),用来从第一个密钥(用K1表示)和ID值生成第二个密钥(用K2表示)。使用的公式是K2=G(ID,K1)。在一个实施例中,所生成的第二个密钥K2是被装载的软件代码密钥230。这样,公式K2=G(ID,K1)使用函数G()来生成被装载的软件代码密钥230,这里ID是被装载的软件代码ID值228,K1是装载软件代码密钥225。如前所述,生成函数G()可以是一个加密散列函数。本专利申请后面部分会引用函数G()用来描述密钥的生成,例如处理器安全内核密钥,OS安全内核密钥和小程序密钥的生成,这些将在后面详细讨论。

密钥选择器220执行一个密钥选择函数S()用来从第二个密钥K2生成第三个密钥(用K3表示)。使用的公式是K3=S(K2)。密钥选择函数S()生成K3,使K3足够小以用在对称加密算法中用作对称加密密钥。在一个实施例中,所生成的第三个密钥K3是用于被装载的软件代码的对称加密密钥240。如前所述,密钥选择器220使用密钥选择函数S()从较长的被装载的软件代码密钥230中选择长度合适的对称加密密钥240(K3)(例如112位、168位、128位或256位),用来产生一个用于被装载的软件代码的对称加密密钥240。本专利申请后面部分会引用函数S()来描述加密密钥的选择,例如处理器安全内核加密密钥,OS安全内核加密密钥和小程序加密密钥的选择,这些将在后面详细讨论。

因而,在当前隔离执行环境控制下的每一个被装载的软件模块至少有两个密钥,被装载的软件代码密钥230和用于被装载的软件代码的对称加密密钥240。如果软件模块使用多重加密算法,软件模块也许会有多个与对称加密密钥240类似的对称加密密钥。在只从被装载的软件代码密钥230选择一个密钥的情况下,可以使用较长密钥的一个或多个独立的小段的异或,这里各个小段的长度与希望的密钥一样。在需要生成多个加密密钥时,S()函数可以使用类似于HMAC的函数,将一个较大的随机产生的值用作一个密钥,所述值对于生成这个密钥所使用的算法是特定的。

密钥层组

图3是根据本发明一个实施例生成密钥层组301的进程300的示意图。进程300生成密钥层组301,包括许多由加密密钥生成器200生成的对称密钥,这在前面讨论过。这些密钥用于对运行在隔离执行模式的特定代码加密。

隔离执行区域(例如图1A和图1B中的隔离执行环-0 15和隔离执行环-3 45)有很多层。与隔离执行和下面的讨论特别相关的是处理器安全内核18,OS安全内核16和小程序46(前面在体系概述部分,参考图1A和图1B已经深入讨论过)。首先处理器安全内核18被装载,并控制隔离执行环境。进程300首先利用密钥发生器210生成一个处理器安全内核密钥(PNK)325。密钥发生器210使用初始密钥(IK)310和处理器安全内核ID值(PNID)320作为输入。密钥发生器210执行如下一个生成函数:PNK=G(IK,PNID),这里IK 310是初始密钥,该初始密钥对于平台来说是特定的,PNID 320是处理器安全内核的ID值。如前所述,生成函数G()可以是一个加密散列函数。这个ID值可以是代码本身的散列值或者是一些认证的ID值,如前所述。但是,如果它是一个认证的值,处理器安全内核装载器必须要能够验证保存该ID值的证书。

下一步,进程300利用密钥选择器220生成一个处理器安全内核加密密钥(PNCK)327。密钥选择器220执行如下一个密钥选择函数:PNCK=S(PNK),这里PNK 325是处理器安全内核密钥。如前所述,密钥选择函数S()生成一个足够小的加密密钥,以便它能在所希望的对称加密算法中使用。例如,密钥选择器220使用密钥选择函数S()从PNK 325中来选择一个长度合适的对称密钥PNCK 327(例如112位、168位、128位或256位)。处理器安全内核18使用PNCK 327保护它的秘密,以免被OS安全内核16,小程序46和非隔离执行代码访问。

在一个实施例中,初始密钥IK 310是由一个外部硬件随机数发生器产生的并在制造时就编程到输入/输出控制中心ICH 150(图1C)的熔丝中。在另一个实施例中,初始密钥IK 310是由平台100自身来产生的;当平台100第一次启动时,使用平台内部的硬件随机数发生器166(图1C)来产生,然后存储在ICH 150中的加密密钥存储器155的非易失性存储器中(图1C)。这个实施例减少了制造时IK 310被破坏的机会。在两个例子中,初始密钥IK 310都是存储在加密密钥存储器155的受保护非易失性存储器中。但是,应该认识到IK 310也可以存储在平台别的区域中的受保护非易失性存储器中。

当别的软件模块(例如OS安全内核16、小程序46等)被装载到隔离执行区域时,新的被装载的软件模块的密钥要替换装载模块的密钥。但是,IK 310并不被替换,而是通过硬件可调标记设置成不可访问,该标记防止该存储区被读取。这个标记只有在对隔离区域进行总的重新初始化时才被清除。生成的密钥被重写,因而不可得到。

如前所述,当处理器安全内核18被第一次装载时,进程300生成处理器安全内核密钥PNK 325和处理器安全内核加密密钥PNCK 327。如果这个处理器安全内核需要存储任何只能被它自己访问的秘密信息,它可以使用PNCK 327作为加密密钥。当处理器安全内核决定装载OS安全内核16并把控制权转移给它时,利用同一进程300生成OS安全内核密钥(OSNK)335和OS安全内核加密密钥(OSNCK)337,这跟前面讨论的PNK 325和PNCK 327的生成是类似的。进一步,在加密密钥存储器中OSNK 335和OSNCK 337替换PNK 325和PNCK 327。OSNCK 337被OS安全内核用来保护它自己的秘密不被其它OS安全内核、小程序和非隔离执行代码读取。现在,如果有任何秘密需要留待将来供OS安全内核使用,它们就可以利用OSNCK 337加密。但是,任何由PNCK 327加密的秘密信息对于OS安全内核或其它任何将被装载到平台中的软件是不可访问的。

对于软件代码装载的所有层,这个进程300可以不断重复。图3表示一个四层结构:处理器安全内核,OS安全内核,小程序1和小程序1的子进程。进程300对于小程序1生成小程序1密钥(A1K)345和小程序1加密密钥(AlCK)347,对于小程序1子进程生成小程序1子进程密钥(AlSK)355和小程序1子进程加密密钥(AlSCK)357,这跟前面讨论的处理器安全内核密钥和OS安全内核密钥的生成是类似的。应该认识到,密钥层组301和进程300只是示例性的,其他密钥层组和生成这些密钥层组的进程也可以用来保护隔离执行环境中的秘密。

数据的备份和恢复的另一个实施例

图4是本发明一个实施例中系统400保存初始密钥用于数据备份和恢复的示意图。

如上所述,初始密钥IK 310对每一个平台是唯一的并锁在平台之中(也就是说它永久地存储在加密密钥存储器155的受保护非易失性存储器中(图1C))。不幸的是,在这个实施例中,没有办法来备份和恢复IK310。本发明的另一实施例允许备份和恢复IK 310,如图4所示。这对于那些在平台中存储了有价值的秘密并且将来想升级硬件的用户是非常有用的。当平台主人决定使用更新更快的硬件时,就会需要升级。此外,当平台突然遭遇灾难性的故障需要更换时也要升级。

在这个实施例中,在非易失性存储器中有一个密钥保存标记402,每次生成一个新的初始密钥IK 310时(而不是密钥被恢复时)它被清除。一旦该标记被清除,加密器404就被允许对IK 310加密。加密器404执行一个加密函数,利用用户(假设是平台的主人)提供的加密密钥420来加密IK 310。加密结果保存在IK 410。这个保存的IK 410可以允许任何人读。特别地,这个保存的IK 410允许使用通常的备份工具进行备份。当这个保存的IK 410生成时,密钥保存标记402被置位,这就禁止再次对IK 310进行任何保存。

在将来的任何时候,用户都可以把合适的加密密钥420和早期保存的IK 410送到解密器430,该解密器430执行一个解密函数,用来重写IK310。这就允许平台主人替换出了故障的平台,包括保存在平台隔离区域中的所有秘密。加密器404的加密函数和解密器430的解密函数可以分别是广泛使用的对称加密算法,例如三重DES(数据加密标准)或AES(由美国国家标准与技术研究所(NIST)采用的新型高级加密标准)。

图5是本发明一个实施例生成密钥层组的进程的流程图。

在“开始”块,进程500生成这个平台唯一的初始密钥(例如基于一个随机数)(方框510)。然后进程500存储这个初始密钥(方框520)。接着,进程500利用处理器安全内核ID值对初始密钥进行散列来生成一个处理器安全内核密钥(方框530)。然后,进程500在处理器安全内核密钥基础上选择一个更小的处理器安全内核加密密钥(方框540)。在方框550中,进程500利用OS安全内核ID值对处理器安全内核密钥进行散列来生成一个OS安全内核密钥。然后,进程500在OS安全内核密钥基础上选择一个更小的OS安全内核加密密钥(方框560)。接着,进程500利用小程序ID值对OS安全内核密钥进行散列来生成一个小程序密钥(方框570)。在方框580中,进程500在小程序密钥基础上选择一个更小的小程序加密密钥。然后进程500结束。

尽管本发明是参照其图示的实施例来描述的,这些描述并不是想加以限制。在不脱离本发明的精神和范围的情况下,本发明相关领域的技术人员可以对图示的实施例和本发明的其它实施例进行各种修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号