基于内存隔离的安全架构处理方法及处理器的制造方法

文档序号:10725533阅读:404来源:国知局
基于内存隔离的安全架构处理方法及处理器的制造方法
【专利摘要】本发明涉及到信息安全及微处理器设计领域,为保护应用程序中包含的敏感信息的安全。从内存页的层次提供一个细粒度的灵活的隔离的安全执行环境,该方案能动态的映射和管理compartment(隔间)s,从根本上将应用程序的敏感信息保护起来。本发明?基于内存隔离的安全架构处理方法及处理器:在通用处理器中添加一个硬件模块,该模块中包含两个部分:(1)物理页标志,用来标明每一个物理页当前是不是一个隔间compartment以及该物理页是否曾经被用作隔间compartment;(2)控制表,该表记录已经创建的隔间compartment。本发明主要应用于信息安全及微处理器设计场合。
【专利说明】
基于内存隔离的安全架构处理方法及处理器
技术领域
[0001] 本发明涉及到信息安全及微处理器设计领域,特别涉及一种基于内存隔离实现敏 感信息保护的安全处理器。
【背景技术】
[0002] 在电子产品飞速发展的时代,如何有效保护敏感信息的安全成为了人类在安全计 算领域面对的一个挑战。随着信息量的不断增大,攻击手段和技术的不断提高,安全信息的 防护困难也越来越大,现在的系统软件尤其是操作系统有着上千万行的代码,每年都能从 这些系统软件中发现大量的漏洞要设计实现一个没有任何漏洞的系统软件是不可能的。所 以要保证信息的安全就必须确保硬件尤其是处理器的安全性。
[0003] 学术界提出一种提供安全执行环境的方案是在恶意软件层使用隔离执行的概念, 在隔离的compartment(隔间)中执行应用程序的代码,但是这些隔间compartments达不到 系统软件层,它们要么完全由硬件管理,要么由有硬件辅助的特殊的安全软件来管理,这些 安全方案组件被工业界所关注,如亚马逊的CloudHSM云服务支持隔离并提供安全执行环 境。
[0004] 本发明提出了一种基于内存隔离的保护安全应用程序的安全架构。我们只需要对 现有架构做出很小的改变,添加几条新指令用于管理隔间compartments,简单修改操作系 统、汇编器和链接器来支持该安全架构,消除了只使用硬件管理和只是用软件管理的固有 限制。该架构采用细粒度的、灵活的设计,针对应用程序的安全部分进行内存隔离,是安全 部分运行在一个独立的compartment (隔间)中,非安全部分不能访问compartment (隔间)内 的内容,从而保证应用程序的安全,防止敏感信息的泄露。
[0005] 程序运行过程中的每次访问内存,cpu都会检测当前是否在安全模式,如果在安全 模式,则检查访问的地址是不是在一个compartment (隔间)内,如果是则允许访问,如果不 是compartment(隔间)内的地址,则检查需要访问的是代码还是数据,如果是数据则让允许 访问,如果是代码则切换到非安全模式,并允许访问,与此相反,如果当前处在非安全模式, 则只需检查访问的地址是不是在一个compartment(隔间)内,如果在则拒绝访问,如果不在 则许访问。

【发明内容】

