CN105637486B - 内存完整性检查 - Google Patents
内存完整性检查 Download PDFInfo
- Publication number
- CN105637486B CN105637486B CN201380080188.9A CN201380080188A CN105637486B CN 105637486 B CN105637486 B CN 105637486B CN 201380080188 A CN201380080188 A CN 201380080188A CN 105637486 B CN105637486 B CN 105637486B
- Authority
- CN
- China
- Prior art keywords
- memory
- computer program
- program code
- media controller
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
根据示例,内存完整性检查可以包括:接收计算机程序代码,以及使用加载器将该计算机程序代码加载到内存中。内存完整性检查可以进一步包括:通过选择性地实现同步验证和/或异步验证,验证该计算机程序代码的完整性。该同步验证可以基于与该计算机程序代码的加载关联的加载器安全特征。此外,异步验证可以基于与包含该计算机程序代码的内存关联的媒介控制器。
Description
背景技术
操作系统(OS)通常包括一套软件(即,机器可读指令),该套软件管理计算机硬件资源并且为计算机程序提供公共服务。OS通常包括加载器,该加载器负责加载计算机程序。例如,加载器将计算机程序置于内存中,并且进一步准备该计算机程序以供执行。加载器通常通过以下方式操作:将包含该计算机程序指令的可执行文件的内容读到内存中,并且随后实施其它准备性工作以准备该可执行文件以供运行。例如,加载器通常通过以下方式准备计算机程序代码以供执行:重新安置内存地址以使这些内存地址在对另一模块(如,共享库)中的计算机程序代码进行函数调用时指向正确位置。加载器还在计算机程序代码被设置在其中的内存页面上设置保护标志。一旦完成加载,OS就可以通过将控制转移至被加载的计算机程序代码来启动计算机程序。
附图说明
本公开的特征是通过示例图示的并且不局限于下面的图,在图中相同的附图标记表示相同的元件,其中:
图1图示根据本公开的示例的包括内存完整性检查装置的环境;
图2图示根据本公开的示例的用于实现内存完整性检查装置的方法;
图3图示根据本公开的示例的用于实现内存完整性检查装置的方法的其它细节;以及
图4图示根据本公开的示例的可以用于实现内存完整性检查装置的计算机系统。
具体实施方式
为了简洁和说明目的,主要参照示例描述本公开。在下面的描述中,为了提供对本公开的深入理解,陈述许多特定细节。但是,将显而易见的是,可以在没有对这些具体细节限制的条件下实施本公开。在其它例子中,为了不会不必要地使本公开模糊,未详细地描述一些方法和结构。
在本公开全文中,术语“一”和“一种”的目的在于表示至少一个特定元件。如本文所用的,术语“包括”意味着包括但不限于,术语“包含”意味着包括但不限于。术语“基于”意味着至少部分地基于。
计算机程序代码可以由授权的用户或未授权的用户加载并且置于内存中。例如,未授权的用户可能为了恶意目的而安装计算机程序代码。为了确保计算机程序代码是授权的用户安装的,计算机程序代码的完整性可以基于加载器和OS的正确运行和控制。可选地或此外,加载并且置于内存中的计算机程序代码的完整性可以基于负责内存页面表转换机制的OS虚拟内存组件的正确操作和控制。可以用其它安全特征扩展加载器的功能,以使加载器针对可能的病毒或恶意软件签名而检查所加载的每段计算机程序代码,并且确定关联的计算机程序是否安全。如果目标指令集支持,那么加载器可以将每段可执行的计算机程序代码置于不可变的页面(例如,被标记为“可执行的(eXecutable)”、“不可写的(non-Writable)”或“不可读的(non-Readable)”)中。此外,加载器可以确认所有其它内存页面被标记为“不可执行的(Non-eXecutable)”(例如,数据页面)。与加载器的功能有关的这些方面可以确保可信的计算机程序代码在计算机上运行。此外,自修改计算机程序代码可能需要请求用于写代码页面的权限,使得加载器和OS具有再检查的机会。
前述确保计算机程序代码完整性的技术的鲁棒性可能与加载器和OS的页面转换机制区分和隔离得怎么样有关。如果OS的页面转换机制和加载器被破坏,那么计算机程序代码的完整性可能受到损坏。例如,加载器和OS的页面转换机制可能由对页面权限进行未授权改变的未授权实体而破坏,或通过破坏加载机制以注入未授权的代码(例如,恶意软件)而破坏。因此,前述确保计算机程序代码完整性的技术的鲁棒性可以基于OS的完全控制和信任。在管理器位于硬件和虚拟来宾OS之间的情况下,可能增加更多挑战来确保前述确保计算机程序代码完整性的技术的鲁棒性,因为可能出现多个层次的计算机程序代码执行,并且硬件可能缺少用于捕获所有可能组合的保护支持。
根据示例,本文公开内存完整性检查装置和用于实现该内存完整性检查装置的方法。本文公开的装置和方法大体地可以提供基于同步验证和/或基于异步验证来检查具有活跃内存能力的系统中计算机程序代码的完整性。通常,计算机程序代码的完整性检查可以切换至在内存子系统中嵌入的活跃媒介控制器。与受限于软件(即,机器可读指令)的完整性检查技术相比,本文公开的装置和方法可以消除信任OS的需要。此外,本文公开的装置和方法可以减少在软件中持续地检查计算机程序代码的性能损耗影响。本文公开的装置和方法还可以提供对位于可能被感染的OS之外的计算机程序代码的完整性的安全的且鲁棒的检查。由于本文公开的装置和方法提供对可能被感染的OS之外的计算机程序代码的完整性的安全的且鲁棒的检查,所以本文公开的装置和方法不会被root-kit禁用或受root-kit干涉。
如下面更详细地描述的,本文公开的装置和方法可以提供包括与活跃内存关联的活跃内存元件的计算系统的实现。活跃内存可以包括用于自主地检查内存范围以避免安全问题的程序。连续的物理内存可以在多个内存库(memory bank)之间交错,并且可以使用关联哈希(associative hash),使得与内存的单独内存子系统关联的每个单独的媒介控制器可以实施由该媒介控制器控制的不连续内存范围的独立哈希。可执行程序的加载器可以指示活跃内存元件(例如,媒介控制器和关联的媒介控制器)针对安全哈希实施哈希检查。活跃媒介控制器可以自动地(例如,没有人工干预的情况下)并且持续地针对例如病毒或恶意软件的一组已知未授权的关联哈希检查每个被写的内存范围。OS可以向活跃媒介控制器提供加载可执行的计算机程序代码的地址范围。因此,活跃媒介控制器可以限制对已知包含可执行的计算机程序代码(即,没有数据)的范围的扫描。OS可以向活跃媒介控制器提供与已知的授权的安全例程对应的函数指针的列表和批准的物理地址值的列表。函数指针可以被转换成物理地址。活跃媒介控制器可以检查函数指针的内存内容,并且可以在函数指针涉及已知的授权的函数时进一步避免扫描目标范围。
图1图示根据本公开的示例的包括内存完整性检查装置102的环境100。参照图1,内存完整性检查装置102的环境100被描绘为包括中央处理单元(CPU)插槽104,中央处理单元(CPU)插槽104包含通过内存控制器110与内存108通信的多个CPU核106。在图1的示例中,内存控制器110被图示为包括内存控制器112(即,内存控制器(0))和内存控制器114(即,内存控制器(1))的双通道内存控制器。可选地,内存控制器110可以包括单通道内存控制器或多通道内存控制器。包括内存控制器112和内存控制器114的双通道内存控制器110可以负责发布对内存108的访问。内存108可以包括内存子系统116和内存子系统118,内存子系统116和内存子系统118包括分别与内存控制器112和内存控制器114对应的媒介控制器。例如,媒介控制器120(即,媒介控制器(0))可以对应于内存控制器112,并且媒介控制器122(即,媒介控制器(1))可以对应于内存控制器114。媒介控制器120和媒介控制器122可以嵌入内存108的内存子系统116和内存子系统118中。此外,媒介控制器120和媒介控制器122可以处理媒介特定特征,并且支持高级活跃特征。例如,活跃媒介控制器可以自主地执行由媒介控制器控制的内存段上由OS 124编程的功能。OS 124可以包括加载器126,加载器126负责将计算机程序代码128加载到内存108中。在图1的示例中,媒介控制器120可以寻址内存页面0-3,并且媒介控制器122可以寻址内存页面4-7。
一般地,内存完整性检查装置102可以基于同步验证和/或异步验证,评估包括具有活跃内存能力的环境100的系统中的计算机程序代码128的完整性。对于同步验证,内存完整性检查装置102可以在加载器126中实现安全特征130,以评估计算机程序代码128的完整性。对于异步验证,内存完整性检查装置102可以使用媒介控制器120和/或媒介控制器122来评估计算机程序代码128的完整性。
如本文描述的,装置102的特定元件可以通过使用存储在非暂时性计算机可读介质上的机器可读指令来实现。此外或可选地,装置102的特定元件可以通过使用硬件或机器可读指令和硬件的结合来实现。
参照图1,对于内存完整性检查装置102的环境100,与计算机程序代码128对应的单个物理内存页面实质上可以被分割成分离的物理内存页面。例如,当在多个内存通道之间交错内存以改善性能时,单个物理内存页面可以实质上被分割成分离的物理内存页面。对于图1的示例,如果内存108以64B的粒度(例如,缓存线)交错,那么通道(0)媒介控制器(0)(即,媒介控制器120)可以拥有内存范围[0:63]、[128:191]等。此外,通道(1)媒介控制器(1)(即,媒介控制器122)可以拥有内存范围[64:127]、[192:255]等。
一般地,内存完整性检查装置102可以使用基于内存页面的哈希运算来评估计算机程序代码128的完整性。由于图1的示例中图示的媒介控制器120和媒介控制器122中的每个可能看不到连续的物理范围,内存完整性检查装置102可以独立地对内存范围进行哈希,并且合并这些范围。由于连续地址块可能不存储在内存108上的连续区域中,所以内存完整性检查装置102可以使用关联哈希函数(H),该函数包括以下特性:
H(H(c1,c2),H(c3))=H(c1,H(c2,c3)) 等式(1)
H(c1,H(c2,c3))=H(c1,c2,c3) 等式(2)
对于等式(1)和等式(2),c1、c2和c3可以表示例如与图1的示例中的内存页面0-3和内存页面4-7关联的内存108的块(即,范围)。
如本文公开的,内存完整性检查装置102可以基于同步验证和/或基于异步验证,评估包括环境(如具有活跃内存能力的环境100)的系统中的计算机程序代码128的完整性。同步验证一般地可以包括前摄性的内存完整性检查,并且异步验证一般可以包括反应性的内存完整性检查。对于同步验证,内存完整性检查装置102可以信任加载器126,而不信任OS124。对于同步验证,内存完整性检查装置102可以包括包含安全特征130的加载器126,以评估计算机程序代码128的完整性。
根据安全特征130的安全特征,加载器126可以评估所加载的计算机程序代码128的每个要素。例如,加载器126可以检查与计算机程序代码128关联的签名。例如,加载器126可以计算哈希,并且将该哈希与授权的签名列表132(例如,白名单)作比较。
根据安全特征130的另一安全特征,加载器126可以计算并更新计算机程序代码128被加载到其中的物理块(例如,内存页面)的哈希。物理块的哈希的计算和更新可以被实施作为加载过程的一部分。例如,物理块的哈希的计算和更新可以与加载过程同步地实施。例如,物理块的哈希的计算和更新可以在地址被固定(即,被重新安置)时实施。
根据安全特征130的另一安全特征,一旦确定计算机程序代码128是安全的,加载器126就可以向覆盖被更新的物理范围的所涉及的内存子系统116和/或内存子系统118的所有内存控制器发送多个对(即,{哈希,范围})。加载器126还可以指示内存控制器112和/或内存控制器114持续地检查内存页面哈希仍未改变。因此,可执行的程序的加载器126可以指示活跃内存元件(例如,内存控制器112和/或内存控制器114,并且因此媒介控制器120和/或媒介控制器122)实施针对安全哈希(例如,安全程序的白名单)的哈希检查。
根据安全特征130的另一安全特征,当OS 124(例如,为了循环目的)替换“安全”的内存页面之一时,OS 124可以向媒介控制器120和/或媒介控制器122发送命令,以不再检查特定页面范围并且去除之前的哈希。如果加载器126再次看到相同的程序(即,计算机程序代码128),那么加载器126可以将该页面范围加载到不同的物理内存页面中,因此产生分离的安全哈希。
对于包括加载器126(包括安全特征130)的同步验证,同步验证可以识别从未授权的OS代码或其它未知源产生的对计算机程序代码128的改变。对于安装在未被检查和未被哈希的内存页面中的任何信息,由于这样的信息的识别可能需要保护所有其它内存页面,所以同步验证可能不识别这样的信息,因此信任OS 124。对于同步验证,OS 124可以拒绝对未由加载器126加载的并因此不信任的计算机程序代码设置执行权。因此,加载器126可以对加载的内存页面署名,以证明这些内存页面已由合法许可机构(如加载器126)加载。OS124或分离的可信单元可以扫描这些内存页面,以识别已经违反该不变量的内存页面(即,未由加载器126署名)。
对于频繁地调用并短暂运行的程序(例如,“ls”),由于这样的程序可能驻留得不足以进行完整性扫描那么久,所以这样的程序也不可能驻留得足以被覆写那么久。加载器126可以在加载这样的程序时验证这样的程序完整性。由加载器126进行的初始完整性检查可以防止加载这样的程序的未授权的(例如,有木马的)版本去执行。
对于异步验证,内存完整性检查装置102可能不信任加载器126或OS 124。一般地,内存完整性检查装置102可以使用活跃内存元件(例如,内存控制器112和/或内存控制器114,并且因此使用媒介控制器120和/或媒介控制器122),其中活跃内存108可以包括用于自主地检查内存范围以避免安全问题的程序。内存完整性检查装置102可以异步地并持续地评估在内存108内设置的计算机程序代码128的每段代码(或数据)。对于异步验证,媒介控制器120和/或媒介控制器122可以用于检查未授权的(例如,坏的)签名,例如每当可执行的内存页面被写至内存108时检查未授权的签名。检查未授权的签名可以包括:解释(account for)多个交错的内存芯片和不连续的物理内存页面。例如,连续的物理内存可以在多个内存库之间交错,并且可以使用关联的哈希(如上面结合等式(1)和等式(2)讨论的),使得(单独的内存子系统116、118中每个内存子系统中)每个单独的媒介控制器可以实施其控制的不连续内存范围的独立哈希。异步验证可以用于识别任何未授权的代码。此外,异步验证可以作为与加载器126和/或OS 124相比的分离的操作来实施和管理。
对于异步验证,内存完整性检查装置102可以使用媒介控制器120和/或媒介控制器122来实施哈希检查,并且进一步识别与该哈希检查关联的所有未授权的签名。例如,媒介控制器120和/或媒介控制器122可以确保被写至内存108的任何信息与加载器126已确定安全的计算机程序代码的哈希相匹配。与计算机程序代码128关联的程序,可以在没有来自与异步验证有关的媒介控制器120和/或媒介控制器122的操作的任何干扰的情况下运行。可以与内存控制器110共享未授权的签名列表134,或可以用内存控制器110复制未授权的签名列表134。此外,可以以预定的间隔更新未授权的签名列表134。活跃的媒介控制器120和/或媒介控制器122可以自动地(例如,没有人工干预)并且持续地针对(例如病毒或恶意软件的)未授权的签名列表134中一组已知的未授权的关联哈希检查每个被写的内存范围。
一般地,内存完整性检查装置102可以使用媒介控制器120和/或媒介控制器122来识别特定可执行文件(即,可执行的计算机程序代码)在加载到内存108中时被分配到哪儿。对于例如基于位置无关代码(PIC)、共享的可重新安置的库或地址空间布局随机化(ASLR)的操作系统,特定可执行文件的位置可能难以确定或可能不可预知。在这样的情况下,内存完整性检查装置102可以在活跃的媒介控制器120和/或媒介控制器122处使用与可执行代码的位置有关的来自OS 124的提示。因此,OS 124可以向活跃的媒介控制器120和/或媒介控制器122提供可执行的计算机程序代码被加载在哪儿的地址范围。活跃的媒介控制器120和/或媒介控制器122因此可以限制对已知包含可执行的计算机程序代码(即,无数据)的范围的扫描。可选地,媒介控制器120和/或媒介控制器122可以例行地扫描(例如,在后台)内存108,以定位未授权的签名。由于可以在后台实施扫描,所以该扫描可以与其它扫描功能结合。例如,该扫描可以与非易失性存储器(NVM)情况中的磨损平衡(wear-leveling)结合,或与错误检查结合。
对于内存完整性检查装置102的动态内核完整性保护,可以从基线授权的(例如,好的)内核中发展出特定内核函数指针的列表。例如,该特定内核函数指针的列表可以包括文件系统打开、读和写调用。内存完整性检查装置102的动态内核完整性保护还可以包括生成内核函数指针可以合理指向(例如,指向内核函数指针的ext3实现)的值(例如,内存中的地址)的授权的列表。由于内核恶意软件一般可能通过将内核函数指针重定向至恶意代码而不是合理目标来操作,所以与内存108中的已知的授权的内核函数指针对应的指针地址和授权的值136的列表可以由媒介控制器120和/或媒介控制器122接收。内存完整性检查装置102可以使用媒介控制器120和/或媒介控制器122来异步地检查:这些指针的内存地址的内容包含该特定指针地址的与指针地址和授权的值136的列表中的一个匹配的值。因此,OS124可以向活跃的媒介控制器120和/或媒介控制器122提供与已知的授权的安全例程对应的函数指针的列表和物理地址值的批准的列表(即,指针地址和授权的值136的列表)。内核函数指针可以被转换成物理地址。活跃的媒介控制器120和/或媒介控制器122可以检查函数指针的内存内容,并且可以进一步避免在函数指针指已知的授权的函数时扫描目标范围。
图2和图3分别图示用于实现内存完整性检查装置102的方法200和方法300的流程图,上面详细描述了内存完整性检查装置102的构造。方法200和方法300可以通过示例而非通过限制在图1的内存完整性检查装置102上实现。方法200和方法300可以在其它装置中实施。
参照图2,对于方法200,在框202处,该方法可以包括:接收计算机程序代码。例如,参照图1,该方法可以包括接收计算机程序代码128。
在框204处,该方法可以包括:使用加载器将计算机程序代码加载到内存中。例如,参照图1,OS 124可以包括负责将计算机程序代码128加载到内存108中的加载器126。
在框206处,该方法可以包括:通过选择性地实现同步验证和/或异步验证,验证计算机程序代码的完整性。同步验证可以基于与计算机程序代码的加载关联的加载器安全特征。此外,异步验证可以基于与包含计算机程序代码的内存关联的媒介控制器。例如,参照图1,对于同步验证,内存完整性检查装置102可以在加载器126中实现安全特征130,以评估计算机程序代码128的完整性。对于异步验证,内存完整性检查装置102可以使用媒介控制器120和/或媒介控制器122来评估计算机程序代码128的完整性。
根据示例,实现同步验证可以进一步包括:评估与计算机程序代码128关联的签名。根据示例,实现同步验证可以进一步包括:计算与计算机程序代码128关联的哈希,以及将该哈希与授权的签名列表132作比较。根据示例,实现同步验证可以进一步包括:计算与计算机程序代码128关联的哈希,以及使用所计算的哈希来更新与计算机程序代码128关联并且加载到内存108中的内存页面的哈希。根据示例,实现同步验证可以进一步包括:向内存控制器110发送包括所计算的哈希和内存页面的关联范围的对(即,{哈希,范围}),以及指示内存控制器110检测与内存页面的关联范围有关的所计算的哈希的改变。根据示例,实现同步验证可以进一步包括:确定OS 124已在什么时间替换了与计算机程序代码128关联的安全内存页面,并且响应于确定OS 124已替换了与计算机程序代码128关联的安全内存页面,指示媒介控制器(例如,媒介控制器120和/或媒介控制器122)停止检查与已替换的安全内存页面关联的内存页面范围,并且去除之前的与已替换的安全内存页面关联的哈希。
根据示例,媒介控制器可以包括与多个活跃的内存控制器(例如,内存控制器112和/或内存控制器114)关联的多个活跃的媒介控制器(例如,媒介控制器120和/或媒介控制器122)。
根据示例,实现异步验证可以进一步包括:使用与内存108关联的媒介控制器(例如,媒介控制器120和/或媒介控制器122)来识别与计算机程序代码128关联的未授权的签名。根据示例,使用与内存108关联的媒介控制器(例如,媒介控制器120和/或媒介控制器122)来识别与计算机程序代码128关联的未授权的签名可以进一步包括:将与计算机程序代码128关联的签名与未授权的签名列表134作比较。根据示例,使用与内存108关联的媒介控制器(例如,媒介控制器120和/或媒介控制器122)来识别与计算机程序代码128关联的未授权的签名可以进一步包括:解释多个交错的内存芯片以及与计算机程序代码128关联的不连续的内存页面。根据示例,解释多个交错的内存芯片以及与计算机程序代码128关联的不连续的内存页面可以进一步包括:使用关联哈希运算(例如,等式(1)和等式(2))来计算与计算机程序代码128关联的不连续的内存页面的独立哈希。根据示例,实现异步验证可以进一步包括:在媒介控制器(例如,媒介控制器120和/或媒介控制器122)处从OS 124接收信息,该信息相关于与内存108中的计算机程序代码128有关的地址范围的位置。根据示例,实现异步验证可以进一步包括通过以下步骤将异步验证用于内核完整性保护:确定多个授权的内核函数指针来、使用授权的内核函数指针来生成授权的内核函数指针指向的值的授权的列表(例如,指针地址和授权的值136的列表)、向媒介控制器(例如,媒介控制器120和/或媒介控制器122)发送该值的授权的列表、以及使用媒介控制器来确定内核的指针的内存地址的内容包含与该值的授权的列表匹配的值。
参照图3,对于方法300,在框302处,该方法可以包括:接收计算机程序代码。例如,参照图1,该方法可以包括:接收计算机程序代码128。
在框304处,该方法可以包括:使用加载器将计算机程序代码加载到内存中。例如,参照图1,OS 124可以包括负责将计算机程序代码128加载到内存108中的加载器126。
在框306处,该方法可以包括:通过选择性地实现同步验证和/或异步验证,验证计算机程序代码的完整性。同步验证可以基于与加载器关联的加载器安全特征,并且异步验证可以基于与内存关联的媒介控制器。例如,参照图1,对于同步验证,内存完整性检查装置102可以在加载器126中实现安全特征130,以评估计算机程序代码128的完整性。对于异步验证,内存完整性检查装置102可以使用媒介控制器120和/或媒介控制器122来评估计算机程序代码128的完整性。
在框308处,该方法可以包括:实施异步验证作为与加载器和OS的操作相比的分离的操作。例如,参照图1,该方法可以包括:实施异步验证作为与加载器126和OS 124的操作相比的分离的操作。
图4示出可以与本文描述的示例一起使用的计算机系统400。该计算机系统可以表示通用平台,该通用平台包括可以在服务器中或在另一计算机系统中的组件。计算机系统400可以用作装置102的平台。计算机系统400可以通过处理器(即,一个处理器或多个处理器)或其它硬件处理电路执行本文描述的方法、功能和其它过程。这些方法、功能和其它过程可以体现为在计算机可读介质上存储的机器可读指令,计算机可读介质可以是非暂时性的,如硬件存储设备(例如,RAM(随机存取存储器)、ROM(只读存储器)、EPROM(可擦写的可编程的ROM)、EEPROM(电可擦写可编程的ROM)、硬驱和闪存)。
计算机系统400可以包括处理器402,处理器402可以实现或执行机器可读指令,该机器可读指令实施本文描述的方法、功能和其它过程中的一些或全部。来自处理器402的命令和数据可以通过通信总线404传递。计算机系统还可以包括主内存406(如随机存取存储器(RAM))以及辅数据储存器408,处理器402的机器可读指令和数据可以在运行时期间位于主内存406,辅数据储存器408可以是非易失性的并且存储机器可读指令和数据。内存和数据储存器是计算机可读介质的示例。内存406可以包括内存完整性检查模块420,内存完整性检查模块420包括在运行时期间位于内存406中并且由处理器402执行的机器可读指令。内存完整性检查模块420可以包括图1中示出的装置102的特定元件。
计算机系统400可以包括I/O设备410,如键盘、鼠标、显示器等等。计算机系统可以包括用于连接至网络的网络接口412。可以在计算机系统中增加或替换其它已知的电子组件。
本文已描述和说明的是示例及其一些变形。仅通过图示阐述本文使用的术语、描述和附图,并且本文使用的术语、描述和附图的意思不是作为限制。在本主题的精神和范围内,许多变形是可能的,本主题的精神和范围由下面的权利要求及其等同限定,其中除非另外指示,否则所有术语的含义在于其最广的合理意义。
Claims (13)
1.一种非暂时性计算机可读介质,具有存储在其上的用于提供内存完整性检查的机器可读指令,所述机器可读指令在被执行时使至少一个处理器:
接收计算机程序代码;
使用加载器将所述计算机程序代码加载到内存中;以及
通过选择性地实现同步验证和异步验证中的至少一个,验证所述计算机程序代码的完整性,其中:
所述同步验证基于与所述计算机程序代码的加载关联的加载器安全特征;并且
所述异步验证基于与包含所述计算机程序代码的所述内存关联的媒介控制器;其中,所述异步验证是通过将与所述计算机程序代码关联的签名与未授权的签名列表作比较来通过所述媒介控制器来识别与所述计算机程序代码关联的未授权的签名来实现的。
2.根据权利要求1所述的非暂时性计算机可读介质,其中为了实现所述同步验证,所述机器可读指令在被执行时进一步使所述至少一个处理器:
计算与所述计算机程序代码关联的哈希;以及
使用所计算的哈希来更新与所述计算机程序代码关联的并且加载到所述内存中的内存页面的哈希。
3.根据权利要求2所述的非暂时性计算机可读介质,其中为了实现所述同步验证,所述机器可读指令在被执行时进一步使所述至少一个处理器:
向内存控制器发送包括所计算的哈希和所述内存页面的关联范围的对;以及
指示所述内存控制器检测与所述内存页面的所述关联范围有关的所计算的哈希的改变。
4.根据权利要求1所述的非暂时性计算机可读介质,其中为了实现所述同步验证,所述机器可读指令在被执行时进一步使所述至少一个处理器:
确定操作系统(OS)已在什么时间替换了与所述计算机程序代码关联的安全内存页面;以及
响应于确定所述OS已替换了与所述计算机程序代码关联的所述安全内存页面,指示所述媒介控制器停止检查与所替换的安全内存页面关联的内存页面范围,并且去除与所替换的安全内存页面关联的之前的哈希。
5.根据权利要求1所述的非暂时性计算机可读介质,其中为了使用与所述内存关联的所述媒介控制器来识别与所述计算机程序代码关联的未授权的签名,所述机器可读指令在被执行时进一步使所述至少一个处理器:
解释与所述计算机程序代码关联的多个交错的内存芯片以及不连续的内存页面。
6.根据权利要求5所述的非暂时性计算机可读介质,其中为了解释与所述计算机程序代码关联的多个交错的内存芯片以及不连续的内存页面,所述机器可读指令在被执行时进一步使所述至少一个处理器:
使用关联哈希运算来计算与所述计算机程序代码关联的所述不连续的内存页面的独立哈希。
7.根据权利要求1所述的非暂时性计算机可读介质,其中为了实现所述异步验证,所述机器可读指令在被执行时进一步使所述至少一个处理器:
通过以下步骤来将所述异步验证用于内核完整性保护:
确定多个授权的内核函数指针;
使用所述授权的内核函数指针来生成所述授权的内核函数指针指向的值的授权列表;
向所述媒介控制器发送所述值的授权列表;以及
使用所述媒介控制器来确定内核的指针的内存地址的内容包含与所述值的授权列表匹配的值。
8.一种内存完整性检查装置,包括:
加载器,用于接收计算机程序代码并且将所述计算机程序代码加载至内存,所述加载器包括用于实现同步验证的安全特征,以评估将存储到所述内存中的所述计算机程序代码的完整性;以及
媒介控制器,对应于内存控制器,所述媒介控制器被包括在所述内存中,以寻址内存页面,所述媒介控制器进一步通过将与所述计算机程序代码关联的签名与未授权的签名列表作比较来识别与所述计算机程序代码关联的未授权的签名来实现异步验证,以在将所述计算机程序代码存储到所述内存中时评估所述计算机程序代码的完整性。
9.根据权利要求8所述的内存完整性检查装置,其中所述媒介控制器包括与多个活跃的内存控制器关联的多个活跃的媒介控制器。
10.根据权利要求8所述的内存完整性检查装置,其中所述媒介控制器进一步通过以下步骤实现所述异步验证:
在所述媒介控制器处从操作系统(OS)接收信息,该信息相关于与将被存储到所述内存中的所述计算机程序代码相关的地址范围的位置。
11.一种用于内存完整性检查的方法,所述方法包括:
接收计算机程序代码;
使用加载器将所述计算机程序代码加载到内存中;以及
通过选择性地实现同步验证和异步验证中的至少一个,验证所述计算机程序代码的完整性,其中:
所述同步验证基于与所述加载器关联的加载器安全特征;并且
所述异步验证基于与所述内存关联的媒介控制器;其中,所述异步验证是通过将与所述计算机程序代码关联的签名与未授权的签名列表作比较来通过所述媒介控制器来识别与所述计算机程序代码关联的未授权的签名来实现的。
12.根据权利要求11所述的方法,其中实现同步验证进一步包括:
评估与所述计算机程序代码关联的签名。
13.根据权利要求11所述的方法,其中实现同步验证进一步包括:
计算与所述计算机程序代码关联的哈希;以及
将所述哈希与授权的签名列表作比较。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/067766 WO2015065431A1 (en) | 2013-10-31 | 2013-10-31 | Memory integrity checking |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105637486A CN105637486A (zh) | 2016-06-01 |
CN105637486B true CN105637486B (zh) | 2018-11-13 |
Family
ID=53004837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380080188.9A Active CN105637486B (zh) | 2013-10-31 | 2013-10-31 | 内存完整性检查 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10089498B2 (zh) |
EP (1) | EP3063627B1 (zh) |
CN (1) | CN105637486B (zh) |
WO (1) | WO2015065431A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621119B2 (en) * | 2016-03-03 | 2020-04-14 | Samsung Electronics Co., Ltd. | Asynchronous communication protocol compatible with synchronous DDR protocol |
US10509742B2 (en) | 2016-05-16 | 2019-12-17 | Hewlett Packard Enterprise Development Lp | Logical memory buffers for a media controller |
JP6736456B2 (ja) * | 2016-11-17 | 2020-08-05 | キオクシア株式会社 | 情報処理装置およびプログラム |
US10248814B2 (en) * | 2017-01-25 | 2019-04-02 | Hewlett Packard Enterprise Development Lp | Memory integrity monitoring |
US10628586B1 (en) * | 2017-11-30 | 2020-04-21 | Palo Alto Networks, Inc. | Detecting malware via scanning for dynamically generated function pointers in memory |
CN108259490B (zh) * | 2018-01-12 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 一种客户端校验方法及装置 |
DE102018213617A1 (de) * | 2018-06-20 | 2019-12-24 | Robert Bosch Gmbh | Recheneinrichtung und Betriebsverfahren hierfür |
JP7289739B2 (ja) * | 2019-06-27 | 2023-06-12 | キヤノン株式会社 | 情報処理装置、情報処理方法およびプログラム |
CN110598467A (zh) * | 2019-07-31 | 2019-12-20 | 北京大学 | 一种内存数据块完整性检验方法 |
FR3105484B1 (fr) * | 2019-12-19 | 2021-12-10 | Commissariat Energie Atomique | Méthode de vérification dynamique de l’intégrité d’un code machine |
US12001557B2 (en) * | 2019-12-31 | 2024-06-04 | Renesas Electronics America Inc. | Method and system for continuously verifying integrity of secure instructions during runtime |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7785204B2 (en) * | 1998-10-14 | 2010-08-31 | Igt | Method for downloading data to gaming devices |
CN102077204A (zh) * | 2008-06-24 | 2011-05-25 | 纳格拉影像股份有限公司 | 安全内存管理系统和方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030212859A1 (en) * | 2002-05-08 | 2003-11-13 | Ellis Robert W. | Arrayed data storage architecture with simultaneous command of multiple storage media |
WO2006014554A2 (en) * | 2004-07-07 | 2006-02-09 | University Of Maryland | Method and system for monitoring system memory integrity |
US7185246B2 (en) | 2004-12-15 | 2007-02-27 | International Business Machines Corporation | Monitoring of solid state memory devices in active memory system utilizing redundant devices |
US7953980B2 (en) | 2005-06-30 | 2011-05-31 | Intel Corporation | Signed manifest for run-time verification of software program identity and integrity |
US8327192B2 (en) * | 2006-02-06 | 2012-12-04 | Intel Corporation | Method for memory integrity |
US20070192761A1 (en) * | 2006-02-15 | 2007-08-16 | Ravi Sahita | Method for adding integrity information to portable executable (PE) object files after compile and link steps |
US20080034350A1 (en) * | 2006-04-05 | 2008-02-07 | Conti Gregory R | System and Method for Checking the Integrity of Computer Program Code |
US7904278B2 (en) * | 2006-05-02 | 2011-03-08 | The Johns Hopkins University | Methods and system for program execution integrity measurement |
US20080077767A1 (en) * | 2006-09-27 | 2008-03-27 | Khosravi Hormuzd M | Method and apparatus for secure page swapping in virtual memory systems |
US8364973B2 (en) | 2007-12-31 | 2013-01-29 | Intel Corporation | Dynamic generation of integrity manifest for run-time verification of software program |
US8954696B2 (en) * | 2008-06-24 | 2015-02-10 | Nagravision S.A. | Secure memory management system and method |
US8136158B1 (en) | 2008-07-21 | 2012-03-13 | Google Inc. | User-level segmentation mechanism that facilitates safely executing untrusted native code |
US9086913B2 (en) | 2008-12-31 | 2015-07-21 | Intel Corporation | Processor extensions for execution of secure embedded containers |
JP2013519929A (ja) * | 2010-02-16 | 2013-05-30 | パナソニック株式会社 | 情報処理装置、情報処理システム、ソフトウェアルーチン実行方法およびリモート認証方法 |
US8996851B2 (en) * | 2010-08-10 | 2015-03-31 | Sandisk Il Ltd. | Host device and method for securely booting the host device with operating system code loaded from a storage device |
US8819225B2 (en) | 2010-11-15 | 2014-08-26 | George Mason Research Foundation, Inc. | Hardware-assisted integrity monitor |
US9519647B2 (en) * | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US20150052616A1 (en) * | 2013-08-14 | 2015-02-19 | L-3 Communications Corporation | Protected mode for securing computing devices |
-
2013
- 2013-10-31 US US15/021,022 patent/US10089498B2/en active Active
- 2013-10-31 EP EP13896796.3A patent/EP3063627B1/en active Active
- 2013-10-31 WO PCT/US2013/067766 patent/WO2015065431A1/en active Application Filing
- 2013-10-31 CN CN201380080188.9A patent/CN105637486B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7785204B2 (en) * | 1998-10-14 | 2010-08-31 | Igt | Method for downloading data to gaming devices |
CN102077204A (zh) * | 2008-06-24 | 2011-05-25 | 纳格拉影像股份有限公司 | 安全内存管理系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20160232379A1 (en) | 2016-08-11 |
US10089498B2 (en) | 2018-10-02 |
WO2015065431A1 (en) | 2015-05-07 |
EP3063627B1 (en) | 2020-02-26 |
EP3063627A4 (en) | 2017-05-10 |
CN105637486A (zh) | 2016-06-01 |
EP3063627A1 (en) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105637486B (zh) | 内存完整性检查 | |
US11113384B2 (en) | Stack overflow protection by monitoring addresses of a stack of multi-bit protection codes | |
CN104520867B (zh) | 用于目标装置的主动监测、存储器保护和完整性验证的方法、系统和计算机可读介质 | |
EP3779745B1 (en) | Code pointer authentication for hardware flow control | |
US8336095B2 (en) | User space virtualization system | |
CN109858288B (zh) | 实现虚拟机安全隔离的方法与装置 | |
CN100533385C (zh) | 用于提供系统完整性和遗留环境模拟的方法及装置 | |
CN104572168B (zh) | 一种bios自更新保护系统及方法 | |
US20180285561A1 (en) | Method and system for detecting kernel corruption exploits | |
US20120216281A1 (en) | Systems and Methods for Providing a Computing Device Having a Secure Operating System Kernel | |
CN104217139B (zh) | 处理系统 | |
US20160275019A1 (en) | Method and apparatus for protecting dynamic libraries | |
AU2014219466A1 (en) | Memory introspection engine for integrity protection of virtual machines | |
KR102024053B1 (ko) | 행위 기반 실시간 접근 제어 시스템 및 행위 기반 실시간 접근 제어 방법 | |
CN105049445B (zh) | 一种访问控制方法及独立式访问控制器 | |
CN105308610A (zh) | 用于设备上的平台和用户应用安全性的方法和系统 | |
CN108197503A (zh) | 一种为间接访问存储控制器增加保护功能的装置 | |
CN108491249B (zh) | 一种基于模块权能的内核模块隔离方法及系统 | |
CN104680043B (zh) | 一种可执行文件的保护方法及装置 | |
Kittel et al. | Code validation for modern os kernels | |
CN114981811A (zh) | 用于软件安全的装置和方法 | |
EP3574425A1 (en) | Method to secure a software code | |
EP2354995B1 (en) | Software licensing in a virtual computing environment | |
Mhatre et al. | On the simulation of processors enhanced for security in virtualization | |
CN108369558A (zh) | 用于运行微控制器的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |