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

安全性关键数据容器制造技术

技术编号:2850685 阅读:123 留言:0更新日期:2012-04-11 18:40
所描述的是用于平台代码的安全性关键容器,包括Get容器和Set容器,它们允许对该数据的关键使用将数据标记为安全性关键的,但对于非关键使用保持未标记。减少了代码中的关键方法的数量,从而便于进行更好的代码分析。容器的方法可被标记为安全性关键的,只能通过该方法来访问数据。通过使用Get容器的范型类,对关键数据的访问仅通过该类上被标记为关键的属性发生。指向范型类实例的字段无需是关键的,由此初始化或存在检查可保持为非关键的。Set容器处理诸如控制代码是否可提升许可的数据等安全性关键的情形;set方法被标记为关键的,而其它方法可由非关键代码来访问。

【技术实现步骤摘要】

本专利技术一般涉及计算机系统,尤其涉及计算机系统安全性。
技术介绍
在当代计算中,计算机应用程序和其它代码可以从因特网上下载并安装。当从未知的或不可信的来源下载时,这一代码可能是故意恶意的,或可能能够危害重要数据或提供对其的非授权访问。然而,由于存在计算机用户从无需提示就下载代码和执行代码的能力中获益的许多情况,因此完全阻止下载并不是对该问题的可行的解决方案。在某些环境中,诸如基于微软公司的.NET技术的环境中,试图通过限制代码被准许干什么来解决运行未知或不可信代码的问题。例如,底层平台可要求其调用者具有特定的许可,且尽管代码可请求它执行所需的许可,运行库仍仅基于评估该代码有多少是可信的策略来向代码授予许可。这一许可包括诸如访问文件和数据库、连接到因特网、通过用户界面与用户交互、调用非受管代码等的能力等内容。当代码请求这一许可时提示用户是一种基于策略的解决方案,但是并非是非常合乎需要的,因为典型的用户在被提示时通常没有准备好做出正确的安全决策。为平台编写使应用程序能够从因特网下载并安装而无需提示的安全代码是一个及其困难的问题。这是因为平台本身需要具有提升的特权来正确地运作。如果编写平台代码的任一部分使得它会无意地展示以提升的特权运行不可信代码的内部方式,从而允许不可信代码执行不安全的操作,则会存在安全性缺陷。作为示例,平台代码需要能够为诸如在窗口上呈现文本等操作系统服务调用非受管代码,而不允许不可信代码如此做,但是如果平台代码被无意地编写使得不可信代码可通过对平台代码的内部方法的调用来调用非受管代码,则存在安全性缺陷。提高平台代码被安全地编写的可能性的一种解决方案是允许开发者标记(例如,使用元数据)平台代码汇中需要提升的许可来运行的任一部分,或控制是否可运行提升的许可,即,元数据指示平台代码是执行非安全操作的“关键”代码。安全组和静态代码分析工具(例如,FxCop是检查.NET受管代码程序集的一个这样的代码分析工具),然后识别元数据,由此可开发平台特征,使得显著地降低用提升的特权运行的平台代码被展示给不可信代码的可能性。然而,尽管有很高的价值,但是将这一代码和数据标记为关键会导致复杂的代码审阅过程,这会对具有需要审阅代码的许多关键方法的安全组造成负担。所需要的是一种当较少的复杂审阅会提高在平台代码中找到任何安全性问题的可能性时,减少需要审阅关键性的方法的数量的安全方法。
技术实现思路
简言之,本专利技术针对一种系统和方法,通过该系统和方法,描述“关键性”的元数据可被附加到类上的任何数据字段,而无需做出对关键数据的存在/初始化做出检查,且同时仍允许以类型安全的方式来访问数据。此外,对于控制提升的许可的关键数据,通过标记将数据值设置为关键的方法而非数据本身,该数据可被认为在设置的容器中是关键的。由此,仅使用(获得)值的其它代码无需是关键的。结果,平台代码中需要被审阅的关键方法和数据字段的数量可被显著减少,而不会损害安全性。在一个实现中,基于范型的类(其中范型是类似于C++模板的.NET框架语言构造)为关键数据提供了容器。对范型类的使用意味着对关键数的Get访问仅可通过该类上被标记为关键的属性发生。然而,指向范型类实例的实际字段无需是关键的,且由此可以用透明的方式从代码中安全地检查。因此,本专利技术使得对数据内容的访问能够被跟踪为关键的,而对数据的初始化或存在的检查保持非关键的。为此,本专利技术提供了一种“Get”(获取)容器,通过该容器,可访问关键数据(诸如当数据提供对关键资源的访问时,如到关键资源的文件句柄)。检索容器中的数据的值的get方法用指示它是安全性关键的元数据来标记,由此静态分析工具可检测是否存在允许不可信代码访问该数据的程序缺陷。然而,由于get方法被标记,因此可检查数据的存在/初始化(例如,可做出空检查),而无需检查其本身是否为关键的。结果,进行检查的代码无需被标记为关键的,这显著地减少了需要进行安全性审阅的平台代码的量。本专利技术也提供了一种“Set”(设置)容器,以处理使用布尔或其它变量来指示代码提升许可的情况。由于这一数据控制了代码是否提升许可,因此设置该数据变为关键的,否则从不可信代码的调用将会提升许可。不调用set方法的其它代码,诸如如果正确地设置了值则实际上提升许可的代码只需获得该值(例如,通过get方法),且由此无需是关键代码。作为Set容器的结果,平台代码中关键方法的数量也可被显著减少。当结合附图阅读以下详细描述时,可以清楚其它优点,附图中附图说明图1是概括地示出其中可结合本专利技术的计算环境的框图;图2A和2B是依照本专利技术的各方面包含set和get容器的平台代码的表示。图3是依照本专利技术的各方面表示分析具有安全性关键数据容器的平台代码的代码工具的框图;以及图4是依照本专利技术的各方面表示运行在基于具有安全性关键数据容器的代码的已编译平台代码上的不可信代码的框图。具体实施例方式示例性操作环境图1示出了适合在其中实现本专利技术的计算系统环境100的一个示例。计算系统环境100仅为合适的计算环境的一个示例,并非对本专利技术的使用范围或功能提出任何局限。也不应将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合具有任何依赖或需求。本专利技术可以使用众多其它通用或专用计算系统环境或配置来操作。适用于本专利技术的众所周知的计算系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持式或膝上设备、图形输入板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。本专利技术可以在诸如由计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。本专利技术也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和/或远程计算机存储介质中。参考图1,用于实现本专利技术的示例性系统包括计算机110形式的通用计算设备。计算机110的组件包括,但不限于处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD本文档来自技高网
...