[0006] 为克服现有技术的不足,本发明旨在保护应用程序中包含的敏感信息的安全。从 内存页的层次提供一个细粒度的灵活的隔离的安全执行环境,该方案能动态的映射和管理 compartment(隔间)s,从根本上将应用程序的敏感信息保护起来。本发明采用的技术方案 是,基于内存隔离的安全架构处理方法,步骤如下:在通用处理器中添加一个硬件模块,该 模块中包含两个部分:(1)物理页标志,用来标明每一个物理页当前是不是一个隔间 compartment以及该物理页是否曾经被用作隔间compartment,为保证安全,物理页标志的 值只能通过相应的指令来修改;(2)控制表,该表记录已经创建的隔间compartment,包括隔 间compartment所属程序的ID、隔间compartment的起始地址和大小;
[0007] 添加几条专用的指令:
[0008] (1)第一条指令用于修改控制表;
[0009] (2)第二条指令用于创建隔间compartment,修改对应物理页的标志位;
[00? 0] ⑶第三条指令用于进入隔间compartment,程序进入隔间compartment,修改处理 器的模式为安全模式;
[0011 ] (4)第四条指令用于离开隔间compartment,程序执行期间离开隔间compartment, 修改处理器的模式为普通模式;
[0012] (5)第四条指令用于销毁隔间compartment,擦除本程序所使用的隔间 compartment内的数据;
[0013] 设置专用寄存器,用来记录当前处理器的模式和当前使用的控制表的条目entry;
[0014] 对linux操作系统做简单的修改,以使其能够正确解析新的头表及获取相应的信 息,为含有安全敏感信息的程序生产一个唯一的ID号,调用专用指令将安全应用程序的ID 号以及新增安全段的起始地址和大小存入控制表中;
[0015] 对汇编器做简单的修改,添加几条新指令,使能够正确的编译;
[0016] 对链接器的修改,在链接阶段,应该将含有安全信息的代码和数据分别送入到新 的代码段comptext和数据段compdata,同时将相应的起始地址和大小保存在ELF的头表中; 修改之后的ELF中包含的段分别如表2所不;
[0018] 表2:安全的ELF程序。
[0019] 对汇编器做简单的修改具体是,根据汇编器的规则在记录汇编指令与二进制之间 转换的数组中添加对应的信息。
[0020] 基于内存隔离的安全架构处理器,结构是,在通用处理器中设置有一个硬件模块, 所述硬件模块中包含两个部分:(1)物理页标志,用来标明每一个物理页当前是不是一个隔 间compartment以及该物理页是否曾经被用作隔间compartment,为保证安全,物理页标志 的值只能通过相应的指令来修改;(2)控制表,该表记录已经创建的隔间compartment,包括 隔间compartment所属程序的ID、隔间compartment的起始地址和大小;
[0021] 专用指令模块,包含如下专用指令:
[0022] (1)第一条指令用于修改控制表;
[0023] (2)第二条指令用于创建隔间compartment,修改对应物理页的标志位;
[0024] (3)第三条指令用于进入隔间compartment,程序进入隔间compartment,修改处理 器的模式为安全模式;
[0025] (4)第四条指令用于离开隔间compartment,程序执行期间离开隔间compartment, 修改处理器的模式为普通模式;
[0026] (5)第四条指令用于销毁隔间compartment,擦除本程序所使用的隔间 compartment内的数据;
[0027]设置有专用寄存器,用来记录当前处理器的模式和当前使用的控制表的entry(条 目);
[0028]操作系统模块,包括:
[0029] linux操作系统子模块,用于对linux操作系统做简单的修改,以使其能够正确解 析新的头表及获取相应的信息,为含有安全敏感信息的程序生产一个唯一的ID号,调用专 用指令将安全应用程序的ID号以及新增安全段的起始地址和大小存入控制表中;
[0030]汇编器子模块,对汇编器做简单的修改,添加几条新指令,使能够正确的编译;
[0031 ]链接器子模块,对链接器的修改,在链接阶段,应该将含有安全信息的代码和数据 分别送入到新的代码段comptext和数据段compdata,同时将相应的起始地址和大小保存在 ELF的头表中;修改之后的ELF中包含的段分别如表2所示;
[0033] 表2:安全的ELF程序。
[0034]本发明的特点及有益效果是:
[0035]本发明提出了一种全新的安全处理器设计方案,将整个内存空间划分为安全区域 和非安全区域,通过内存隔离的方法为应用程序提供一个安全的运行环境。该方案的可信 计算基只有硬件,能够很好地好糊应用程序的敏感信息。我们的方案可以用在各种处理器 上,包括但不限于通用处理器、嵌入式处理器、专用处理器。使用了该方案的处理器将可以 很好的保护应用程序在运行阶段的敏感信息的安全,能够有效的抵御程序在运行时的攻 击,极大的提高了程序运行时的安全性。
【附图说明】:
[0036] 图1:传统处理器的TCB。
[0037] 图2:安全处理器的TCB。
[0038]图3:应用程序运行的总体流程。
[0039]图4:应用程序访问内存的流程。
【具体实施方式】
[0040] 由于信息技术的快速发展,信息安全的重要性与日倶增。要保证信息的安全,必须 确保处理器的安全性,安全处理器是信息安全领域的关键技术。安全处理器已成为现代信 息安全的基本不见,是解决信息系统安全威胁、风险和脆弱性的重要途径。快速发展的相关 技术带来的安全隐患影响到个人隐私、商业机密及国家安全。为了从根源上防止敏感信息 的泄露,ARM、Intel等公司相继提出了基于他们自己处理器的安全系统方案。然而,我国还 缺少相应自主可控的解决方案。因此在新技术、新形势的发展需求下,我们应该研究和设计 自己的安全处理器架构及支撑环境,防止恶意软件攻击,堵住芯片上的"后门"。
[0041] 本发明采用敏感信息存储隔离新技术提出了一款灵活、低复杂度的安全处理器架 构及支撑环境。该技术以硬件为可信计算基,不信任任何的软件,即使是恶意软件获得了操 作系统的控制权,它也不能获取甚至破坏敏感信息,进而从根源上保护芯片上的敏感信息, 有效防御恶意软件的攻击,确保应用程序在安全高效的执行。
[0042]本发明提出一种简单、灵活、高效的安全处理器架构,实现对存储空间的有效硬件 隔离。添加相应的硬件模块来管理内存隔离,同时与内存隔离有关的任何信息都只能有专 用的指令来修改,任何软件不能修改这些关键信息。为了达到更好的安全性和性能,我们仍 然使用包括操作系统在内的软件,但是我们并不信任任何软件。
[0043]传统的安全处理器的可信计算基包括操作系统以及一些管理软件,如图1所示,而 我们的安全处理器的可信计算基只有硬件,不信任任何的软件,即使是拥有特权的操作系 统,其可信计算基如图2所示。
[0044] 我们将内存地址空间分成两个部分:安全部分和非安全部分,安全部分中保存的 是敏感信息,即需要保护的代码和数据。非安全部分中存放的是普通信息。安全处理器中有 两种模式:一种为普通模式,另一种为安全模式,只有在安全模式下才能访问隔间 compartments内的信息。处理器每一次访问内存都需要检测对应物理地址的标志位的值, 如果为0,则允许访问,如果是1,则需要检测现在处于何种模式下,在普通模式拒绝访问并 抛出异常访问信息,在安全模式下则允许访问。
[0045] 处理器的模式切换和地址标志位的改变只能通过几条专用的指令来修改,任何软 件即使是拥有特权的操作系统也不能对处理器的模式和地址标志位进行修改,这样就可以 阻止恶意软件获取敏感信息。
[0046] 下面结合图片和表格及实例,对本发明进行进一步的详细说明。应该指出,此处所 描述的具体实施实例仅仅用以解释本发明,并不用于限定本发明。为使本发明的目的、技术 方案和优点更加清晰,本实例在以本发明技术方案为前提下进行实施,给出了详细的实施 方式和具体的操作过程。
[0047] 本发明通过创建内存隔离空间来为用户程序提供安全环境。处理器的整个内存的 地址空间被划分为安全区域和非安全区域,安全区域中存放的是安全敏感信息,非安全区 域中存放的是普通信息。安全处理器对敏感信息的保护完全建立在对内存的保护基础之 上。目前软件尤其是大型软件的代码量急剧增长,成千上行的代码中无可避免的存在着各 种漏洞,所以为保护存在安全区域内的敏感信息,该架构的可信计算基只有硬件,使用而不 信任操作系统。
[0048]针对内存安全区域的保护,我们设计了一个专用的硬件,准用硬件内主要包含两 个部件:物理页标志位和控制表,其中物理页标志位用于标明每一个物理页目前是处在安 全区域还是非安全区域;控制表用于记录每一个已经创建的隔间compartments的起始地址 和大小,为了支持这种安全架构,我们还需要对汇编器、链接器以及linux操作系统做简单 的修改。
[0049]我们的安全处理器及其支撑环境包括以下几个部分:
[0050] -,在处理器中添加一个简单的硬件模块,该模块中主要包含两个部分:(1)物理 页标志,用来标明每一个物理页当前是不是一个隔间compartment s以及该物理页是否曾经 被用作隔间compartments,为保证安全,物理页标志的值只能通过相应的指令来修改;(2) 控制表,该表记录已经创建的隔间compartments,包括隔间compartments所属程序的ID、隔 间compartments的起始地址和大小。
[0051] 二,添加几条专用的指令
[0052] (1)第一条指令用于修改控制表
[0053 ] (2)第一条指令用于创建compartment (隔间)(修改对应物理页的标志位)
[0054] (3)第二条指令用于进入compartment (隔间)(程序进入compartment (隔间),修改 处理器的模式为安全模式)
[0055] (4)第三条指令用于离开compartment(隔间)(程序执行期间离开compartment (隔 间),修改处理器的模式为普通模式)
[0056] (5)第四条指令用于销毁compartment(隔间)(擦除本程序所使用的compartment (隔间)内的数据)
[0057]三,专用寄存器是用来记录当前处理器的模式和当前使用的控制表的entry(条 目)。
[0058]四、对linux操作系统做简单的修改,我们需要修改Linux解析可执行文件(以ELF 格式为例)的过程,当头文信息中含有comptext段或compdata段时,即认为该程序为安全程 序,linux将以与处理其他段的相同的方式处理comptext段和compdata段,使用hash函数为 该程序产生一个ID,并使用内嵌汇编的方式保存相应的安全信息。修改之后的Linux能够正 确解析新的头表及获取相应的信息,为含有安全敏感信息的程序生产一个唯一的ID号,调 用专用指令将安全应用程序的ID号以及新增安全段的起始地址和大小存入控制表中。 [0059]五,对gcc编译具链中的汇编器做简单的修改,添加几条新指令,即只需根据汇编 器的规则在记录汇编指令与二进制之间转换的数组(insns[])中添加对应的信息,使我们 的安全应用程序能够正确的编译。
[0060]六,对gcc编译具链中的链接器的修改,我们只需修改对应的链接脚本即可,在现 有的segment(段)基础上,添加两个新的segment (段),即comptext段和compdata段,分别用 来存放安全信息的代码段和数据段的内容。在链接阶段,我们应该将含有安全信息的代码 和数据分别送入到新的comptext段和compdata段,同时将相应的起始地址和大小保存在 ELF的头表中。修改之前和修改之后的ELF中包含的段分别如表1和表2所示。

