当前位置: 首页 > 专利查询>微软公司专利>正文

用于程序代码安全执行的系统和方法技术方案

技术编号:2855392 阅读:163 留言:0更新日期:2012-04-11 18:40
一系统包括支持不同优先级的存储器和处理器。只有在某优先级上执行的程序代码被允许映射存储器并将访问许可分配给经映射存储器,诸如只读、可写和可执行。响应于来自以在不同优先级上执行的其它代码的请求,以该优先级在处理器上执行的控制代码映射存储器的一部分用来载入可执行文件。在可执行文件已被载入经映射存储器之后,控制代码然后校验与该可执行文件相关联的签名。如果该签名通过校验,控制代码允许可执行文件由处理器以不同于控制代码执行的优先级的优先级被执行。否则,控制代码阻止可执行文件在该处理器上被执行。

【技术实现步骤摘要】

本专利技术一般涉及在开始使用前验证数字数据,尤其涉及一种用于确保要在处理器上执行的程序代码被适当签名并未被更改的系统和方法。
技术介绍
个人计算机提供了愿意投入精力编程的任何人在其上可编写程序的一个平台,这些程序可实现几乎所有需要的功能而仅受编程语言、操作环境和程序在其上执行的硬件的限制。个人计算机的制造商以及那些提供操作系统和编程工具的制造商对用户如何选择使用其相应产品几乎不设限制。然而有一些实例,其中限制如何使用计算装置是重要的。广而言之,计算装置可以是包括执行存储在存储器中的程序代码以执行某些功能的处理器的任何装置。因而,计算装置可具有专用功能,或在功能上可像典型的个人计算机一样非常通用。当在此使用时,术语“代码”、“程序代码”和“控制代码”指由诸如计算装置的处理器的机器执行的指令集。在某些方面与个人计算机相似,而在其主要功能上较为专用的一类计算装置是多媒体控制台。尽管多媒体控制台可经常执行其它功能,但它们的主要功能是执行机器指令或程序代码,以使一个或多个用户能播放各种类型的多媒体,诸如视频、音频和游戏。生产多媒体控制台的公司对控制在其控制台上执行的任何多媒体软件的各方面有着浓厚的兴趣。例如,他们想要确保多媒体软件的质量符合某些规范。因为多媒体控制台的制造商通常向生产可在控制台上使用的多媒体软件的其它公司发放许可,最好阻止未经许可的软件在控制台上使用。除了如果未经许可软件在多媒体控制台上播放可导致收入的损失之外,还有对在多媒体控制台上播放的软件进行质量控制的问题。此外,确保经许可在多媒体控制台上使用的软件在其被准予分发并发布给公众之后未被更改是重要的。没有应用这样的控制,多媒体软件可被修改以规避许可证限制或添加在该软件开始被准予在来自多媒体控制台制造商的许可证下由软件公司发布时未包括在授权软件中的特征或功能。在称为游戏控制台的一类多媒体控制台中,过去曾使用硬件相关技术用于验证用来存储游戏软件的软件插入卡。例如,在某些游戏控制台中,授权软件游戏卡的外壳和游戏控制台中相对应的插槽被成形为防止不同形状的卡插入该插槽中。此外,某些游戏卡包括存储验证该卡所需的特定数据的处理器和只读存储器(ROM)。如果游戏控制台中处理器和卡中处理器所执行的计算结果不匹配,则游戏控制台将使存储在卡中的游戏软件不能在游戏控制台上执行。由于被设计在当代多媒体控制台上运行的图形的丰富性、游戏和多媒体内容的复杂性,多媒体软件被更有效地分布在光学存储介质上,诸如只读光盘(CDROM)或数字多功能盘(DVD)。相应地,必须采用不依赖于多媒体软件驻留其上的介质的物理形状的可选方法。其它多媒体控制台制造商如何进行选择来解决该问题的细节还无法得到。显然,需要用于确定分布于这些介质上的软件是否经适当签名且并未更改或改变的系统和方法。在各种计算装置上使用的许多处理器提供了对将不同“优先级”分配给计算机系统中不同可执行程序代码的支持,作为一种防止程序代码的未经授权执行的安全形式。程序代码可包括用高级程序语言、汇编语言、或机器语言编写的源代码,且该代码可以编译形式或通过解释执行。使用支持不同优先级的处理器,某些程序代码可被允许以比其它代码更高的优先级在处理器上执行。一般而言,执行“更高”优先级的程序代码将对处理器指令集的某些部分以及计算装置的其它硬件资源有更大的访问权。优先级,有时也称为“环”(ring),可被视为计算装置内硬件和软件的逻辑划分。优先级(或环)通常确定执行程序代码可访问的存储器的整个范围或各个范围,以及处理器的整个指令集内可由处理器代表该程序代码执行的指令范围。某些程序代码对访问其优先级之外的存储器范围或处理器指令的尝试将导致处理器故障。拥有较高优先级(或环)的程序代码通常具有包括拥有较低优先级(或环)的其它程序代码的优先级。某些处理器仅支持两个优先级,而其它则支持三个、四个或更多的优先级。例如,由Intel公司制造的x86系列处理器的体系结构提供了4个优先级,从最高优先级的“环0”到最低优先级的“环3”。被分配以特定优先级的程序代码仅可访问被分配以相同或更低优先级的数据和其它程序。因而,被分配以“环2”的程序代码可调用被分配以环2的其它程序代码以及被分配以环3的程序代码,但它不能直接调用环1或环0的程序代码。作为另一示例,由IBM公司、Motorola公司和Apple Computer公司联合开发的PowerPC微处理器支持三个优先级,称为(超级)管理员(Hypervisor)模式(最高级)、管理员(Supervisor)模式和用户模式(最低级)。一般而言,处理器执行某程序代码的当前优先级通过设置处理器内硬件寄存器的适当比特或比特的组合来建立。每个级别上提供的优先级细节是实现相关的,且对本专利技术的理解不是必须的。优先级概念最常被用于防止应用程序对计算资源的完全访问。通常,操作系统开发者将把最高优先级分配给操作系统的某些关键部分,诸如操作系统内核,但会把其它操作系统服务和应用程序降到较低优先级。为了获取使用对应用程序不能直接得到的资源的服务,应用程序需要通过操作系统接口调用操作系统例程。那些操作系统例程然后可将处理器的当前优先级升级为较高优先级,以便访问所需资源,执行应用程序所要求的任务,然后将控制返回到应用程序,且同时将处理器的优先级降回到较低级别。还可使用优先级来防止处理器代表应用程序来执行某些优先级指令。例如,改变处理器中某寄存器内容的指令可给予优先权,且可由处理器仅代表在最高优先级上运行的操作系统例程而执行。一般而言,受限指令包括操纵控制寄存器(诸如存储器管理单元的寄存器)内容的指令以及特定操作系统的数据结构。许多处理器采用的提供防止计算装置中数字数据或程序代码的未经授权使用的安全的另一种机制是准予对计算装置存储器的不同单元的不同访问许可的能力。访问许可有时也向存储器单元的范围提供,诸如支持实际存储器或虚拟存储器中存储器“页”分配的系统中存储器“页”。例如,实际或虚拟存储器可被分成诸如四千字节的固定大小的页。许多处理器支持可应用于存储器给定单元或给定页的若干类型存储器访问许可,诸如READ(读)、WRITE(写)和EXECUTE(执行)许可。这些许可的不同组合可被应用于存储器的给定单元或页以影响所需保护级别。例如,仅分配了READ许可的存储器页将是只读的,而分配了READ和WRITE许可的存储器页将允许对该页的读写访问(即“读/写”访问)。分配了WRITE许可的存储器页或部分被称为“可写的”。具有EXECUTE许可的存储器页(可结合RAD和WRITE许可)可被用于使存储在存储器页中的任意程序代码能被执行的目的。即,存储在这样存储器页中的程序代码具有要由处理器执行的许可;该存储器页被称为“可执行”。通常,处理器维护有一表格,它指示对已分配给操作系统或应用程序的任意存储器单元所分配的各种访问许可。尽管优先级和存储器访问许可的概念对在计算装置内的实际和程序代码上设置某些限制有用,但是这些概念之一并不足以确保仅有适当签名的代码由处理器执行,以及这样的程序代码未被更改或改变。仍然需要用于确保只有经适当签名的程序代码在处理器上执行且这样的程序代码未经更改或改变的系统和方法。本专利技术解决了这种需要。
技术实现思路
本专利技术涉及用于确本文档来自技高网
...

