内存完整性检查的制作方法

文档序号:9872422阅读:618来源:国知局
内存完整性检查的制作方法【专利说明】【
背景技术
】[0001]操作系统(OS)通常包括一套软件(S卩,机器可读指令),该套软件管理计算机硬件资源并且为计算机程序提供公共服务。OS通常包括加载器,该加载器负责加载计算机程序。例如,加载器将计算机程序置于内存中,并且进一步准备该计算机程序以供执行。加载器通常通过以下方式操作:将包含该计算机程序指令的可执行文件的内容读到内存中,并且随后实施其它准备性工作以准备该可执行文件以供运行。例如,加载器通常通过以下方式准备计算机程序代码以供执行:重新安置内存地址以使这些内存地址在对另一模块(如,共享库)中的计算机程序代码进行函数调用时指向正确位置。加载器还在计算机程序代码被设置在其中的内存页面上设置保护标志。一旦完成加载,OS就可以通过将控制转移至被加载的计算机程序代码来启动计算机程序。【附图说明】[0002]本公开的特征是通过示例图示的并且不局限于下面的图,在图中相同的附图标记表示相同的元件,其中:[0003]图1图示根据本公开的示例的包括内存完整性检查装置的环境;[0004]图2图示根据本公开的示例的用于实现内存完整性检查装置的方法;[0005]图3图示根据本公开的示例的用于实现内存完整性检查装置的方法的其它细节;以及[0006]图4图示根据本公开的示例的可以用于实现内存完整性检查装置的计算机系统。【具体实施方式】[0007]为了简洁和说明目的,主要参照示例描述本公开。在下面的描述中,为了提供对本公开的深入理解,陈述许多特定细节。但是,将显而易见的是,可以在没有对这些具体细节限制的条件下实施本公开。在其它例子中,为了不会不必要地使本公开模糊,未详细地描述一些方法和结构。[0008]在本公开全文中,术语“一”和“一种”的目的在于表示至少一个特定元件。如本文所用的,术语“包括”意味着包括但不限于,术语“包含”意味着包括但不限于。术语“基于”意味着至少部分地基于。[0009]计算机程序代码可以由授权的用户或未授权的用户加载并且置于内存中。例如,未授权的用户可能为了恶意目的而安装计算机程序代码。为了确保计算机程序代码是授权的用户安装的,计算机程序代码的完整性可以基于加载器和OS的正确运行和控制。可选地或此外,加载并且置于内存中的计算机程序代码的完整性可以基于负责内存页面表转换机制的OS虚拟内存组件的正确操作和控制。可以用其它安全特征扩展加载器的功能,以使加载器针对可能的病毒或恶意软件签名而检查所加载的每段计算机程序代码,并且确定关联的计算机程序是否安全。如果目标指令集支持,那么加载器可以将每段可执行的计算机程序代码置于不可变的页面(例如,被标记为“可执行的(executable)”、"不可写的(non-歡";^31316)”或“不可读的(11011-1^3(^1316)”)中。此外,加载器可以确认所有其它内存页面被标记为“不可执行的(Non-eXecutable)”(例如,数据页面)。与加载器的功能有关的这些方面可以确保可信的计算机程序代码在计算机上运行。此外,自修改计算机程序代码可能需要请求用于写代码页面的权限,使得加载器和OS具有再检查的机会。[0010]前述确保计算机程序代码完整性的技术的鲁棒性可能与加载器和OS的页面转换机制区分和隔离得怎么样有关。如果OS的页面转换机制和加载器被破坏,那么计算机程序代码的完整性可能受到损坏。例如,加载器和OS的页面转换机制可能由对页面权限进行未授权改变的未授权实体而破坏,或通过破坏加载机制以注入未授权的代码(例如,恶意软件)而破坏。因此,前述确保计算机程序代码完整性的技术的鲁棒性可以基于OS的完全控制和信任。在管理器位于硬件和虚拟来宾OS之间的情况下,可能增加更多挑战来确保前述确保计算机程序代码完整性的技术的鲁棒性,因为可能出现多个层次的计算机程序代码执行,并且硬件可能缺少用于捕获所有可能组合的保护支持。[0011]根据示例,本文公开内存完整性检查装置和用于实现该内存完整性检查装置的方法。本文公开的装置和方法大体地可以提供基于同步验证和/或基于异步验证来检查具有活跃内存能力的系统中计算机程序代码的完整性。通常,计算机程序代码的完整性检查可以切换至在内存子系统中嵌入的活跃媒介控制器。与受限于软件(即,机器可读指令)的完整性检查技术相比,本文公开的装置和方法可以消除信任OS的需要。此外,本文公开的装置和方法可以减少在软件中持续地检查计算机程序代码的性能损耗影响。本文公开的装置和方法还可以提供对位于可能被感染的OS之外的计算机程序代码的完整性的安全的且鲁棒的检查。由于本文公开的装置和方法提供对可能被感染的OS之外的计算机程序代码的完整性的安全的且鲁棒的检查,所以本文公开的装置和方法不会被root-kit禁用或受root-kit干涉。[0012]如下面更详细地描述的,本文公开的装置和方法可以提供包括与活跃内存关联的活跃内存元件的计算系统的实现。活跃内存可以包括用于自主地检查内存范围以避免安全问题的程序。连续的物理内存可以在多个内存库(memorybank)之间交错,并且可以使用关联哈希(associativehash),使得与内存的单独内存子系统关联的每个单独的媒介控制器可以实施由该媒介控制器控制的不连续内存范围的独立哈希。可执行程序的加载器可以指示活跃内存元件(例如,媒介控制器和关联的媒介控制器)针对安全哈希实施哈希检查。活跃媒介控制器可以自动地(例如,没有人工干预的情况下)并且持续地针对例如病毒或恶意软件的一组已知未授权的关联哈希检查每个被写的内存范围AS可以向活跃媒介控制器提供加载可执行的计算机程序代码的地址范围。因此,活跃媒介控制器可以限制对已知包含可执行的计算机程序代码(即,没有数据)的范围的扫描。OS可以向活跃媒介控制器提供与已知的授权的安全例程对应的函数指针的列表和批准的物理地址值的列表。函数指针可以被转换成物理地址。活跃媒介控制器可以检查函数指针的内存内容,并且可以在函数指针涉及已知的授权的函数时进一步避免扫描目标范围。[0013]图1图示根据本公开的示例的包括内存完整性检查装置102的环境100。参照图1,内存完整性检查装置102的环境100被描绘为包括中央处理单元(CPU)插槽104,中央处理单元(CPU)插槽104包含通过内存控制器110与内存108通信的多个CPU核106。在图1的示例中,内存控制器110被图示为包括内存控制器112(即,内存控制器(0))和内存控制器114(即,内存控制器(I))的双通道内存控制器。可选地,内存控制器110可以包括单通道内存控制器或多通道内存控制器。包括内存控制器112和内存控制器114的双通道内存控制器110可以负责发布对内存108的访问。内存108可以包括内存子系统116和内存子系统118,内存子系统116和内存子系统118包括分别与内存控制器112和内存控制器114对应的媒介控制器。例如,媒介控制器120(即,媒介控制器(O))可以对应于内存控制器112,并且媒介控制器122(即,媒介控制器(I))可以对应于内存控制器114。媒介控制器120和媒介控制器122可以嵌入内存108的内存子系统116和内存子系统118中。此外,媒介控制器120和媒介控制器122可以处理媒介特定特征,并且支持高级活跃特征。例如,活跃媒介控制器可以自主地执行由媒介控制器控制的内存段上由OS124编程的功能。OS124可以包括加载器126,加载器126负责将计算机程序代码128加载到内存108中。在图1的示例中,媒介控制器120可以寻址内存页面0-3,并且媒介控制器122可以寻址内存页面4-7。[0014]一般地,内存完整性检查装置102可以基于同步验证和/或异步验证,评估包括具有活跃内存能力的环境100的当前第1页1 2 3 4 
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1