通过安全内核设计划分的安全策略的制作方法

文档序号:6478595阅读:172来源:国知局
专利名称:通过安全内核设计划分的安全策略的制作方法
技术领域
本发明主要涉及在数据处理系统内安全软件运行。具体地,本发明涉及一种确保在数据处理系统中运行的应用程序只来自信任来源的方法。
背景技术
操作系统或运行环境的主要任务之一就是保持计算机系统的安全性和稳定性。理 想地,操作系统或运行环境应该确保只有能够被证明不会破坏系统安全性和稳定性的“安 全”的应用程序才被允许运行。但是,可计算性理论领域内的计算机科学家和数学家们已知 晓多年的不幸事实是,要事先确定地预测出给定的程序是否“安全”是非常困难的,在很多 情况下是不可能的。为此,更为实际的解决方案是只允许运行被确信是安全的应用程序。可以用两种基本方式建立这种“确信”。一种方式是通过检查代码本身来检测安 全问题的某些标志。这是由病毒扫描软件采取的方法,其扫描寻找已知病毒的特征。这种 技术也被应用在JAVA虚拟机的字节码校验方案中,其寻找表示不安全或损坏代码的模式。 JAVA是由加州Santa Clara的Sun Microsystems Inc研发的一种面向对象的编程语言和 运行环境规范。另一种方式是只允许运行“信任”的应用程序,也就是来自信任来源的应用程序。 JAVA虚拟机也支持第二种方法,因为JAVA允许开发人员向JAVA代码添加数字签名,该数字 签名可以由JAVA虚拟机在运行时进行校验。JAVA虚拟机能够被设置为只允许已经由信任 来源数字签署过的JAVA代码来执行某些安全性敏感的操作。因为JAVA字节码是在虚拟机中运行,所以虚拟机能够在将要运行可能有害的字 节码时,“实时地”(on the fly)针对与给定操作相关联的潜在安全威胁做出运行时的判 定。尽管这种能力是有利的,但是通过使用虚拟机带来的额外的复杂性和计算开销在某些 应用程序中是不利的。而且,因为虚拟机是软件,所以虚拟机必须将其(用于验证数字签名 的)密钥存储在软件可访问的存储器中。用这种方式存储密钥的事实意味着密钥可以像任 何其他的数据一样遭到修改或替换。因此通过简单地修改存储的密钥组就可以规避由JAVA 虚拟机施加的安全限制。因此,需要由一种高效而又非常安全的方法来确保只有信任的代码能够在计算机 系统中运行。本发明对该问题以及其他问题提供了一种解决方案,并且提供了优于先前解 决方案的其他优点。

发明内容
因此,本发明提供了一种方法、计算机程序产品和数据处理系统,用于确保在数据 处理系统中运行的应用程序只能来自信任的来源。在一个优选实施例中,安全初始化硬件 将安全内核载入并解密到内存中,其中安全内核含有嵌入式密钥对。独立于安全内核,含有 对应于可信任软件厂商的密钥的“密钥环”被保留,其中利用嵌入式密钥对的私钥数字地签 署这些密钥中的每一个。在通过安全内核将应用程序载入内存运行时,安全内核使用来自其嵌入式密钥对的公钥来验证来自其密钥环的厂商密钥。然后,在已确定厂商密钥的真实 性之后,使用厂商密钥来验证与应用程序相关联的公钥的真实性。该应用程序的公钥随后 被用于验证应用程序映像的完整性。为了使用户可以运行来自独立软件开发方(他们没有 其自身的厂商密钥)的软件,上述的厂商密钥校验可以作为一个选项被禁用。以上是概述内容并因此必然包含细节的简化、概括和省略;所以,本领域普通技术 人员应该理解概述内容只是说明性的而不是为了以任何方式加以限制。本发明完全由权利 要求定义的其他应用、创造性特征和优点将在下面阐述的非限制性的详细说明中变得显而 易见。