【技术保护点】
一种用于确保可执行文件在包括一处理器和一存储器的系统中的安全执行的方法,其中所述处理器支持不同优先级,且其中只有以所述第一优先级执行的程序代码被允许映射存储器并将所述经映射存储器表示为只读、可写和可执行,其特征在于,所述方法包括以所述处理器的所述第一优先级执行的以下步骤:    响应于来自以不同优先级执行的其它程序代码的请求,映射存储器的一部分用于载入可执行文件;    在所述可执行文件已被载入存储器的所述经映射部分之后,校验与所述可执行文件相关联的签名;以及    如果所述签名通过校验,则允许所述可执行文件以不同于所述第一优先级的优先级执行,否则阻止所述可执行文件在所述处理器上执行。

【技术特征摘要】
US 2004-8-25 10/925,6571.一种用于确保可执行文件在包括一处理器和一存储器的系统中的安全执行的方法,其中所述处理器支持不同优先级,且其中只有以所述第一优先级执行的程序代码被允许映射存储器并将所述经映射存储器表示为只读、可写和可执行,其特征在于,所述方法包括以所述处理器的所述第一优先级执行的以下步骤响应于来自以不同优先级执行的其它程序代码的请求,映射存储器的一部分用于载入可执行文件;在所述可执行文件已被载入存储器的所述经映射部分之后,校验与所述可执行文件相关联的签名;以及如果所述签名通过校验,则允许所述可执行文件以不同于所述第一优先级的优先级执行,否则阻止所述可执行文件在所述处理器上执行。2.如权利要求1所述的方法,其特征在于,与所述可执行文件相关联的所述签名包括所述文件的至少一部分的摘要,所述摘要使用私钥加密,且其中校验所述文件的签名的所述步骤包括使用与所述私钥相对应的公钥来解密所述经加密摘要;计算所述文件至少一部分的确认摘要,所述确认摘要使用与产生被加密的摘要的方法相同的方法生成;以及比较所述确认摘要和所述经解密摘要,其中如果所述确认摘要和所述经解密摘要相同则所述签名通过校验。3.如权利要求2所述的方法,其特征在于,所述可执行文件包括一标题以及一个或多个部分,其中所述经加密摘要是所述文件标题的摘要,且其中所述文件标题包含分别与所述文件部分之一分别相对应的一个或多个部分摘要,所述方法还包括,对于所述文件的一个或多个部分的每一个使用与用来生成所述文件标题中相应部分摘要的方法相同的方法,计算所述文件部分的确认摘要;以及比较所述确认摘要和所述文件标题中的相应部分摘要,其中如果对于所述文件的任一部分,所述确认摘要与所述文件标题中的相应部分摘要不匹配,则阻止该文件在所述处理器上执行。4.如权利要求3所述的方法,其特征在于,所述映射步骤包括映射存储器的第一部分用于载入所述文件的标题,且仅在执行计算所述标题的确认摘要并比较所述标题的确认摘要和所述标题的经解密摘要的步骤之后,映射存储器的第二部分用于载入所述文件的一个或多个部分。5.如权利要求1所述的方法,其特征在于,还包括在执行所述校验步骤之前将所述存储器的经映射部分指定为只读。6.如权利要求2所述的方法,其特征在于,所述加密摘要通过将散列算法应用于所述文件的至少一部分而生成,且其中所述计算确认摘要的步骤包括使用用来生成所述加密摘要的相同散列算法来生成所述确认摘要。7.如权利要求6所述的方法,其特征在于,所述散列算法包括SHA-1算法。8.如权利要求1所述的方法,其特征在于,允许所述可执行文件被执行的所述步骤包括将包含所述可执行文件的存储器的所述经映射部分指定为可执行,并分支到所述存储器中可执行文件的起始点。9.如权利要求8所述的方法,其特征在于,还包括阻止已被指定为可执行的存储器的经映射部分被指定为可写。10.如权利要求9所述的方法,其特征在于,还包括阻止已被指定为可写的存储器的经映射部分被指定为可执行。11.如权利要求1所述的方法,其特征在于,映射存储器一部分的所述步骤包括将存储器的虚拟页映射成存储器的实际页。12.如权利要求1所述的方法,其特征在于,所述步骤以所述处理器的实模式执行。13.一种具有程序代码存储其中的计算机可读介质,所述程序代码在包括一处理器和一存储器的系统中使用,其中所述处理器支持不同优先级,且其中只有以所述第一优先级执行的程序代码被允许映射存储器并将所述经映射存储器表示为只读、可写和可执行,其特征在于,所述程序代码在由处理器以所述一优先级执行时致使所述处理器执行以下步骤响应于来自以不同优先级执行的其它程序代码的请求,映射存储器的一部分用于载入可执行文件;在所述可执行文件已被载入存储器的所述经映射部分之后,校验与所述可执行文件相关联的签名;以及如果所述签名通过校验,则允许所述可执行文件以不同于所述第一优先级的优先级执行,否则阻止所述可执行文件在所述处理器上执行。14.如权利要求13所述的计算机可读介质,其特征在于,与所述可执行文件相关联的所述签名包括所述文件至少一部分的摘要,所述摘要使用私钥加密,且其中校验所述文件的签名的所述步骤包括使用与所述私钥相对应的公钥来解密所述经加密摘要;计算所述文件至少一部分的确认摘要,所述确认摘要使用与产生被加密的摘要的计算机可读介质相同的计算机可读介质生成;以及比较所述确认摘要和所述经解密摘要,其中如果所述确认摘要和所述经解密摘要相同则所述签名通过校验。15.如权利要求14所述的计算机可读介质,其特征在于,所述可执行文件包括一标题以及一个或多个部分,其中所述经加密摘要是所述文件标题的摘要,其中所述文件标题包含与所述文件一相应部分相对应的一个或多个部分摘要,且其中所述程序代码还致使所述处理器对所述文件的一个或多个部分的每一个执行以下附加步骤使用与用来生成所述文件标题中相应部分摘要的方法相同的方法,计算所述文件部分的确认摘要;以及比较所述确认摘要和所述文件标题中的相应部分摘要,其中如果对于所述文件的任一部分,所述确认摘要与所述文件标题中的相应部分摘要不匹配,则阻止该文件在所述处理器上执行。16.如权利要求15所述的计算机可读介质,其特征在于,所述映射步骤包括映射存储器的第一部分用于载入所述文件的标题,且仅在所述程序代码执行计算所述标题的确认摘要并比较所述标题的确认摘要和所述标题的经解密...

【专利技术属性】
技术研发人员:DR莫瑞斯
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1