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

通过散列的绑定制造技术

技术编号:2868959 阅读:218 留言:0更新日期:2012-04-11 18:40
提供了一种用于确保在运行期间由应用程序(136,232)所使用的组件或组合件(10、20、30、70、80、90)的安全性的系统和方法。组合件(10、20、30、70、80、90)携带了可以用于实施由应用程序(136,232)描述的版本规则的版本信息。在运行时,把应用程序(136,232)所请求的版本号与实际找到的组合件(10、20、30、70、80、90)的版本号进行比较。除了比较版本号外,本发明专利技术提供了基于加密散列的更严格的版本检查形式。组合件(10、20、30、70、80、90)配置有模块信息,该信息含有组成该组合件(10、20、30、70、80、90)的文件列表。所记录的有关每个模块(14、45、50、96、98)信息的一部分是在建立清单时模块内容的散列。引用另一组合件(80,90)的组合件(70)计算被引用组合件(80,90)的清单(82、94)的散列。组合件清单(82、94)可以包括依赖信息,该信息是关于该组合件所依赖或引用的其他组合件的信息。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及计算机系统,尤其涉及一种用于在应用程序运行时确保其使用的组件完整性的系统和工具。
技术介绍
过去,应用程序由单个整体二进制文件组成。一旦编译程序产生了该应用程序,该应用程序就不会改变,直到重新编译和发送下一版本。操作系统、硬件和市场需求的变化都要依赖于等待下一版本完成和再次编译才能体现。现今,应用程序由若干组件构成一另外,在运行时这些组件中的许多还彼此链接。这些组件包括动态链接库(DLL)和其他可以由不同应用程序共享的文件。这些DLL在运行时链接的应用组件的表中罗列。操作系统将在加载程序搜索路径、应用程序目录、操作系统目录或用户指定路径中搜索动态链接库的名字,以便将DLL代码加载到存储器中执行。因为这些DLL可以由不同的应用程序共享,因此针对某个应用程序对DLL的改变会引起另一应用程序停止工作。而且,在操作系统(例如Microsoft的Windows操作系统)上运行的许多应用程序使用共享的操作系统组件。而在目前Microsoft的Windows操作系统平台上的管理员和开发者所面临的主要问题之一就是不能对一组确切的动态链接库和其他作为已部署的应用程序一部分来运行的文件进行控制。这在安装某个应用程序时,将其他应用程序所依赖的文件覆盖从而对这些程序产生影响的情况中非常常见。不幸地是,在Microsoft的Windows操作系统所提供的内建的支持中并没有建立一种机制在应用程序依赖的文件改变时进行检测。现在,还没有一种方法对用于构造和测试应用程序的组装进行跟踪。过去,如果组件改变且该改变并不影响应用程序的功能,那么该应用程序还是会继续运行。例如,如果组件的发布者对组件中的微小差错进行修正,该应用程序还是会运行且不出问题。同样,如果发布者进行版本升级且该组件是向下兼容的,则该应用程序也可以没有问题地继续运行。但如果发布者在对新版本进行与先前版本的向下兼容中出现差错,就无法保护应用程序避免组件发布者进行的版本升级。并且,如果该组件被不能信赖的第三方替换,这些代码的执行就有可能损坏应用程序所运行的软件和硬件环境。某些代码在组件名字中包括版本信息(例如fool.dll和kernel2.dll)。因为应用程序通过名字来引用这些组件,因此,名字的改变会引起应用程序终止其操作或使用驻留在系统中的旧版本组件。因此,本领域存在一种还未实现的需求,需要一种在运行期间确保和验证由应用程序所使用的组件完整性。还需要一种在运行时验证组件完整性的工具。
技术实现思路
本专利技术涉及一种为在运行期间由应用程序所使用的组件和组合件(例如包括元数据的组件)提供安全性并促进其完整性的系统和方法。本专利技术使用加密技术以简化组件之间的关系。管理员和开发者可以利用该系统和方法以便于使一组确切的动态链接库(DLL)和已经一起经过测试的其他文件能在它们被配置后实际上一起运行。组合件携带了版本信息,这些信息可以用于实施应用程序所定义的版本规则。运行时,将应用程序所请求的版本号与实际找到的那些组合件版本号进行比较。除了比较版本号外,本专利技术还基于加密散列(hash)提供更加严格的版本检验形式。可以为每个组合件提供一个清单,该清单含有组成该组合件的文件或模块的列表。记录有关每个文件的信息部分是在建立清单时文件内容的散列。该散列是在整个文件的内容上计算。发表清单的代码通常是编译程序或后链工具,它负责计算该散列。本专利技术使用多种散列算法,例如安全散列算法(sha-1)、MD5或任何在计算散列时可接受加密的散列算法。在本专利技术的一个方面,清单的创建程序可以规定该创建程序使用哪个散列算法。当组合件安装到全局组合件高速缓冲存储器中时,且在每次从盘中加载文件时,可以验证文件的散列。上述文件散列有助于可配置单元(例如组合件)的完整性。然而,大多数应用程序是由几个组合件构成。因此,为确保整个应用程序的完整性,就必须不仅要确认各个组合件都没有改变,还要确认运行时该应用程序所使用的该组组合件与先前建立和测试的是同一组组合件。在本专利技术的另一方面,引用另一组合件的一个组合件对被引用的组合件的清单散列进行计算。组合件清单可以包括依赖信息,这些信息是有关于该组合件所依赖或引用的其他组合件的信息。部分作为依赖信息而存储的信息是被引用的组合件清单的散列。被引用的组合件清单的散列是充分的,因为该清单依此包括其所有组成文件的散列。通过这些文件的散列,有关所引用的组合件清单的散列可以通过发布该清单的工具来计算。根据本专利技术的一个方面,提供了一种方法,用于促进在运行期间可由应用程序配置的组合件的完整性。为组合件提供了一种清单,它包含了组成该组合件的模块的列表,并且为该清单提供了模块列表中至少一个模块的内容散列。本专利技术的另一方面涉及一种用于促进在运行期间应用程序可使用的多个组合件的完整性。为组合件提供了一种清单,它包含了该组合件所依赖的被引用组合件的列表,并且为该清单提供了被引用组合件列表中至少一个被引用组合件的清单散列。在本专利技术的又一方面,提供了一种计算机可读媒体,具有至少一个运行时应用程序可使用的计算机可执行组件。该计算机可读媒体包括具有清单的组合件,该清单含有组成该组合件的模块列表以及模块列表中至少一个模块的内容散列。本专利技术的另一方面涉及一种计算机可读媒体,具有至少一个运行时应用程序可使用的计算机可执行组件。该计算机可读媒体包括具有清单的组合件,该清单含有该组合件所依赖的至少一个被引用组合件的列表以及至少一个被引用组合件清单的内容散列。根据本专利技术的另一方面,提供了一种系统,用于促进在运行期间由应用程序所使用的组合件的完整性。该系统包括适用于提供组合件清单的第一组件。该清单具有组成组合件的模块列表。该系统还包括适用于提供具有模块列表中至少一个模块的散列清单的第二组件。在本专利技术的另一方面,提供了一种系统,用于促进在运行期间由应用程序所使用的组合件的完整性。该系统包括适用于提供组合件清单的第一组件。该清单包括至少一个被引用组合件。该系统还包括第二组件,适用于提供具有该至少一个被引用组合件的清单散列的清单。本专利技术的另一方面涉及一种系统,用于促进在运行期间由应用程序所使用的组合件的完整性。该系统包括适用于将具有相关组合件列表的清单与一个组合件相联系的装置,以及用于提供具有这些相关组合件中一个清单或至少一个组合件清单的散列。为了实现前述及相关目标,本专利技术包括了随后将完整描述并在权利要求书中特别指出的这些特征。下面的描述和附图详细阐述了本专利技术的某个说明实施例。这些实施例是指导性的,但也可以在本专利技术的原理中存在一些变化,本专利技术包括所有这样的实施例和其等价物。通过结合附图的下述详细描述,本专利技术的其他目标、优势和新颖特征将显而易见。附图说明图1说明了一种组合件框图,该组合件引用了具有如本专利技术一方面所述多个模块的一个组合件。图2说明了具有如本专利技术一方面所述多个模块的一个组合件的详细框图。图3说明了一种组合件的详细框图,该组合件引用了如本专利技术一方面所述多个组合件。图4说明根据本专利技术环境的计算机系统框图。图5说明根据本专利技术的环境详细框图。图6说明一种特定方法论的流程图,该方法用于促进如本专利技术一方面的组合件的完整性。图7说明另一种方法论的流程图,该方法用于促进如本专利技术一方面的组合件的完整性。具体实施例方本文档来自技高网
...

【技术保护点】
一种促进在运行期间由应用程序可使用的组合件的完整性的方法,其特征在于,包括下述步骤:    为组合件配置清单,该清单含有组成该组合件的模块列表;以及    为清单配置所述模块列表中至少一个模块内容的散列。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:S帕塔撒拉蒂SJ普拉斯齐纳CT辛克莱
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

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

1