[0064] 表2:安全的ELF程序
[0065] 下面我们将结合一个具体的实例进一步解释本发明:假设我们已经通过修改后的 汇编器和链接器得到了一个含有敏感信息的应用程序。我们以基于v7架构的Cortex-A系列 的一款处理器为基础进行修改,当该应用程序在该安全处理器上运行时,操作系统首先会 解析该应用程序的头文件,然后就可以得知该应用程序是普通应用程序还是安全应用程 序,如果是普通程序,则按照一般方式进行处理,此时如果访问的物理地址在一个 compartment(隔间)内则拒绝访问并抛出异常;如果是安全应用程序,则从头文件信息中读 取comp的起始地址和大小,并为该应用程序产生一个唯一的ID号,调用专用指令将其值写 入控制表,在程序运行过程中一定会遇到缺页的情况,当缺页发生时检查当前地址是否在 一个compartment(隔间)内,若在compartment(隔间)内则调用专用指令修改对应物理页的 标志位,若不在compartment(隔间)内则直接访问内存。程序运行过程中会遇到一条enter 指令(enter指令表示接下来的部分是应用程序的安全部分),该指令将处理器的模式切换 到安全模式,当问遇到另一条leave指令时会将处理器的模式切换到普通模式,在程序即将 结束的时候会遇到一条release指令时会通过控制表将该程序的compartment (隔间)所在 的物理页全部清空。在整个程序运行的过程中,敏感信息都得到了很好的保护。
【主权项】
1. 一种基于内存隔离的安全架构处理方法,其特征是,步骤如下:在通用处理器中添加 一个硬件模块,该模块中包含两个部分:(1)物理页标志,用来标明每一个物理页当前是不 是一个隔间compartment W及该物理页是否曾经被用作隔间compartment,为保证安全,物 理页标志的值只能通过相应的指令来修改;(2)控制表,该表记录已经创建的隔间 compartment,包括隔间compartment所属程序的ID、隔间compartment的起始地址和大小; 添加几条专用的指令: (1) 第一条指令用于修改控制表; (2) 第二条指令用于创建隔间compartment,修改对应物理页的标志位; (3) 第Ξ条指令用于进入隔间compartment,程序进入隔间compartment,修改处理器的 模式为安全模式; (4) 第四条指令用于离开隔间compartment,程序执行期间离开隔间compartment,修改 处理器的模式为普通模式; (5) 第四条指令用于销毁隔间compartment,擦除本程序所使用的隔间compartment内 的数据; 设置专用寄存器,用来记录当前处理器的模式和当前使用的控制表的条目entry; 对linux操作系统做简单的修改,W使其能够正确解析新的头表及获取相应的信息,为 含有安全敏感信息的程序生产一个唯一的ID号,调用专用指令将安全应用程序的ID号W及 新增安全段的起始地址和大小存入控制表中; 对汇编器做简单的修改,添加几条新指令,使能够正确的编译; 对链接器的修改,在链接阶段,应该将含有安全信息的代码和数据分别送入到新的代 码段comptext和数据段compda化,同时将相应的起始地址和大小保存在ELF的头表中;修改 之后的ELF中包含的段分别如表2所示;表2:安全的ELF程序。2. 如权利要求1所述的基于内存隔离的安全架构处理方法,其特征是,对汇编器做简单 的修改具体是,根据汇编器的规则在记录汇编指令与二进制之间转换的数组中添加对应的 ?目息。3. -种基于内存隔离的安全架构处理器,其特征是,在通用处理器中设置有一个硬件 模块,所述硬件模块中包含两个部分:(1)物理页标志,用来标明每一个物理页当前是不是 一个隔间compartment W及该物理页是否曾经被用作隔间compartment,为保证安全,物理 页标志的值只能通过相应的指令来修改;(2)控制表,该表记录已经创建的隔间 compartment,包括隔间compartment所属程序的ID、隔间compartment的起始地址和大小。4.如权利要求3所述的基于内存隔离的安全架构处理器,其特征是,还设置有专用指令 模块、操作系统模块和专用寄存器,专用指令模块包含如下专用指令: (1) 第一条指令用于修改控制表; (2) 第二条指令用于创建隔间compartment,修改对应物理页的标志位; (3) 第Ξ条指令用于进入隔间compartment,程序进入隔间compartment,修改处理器的 模式为安全模式; (4) 第四条指令用于离开隔间compartment,程序执行期间离开隔间compartment,修改 处理器的模式为普通模式; (5) 第四条指令用于销毁隔间compartment,擦除本程序所使用的隔间compartment内 的数据; 专用寄存器,用来记录当前处理器的模式和当前使用的控制表的条目entry; 操作系统模块,包括: linux操作系统子模块,用于对linux操作系统做简单的修改,W使其能够正确解析新 的头表及获取相应的信息,为含有安全敏感信息的程序生产一个唯一的ID号,调用专用指 令将安全应用程序的ID号W及新增安全段的起始地址和大小存入控制表中; 汇编器子模块,对汇编器做简单的修改,添加几条新指令,使能够正确的编译; 链接器子模块,对链接器的修改,在链接阶段,应该将含有安全信息的代码和数据分别 送入到新的代码段comptext和数据段compdata,同时将相应的起始地址和大小保存在化F 的头表中;修改之后的ELF中包含的段分别如表2所示;_表2:安全的ELF程序。
【文档编号】G06F21/57GK106096429SQ201610682918
【公开日】2016年11月9日
【申请日】2016年8月16日 公开号201610682918.8, CN 106096429 A, CN 106096429A, CN 201610682918, CN-A-106096429, CN106096429 A, CN106096429A, CN201610682918, CN201610682918.8
【发明人】郭炜, 魏继增, 冯彦朝, 梁凯源
【申请人】天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1