安全内存管理系统和方法

文档序号:6594023阅读:137来源:国知局

专利名称::安全内存管理系统和方法
技术领域
:本发明涉及计算机安全的领域,特别是保证将数据或应用程序安全地装载到易失性的工作内存(memory)中或者将并发的应用程序彼此隔离以使得一个应用程序不可以修改用于另一个应用程序的数据或代码。
背景技术
:数据处理系统可以包括硬件资源,诸如处理单元(CPU)、易失性内存(RAM)和非易失性内存(ROM)。数据处理系统可以在至少一个操作系统的控制下工作并且可以根据一个或几个软件资源或应用程序来执行例程。应用程序可以被存储在非易失性内存中并且在需要被运行时装载到易失性内存中。在应用程序的运行期间,所述应用程序所要求的数据或由应用程序产生的数据可以被存储在非易失性或易失性内存中或者从一个内存传送到另一个内存。随着对数据处理系统的多种连接选择的出现(包括无线连接),并且随着移动数据处理系统的使用的巨大增长,需要保护这些系统免受恶意攻击已经变得日益重要。恶意攻击的目的可以是干扰系统引导、修改操作系统、拦截和/或修改由一些应用程序产生或使用的数据。实际上,保护数据处理系统免于欺骗性的操作和对它们的完整性(integrity)的攻击现在已经变成了必要的要求。这种恶意攻击可能以如下软件的形式出现,该软件被设计来在用户不知道或没有批准的情况下接管数据处理系统的操作系统或者干扰数据处理系统的正常处理顺序。这种软件一般被称为恶意软件(malware)。在数据处理系统中恶意软件的存在一般难以清除(remedy),并且可能导致整个系统故障,或者甚至导致对系统的不能修复的损坏。计算机病毒、蠕虫、特洛伊木马、间谍软件等都是不同类型的恶意软件。不同类型的恶意软件能够以各种方式攻击处理系统,诸如通过拦截打算用于其它应用程序的数据或通过监视击键以便窃取密码或必须保密的其它信息、修改或改变数据或损坏文件、修改程序以便使得它崩溃或运行一些用户原来没有想要的功能。与恶意软件攻击斗争的系统存在并且通常其特征在于内存管理单元,其可由系统的CPU配置。因而,如果CPU受到来自恶意的用户的攻击,则安全性受到了损害。由于现代CPU呈现的复杂性,为了使这种攻击的可能性最小化所需要的附加的安全功能将导致就实现这种功能所必需的额外的芯片上有效面积(realestate)方面来说成本显著增大并且将导致计算开销,因此损害了运行速度。此外,由于典型的CPU的复杂性,这种修改不能以可接受的置信度水平提供高级别的安全性。因此,将期望具有提供对将数据或应用程序装载到数据处理系统中的内存中或从数据处理系统中的内存向外卸载(unload)的安全管理的成本高效(cost-efficient)和尺寸高效(size-efficient)的解决方案。
发明内容本发明描述一种用于将数字信息从存储设备安全地装载到数据处理系统中的内存模块中的系统和方法,所述数据处理系统包括至少一个存储设备(SD)、至少一个内存模块(MM)和至少一个处理器(CP),所述存储设备(SD)具有至少一个数据片段(segment)以及与该片段有关的访问和验证数据,其特征在于,它包括连接在处理器(CP)和内存模块(MM)之间的内存访问控制器(RA)以及与处理器(CP)、内存模块(MM)、存储设备(SD)和内存访问控制器(RA)连接的安全内存管理模块(SMM),所述安全内存管理模块(SMM)包括用于接收来自处理器(CP)的对于存储在存储设备(SD)中的片段的请求的装置,所述片段具有与它有关的至少一个访问条件和至少一段验证数据,所述安全内存管理模块(SMM)还包括用于将请求的片段从存储设备(SD)装载到内存模块(MM)的装置、用于使用验证数据来验证访问条件的装置、用于使用访问条件来配置内存访问控制器(RA)的装置,所述内存访问控制器(RA)具有用于检测来自处理器(CP)的处理器状态的装置和用于将访问条件与处理器状态相比较的装置,内存访问控制器(RA)具有用于根据该比较的结果来允许或阻止对内存模块(MM)的访问的装置。在本发明中用来将数据从存储设备安全地装载到内存模块的方法包括以下步骤由安全内存管理模块(SMM)接收来自处理器(CP)的对于数字信息的请求,在存储设备(SD)中定位包含所请求的数字信息的片段,提取与所述片段有关的访问条件和验证数据的集合,利用验证数据验证访问条件,确定内存模块(MM)中的用于容纳所定位的片段的适当的区域,将所述定位的片段装载到内存模块(MM)中的确定的区域中,使用所提取的访问条件配置内存访问控制器模块(RA)。因此,本发明使用内存访问控制器(RA)作为在处理器(CP)和内存模块(MM)之间的防火墙,其与安全内存管理模块(SMM)耦合以便装载内存模块(MM)和配置内存访问控制器(RA)。由于安全内存管理模块(SMM)具有简单的体系结构,其具有简化的命令集(诸如装载和存储),因此这产生在系统中高级别的安全性,并且因此比在CPU负责配置内存访问控制器模块的情况下的所述CPU更不易于被攻击。通过参考以下在结合附图阅读时的对优选实施例的详细描述,将更好理解本发明,在附图中图1示出数据处理系统,其包括处理器(CP)、内存模块(MM)、存储设备(SD)、内存访问控制器模块(RA)和安全内存管理模块(SMM)。具体实施例方式现代的数据处理系统一般是内存密集型的(memoryintensive)。此事实与片上内存会昂贵的事实结合导致在许多数据处理系统中必须依赖巨大数量的片外存储器。在安全性较重要的情况下,因此需要能够在片外或不可信的环境与片上或可信的环境之间安全地传送数据。另外,由于现代的CPU(处理器)的显著的复杂性,因此修改处理器以便能够实5现所要求的目标同时维持所要求的高级别的安全性并不容易,就芯片上有效面积方面来说也不便宜。因此,最好具有专用的硬件块,使用有限数量的命令(诸如装载和存储)来看管与内存访问有关的任务。本发明描述了一种用于在数据处理系统内提供用于将数字信息从存储设备安全地装载到内存模块中的装置的硬件解决方案和方法。一般来说,存储设备处于不可信的环境中,并且内存模块处于可信的环境中。本发明提供可信的环境和不可信的环境之间的接口,用于访问数字信息的请求必须通过该接口传递。本发明包括如下装置,该装置用于配置接口以使得对存储在内存模块中的数据具有必要的访问权限的处理器将在它已经被装载时就真正地能够访问内存的所需的部分。存储设备可以采取闪存、EPROM、EEPROM、ROM、硬盘、外部服务器或其它这种存储装置的形式。内存模块将通常采取随机访问内存(RAM)(即,易失性内存)的形式。在本申请文件的上下文中,术语“数字信息”用来描述容易被装载到内存模块中的数据,诸如可执行的代码或者由可执行的代码产生或由可执行的代码使用的信息。当前发明的安全内存管理系统被集成到数据处理系统(图1)中,该数据处理系统至少包括处理器(CP)、内存模块(MM)和存储设备(SD),并且安全内存管理系统包括连接在一侧的处理器(CP)和内存模块(MM)与另一侧的存储设备(SD)之间的被称为安全内存管理模块(SMM)的专用硬件,安全内存管理模块(SMM)的目的是管理处理器(CP)和内存模块(MM)之间的通信以及在存储设备(SD)和内存模块(MM)之间传送数字信息,即装载和卸载内存模块(MM)。安全内存管理系统还包括位于处理器(CP)和内存模块(MM)之间的被称为内存访问控制器模块(RA)的专用硬件。内存访问控制器模块(RA)用作处理器(CP)和内存模块(MM)之间的防火墙。存储在存储设备(SD)中的数字信息具有与它有关的与该数字信息一起存储的访问条件的集合。假定所述处理器(CP)具有适当的访问权限,安全内存管理模块(SMM)配置内存访问控制器(RA)以使得处理器(CP)能够正确地访问已被装载的内存模块(MM)的部分。因而,安全内存管理模块(SMM)与内存访问控制器模块(RA)—起用来确保内存模块(MM)保持安全。在本发明中,使用被称为分段的约定,S卩,以片段的形式存储数字信息。分段约定用于存储在存储设备中的数字信息以及用于存储在内存模块中的数字信息。一个片段由几个包括预定数量的字节的数字信息块组成。例如,一个数字信息块可以是32字节长。每个片段具有与它有关的一组属性,诸如片段标识号、包含在片段中的数据的类型、片段的长度、片段的地址、数字签名、完整性数字(integrityfigure)(诸如例如片段的内容的单向函数(function))、描述哪些进程可以对片段进行读访问或写访问或运行对片段的访问的条件权限的集合。这些属性被记录在附接于该片段并与该片段一起存储的段头中。图1示出两种不同类型的片段,即包括可执行代码的代码片段(⑶)和包括可以由应用程序使用或由应用程序产生的数字信息的数据片段(DS)。当前正由处理器(CP)使用的数字信息保持在内存模块(MM)中。当处理器(CP)需要访问当前不存在于内存模块(MM)中的数字信息时,处理器(CP)向安全内存管理模块(SMM)发送对于所需的数字信息的请求。在接收到来自处理器(CP)的请求后,安全内存管理模块(SMM)定位包含所请求的数字信息的片段或多个片段,并从段头提取几段信息,包括访问条件、数字签名和片段完整性数字。安全内存管理模块(SMM)通过根据预定的密码技术检验数字签名来对片段进行验证。安全内存管理模块(SMM)通过计算完整性数字(诸如片段的内容的单向函数)并将计算的完整性数字与从段头提取的完整性数字进行比较,从而对片段执行完整性检查。安全内存管理模块(SMM)确定内存模块(MM)中的能够容纳定位的片段的适当区域并将所述片段装载到内存模块(MM)中所确定的区域处,所述区域包括多个可寻址内存模块位置。在当前发明的一个实施例中,可以在装载内存模块(MM)时即时(on-the-fly)、逐块或逐片段地进行完整性检查。在当前发明的另一个实施例中,可以在被装载之后在内存模块(MM)中进行完整性检查。安全内存管理模块(SMM)还将配置内存访问控制器(RA),使得具有必要的访问权限的处理器将具有对装载的数据的所要求的访问。一般来说,数据处理系统还将包括一些用于进行内存映射的装置,由此处理器使用虚拟地址访问数字信息的块或片段,而所述块或片段存储在内存模块(MM)中的与虚拟地址不同的某一物理地址处。段头还可以包括片段的虚拟地址。当数字信息被装载到内存模块中的可用空间中时,对映射进行更新以便反映虚拟地址和装载信息的物理地址之间的联系。在当前发明的一个实施例中,此内存映射可以在内存模块(MM)的连续装载之间变化。在本发明的另一个实施例中,存储设备中的数字信息优选地是加密的格式。在这种情况下,段头还包括片段密钥,利用该片段密钥来对片段进行解密。优选地由安全内存管理模块(SMM)从段头中提取片段密钥,并且密钥用于在装载到内存模块(MM)中之前对数字信息进行解密。内存访问控制器(RA)包含片段描述符(SDES)。片段描述符保持与已被装载到内存模块中的数字信息的每个片段对应的段头的部分。当装载每个片段时,已经从段头提取并验证了对该片段的访问条件的安全内存管理模块更新片段描述符中的访问条件,以便在处理器具有适当的访问权限的情况下使得所述处理器能够访问内存模块中的相应片段。直到更新片段描述符,处理器才能够访问内存模块的正在装载数字信息的部分。为了考虑在几个不同的操作系统之上的兼容性,片段描述符可以具有“ELF”格式(可执行连接格式),其是用于可执行文件(executables)、目标码、库等的标准文件格式。片段描述符指定处理器允许的访问类型。例如,某一范围的地址可以仅仅在读模式下是可访问的,而写该区域的任何企图将不被允许。在片段描述符中指示这类信息。类似地,在片段描述符中指示允许处理器写或擦除的区域。片段描述符也可以指示保持可执行的例程或功能的区域,使得处理器将需要具有执行的权限以便能够从被指示为保持可执行文件的区域取得指令(或某些进程id将具有运行某些功能的权限)。除了数据和地址总线之外,由限定访问类型的控制线(读/写)控制从外围设备或向外围设备的传送。其它线可以用于确定是否读取可执行的代码(执行模式)或处理器是否正在读/写内存中的数据。附接于片段的访问条件的一个示例限定读、写或执行模式中的条件。根据另一个实施例,与处理器的模式相关地限定访问条件。那么处理器是否将具有访问某段数据的权限取决于与该段数据所处的片段相关的附接的访问条件,并且取决于处理器在它请求该数据时正运行的模式,例如处理器可以处于用户模式或超级用户模式。操作模式通常由与处理器有关的状态或模式寄存器中的一比特指示。可以通过检查有关寄存器的状态来检验处理器在任何特定的时间运行的模式。此寄存器可以通过通信线与内存访问控制器连接,以便允许后者确定处理器处于哪个模式。也可以通过经由主总线传送寄存器值来将此模式传送到内存访问控制器。根据处理器的在做出对一段数据的请求时的操作模式,可以根据处理器的操作模式和根据保持在片段描述符中的相关访问条件的该段数据所需的模式之间的比较结果来许可或拒绝访问。类似地,容易想到可以按照与处理器模式类似的方式来使用进程标识符(进程id),以便指示哪些进程具有访问特定的数据片段的权限。然后,内存访问控制器的作用是接收处理器模式的值并将此模式和附接于该片段的访问条件的内容相比较。在本发明的另一个实施例中,数据片段可以具有多组与它有关的访问条件,每一组与特定的处理器操作模式有关。当处理器请求访问有多个访问条件的片段中的一段数据时,内存访问控制器(RA)将应用与处理器正在运行的模式有关的那组访问条件。处理器模式限定该组访问条件,并且处理器的类型(读/写/执行)将用来限定对该段数据的访问。因此,附接于片段的访问条件限定处理器为了访问该片段需要具有的模式、包括请求的访问类型的状态和处理器的操作模式。在本发明的另一个实施例中,在将数字信息存储在内存模块中之前可以对其使用较轻的加密。根据第一实施例,加密密钥将基于由安全内存管理模块产生的随机数。此数可以在对系统进行初始化时产生,使得每次开启系统,就将产生新的密钥。将在此密钥下对片段中的数字信息进行加密,并且将该密钥放在与该片段对应的片段描述符中。可替换地,可以在每次上载片段时产生随机密钥。然后在处理器请求该信息时,由内存访问控制器对数字信息进行解密。在当前发明的又一个实施例中,加密密钥可以是装载数字信息的物理地址(内存模块中的实际地址)的函数(即,计算物理地址的单向函数)。当前发明不但确保装载到内存模块中的数字信息的安全性,而且允许处理器在正在装载内存模块的同时完成其它任务,因为将与内存模块的装载有关的所有功能都委托给安全内存管理模块。在现代处理器具有高级别的复杂性的情况下,本发明通过具有由内存访问控制器(RA)和安全内存管理模块(SMM)的组合代表的专用硬件系统处理的所述内存管理功能,而不是通过试图将这些功能包括在已经复杂的处理器中,来提供保证高级别的安全性的优点。8权利要求1.一种数据处理系统,包括至少一个存储设备(SD)、至少一个内存模块(MM)和至少一个处理器(CP),所述存储设备(SD)具有至少一个数据片段以及与所述片段有关的访问和验证数据,其特征在于,所述数据处理系统包括连接在处理器(CP)和内存模块(MM)之间的内存访问控制器(RA)以及与处理器(CP)、内存模块(MM)、存储设备(SD)和内存访问控制器(RA)连接的安全内存管理模块(SMM),所述安全内存管理模块(SMM)包括用于接收来自处理器(CP)的对于存储在存储设备(SD)中的片段的请求的装置,所述片段具有与它有关的至少一个访问条件和至少一段验证数据,所述安全内存管理模块(SMM)还包括用于将所请求的片段从存储设备(SD)装载到内存模块(MM)的装置、用于使用验证数据来验证访问条件的装置、用于使用访问条件来配置内存访问控制器(RA)的装置,所述内存访问控制器(RA)具有用于检测来自处理器(CP)的处理器状态的装置和用于将访问条件与处理器状态进行比较的装置,内存访问控制器(RA)具有用于根据所述比较的结果来允许或阻止对内存模块(MM)的访问的装置。2.根据权利要求1所述的数据处理系统,其中所述片段还包括完整性数字,并且所述安全内存管理模块(SMM)包括用于通过将所述完整性数字与基于该片段中的数据计算的完整性数字进行比较来检查所述片段的完整性的装置。3.根据权利要求1或2中的任何一个所述的数据处理系统,其中访问条件限定用于从所述内存模块(MM)读或向所述内存模块(MM)中写或用于执行来自所述内存模块(MM)的指令的条件,其是由内存访问控制器(RA)根据处理器(CP)请求的访问类型来确定的。4.根据权利要求1到3中的任何一个所述的数据处理系统,其中访问条件包括多组访问数据,处理器(CP)将处理器模式传送给内存访问控制器(RA),所述内存访问控制器(RA)基于接收到的处理器模式选择一组访问数据。5.一种用于将数字信息从存储设备(SD)安全地装载到数据处理系统中的内存模块(MM)中的方法,所述数据处理系统包括至少一个存储设备(SD)、至少一个内存模块(MM)和至少一个处理器(CP),所述数据处理系统还包括连接在处理器(CP)和内存模块(MM)之间的内存访问控制器模块(RA)以及与处理器(CP)、内存模块(MM)、存储设备(SD)和内存访问控制器(RA)连接的安全内存管理模块(SMM),所述方法包括以下步骤由安全内存管理模块(SMM)接收来自处理器(CP)的对于数字信息的请求,在存储设备(SD)中定位包含所请求的数字信息的片段,提取与所述片段有关的访问条件和验证数据的集合,利用验证数据验证访问条件,确定内存模块(MM)中的用于容纳所定位的片段的适当的区域,将所述定位的片段装载到内存模块(MM)中的确定的区域中,使用所提取的访问条件配置内存访问控制器模块(RA)。6.根据权利要求5所述的方法,其特征在于,它还包括以下步骤提取与数字信息的所述片段有关的完整性数字,计算数字信息的所述片段的完整性数字,通过将提取的完整性数字与计算的完整性数字进行比较,检验数字信息的片段的完整性。7.根据权利要求5或6中的任何一个所述的方法,其特征在于,存储设备(SD)处于不可信的环境中,并且内存模块(MM)处于可信的环境中。8.根据权利要求5到7中的任何一个所述的方法,其特征在于,使用映射方案,由此虚拟地址与物理地址有关,所述虚拟地址是由处理器使用来指出一段数字信息的地址,并且所述物理地址是在内存模块(MM)中存储所述数字信息的位置的地址。9.根据权利要求8所述的方法,其特征在于,在装载内存模块(MM)后,至少修改一次虚拟地址和物理地址之间的关系。10.根据权利要求5到9中的任何一个所述的方法,其特征在于,存储设备中的数字信息的片段是加密的格式,并且它还包括以下步骤提取与数字信息的所述片段有关的片段密钥,使用提取的片段密钥对数字信息的所述片段进行解密。11.根据权利要求5到10中的任何一个所述的方法,其特征在于,在装载到内存模块(MM)中之前通过密钥对数字信息的片段进行加密。12.根据权利要求11所述的方法,其特征在于,加密密钥基于在安全内存管理模块(SMM)中产生的随机数。13.根据权利要求11所述的方法,其特征在于,加密密钥基于物理地址。14.根据权利要求5到13中的任何一个所述的方法,其特征在于,内存模块(MM)是易失性内存。全文摘要本发明描述了一种用于将数字信息从存储设备安全地装载到数据处理系统中的内存模块中的系统和方法,所述数据处理系统包括至少一个存储设备、至少一个内存模块和至少一个处理器,所述数据处理系统还包括连接在处理器和内存模块之间的内存访问控制器模块以及与处理器、内存模块、存储设备和内存访问控制器连接的安全内存管理模块。将处理器发出的对于数据的请求传输到安全内存管理模块,安全内存管理模块将数据从存储设备装载到内存模块中,并且配置内存访问控制器使得处理器将能够访问数据。文档编号G06F21/79GK102077204SQ200980123826公开日2011年5月25日申请日期2009年6月23日优先权日2008年6月24日发明者C·戈尼亚特,F·格里玛德,M·贝尔齐欧,P·夫彻斯申请人:纳格拉影像股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1