本领域普通技术人员通过参照附图可以更好地理解本发明,并且其各种目标、特 征和优点也可以变得显而易见,在附图中图1是示例性数据处理系统的框图,其中可以实施本发明的优选实施例;图2是根据本发明优选实施例的辅助处理单元的框图;图3是内存映射,示出了在根据本发明优选实施例实施的数据处理系统中的内存 使用;图4是用于在根据本发明优选实施例实施的数据处理系统中使用的应用程序400 的内存示意图;图5-7是根据本发明优选实施例的安全内核的基本运行流程的流程图表示;图8是示出了在本发明的优选实施例中用于确保验证应用程序代码可信度的方 案的示意图;图9是在本发明优选实施例中验证应用程序代码可信度的过程的流程图表示;图10是在本发明优选实施例中预先验证信任应用程序的过程的流程图表示;以 及图11是在本发明优选实施例中禁用严格策略模式的可选过程的流程图表示。
具体实施例方式以下内容是为了提供本发明的一个示例的详细说明而不应被理解为限制了发明 自身。相反,很多变形均可落在由说明书后的权利要求确定的本发明的保护范围之内。图1是示例性数据处理系统100的框图,其中可以实施本发明的优选实施例。数 据处理系统100包括在单个集成电路上含有若干个处理器核心的单片多处理器101。单片 多处理器101包括由内部总线104连接的通用主处理单元102和用于执行更多专门的加强 计算功能的若干个辅助处理单元(辅助处理单元110,112和114)。在单片多处理器101以 外的外部总线105将单片多处理器101与主内存106和辅助存储器108以及其他外围设备 (未示出)相连。除了主内存106以外,辅助处理单元110,112和114中的每一个都含有其自身的 局部内存。这就允许辅助处理单元110,112和114在隔离模式中独立于主处理单元102操 作,其中特定的辅助处理单元利用其局部内存执行计算而不会干扰主处理单元102。当未处 于隔离模式时,辅助处理单元110,112和114可以允许主处理单元102访问它们各自的局部内存空间。在该优选实施例中,主处理单元102包括用于内存保护的硬件支持(在主内存106中),但是辅助处理单元110,112和114并不含有在处于隔离模式时阻止对辅助处理 单元内局部内存的非法内存访问的内存保护硬件。图2中提供了根据本发明优选实施例的辅助处理单元110的更加详细的描述。辅 助处理单元110被连接至(单片多处理器101内部的)内部总线104,但是在其自身内部也 包含它自己的单元内总线222。辅助处理单元110包含主数据路径220,其包括用于运行在 辅助处理单元110内存储的程序指令的功能单元、寄存器和控制逻辑。除了它的主数据路 径220以外,辅助处理单元110还包含其自身的局部随机存取存储器(RAM) 224和永久性存 储的存储器228 (其可以包含也可以不包含非易失性存储技术,例如闪存存储器),用于在 运行时段之间永久地存储信息。辅助处理单元110的启动由独立于主数据路径220的安全初始化硬件226操纵。 应该注意到在本文中,术语“初始化”被宽松地用于表示辅助处理单元110的初始化,其整 体上不需要与数据处理系统100的初始化一起发生。例如,在本发明的优选实施例中,辅助 处理单元110的初始化可以在辅助处理单元110每一次被带入隔离模式中时发生,其可以 在实际系统重新初始化之间发生多次。因此,在本文中,“初始化硬件”是指用于初始化被用 于运行安全内核的特定处理单元或数据路径的硬件(在本文中介绍的优选实施例的情况 下,其是辅助处理单元110)。但是,术语“初始化”的这种用法不应被理解为将本发明的保护范围限定为优选实 施例中的特定硬件。例如,本发明基于加密的保护方案还可以被应用于单数据路径的处理 器(或“单处理器”),在此情况下,通过安全初始化硬件来初始化单条数据路径实质上就等 价于将数据处理系统整体上“热初始化”或“重启”。除了在初始化辅助处理单元110期间重启和启用主数据路径220以外,安全初始 化硬件226还包含解密硬件,用于作为初始化过程的一部分将系统内核加密的原版拷贝 (原版拷贝230)解密到局部RAM224中。用于解密原版拷贝230的解密密钥被嵌入到安全 初始化硬件226中,以使其不能从主数据路径220中(或者为此从单元内总线222中)读 取。这可以通过将密钥安全地存储在安全初始化硬件226内部的非易失性存储器中或者通 过将解密过程实际地硬连线到安全初始化硬件226的逻辑以使解密密钥不被存储而是被 暗中集成到解密逻辑内而实现。一旦系统内核已被解密,安全初始化硬件226触发主数据 路径220开始运行解密的安全内核。解密的安全内核随后利用公钥密码和数字签名验证的 组合来提供基于软件的保护形式,这种基于软件的保护形式对于辅助处理单元110是局部 的并且可以在隔离模式中使用。在公钥密码中,分离的密钥被用于加密和解密。每一方都有两个密钥,“公钥”用于 加密,而“私钥”用于解密用公钥加密的消息。一方的公钥是“公开”,其意义在于这一方可 以使该公钥对于希望给该方发送加密消息的任何人都是可获得的,而私钥保持保密。即使 多方均可获得相同的公钥,但是只有私钥可以被用于解密用公钥加密的消息。换句话说,除 非获得私钥,否则要解密用公钥加密的消息在计算上是不可行的。这与传统的在其中将相 同的密钥既用于加密又用于解密的密钥加密系统形成了对比。最广为人知并且使用最为广 泛的公钥加密系统可能是在美国专利4405829中介绍的Rivest-Shamir-Adleman或RSA加 密系统。公钥密码被广泛地用于在互联网上实现安全交易,因为它避免了被第三方窃听。
尽管公钥密码对于信息保密是非常有用的,但是公钥密码不能防止伪造的或损坏的信息。由于公钥可以被分配给其他人,并且任何拥有公钥的人都可以加密只能用私钥读 取的消息,因此公钥密码无法使消息的接收方获知收到的消息是否是真实消息或者是由其 声称源自的来源发出的。为此,公钥密码经常要与其他的能够被用于鉴别通信和验证消息 完整性的密码技术结合使用。数字签名是一种对公钥密码的天然补充,其能够被用于验证 消息始发者的身份。借助数字签名,消息的发送者就有了公钥/私钥对。当发送者发送 消息时,发送者使用其私钥和消息本身的内容来计算能够被附加至该消息的代码。该代码 就被称为数字签名。消息的接受者应该持有发送者的公钥,能够将其用于验证附加于特 定消息的数字签名是使用对应于该公钥的发送者私钥签署的。最早的数字签名方案之一 是Rivest-Shamir-Adleman或RSA数字签名方案,类似于RSA公钥加密系统,在美国专利 4405829中介绍了这种方案。本发明的优选实施例广泛应用了公钥密码和数字签名以提供数据保密,保持数据 的完整性,并阻止未经授权的动作。但是,本领域普通技术人员应该意识到,本发明的实施 并不取决于任何特定类型的加密系统或数字签名方案的使用。任何当前已知或将来研发出 的加密系统或数字签名方案均可在本发明的实施例中使用。图3是内存映射,示出了在根据本发明优选实施例实施的数据处理系统中的内存 使用。系统内最有特权的软件部分是安全内核302,其主要功能是检验和鉴别驻留在内核扩 展区域304中的其他软件部分(包括内核扩展)。内核扩展为系统软件提供主要功能并且 可以在有必要或有需要时被升级、替换或增加。另一方面,安全内核302被赋予最小的功能 性并且应该在数据处理系统的生存期期间保持不变。安全内核302之所以“安全”,是因为 其敏感的内部被屏蔽而免于被数据处理系统内驻留的其他程序检查或访问。正如将要看到 的那样,通过机密信息的选择性删除和密码技术的谨慎使用的结合来保持这种安全性。专 门用于安全内核302的特定拷贝的私钥位于安全内核302内包含的内部信息的敏感部分 中。在本发明的优选实施例中,安全内核302的私钥专门用于特定芯片(以使得来自相同 制造商的相同类型和版本的另一块芯片也仍然会具有不同的私钥)。安全内核302还具有 对应于其私钥的公钥,但是公钥(由于其是公钥而)不需要被保密。安全内核302内包含 的信息的其他敏感部分可以包括其他的密钥以及用于执行被认为是特权操作的指令。只要辅助处理单元110由安全初始化硬件226初始化,即可将安全内核302从原 版拷贝载入到内存中。该原版拷贝以加密形式存储。解密原版拷贝所需的解密密钥被集 成在安全初始化硬件226内(图2)并且不可被软件访问。因此,只有在安全初始化硬件 226 (如上所述,在辅助处理单元110的初始化期间)被激活时才能将安全内核302载入到 内存中。这样不仅可以将安全内核302的敏感部分保密,而且还可以确保安全内核302在 被载入到内存中时是真实的并且没有被篡改。应用程序软件被载入到应用程序区域306内并在此运行。因为在本发明的优选实 施例中不存在硬件内存保护方案,所以从应用程序区域306运行的应用程序可以自由访问 内存空间的其他部分,包括例如内核扩展区域304和安全内核区域302这样的内存区域。 但是,通过在将控制权转交给驻留在应用程序区域306中的应用程序之前就从安全内核区 域302和内核扩展区域304删除敏感消息,或者在有必要调用内核扩展代码时通过利用安 全初始化硬件来重载安全内核302和任意的内核扩展,即可实现内存保护的效果。
如果驻留在应用程序区域306内的应用程序要使用内核服务,那么应用程序首先 将信息写入邮箱区域308。该信息可以包括与请求的特定内核服务相关的信息以及用于返 回控制权给应用程序所必须的信息例如回调地址。一旦该信息已被写入邮箱区域308,应用 程序触发安全初始化硬件226以重新初始化辅助处理单元110。这就使安全内核302的最 新拷贝(包括其所有的敏感部分)在执行任何内核服务之前被载入。根据邮箱区域308内 留下的指令,安全内核302的敏感部分以及所有的内核扩展在返回控制权给应用程序之前 即被删除。
类似的机制也被用于内核扩展以防止特定的内核扩展具有对安全内核302的全 部机密的访问权。安全内核302的那些不需要被内核扩展用于执行任务的敏感部分在将控 制权交给内核扩展之前就被安全内核302删除。用这种方式,安全内核302能够将其全部 或仅仅一部分权限和职责委派给指定的内核扩展。利用内核扩展来执行绝大多数系统软件 任务允许系统软件得到升级而不再必须修改安全内核302。这就允许利用集成在安全初始 化硬件226内的不可恢复的解密密钥来解密安全内核302的原版拷贝。由于安全内核302 将不会再改变,即使升级或替换了其他的系统软件,也不需要将解密密钥(或对应的加密 密钥,假定是不同密钥的话)存储在安全初始化硬件以外的任何地方,或者如果解密过程 是硬连线到硬件逻辑内的话,那么就不需要再将其存储在任何地方。另外,永久性存储区域310被提供用于允许应用程序存储永久性数据。永久性数 据是在一个或多个应用程序的调用之间保持被存储的数据。永久性数据的例子可以是数据 库,或者在视频游戏控制台的情况下可以是游戏的高分记录列表。如上所述,安全内核302鉴别和检验数据处理系统中包括应用程序和内核扩展在 内的其他软件部分的完整性。图4是用于在根据本发明优选实施例实施的数据处理系统中 使用的应用程序400的内存示意图。除了实际的可执行代码自身(代码映像402)以外,应 用程序400还包括公钥404,公钥404可以被用于验证应用程序400的数字签名406。在本 发明的优选实施例中,公钥404专门用于特定的应用程序名称,但不专门用于该应用程序 的特定版本,以使同一应用程序的多个版本都具有相同的公钥404。另外,根据代码映像402计算出的密码哈希值408被提供用于允许验证应用程序 400的完整性。哈希值是这样的数值,该数值是将较大的数据块映射为有限位数的函数的结 果。利用单向函数(OWF)来计算密码哈希值,单向函数是一种在计算上极难计算出其反函 数的函数。密码哈希值的一个例子是公知的由美国的政府机构即Nationallnstitute of Standards and Technology (NIST)研发的SHA-I算法(安全哈希算法1)。其他的密码哈 希算法(例如SHA-256,MD5[MessageDigest 5]以及多种其他算法)都是本领域内公知的 并且均可被没有限制地应用于本发明而且并不背离本发明的保护范围和精神。为了验证应 用程序400的完整性,代码映像402的密码哈希值可以由安全内核302算出,并与作为应用 程序的一部分存储的密码哈希值408相比较。如果这两个数值相符,那么应用程序的完整 性就没有遭到破坏(也就是说,代码映像402没有被篡改或被损坏)。在本发明的一个实施例中,密码哈希值没有被直接存储在应用程序400中(如密 码哈希值408),而是被编码成数字签名406。更具体地,在该特定的实施例中,数字签名406 是根据代码映像402算出的密码哈希值的加密拷贝。在此情况下,公钥404被用于解密数 字签名406以获得密码哈希值,随后可以将其与根据代码映像402算出的计算密码哈希值相比较。由于公钥404被用于验证签名406,因此公钥404不是伪造的就很重要。所以,根据公钥404计算出的数字签名(公钥签名410)也被包含在应用程序400中。该签名可以 由安全内核302利用一个或多个对安全内核302来说已知的预定公钥进行验证。最后,附加的存储空间412被提供用于创建特定于应用程序的机密和特定于应用 程序版本的机密。应用程序可能会希望存储或传输只能被该应用程序的其他版本或同一版 本的该应用程序的其他实例看到的信息。在本发明的优选实施例中,安全内核302在载入 例如应用程序400的应用程序时生成特定于应用程序的机密和特定于应用程序版本的机 密,它们被存储在存储区域412内。通过计算安全内核302的私钥(私钥专门用于安全内 核302的拷贝)和公钥404的单向函数来生成特定于应用程序的机密,公钥404专门用于 应用程序(而非具体版本)。由此,在安全内核302的特定拷贝下运行的任意版本的应用程 序的每一个实体都将从安全内核302接收到相同的特定于应用程序的机密。另一方面,通过计算安全内核302的私钥和应用程序映像的密码哈希值(可能但 不是必须与哈希值408相同)的单向函数来生成特定于应用程序版本的机密。这样就得到 了不仅专门用于应用程序名称和安全内核实例,而且还专门用于应用程序自身的特定版本 的机密。这些特定于应用程序的机密和特定于应用程序版本的机密可以被用于对只能被 理解成特定的应用程序名称或特定的应用程序版本的信息(例如用于存储在非易失性存 储器310中)进行密钥(对称密钥)加密。而且,因为这些机密是利用只对安全内核302 的特定拷贝已知的私钥信息计算得出的,(以不同的私钥运行安全内核302的两个不同拷 贝的)两个不同的处理器将会算出不同的特定于应用程序的机密和特定于应用程序版本 的机密,所以使得整个加密方案更难以破解。在载入时由安全内核302算出机密的附加好 处在于机密自身不需要被永久地存储。在应用程序终止时,机密即可被安全地删除,这是因 为安全内核302在下一次运行应用程序时可以(用相同的值)重新计算机密。内核扩展与应用程序的类似之处在于其也包括数字签名,因此它们也可以用与图 4中的应用程序400基本相同的方式组织。但是,内核扩展和应用程序之间的一个重要区别 是内核扩展以加密的形式存储,以使得只有利用安全内核302的私钥才能将其解密,所述 私钥自身只有在紧接(利用安全初始化硬件进行的)安全初始化之后载入并运行安全内核 302时才可获得。公钥密码使得可以更新、替换或添加内核扩展而并不破坏安全内核302的 私钥。为了加密新的内核扩展,内核扩展的来源(制造商、出版商、经销商等)只需被提供 安全内核302的公钥(与私钥不同,公钥不是机密的),由此使得只有安全内核302的这个 拷贝(具有其特有的私钥)能解密该内核扩展。如上所述,安全内核302可以将其一种或多种权限和职责委派给内核扩展。安全 内核302通过在将控制权交给内核扩展时保留(也就是不删除)安全内核302需要用于执 行特定特权任务的敏感部分来做到这一点。安全内核302通过检查用于验证内核扩展数字 签名的公钥来确定要保留哪些部分。安全内核302识别出用于签署内核扩展的“特权公钥” 的预定集合。每一个特权公钥都与一个特定等级的特权相关联,也就是说,每一个特权公钥 在安全内核302将控制权交给用该特权公钥签署的内核扩展时都对应于安全内核302要被 保留的一个或多个敏感部分。因此,根据由内核扩展的公钥指定的特权等级,可以将安全内核302的全部或仅仅部分机密/特权委派给内核扩展。图5-7 —起示出了根据本发明优选实施例实施的安全内核的基本运行流程的多页流程图表示。图5-7示出了如何使优选实施例的各种加密特征在安全内核的指导下一起 工作,以建立特权和无特权程序代码系统而无需使用专用的保护硬件。在转到图5-7中的 具体内容之前,首先应该注意到的是为了简化图示,每一个数字签名和哈希值验证在此都 被表示处理步骤(矩形)而不是决策(菱形),尽管实质上这些动作中的每一个都涉及关 于检验或验证是成功还是失败的确定。应该理解在以下的整个说明内容中,图5-7中的任 何验证或检验动作的失败都会触发错误或异常状态,其将中断图5-7中示出的正常运行流 程。因此,以下介绍的每一次检验或验证都应该被理解为暗含了转移到关于检验或验证失 败的错误状态的决策步骤。现转至图5,当安全初始化硬件226初始化或重新初始化辅助处理单元110时(如 上所述),在辅助处理单元110的主数据路径开始处理指令之前,安全初始化硬件将安全内 核从加密的原版拷贝解密到处理器可访问的内存中(方块500)。一旦安全内核已被解密, 安全初始化硬件启动数据处理系统的主数据路径,随后其开始运行安全内核(方块501)。安全内核随后检查邮箱区域308以确定应该在初始化之后采取什么动作,例如载 入/执行特定的内核扩展或将控制权交还给触发热初始化的应用程序(方块502)。另外, 检查邮箱区域308允许安全内核确定是否发生了热初始化或冷初始化。接下来做出关于是 否应该载入内核扩展的决定(方块504)。如果要载入(方块504:是),那么安全内核利用 安全内核的私钥将所需的内核扩展解密到处理器可访问的内存中(方块506)。利用对安全 内核来说已知的(也就是存储在安全内核的“密钥环”中的)预定公钥,所述安全内核检验 与内核扩展一起提供的公钥的数字签名(方块507)。安全内核随后利用内核扩展的公钥检 验内核扩展自身的数字签名(方块508)。接下来,通过计算内核扩展的哈希值并将算出的 哈希值与随内核扩展一起提供的哈希值相比较,安全内核验证所用内核扩展的完整性。如果内核扩展通过了所有的这些检验/验证,那么就做出关于安全内核的哪些敏 感部分应该在将控制权交给内核扩展之前被删除或保留的决定(方块512)。如上所述,该 决定是以哪一个公钥被用于签署内核扩展为基础,每一个公钥对应于在将控制权交给用该 公钥签署的内核扩展之前要被保留的一组敏感部分(或者等价地,对应于应该被删除的敏 感部分)。一旦确定应该保留安全内核的哪些敏感部分,安全内核其余的敏感部分即被删除 (方块514),然后安全内核就将控制权交给载入的内核扩展(方块516)。在从运行载入的内核扩展返回到运行安全内核时(方块516之后),或者如果没有 载入内核扩展(方块504 否),则做出关于是否应该将新的应用程序代码载入内存以供运 行的决定(方块518)。如果要载入(方块518 是),则应用程序代码即被载入处理器可访 问的内存中(方块520)。随后利用对于安全内核来说已知的预定公钥对新载入的应用程序 代码的公钥的签名进行检验(方块521)。随后利用应用程序的经过检验的公钥对应用程序 自身的签名进行检验(方块522)。接下来,通过计算应用程序的哈希值并将算出的哈希值 与随应用程序一起提供的哈希值相比较来验证应用程序的完整性(方块524)。一旦应用程序已被检验和验证,安全内核就通过根据安全内核私钥和应用程序公 钥计算单向函数,从而生成特定于应用程序的机密(方块526)。安全内核还通过根据安全 内核私钥和由应用程序自身的各字节算出的哈希值计算单向函数,从而生成特定于应用程序版本的机密(方块528)。这些机密由安全内核存储在内存中以使其可被载入的应用程序 (例如在应用程序的机密空间412中)访问。在已由安全内核算出特定于应用程序的机密和特定于应用程序版本的机密之后,安全内核就删除自身的敏感部分(包括其私钥、特权代码部分以及任意其他的安全内核机 密)(方块530)。安全内核随后将控制权完全转交(转移)给应用程序(方块532)(直到 下一次安全初始化之前都不再通过安全内核进行进一步的处理)。如果未载入新的应用程 序(方块518:否),那么安全内核就删除自身的敏感部分(方块534),然后将控制权交给 邮箱区域308内指示的应用程序代码地址(也就是,启动触发安全内核运行的热初始化的 应用程序)(方块536)。在图5-7中以流程图形式示出的过程包括验证载入的应用程序的真实性和完整 性,但是,如图所示,并不包括确保应用程序实际上来自可信任来源的任何机制。图8中介 绍了用于实现该目标的附加机制。在图8中,安全内核800被示出为具有嵌入式内核专用公钥802 (与以上结合方块 521提及的密钥相同)。除了嵌入式公钥802以外,安全内核800还具有对多个与厂商相关 的公钥(密钥804、806和808)的访问权,这些公钥未被嵌入在安全内核中,但是仍然可供 其访问。利用与嵌入式内核专用公钥802相对应的嵌入式私钥签署每一个公钥804、806和 808 (以使密钥802能够检验密钥804、806和808的签名)。例如,密钥804与签名812相 关联,可以利用安全内核公钥802检验该签名。公钥804、806和808对应于可信任的软件 厂商。来自这些可信任厂商之一的应用程序(例如应用程序816)将包含其自身的应用 程序专用密钥(例如,应用程序专用密钥818)。这是与以上结合方块522提及的相同的应 用程序专用密钥。由于应用程序816与对应于公钥804的可信任厂商相关联,因此利用与公 钥804相关联的私钥(由该厂商持有)签署该应用程序专用密钥818。该签名(签名820) 因此可以利用厂商专用公钥804进行检验。由此,就形成了一条从安全内核密钥802到应 用程序密钥818的“信任链”。另一方面,在应用程序来自不信任来源的情况下,安全内核800将不具有对应的 可以用于检验应用程序密钥的厂商专用密钥。因此,不信任应用程序的应用程序专用密钥 的检验就会失败。安全内核800可以因此被设置为处于“严格策略”,在严格策略中,只有那 些来自于可信任厂商的应用程序才被允许运行。在优选实施例中,该“严格策略”能够作为 选项被激活,以使得如果禁用该选项,那么安全内核800使用内核密钥802来检验应用程序 专用密钥的签名。当然,这要求使用安全内核的密钥对签署应用程序专用密钥,而不是用厂 商的密钥对签署应用程序专用密钥。图9是在本发明优选实施例中验证应用程序代码可信度的基本过程的流程图表 示。如果“严格策略”被激活(方块900:是),那么安全内核首先利用其自身的公钥来检验 与应用程序厂商相关联的厂商密钥的签名(方块902)。如果该步骤成功,那么随后就将厂 商密钥用于检验与应用程序自身捆绑在一起的应用程序专用密钥的签名(方块904)。最 后,经过检验的应用程序专用密钥被用于像图5-7中那样在应用程序运行之前验证其自身 的完整性(方块906)。另一方面,如果严格策略已被禁用(方块900 否),那么内核的公钥被用于在验证应用程序的完整性(方块906)之前直接检验应用程序专用密钥(方块908)。无论何时开始安装应用程序,通过使用“预先检验”技术可避免与该检验过程相关 联的部分计算开销。图10是根据本发明优选实施例执行预先检验过程的流程图表示。当 开始在数据处理系统内安装应用程序时,安全内核使用其自身的公钥来检验与应用程序厂 商相关联的厂商密钥的签名(方块1002)。如果该步骤成功,那么随后将厂商密钥用于检验 与应用程序自身捆绑在一起的应用程序专用密钥的签名(方块1004)。最后,如果这两个 检验步骤都成功,那么安全内核就利用其自身的密钥对重新签署应用程序专用密钥(方块 1006)。一旦已经执行了该预先检验,直接利用安全内核公钥检验每一个应用程序的应用 程序专用密钥,就像严格策略已被禁用一样。(换句话说,只需执行图9中的方块908和 906)。这就减少了在每一次载入应用程序时必须要执行的个体签名检验的数量。以图11的流程图形式介绍了实施可撤销的“严格策略”选项的一种可选方法,其 消除了如图9中示出的对于“严格”和“非严格”(或“开放”)策略模式进行单独检验处理 的需要。在该方法中,定义了与众不同的“全局密钥对”(参见图8中的全局公钥808),其 中全局密钥对的公钥和私钥都是公众可获得的。在该方案中,利用全局密钥签署所有不与 厂商专用密钥相关联的应用程序专用公钥。例如,在图8中,应用程序822(例如其可以是 免费软件或开源软件)具有应用程序专用密钥824,其是利用对应于全局公钥808的私钥签 署的(签名824)。随后如图11中所示地激活和禁用“严格策略”模式。如果要激活“严格策略”模 式(方块1100),那么就从安全内核800的厂商专用密钥的密钥环中去除全局密钥808 (方 块1102)。另一方面,如果要禁用“严格策略”(由此激活“开放策略”模式),那么就将全局 密钥808添加至安全内核800的厂商专用密钥的密钥环(方块1104)。一旦已经执行了图11中所示的过程,所有的后续检验就可以像在“严格策略”模 式下那样进行(也就是图9中的方块902、904和906)。可以利用全局公钥808检验没有与 其相关联的厂商专用密钥的应用程序,而可以通过厂商专用密钥检验那些存在厂商专用密 钥的应用程序。本发明的优选实施方式之一是计算机程序,也就是指令(程序代码)集或代码模 块中的其他功能性描述素材,它们例如可以驻留在计算机的随机存取存储器中。直到被计 算机请求之前,指令集都可以被存储在另一个计算机存储器中,例如存储在硬盘驱动器或 可移动存储器例如光盘(用于最终在CD ROM中使用)或软盘(用于最终在软盘驱动器中 使用)中,或者通过因特网或其他计算机网络下载。因此,本发明可以被实施为用于在计算 机中使用的计算机程序产品。另外,尽管介绍的各种方法可以通过软件选择性地激活或重 构的通用计算机中方便地实施,但是本领域普通技术人员应该意识到这些方法也可以在硬 件、固件或者构造用于执行所需方法步骤的更为专用的装置中实现。功能性描述素材是给 机器赋予功能性的信息。功能描述素材包括但不限于计算机程序、指令、规则、事实、可计算 函数的定义、对象和数据结构。尽管已经图示并介绍了本发明的特定实施例,但是对本领域普通技术人员显而易见的是根据本文中的教导,可以进行修改和变形而并不背离本发明及其更广泛的应用。因 此,所附权利要求是用于在其范围内涵盖处于本发明实质和保护范围内的所有这样的修改和变形。而且,应该理解本发明仅由所附权利要求限定。本领域普通技术人员应该理解如果在介绍的权利要求要素中想要有具体数字,那么这种意图将在权利要求中进行清楚地叙 述,而在没有这种叙述时就意味着不存在这种限定。对于有助于理解的非限制性示例,以下 所附权利要求中包含了介绍性短语“至少一个”和“一个或多个”的使用以介绍权利要求要 素。但是,这些短语的使用不应该被解释为意味着由不定冠词“一”或“一个”介绍的权利 要求要素就将包含这些被介绍的权利要求要素的任何特定权利要求限制为只含有一个这 种元素的发明,即使在同一权利要求包括介绍性短语“一个或多个”或“至少一个”以及不 定冠词例如“一”或“一个”时也是如此,该原则对于权利要求中定冠词的使用也同样适用。 在权利要求中使用了词语“或”时,使用的是它的包含性意义(也就是“A和/或B”而不是 “A或B 二者择一”)。
权利要求
一种计算机实施的处理数据的方法,所述方法包括由计算机利用初始化硬件对存储到供处理器数据路径访问的内存中的安全内核的加密拷贝进行解密,其中安全内核含有安全内核密钥;以及由计算机运行从所述内存访问的安全内核,其中所述运行包括利用安全内核密钥检验与厂商相关的密钥的数字签名,其中所述与厂商相关的密钥与软件厂商相关联;以及利用与厂商相关的密钥检验与应用程序相关的密钥的数字签名,其中与应用程序相关的密钥与软件应用程序相关联。
2.如权利要求1所述的方法,其中与应用程序相关的密钥与软件应用程序共同存储。
3.如权利要求1或2所述的方法,其中初始化硬件独立于处理器数据路径操作。
4.如权利要求1、2或3所述的方法,进一步包括 确定对与应用程序相关的密钥的检验是否成功;响应于对与应用程序相关的密钥检验成功的确定,利用与安全内核相关联的签署密钥 生成与应用程序相关的密钥的新签名。
5.如权利要求4所述的方法,其中签署密钥是密钥对中的私钥,在所述密钥对中,所述 安全内核密钥是对应的公钥。
6.如权利要求1至5中的任意一项所述的方法,进一步包括 利用与应用程序相关的密钥验证软件应用程序的数字签名。
7.如权利要求1至6中的任意一项所述的方法,进一步包括只有在利用与厂商相关的密钥对与应用程序相关的密钥的数字签名进行的所述检验 成功的情况下,才运行软件应用程序。
8.一种在实体计算机可读介质内用于由具有处理器数据路径和专用初始化硬件的计 算机运行的计算机程序产品代码,所述计算机程序产品代码包括加密内核,其中加密内核适用于被专用的初始化硬件解密为解密形式并由处理器数据 路径以解密形式运行,所述加密内核包括 安全内核密钥;用于利用安全内核密钥检验与厂商相关的密钥的数字签名的指令,其中与厂商相关的 密钥与软件厂商相关联;以及用于利用与厂商相关的密钥检验与应用程序相关的密钥的数字签名的指令,其中与应 用程序相关的密钥与软件应用程序相关联。
9.如权利要求8所述的计算机程序产品,其中与应用程序相关的密钥与软件应用程序 共同存储。
10.如权利要求8或9所述的计算机程序产品,其中初始化硬件独立于处理器数据路径 操作。
11.如权利要求8、9或10所述的计算机程序产品,进一步包括 用于确定对与应用程序相关的密钥的检验是否成功的指令;用于响应于对与应用程序相关的密钥检验成功的确定,利用与安全内核相关联的签署 密钥生成与应用程序相关的密钥的新签名的指令。
12.如权利要求11所述的计算机程序产品,其中签署密钥是密钥对中的私钥,在所述密钥对中,所述安全内核密钥是对应的公钥。
13.如权利要求8至12中的任意一项所述的计算机程序产品,进一步包括 利用与应用程序相关的密钥验证软件应用程序的数字签名。
14.如权利要求8至13中的任意一项所述的计算机程序产品,进一步包括用于只有在利用与厂商相关的密钥对与应用程序相关的密钥的数字签名进行的所述 检验成功的情况下,开始运行软件应用程序的指令。
15.一种数据处理系统,包括 初始化硬件;处理器数据路径;可供处理器数据路径和初始化硬件访问的内存;以及 非易失性存储器,包含具有一个或多个敏感部分的安全内核的加密拷贝,其中 初始化硬件将加密拷贝解密到内存中,处理器数据路径运行来自内存的安全内核以执 行如下动作,所述动作包括利用安全内核密钥检验与厂商相关的密钥的数字签名,其中与厂商相关的密钥与软件 厂商相关联;以及利用与厂商相关的密钥检验与应用程序相关的密钥的数字签名,其中与应用程序相关 的密钥与软件应用程序相关联。
全文摘要
公开了一种方法、计算机程序产品和数据处理系统,用于确保在数据处理系统中运行的应用程序只能来自可信任来源。在一个优选实施例中,安全操作内核保留含有对应于可信任软件厂商的密钥的“密钥环”。安全内核使用厂商密钥来验证给定的应用程序是由经核准的厂商签署。为了使用户可以运行来自独立软件开发方的软件,管理员用户可以将上述的厂商密钥校验作为一个选项而禁用。
文档编号G06F21/00GK101816004SQ200880110014
公开日2010年8月25日 申请日期2008年9月22日 优先权日2007年10月2日
发明者V·泽巴斯盖, 村濑正名, 清水宽和, 阪本正治 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1