一种内存访问隔离方法
技术领域
本发明涉及物理内存访问安全隔离方法,尤其是涉及一种基于ARM平台的安全和非安全运行环境下的内存访问隔离方法。
背景技术
ARM公司的TrustZone技术是在ARM Cortex-A和Cortex-M SOC中应用的一种安全技术。TrustZone技术通过硬件方式把处理器CPU,外设,内存空间和二级缓存等划分为安全和非安全环境。属于非安全环境的软件和硬件不能访问属于安全环境下的软件和硬件。属于安全环境下的软件和硬件可以访问非安全环境的软件和硬件。安全环境下通常运行的是体量很小的操作系统和轻量的应用程序或服务。非安全环境下运行的是普通操作系统和通常的应用软件。安全环境和非安全环境的切换通过硬件指令完成,延迟很小,通常为几个时钟周期。
主要不足是1)对于运行在安全环境下的程序缺乏保护,如果运行于安全环境的操作系统有漏洞,那么在操作系统管理下的应用程序就没有安全性可言。2)一个应用只能划分为安全环境和非安全环境两部分,划分粒度不够精细。3)安全运行环境下内存没有加密保护。
发明内容
本发明主要针对一种内存隔离方法,适用于解决前述问题与已知技术的其他问题、缺点与限制。本发明设计了一种物理内存访问安全隔离方法,能使得运行在ARMTrustZone安全环境或非安全环境下的操作系统不能访问用户程序的物理内存,且能与加密技术结合使用,加密整个安全运行环境内存。增强系统防止软件攻击和硬件攻击的能力。
为实现上述目的,本发明提供了一种内存隔离方法,方法包括:获取任务请求的内存页框物理地址和CPU运行时的任务信息,任务信息包括:任务号和任务运行环境信息;任务运行环境包括:安全环境和非安全环境;通过查询页框属性表得到内存页框物理地址对应的任务信息;页框属性表中包含多个条目,每个条目记录了该页框地址对应的任务信息;通过比较CPU运行时的任务信息和查询页框属性表得到的任务信息判断是否允许该任务访问内存页框。
优选地,查询页框属性表具体包括:根据所述内存页框物理地址、内存基址、页框大小、页框属性表条目大小和页框属性表基址,得到所述内存页框物理地址对应的页框属性表条目,从而取得对应的任务信息。
优选地,判断具体包括:判断CPU运行时的任务信息中的任务运行环境信息与查询页框属性表得到的任务信息中的任务运行环境信息是否匹配;在两者不匹配的情况下拒绝访问。
优选地,判断还包括:在CPU运行时的任务信息中的任务运行环境信息与查询页框属性表得到的任务信息中的任务运行环境信息相匹配的情况下:判断查询页框属性表得到的任务信息是否为共享页框标识;判断查询页框属性表得到的任务信息中的任务号和CPU运行时的任务信息中的任务号是否相等;在上述任意判断为是的情况下,允许访问,否则拒绝访问。
优选地,页框属性表条目还记录了访问控制信息,在CPU运行时的任务信息中的任务号与查询页框属性表得到的任务信息中的任务号相匹配的情况下:判断查询页框属性表得到的访问控制信息和CPU运行时的访问控制信息是否相等;在上述判断为是的情况下,允许访问,否则拒绝访问。
优选地,页框属性表的存储位置包括:主内存中划分出的一段连续或非连续物理内存,或者独立于主内存外的一块高速存储器。
优选地,方法通过页框访问控制器执行,页框访问控制器是一个硬件电路模块。
优选地,还包括步骤:初始化页框属性表和更新页框属性表。
优选地,初始化页框属性表包括,当系统冷启动或重启后,根据页框属性表的配置,由安全监控程序将页框表中的内容初始化为默认值。
优选地,更新页框属性表包括,当安全环境或非安全环境的操作系统删除、增加或修改页表条目后,通知安全监控程序,安全监控程序对页框地址对应的页框属性表条目写入更新后的任务信息。
本发明能借助硬件,完全隔离安全和非安全环境下操作系统对于普通任务的内存访问以及任务间的内存互访。本发明还能与内存加密技术共同使用,如果和内存加密技术结合使用,则能做到,隔离了安全或非安全环境下操作系统任务对普通任务的访问的同时还能对内存加密。能取得比ARM TrustZone更好的防止软件和硬件攻击的效果。
附图说明
图1为本发明实施例提供的一种物理内存访问隔离方法流程图;
图2为根据本发明实施例实现系统安全隔离方法的结构示意图;
图3为图1所示方法判断流程图。
图4为根据本发明实施例实现页框属性表查询示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,为本发明实施例提供的一种内存隔离方法流程图。
方法包括:步骤101获取任务请求的内存页框物理地址和CPU运行时的任务信息;步骤102通过查询页框属性表得到内存页框物理地址对应的任务信息;步骤103通过比较CPU运行时的任务信息和查询页框属性表得到的任务信息判断是否允许该任务访问内存页框。
下面结合图1的流程图与图2的系统结构图,详细描述本发明实施例的执行。
如图2所示,为根据本发明实施例实现系统安全隔离方法的结构示意图。
本发明优选在ARM TrustZone平台上应用。在ARM TrustZone芯片级系统SoC中,中央处理器CPU有两种任务运行环境:安全环境和非安全环境。在不同环境下的操作系统中,拥有页表以及多个用户任务和系统任务。不同的环境切换由安全监控程序实现。当一个任务发起一个内存访问请求时,CPU中的地址管理单元会将请求的虚拟地址转换为物理地址,页框访问控制器根据得到的页框物理地址查询页框属性表,进而得到对应的任务信息。页框访问控制器根据CPU当前的任务运行环境信息和任务号与查询结果进行比较从而判断是否允许该任务对页框访问。
本发明设计了一个物理内存页(页框)属性表即页框属性表(Page FrameAttribute Table,简称页框表)和页框访问控制器。页框属性表从硬件设计上,可以设计为从主内存中划分出的一段连续或非连续物理内存,也可以设计为独立于主内存外的一块高速内存,用来记录每个页框和系统中每个任务(包括用户和操作系统任务)的对应关系。页框访问控制器是一个硬件电路模块,该模块能根据给定页框地址查询页框表。
页框属性表中包含多个条目,每个条目记录了该页框地址对应的任务信息和访问控制信息;任务信息包括:任务号和任务运行环境信息。本发明一个实施例以任务号TID作为页框表条目的主要内容,从而建立起页框和任务间的对应关系。假设,TID的长度为24位,那么页框表的条目就可设计为长度为4个字节即32位的存放了TID和安全环境或非安全环境位NS的形式。当然,可以扩展页框表条目的长度,增加其他属性。具体页框表的条目值代表的含义,可根据系统的实际需求来设计。作为示例,在一个实施例中,按照下表规则来设计(1.操作系统或普通任务访问的页框表条目:第0到23位为TID号,第24位到30位为0,第31位为1表示安全环境,为0表示非安全环境。2.安全监控程序访问的页框表条目:所有32位全为1):
页框条目值 |
含义 |
0x80000000 |
该页框是安全环境共享页框 |
0x00000000 |
该页框是非安全环境共享页框 |
0xFFFFFFFF |
该页框仅供安全监控程序(secure monitor)访问 |
0x80xxxxxx |
该页框只能在安全环境下被TID号为xxxxxx的任务访问 |
0x00xxxxxx |
该页框只能在非安全环境下被TID号为xxxxxx的任务访问 |
在步骤103的判断中,先判定当前任务的环境信息与查询得到的任务信息中的环境信息是否一致,判定为否则拒绝访问;判定为是,则再判断是否为共享页框或特定的任务号TID,任意判定为是则允许访问,否则拒绝访问。
图3为上述判断过程的流程图。
具体地,步骤104判断查询页框属性表得到的任务信息是否为共享页框标识;步骤105判断查询页框属性表得到的任务信息中的任务号和CPU运行时的任务信息中的任务号是否相等。在上述任意判断为是,则进入步骤106允许访问,否则进入步骤107拒绝访问。
当然,页框属性表条目可增加其他属性,如添加访问控制信息,在上述安全环境和信息号TID都满足的情况下,还可进一步比对访问控制信息。访问控制信息包括:读、写或信息存储控制信息等。当访问控制信息也匹配时,允许访问,否则拒绝访问。
对页框表的操作还包括:初始化页框属性表和更新页框属性表。初始化页框属性表包括,当系统冷启动或重启后,系统会根据页框属性表的配置,由安全监控程序将页框表中的内容初始化为默认值。例如,根据启动后的任务数,将页框表条目中的条目值初始化为1.安全环境或非安全环境的共享页框值2.安全环境或非安全环境下操作系统任务或普通任务访问的值4.仅安全监控程序可访问的值。
更新页框属性表包括,当安全环境或非安全环境的操作系统删除、增加或修改页表条目后会通知安全监控程序,所述安全监控程序将对页框地址对应的页框属性表条目写入更新后的任务信息。
如图4所示,为根据本发明实施例实现页框属性表查询示意图。
具体包括,用内存页框物理地址减去系统主内存基址,得到的差除以页框大小,再乘以页框属性表条目大小,最后再用得到的乘积加上页框属性表基址,找到该物理地址对应的页框属性表条目地址,从而取得对应的任务信息。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。