[发明专利]高效的文件散列标识符计算有效
申请号: | 200880110492.2 | 申请日: | 2008-09-22 |
公开(公告)号: | CN101809566A | 公开(公告)日: | 2010-08-18 |
发明(设计)人: | E·C·佩林;R·V·普迪派蒂 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F17/00 | 分类号: | G06F17/00 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 张欣;钱静芳 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 高效 文件 标识符 计算 | ||
背景
确保在安装在计算系统上的文件,尤其是可执行文件或可执行文件使 用的资源在被执行或加载到存储器中之前得到验证变得越来越相关和有价 值。例如,这阻止执行诸如病毒等恶意软件,以及阻止IT管理员不期望运 行的应用程序的运行。验证确保只有被允许在机器上运行的程序才被执行, 从而使得平台安全得多。
实现验证的方式之一是文件散列化,其中在安装时,软件的开发者或 操作系统上的组件使用安全散列来对该文件的内容进行散列化。该散列被 存储在防篡改位置中。在执行或加载该文件时,文件内容被再次散列化并 且与所存储的该文件的散列相比较(或各所允许文件的散列集合)。如果 计算得到的散列值不与允许的散列相匹配,则该文件已经以某种方式改变 (例如,被篡改),或是不允许运行的文件,藉此可阻止其加载到存储器 中并且因而可阻止其执行。注意,另一验证方法是确保代码需要由例如X、 Y、或Z签名,藉此验证过程的一个步骤是散列(产生H),并且密码签名 (X应用于H的私钥)证明X签署了该代码。
文件散列化(如在使用散列规则时用于验证)的大量消费者可具有对 系统的用户可注意到的显著的负面性能影响。这是因为所加载的任何可执 行文件(包括动态加载(链接)库(dll))都需要被散列化,并在允许散 列的列表中查找计算得到的散列。
计算散列在许多方面都是成本高昂的,包括即使不是全部也是大部分 文件都需要从盘中读出以使其被散列化。此外,内容需要被加载到存储器 中并且这增加了存储器分页压力。一旦加载,存储器内容的实际散列化也 是计算密集的。此外,对于给定二进制,散列化操作可能重复发生,因为 该二进制可被加载到许多进程中(例如,微软Windows操作系统中的 ntdll.dll、kernel32.dll、advapi32.dll、user32.dll、shell32.dll)。
概述
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的 一些代表性概念。本概述并不旨在标识出所要求保护的主题的关键特征或 必要特征,也不旨在用于以限制所要求保护的主题的范围的任何方式来使 用。
简言之,此处描述的主题的各方面针对一种将高速缓存的文件的散列 值与所维护的每一文件的状态数据相关联地维护的技术,其中状态数据代 表该文件的内容在计算该散列值时的状态。例如,在其中文件系统维护对 文件的改变的日志并且每一改变与一更新序列号相关联的计算环境中,状 态数据包括该文件的更新序列号和标识日志实例的日志标识符。
对文件的散列值的请求通过确定是否为该文件维护了高速缓存的散列 值来处理。如果维护了散列值并且相关联的所维护的状态数据与该文件的 当前状态的状态数据相匹配,则知道自该散列计算时间以来文件内容未被 改变,藉此响应于该请求返回该文件的高速缓存的散列值。否则,为文件 计算散列值并返回。计算得到的散列值随后可被高速缓存并与对应于文件 内容在该散列计算时的状态的状态数据相关联。
在一个方面,散列数据存储包含各文件条目(例如,记录),其中每 一文件具有用于散列及相关联的状态数据的条目(例如,在相关联的字段 中)。耦合到散列数据存储的散列返回机制处理对文件的散列值的请求, 包括访问散列数据存储以寻找每一这样的请求。当散列返回机制在散列数 据存储中定位文件条目时,该散列返回机制相对于该文件的当前状态数据 来评估与该文件相关联的状态数据。例如,该比较可以分别是所维护的数 据的更新序列号和日志标识符以及当前文件状态。如果该比较指示号码和 标识符相等,则文件内容自散列时间以来未被改变,并且响应于该请求来 返回该文件的所维护的散列值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200880110492.2/2.html,转载请声明来源钻瓜专利网。