【技术保护点】
在计算环境中,一种方法,包括:    提供容器;以及    允许将与所述容器的特定方法相关联的数据区分为安全性关键的信息,使得所述数据只能由具有提升的许可的代码通过所述特定方法来访问。

【技术特征摘要】
US 2005-2-4 11/051,8081.在计算环境中,一种方法,包括提供容器;以及允许将与所述容器的特定方法相关联的数据区分为安全性关键的信息,使得所述数据只能由具有提升的许可的代码通过所述特定方法来访问。2.如权利要求1所述的方法,其特征在于,所述容器包括get容器,且所述方法包括get方法,并且其中,所述数据只能由具有提升的许可的代码通过所述get方法来访问,且存在/初始化检查可由没有提升到的许可的代码来执行。3.如权利要求2所述的方法,其特征在于,所述数据包括提供对关键资源的访问的值。4.如权利要求1所述的方法,其特征在于,所述容器包括set容器,其所述特定方法包括set方法,并且其中,所述数据只能由具有提升的许可的代码通过所述set方法来设置。5.如权利要求4所述的方法,其特征在于,还包括get方法,并且其中,所述数据可由没有提升的许可的代码通过所述get方法来读取。6.如权利要求5所述的方法,其特征在于,所述数据包括提供对关键资源的访问的值。7.如权利要求5所述的方法,其特征在于,所述数据包括指示特权是否可被其它代码提升的值。8.如权利要求1所述的方法,其特征在于,所述容器是在允许下载的代码被执行的平台代码中实现的,且所述方法还包括通过分析工具来分析所述平台代码。9.至少一个具有计算机可执行指令的计算机可读介质,当被执行时,所述计算机可执行指令实现如权利要求1所述的方法。10.一种其上储存有数据结构的计算机可读介质,所述数据结构包括set容器,它包括set方法和get方法;以及将与所述set方法相关联的数据区分为安全性关键,并...

【专利技术属性】
技术研发人员:MA阿尔卡扎VRP塔玛纳
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

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

1