CN109359487A - 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 - Google Patents
一种基于硬件隔离的可扩展安全影子存储及标签管理方法 Download PDFInfo
- Publication number
- CN109359487A CN109359487A CN201811173418.7A CN201811173418A CN109359487A CN 109359487 A CN109359487 A CN 109359487A CN 201811173418 A CN201811173418 A CN 201811173418A CN 109359487 A CN109359487 A CN 109359487A
- Authority
- CN
- China
- Prior art keywords
- label
- instruction
- enclave
- epc
- page
- 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.)
- Granted
Links
- 238000007726 management method Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 48
- 230000008569 process Effects 0.000 claims abstract description 31
- 230000006870 function Effects 0.000 claims description 30
- 238000007689 inspection Methods 0.000 claims description 22
- 238000013507 mapping Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 7
- 230000005856 abnormality Effects 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 description 13
- 238000002955 isolation Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 231100000279 safety data Toxicity 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于硬件隔离的可扩展安全影子存储及标签管理方法。该方法将Intel SGX构建安全执行环境的方法用于为进程创建隔离的影子存储区间。影子存储区间用于保存程序运行时信息。本发明称进程运行时信息为标签。影子存储区间内的标签按类似分页的方式存储和管理,并且只能由对应进程通过特定的指令访问。即使是特权程序(如操作系统与虚拟机监控器等)也不能访问或修改。基于该安全影子存储区间,通过编译器设置标签的数据结构,可实施不同安全规则,如控制流完整性,代码指针完整性,用户进程页面访问权限等。
Description
技术领域
本发明属于信息安全技术领域,涉及一种安全影子存储及标签管理方法,特别涉及一种基于硬件隔离的可扩展安全影子存储及标签管理方法。
背景技术
影子存储区间是与正常数据存储区间并行的存储区间。当前,很多安全机制基于影子存储实现。基于影子存储实现的安全策略包括:动态信息流跟踪(DIFT),存储安全(Memory Safety),代码指针完整性(Code-Pointer Integrity)及高层次的安全规则。另外还一些平台,基于影子存储实现可配置的安全规则。这些规则在实现时,为数据,指针,存储位置或程序对象绑定标签(有些文献中称为元数据(Meta-data)),并将标签存储在影子存储区间。在使用数据,指针或对象时,读取其对应标签。根据标签的信息,检验数据,指针或对象使用或相关操作的合法性。对于不同的安全机制,标签所表示的含义各不相同。实现动态信息流跟踪的安全规则时,标签表示相应的数据块是否完整或可信。实现存储安全的安全规则时,标签则表示指针或对象的边界及分配状态。实现指针完整性的安全规则时,标签用于验证被引用指针的完整性。除此之外,Loki与DataSafe则用标签代表高层次的安全规则。
SGX(Intel Software Guard Extensions)是Intel对处理器架构的扩展,用于增强软件的安全性。在SGX的编程模型中,应用程序被划分成可信部分与非可信部分。非可信部分包括非关键程序的代码与数据。系统软件与库文件也假设是不安全的。可信部分是安全相关的代码与相应数据。Intel通过增加一组指令和对存储操作的改变,为程序的可信部分创建可信执行环境,这个可信执行环境被称为enclave。Enclave是用户存储区间受保护的存储区域,在这个区域内有自己的代码段,堆与栈,为可信部分代码提供完整的执行环境。除了enclave的代码外,包括特权级软件(操作系统与VMM)在内的其它软件均不能访问enclave的存储区间。
为了方便enclave的创建,SGX在系统DRAM中预留了一块存储区域(PRM),这块区域只能被硬件访问,即使是系统软件与系统管理模式(SMM)也不能访问这个区域。另一方面,为了防止外设对这个区域的访问,存储控制器拒绝DMA对此区间进行读写操作。在enclave的虚似地址空间,enclave中的代码与相应数据被映射在ELRANGE(Enclave LinearAddress Range)范围内。ELRNAGE内的代码与数据被映射在PRM区域内的EPC(Enclave PageCache,EPC)。EPC内的代码与数据只能在enclave模式下访问,这是防止enclave外的代码访问enclave的关键措施。为了在多进程的环境中使用SGX,系统中可以同时支持多个enclave。因此,EPC按页面进行管理,每个EPC页可以分配给不同的enclave。SGX希望系统软件像管理其它物理资源一样管理EPC页面。但系统软件是不可信的,并且无法直接访问EPC页面。为了解决这一问题,系统软件通过执行相关指令完成页面的分配与初始化,并将页面的分配结果记录在EPCM(Enclave Page Cache Map)中。每个EPC页在EPCM中有一项与之对应。EPCM每项中记录对应EPC页面是否被分配。当系统软件为enclave分配EPC页面时,需要根据EPCM中存储的信息进行安全性验证。例如,如果系统软件将已经被分配的EPC页分配给其它enclave,则这个分配会被硬件拒绝。EPCM每项中还记录了对应EPC页面所属的enclave,这样可以防止某个enclave对另一个enclave的访问。另一方面,Intel在处理器的存储控制器内集成了加密引擎。当存储控制器检测到存储操作在EPC范围内,则将相应存储事务自动转到加密引擎进行加解密,并且用Merkle树保证存储器中数据的完整性。因此,SGX从硬件上将恶意软件与enclave隔离开,并用密码学方法防止物理攻击,保证了enclave中数据的保密性与完整性。
综上所述,enclave的创建与使用过程与EPC页的管理紧密相联。SGX提供一组指令供操作系统管理enclave的创建,初始化,进入,退出等。只有系统软件能够执行这些指令,Intel将这些操作封装成应用程序编程接口(API)供开发者使用。当应用需要执行可信部分程序时,首先调用相应API为程序可信部分创建enclave。系统软件通过执行ECREATE指令为enclave分配一个特定EPC页面SECS(SGX Enclave Control Structure),用于保存enclave的控制信息。在enclave创建完成后,还需要使用指令EADD将可信部分的代码和相应数据从普通存储页面载入到分配的EPC页面。在所有页面都载入到enclave中后,则执行EINIT指令对enclave初始化。到这一步,enclave已经可以使用。在enclave初始化完成后,可以像调用函数一样进入enclave中执行。通过执行EENTER指令进入enclave。这时,处理器的执行状态转到enclave模式。在enclave模式下,包括系统软件在内的其它程序均不能访问enclave中的内容。在enclave中的程序执行完后,通过执行EEXIT指令从enclave模式退出,继续不可信部分程序的执行。当enclave使用完成,通过执行EREMOVE指令将enclave的EPC页面释放。除了上面介绍的指令外,还有些指令用于enclave模式下的异常处理,调试,度量等。
为了支持enclave中动态存储管理,SGX2将存储管理功能分为两部分:系统存储资源管理者与enclave内部资源管理者。前者管理系统资源,后者在enclave内部管理enclave的资源。通过增加6条新指令,在系统管理者与内部管理者之间实现动态存储管理的协议。当enclave访问不存在的存储页时产生异常#PF。系统软件处理#PF时,为产生异常的地址提供一个EPC页,然后使用EAUG指令将分配的EPC添加到enclave中,此时新分配的EPC页处于PENDIND状态。对这个页面的操作将产生#PF。在异常处理完后返回到enclave中执行。enclave内通过执行EACCEPT指令将新分配的EPC页面的PENDIND的状态去掉,这样这个页面便可在enclave中使用。
在这些安全机制中,标签的存储方式不仅关系到安全机制的性能,还关系到安全机制实施的安全性。标签的存储方式可以分为三大类:(1)存储在应用的虚拟地址空间,存储的位置为数据(或指针值与某个存储位置)的虚拟地址加上一定的地址偏移,或者基于查找表的映射;(2)由系统软件隔离的虚拟地址空间;(3)由硬件隔离的存储空间,如:独立的存储芯片或由硬件访问的DRAM中保留的存储区间。对于第一种方式,有些机制没有考虑影子存储区间的安全性,有些机制考虑了影子存储区间的安全性,但仍存在安全隐患。例如,在x86-64架构中,CPI依靠地址空间随机化分布保护标签存储区域,但这种方法容易受到信息泄漏攻击或侧信道攻击。第二种方式依靠系统软件的隔离实施保护,但系统软件本身容易受到攻击,许多工作认为系统软件是不可信的。基于硬件的隔离机制能有效将标签的存储区域与恶意软件隔离开,但这种机制扩展性不好。另一方面,在应用的数据需要交换到磁盘上时,相应的标签会丢失。有些机制通过允许操作系统访问影子存储区域来支持影子存储区间交换到磁盘,但这种方法破坏了硬件存储区域的隔离性。
发明内容
为了解决现有影子存储安全性问题与扩展性问题,本发明提供了一种基于硬件隔离的可扩展安全影子存储及标签管理方法。
本发明所采用的技术方案是:一种基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于:为每个进程分配影子存储区间,所述影子存储区间视为进程的另一个虚拟地址空间;当需要为某个存储位置绑定标签时,利用指针或存储位置的虚拟地址将标签映射到所述影子存储区间。
作为优选,所述影子存储区间由应用调用系统函数分配,或由异常处理程序分配。
作为优选,将所述影子存储映射到特定存储区间EPC;所述特定存储区间EPC与Intel SGX的特定存储区间EPC相同,为处理器内部特定的SRAM,或为DRAM 321中保留的一块存储区域。
作为优选,所述标签以页面为单位管理,标签保存在影子存储区间内的标签表中,所述标签表的地址存储在标签页表中;
所述标签表与标签页表由系统软件管理,所述影子存储区间到特定存储区间EPC页面的映射关系也由特权软件管理(如操作系统或虚拟机监控器);EPCM包含每个特定存储区间EPC页的状态信息;所述状态信息包括哪个应用拥有这个特定存储区间EPC页,特定存储区间EPC页对应的虚拟地址;保存标签的特定存储区间EPC页的类型为数据EPC页。
作为优选,所述为每个进程分配影子存储区间,具体实现包括以下步骤:
步骤1:在收到创建安全影子存储区间的请求后,操作系统查看内部数据结构,为数据enclave分配一个未使用的EPC页面作为数据enclave的SECS页面,并为数据enclave分配ID;操作系统执行ECREATE指令完成SECS页面的创建;
步骤2:初始化函数通过系统调用执行EADD指令,为数据enclave创建TCSEPC页面与SSA EPC页面;
步骤3:安全影子存储区间的初始化函数通过系统调用执行EINIT指令将SECS页面设置为初始化状态;
在数据enclave初始化函数中,首先调用系统函数为应用分配虚拟地址空间;然后将创建数据enclave所需要的信息通过系统调用传递给操作系统;
步骤4:初始化函数执行EENTER指令,使处理器运行在数据enclave状态,在数据enclave状态下便能往影子存储区间读写标签。
作为优选,步骤4中,为了安全访问数据enclave,增加两条指令ETAGST与ETAGLD,专门用于对数据enclave的读写操作;在执行ETAGST与ETAGLD指令时,需要验证只有属于当前进程的ETAGST与ETAGLD指令才能访问相应的数据enclave。
作为优选,步骤4中,用ETAGST与ETAGLD指令存取指针标签时,标签表目录的基地址保存在寄存器BTDGREG内;实现时,用户态和内核态的标签页目录的基地址需要分开;在用户态,边界目录的基地址保存在寄存器BTDREGU中,在内核态边界目录的基地址保存在寄存器BTDREGS中。
作为优选,步骤4中,ETAGST指令还负责向系统软件请求增加新的特定存储区间EPC页面;为ETAGST指令增加Intel SGX的EACCEPT指令的功能,即用ETAGST指令向系统软件请求增加新的特定存储区间EPC页面,再用ETAGST指令清除新增加特定存储区间EPC页面的PENDIND状态。
作为优选,步骤4中,动态添加标签表;其具体实现包括以下子步骤:
步骤4.1:每当应用需要载入标签时,由CPU载入其对应的标签表目录中的条目并检查是否有效;如果该条目无效,则产生标签表缺失异常#PF;
步骤4.2:在进入异常处理函数之前,处理器执行AEX指令从数据enclave模式退出;在退出数据enclave模式后,系统软件开始进入异常处理过程;内核为其产生异常的地址分配新的标签表,新分配的边界表被映射到特定存储区间EPC上,并将标签表的位置更新到标签目录的条目中;系统软件通过执行EAUG指令,由处理器将该页面增加到数据enclave中;
步骤4.3:系统软件执行ERESUME指令,处理器重新回到数据enclave模式,并重新执行标签保存指令ETAGST S7;指令ETAGST将新添加的特定存储区间EPC页的PENDIND状态取消;
步骤4.3:应用继续执行之前的程序。
作为优选,所述方法还包括对SGX的安全检查方法;具体实现过程为:当处理器运行在非enclave模式下,若物理地址在PRM外,则正常执行;若在PRM内,则进一步检查当前执行的是否是数据enclave模式;数据enclave模式在系统程序开始执行时由操作系统执行EENTER指令时设置为1;若当前执行在数据enclave模式,则进一步判断是否执行ETAGST或ETAGLD指令;若是执行ETAGST或ETAGLD指令,则继续根据EPC页对应EPCM记录内容继续安全检查;
所述继续根据EPC页对应EPCM记录内容继续安全检查,只需要在TLB不命中时,由PMH进行一次安全检查,因为若PMH的安全检查不通过,不安全的页目录项并不能保存在TLB中。
本发明利用Intel SGX创建安全执行环境的机制创建基于硬件隔离的影子存储区间。与现有软件隔离技术相比,本发明能够有效将程序运行时信息与系统其它软件隔离。影子存储区间只能被其对应的进程访问,即使是特权级程序(如:操作系统,虚拟机监视器,BIOS,SMM)。与现有硬件方法相比,本发明能够通过编译器配置,实施不同的安全规则,具有更好的可扩展性。
附图说明
图1为本发明实施例中可能用到的微处理器的架构示意图;
图2为本发明实施例中点对点或环形连接的系统微处理器的架构示意图;
图3为本发明实施例的安全影子存储的架构示意图;
图4为本发明实施例的安全影子存储的生命周期示意图;
图5为本发明实施例中用ETAGST与ETAGLD指令存取指针标签时地址转换的过程示意图;
图6为本发明实施例的动态添加标签表的过程示意图;
图7为本发明实施例的安全检查的流程示意图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
SGX保证enclave中的软件与enclave外的所有软件隔离。SGX基于硬件的隔离是SGX安全模型的核心。SGX通过一系列的存储操作检查保证enclave内的代码只能访问属于自己enclave的EPC页面与非EPC页面,非enclave中的代码不能访问PRM范围内的存储。另外,MEE使SGX能够防止物理攻击,EPC页面的数据可以安全地交换到磁盘。本发明借鉴SGX的隔离机制,创建基于硬件隔离的影子存储。SGX的enclave包含程序执行所需要的所代码段,堆与栈,为应用创建安全的执行环境。而本发明主要用于保护程序执行过程中的关键数据。本发明可以看作是对Intel SGX的扩展。
本发明提供的一种基于硬件隔离的可扩展安全影子存储及标签管理方法,为每个进程分配影子存储区间,所述影子存储区间视为进程的另一个虚拟地址空间;当需要为某个存储位置绑定标签时,利用指针或存储位置的虚拟地址将标签映射到所述影子存储区间。
请见图1,给出了本实施方式中可能用到的微处理器的架构。图1所示的微处理器100有一个或多个处理器核101,102,103和104。每个处理器核有一个局部缓存111,112,113和114。这些处理器共用共享缓存121。微处理器可以包含存储控制中心(memorycontroller hub)131与存储141相连接。某些实现还包括图1中未给出的逻辑,例如集成的图形控制器及计算机系统中实现其它功能的逻辑,如I/O控制。在实现中,多核系统的微控制器或多核处理器的每个核都包含一个安全使能模块151,152,153和154。安全使能模块可以由硬件或软件实现,或者既包含硬件又包含软件。
除了图1所示的微处理器系统外,本专利也适用于点对点或环形连接的系统。图2所示为点对点连接的系统。图中所示为包含两个处理器201与202的系统。每个处理器包含一个或多个处理器核211,212。处理器201,202包含存储控制中心221,212与存储241,242相连。处理器201,202之间通过点到点接口238通信。接口238由点到点电路232,233实现。处理器201,202可能通过点到点接口237,239与芯片组203通信。接口237,239由点到点电路231,235,234,236实现。芯片组通过接口271与图形单元251通信。芯片组203通过接口272与总线桥252和253通信。系统通过总线桥252与外设261,262,263和264相连接。
本实施例提供的安全影子存储的架构如3所示。通常用户进程包括代码段304,堆303和栈302。除了传统的存储区间外,本专利为每个进程分配影子存储区间305。影子存储区间305可以看作进程的另一个虚拟地址空间。当需要为某个存储位置绑定标签时,利用指针或存储位置的虚拟地址将标签映射到影子存储区间305。在实现时,影子存储区间可以由应用调用系统函数分配,也可以由异常处理程序分配。
为了将影子存储区间与运行在相同处理器上的其它软件隔离开,本实施例将SGX构建安全执行环境的机制用于实现安全的影子存储。本发明将影子存储映射到特定存储区间EPC 322。这个特定的存储区间322与Intel SGX的特定存储区间EPC相同,可以是处理器内部特定的SRAM,也可以是DRAM 321中保留的一块存储区域。标签的管理方式与页表的管理方法类似,标签以页面为单位管理,标签保存在影子存储区间内的标签表(Tags Table)323中,标签表323的地址存储在标签页表(Tag Page Table)311中。为了保证系统的灵活性,标签表323与标签页表311由系统软件管理,影子存储区间到EPC页面的映射关系也由特权软件管理,如操作系统301。与Intel SGX类似,EPCM(Enclave Page Cache Map)包含每个EPC页的状态信息。状态信息包括哪个应用拥有这个EPC页,EPC页对应的虚拟地址等。保存标签的EPC页的类型为数据EPC页(PT_DATA)。
安全影子存储区间的创建由一系列的指令实现。这些指令411,412,413,414,415,416,417已经在Intel SGX中实现,本发明主要介绍安全影子存储的生命周期及对相关指令语义的修改。安全影子存储的生命周期如图4所示,数据enclave的创建过程与SGX enclave的创建过程类似。在数据enclave初始化函数中,首先调用系统函数为应用分配虚拟地址空间;然后将创建数据enclave所需要的信息通过系统调用传递给操作系统,如影子存储区间的虚拟地址。初始化函数可由编译器插入。可以将实现数据enclave初始化的函数属性设置为constructor,这样便可在应用程序的main函数之前创建数据enclave,保证安全影子存储机制对用户透明。
在收到创建安全影子存储的请求后,操作系统查看内部数据结构,为数据enclave分配一个未使用的EPC页面作为数据enclave的SECS页面,并为数据enclave分配ID。在完成这些工作后,操作系统执行ECREATE指令完成SECS页面的创建。此时数据enclave处于未初始化的状态。接着初始化函数通过系统调用执行EADD指令,为数据enclave创建TCS(ThreadControl Structure)EPC页面与SSA(State Save Area)EPC页面。此时数据enclave还处于未初始化状态。安全影子存储区间的初始化函数通过系统调用执行EINIT指令将SECS页面设置为初始化状态。最后,初始化函数执行EENTER指令,使处理器运行在数据enclave状态。在数据enclave状态下便可以往影子存储区间读写标签。
在数据enclave状态下便可以往影子存储区间读写标签。SGX enclave内的代码与数据只能被enclave内部的指令访问。由于数据enclave内保存的是应用的运行时信息,需要动态往数据enclave中读写信息。因此,这一机制违反SGX enclave的设计原则。为了安全访问数据enclave,本实施例增加两条指令ETAGST与ETAGLD 412,专门用于对数据enclave的读写操作。在执行ETAGST与ETAGLD指令时,需要验证只有属于当前进程的ETAGST与ETAGLD指令才能访问相应的数据enclave。本实施例假设系统中代码载入后不可被修改,并且系统也使用了数据执行保护策略,这样攻击者不能实施代码注入攻击。只能实施代码复用攻击,利用应用中的ETAGST与ETAGLD指令恶意修改数据enclave中的数据。实施代码复用攻击,需要利用存储错误漏洞,修改一个或多个与控制改变相关的指针。可以采用代码指针完整性的方法防止代码复用攻击。
由上段可知,标签采用类似分页的方式管理。当ETAGST与ETAGLD指令用指针地址存取标签时,标签的地址是通过二级地址转换计算得到。这个过程与虚拟地址转换的过程类似。如图5所示为用ETAGST与ETAGLD指令存取指针标签时地址转换的过程。标签表目录的基地址可以保存在寄存器BTDGREG 401内。实现时,用户态和内核态的标签页目录的基地址需要分开。在用户态,边界目录的基地址保存在寄存器BTDREGU中,在内核态边界目录的基地址保存在寄存器BTDREGS中。第一步为从标签表目录中取回边界表的基地址。首先取指针地址411的20-47位并向左移3位,得到标签表项在标签表目录中的偏移512;然后从寄存器BTDREGU/BTDREGS中取边界表目录的基地址522;将偏移与边界表目录的基地址相加,便得到标签表项的地址。从这个地址将标签表对应的标签表目录项523取回,标签表目录项给出了标签表的基地址531。在第二步,首先取指针地址511的3-19位并向左移5位,得到标签表项在标签表中的偏移513;然后将取回的标签表项的基地址左移3位;最后将标签表基地址与标签表偏移相加最终得到标签的地址。从这个地址便可取回指针对应的标签532。
除了往数据enclave中保存标签外,ETAGST指令还负责向系统软件请求增加新的EPC页面。本实施例为ETAGST指令增加了Intel SGX的EACCEPT指令的功能,即用ETAGST指令向系统软件请求增加新的EPC页面,再用ETAGST指令清除新增加EPC页面的PENDIND状态。
本发明动态添加标签表的过程如图6所示。每当应用601需要载入标签时S1,由CPU602载入其对应的标签表目录611中的条目612并检查是否有效S2。如果该条目无效,则产生标签表缺失异常#PF。在进入异常处理函数之前,处理器执行AEX指令从数据enclave模式退出。在退出数据enclave模式后,系统软件开始进入异常处理过程S3。内核为其产生异常的地址分配新的标签表,新分配的边界表被映射到EPC613上S4,并将标签表614的位置更新到标签目录的条目612中S5。系统软件603通过执行EAUG指令,由处理器602将该页面增加到数据enclave中S6。最后,系统软件603执行ERESUME指令,处理器602重新回到数据enclave模式,并重新执行标签保存指令ETAGST S7。指令ETAGST将新添加的EPC页的PENDIND状态取消。最后应用继续执行之前的程序S8。
SGX防止软件攻击的核心是一系列的存储操作安全检查,安全检查的流程如图7的右半部分所示。SGX的安全检查可以看作是在虚拟地址转换成物理地址后额外增加的检查701。首先,检查依赖于是否执行在enclave模式702。若处理器并没有工作在enclave模式,则允许PRM外的所有物理地址转换。若处理器工作在enclave模式,则需要检查物理地址是否在EPC范围内703。若处理器工作在enclave模式,而物理地址不在EPC范围内,则产生异常706。若处理器工作在enclave模式,且物理地址在EPC范围内,则需要根据EPC页对应EPCM项记录内容继续安全检查707。检查的内容包括三部分:1.SGX enclave内的虚拟地址转换成的物理地址必须映射到EPC内,这样才能保证SGX对ELRANGE存储范围内代码与数据的保密性与完整性;2.每个EPC页只能被拥有它的enclave操作,即当前enclave的ID与虚拟地址映射到的EPC页的enclave ID相同;3.包含SGX enclave结构的页,如SECS,TCS等只能被SGX的微代码访问,不能被enclave的代码访问;4.访问EPC页时的虚拟地址必须与分配时得到的虚拟地址相同。
为了保证数据enclave操作的安全性,安全影子存储只用指令ETAGST与ETAGLD访问数据enclave。本发明对SGX的安全检查流程进行了扩展,如图7的左半部分所示。当处理器运行在非enclave模式下,若物理地址在PRM外,则正常执行711。若在PRM内,则进一步检查当前执行的是否是数据enclave模式712。数据enclave模式在系统程序开始执行时由操作系统执行EENTER指令时设置为1。若当前执行在数据enclave模式,则进一步判断是否执行ETAGST或ETAGLD指令713。若是执行ETAGST或ETAGLD指令,则继续根据EPC页对应EPCM记录内容继续安全检查704。从概念上来说,每个存储操作都应该进行如图7所示的安全检查,但实际上只需要在TLB不命中时,由PMH(Page Miss Handler)进行一次安全检查即可,因为若PMH的安全检查不通过,不安全的页目录项并不能保存在TLB中。因此上述的存储安全检查可通过修改PMH实现。
本发明在计算机系统内创建安全的影子存储区域。安全的影子存储区域可供应用或特权级软件保存安全相关标签。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (10)
1.一种基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于:为每个进程分配影子存储区间,所述影子存储区间视为进程的另一个虚拟地址空间;当需要为某个存储位置绑定标签时,利用指针或存储位置的虚拟地址将标签映射到所述影子存储区间。
2.根据权利要求1所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于:所述影子存储区间由应用调用系统函数分配,或由异常处理程序分配。
3.根据权利要求1所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于:将所述影子存储映射到特定存储区间EPC;所述特定存储区间EPC与Intel SGX的特定存储区间EPC相同,为处理器内部特定的SRAM,或为DRAM中保留的一块存储区域。
4.根据权利要求1所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于:所述标签以页面为单位管理,标签保存在影子存储区间内的标签表中,所述标签表的地址存储在标签页表中;
所述标签表与标签页表由系统软件管理,所述影子存储区间到特定存储区间EPC页面的映射关系也由特权软件管理;EPCM包含每个特定存储区间EPC页的状态信息;所述状态信息包括哪个应用拥有这个特定存储区间EPC页,特定存储区间EPC页对应的虚拟地址;本发明将保存标签的特定存储区间EPC页的类型设定为数据EPC页。
5.根据权利要求1-4任意一项所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于,所述为每个进程分配影子存储区间,具体实现包括以下步骤:
步骤1:在收到创建安全影子存储区间的请求后,操作系统查看内部数据结构,为数据enclave分配一个未使用的特定存储区间EPC页面作为数据enclave的SECS页面,并为数据enclave分配ID;操作系统执行ECREATE指令完成SECS页面的创建;
步骤2:初始化函数通过系统调用执行EADD指令,为数据enclave创建TCSEPC页面与SSAEPC页面;
步骤3:安全影子存储区间的初始化函数通过系统调用执行EINIT指令将SECS页面设置为初始化状态;
在数据enclave初始化函数中,首先调用系统函数为应用分配虚拟地址空间;然后将创建数据enclave所需要的信息通过系统调用传递给操作系统;
步骤4:初始化函数执行EENTER指令,使处理器运行在数据enclave状态,在数据enclave状态下便能通过特定指令往影子存储区间读写标签。
6.根据权利要求5所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于:步骤4中,为了安全访问数据enclave,增加两条指令ETAGST与ETAGLD,专门用于对数据enclave的读写操作;在执行ETAGST与ETAGLD指令时,需要验证只有属于当前进程的ETAGST与ETAGLD指令才能访问相应的数据enclave。
7.根据权利要求6所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于:步骤4中,用ETAGST与ETAGLD指令存取指针标签时,标签表目录的基地址保存在寄存器BTDGREG内;实现时,用户态和内核态的标签页目录的基地址需要分开;在用户态,边界目录的基地址保存在寄存器BTDREGU中,在内核态边界目录的基地址保存在寄存器BTDREGS中。
8.根据权利要求6所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于:步骤4中,ETAGST指令还负责向系统软件请求增加新的特定存储区间EPC页面;为ETAGST指令增加Intel SGX的EACCEPT指令的功能,即用ETAGST指令向系统软件请求增加新的特定存储区间EPC页面,再用ETAGST指令清除新增加特定存储区间EPC页面的PENDIND状态。
9.根据权利要求6所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于,步骤4中,动态添加标签表;其具体实现包括以下子步骤:
步骤4.1:每当应用需要载入标签时,由CPU载入其对应的标签表目录中的条目并检查是否有效;如果该条目无效,则产生标签表缺失异常#PF;
步骤4.2:在进入异常处理函数之前,处理器执行AEX指令从数据enclave模式退出;在退出数据enclave模式后,系统软件开始进入异常处理过程;内核为其产生异常的地址分配新的标签表,新分配的边界表被映射到特定存储区间EPC上,并将标签表的位置更新到标签目录的条目中;系统软件通过执行EAUG指令,由处理器将该页面增加到数据enclave中;
步骤4.3:系统软件执行ERESUME指令,处理器重新回到数据enclave模式,并重新执行标签保存指令ETAGST;指令ETAGST将新添加的特定存储区间EPC页的PENDIND状态取消;
步骤4.3:应用继续执行之前的程序。
10.根据权利要求6所述的基于硬件隔离的可扩展安全影子存储及标签管理方法,其特征在于,还包括对SGX的安全检查方法;具体实现过程为:当处理器运行在非enclave模式下,若物理地址在PRM外,则正常执行;若在PRM内,则进一步检查当前执行的是否是数据enclave模式;数据enclave模式在系统程序开始执行时由操作系统执行EENTER指令时设置为1;若当前执行在数据enclave模式,则进一步判断是否执行ETAGST或ETAGLD指令;若是执行ETAGST或ETAGLD指令,则继续根据EPC页对应EPCM记录内容继续安全检查;所述继续根据EPC页对应EPCM记录内容继续安全检查,只需要在TLB不命中时,由PMH进行一次安全检查,因为若PMH的安全检查不通过,不安全的页目录项并不能保存在TLB中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811173418.7A CN109359487B (zh) | 2018-10-09 | 2018-10-09 | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811173418.7A CN109359487B (zh) | 2018-10-09 | 2018-10-09 | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109359487A true CN109359487A (zh) | 2019-02-19 |
CN109359487B CN109359487B (zh) | 2022-02-18 |
Family
ID=65348865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811173418.7A Active CN109359487B (zh) | 2018-10-09 | 2018-10-09 | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109359487B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109829313A (zh) * | 2019-02-28 | 2019-05-31 | 中国人民解放军战略支援部队信息工程大学 | 一种基于代码复用编程防御sgx侧信道攻击的方法及装置 |
CN109947666A (zh) * | 2019-02-27 | 2019-06-28 | 余炀 | 可信执行环境缓存隔离方法及装置、电子设备和存储介质 |
CN109993003A (zh) * | 2019-03-12 | 2019-07-09 | 广州大学 | 一种基于sgx的软件流安全验证方法及装置 |
CN110069935A (zh) * | 2019-03-20 | 2019-07-30 | 上海交通大学 | 基于标记内存的内部敏感数据保护方法及系统 |
CN110069920A (zh) * | 2019-03-06 | 2019-07-30 | 上海交通大学 | 基于虚拟化保证sgx安全性的方法和系统 |
CN110532767A (zh) * | 2019-08-19 | 2019-12-03 | 上海交通大学 | 面向sgx安全应用的内部隔离方法 |
CN111625784A (zh) * | 2020-05-29 | 2020-09-04 | 重庆小雨点小额贷款有限公司 | 一种应用的反调试方法、相关装置及存储介质 |
CN111753311A (zh) * | 2020-08-28 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 超线程场景下安全进入可信执行环境的方法及装置 |
CN111831581A (zh) * | 2020-07-16 | 2020-10-27 | 长江存储科技有限责任公司 | 数据读取方法、装置及数据存储设备 |
CN112182560A (zh) * | 2020-09-17 | 2021-01-05 | 上海交通大学 | 针对Intel SGX内部高效的隔离方法、系统及介质 |
CN113454966A (zh) * | 2019-07-24 | 2021-09-28 | Oppo广东移动通信有限公司 | 一种影子设备的生成方法、设备及存储介质 |
CN113544655A (zh) * | 2019-03-08 | 2021-10-22 | 国际商业机器公司 | 安全接口控件安全存储硬件标记 |
WO2023093385A1 (zh) * | 2021-11-29 | 2023-06-01 | 中国科学院计算技术研究所 | 一种基于cet机制的保护通用内存完整性的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005122402A (ja) * | 2003-10-15 | 2005-05-12 | Systemneeds Inc | Icカードシステム |
CN107454958A (zh) * | 2015-04-09 | 2017-12-08 | 威睿公司 | 使用多个嵌套页表隔离客户机代码和数据 |
CN107544918A (zh) * | 2017-08-17 | 2018-01-05 | 致象尔微电子科技(上海)有限公司 | 一种内存页共享方法 |
-
2018
- 2018-10-09 CN CN201811173418.7A patent/CN109359487B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005122402A (ja) * | 2003-10-15 | 2005-05-12 | Systemneeds Inc | Icカードシステム |
CN107454958A (zh) * | 2015-04-09 | 2017-12-08 | 威睿公司 | 使用多个嵌套页表隔离客户机代码和数据 |
CN107544918A (zh) * | 2017-08-17 | 2018-01-05 | 致象尔微电子科技(上海)有限公司 | 一种内存页共享方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947666A (zh) * | 2019-02-27 | 2019-06-28 | 余炀 | 可信执行环境缓存隔离方法及装置、电子设备和存储介质 |
CN109829313A (zh) * | 2019-02-28 | 2019-05-31 | 中国人民解放军战略支援部队信息工程大学 | 一种基于代码复用编程防御sgx侧信道攻击的方法及装置 |
CN110069920A (zh) * | 2019-03-06 | 2019-07-30 | 上海交通大学 | 基于虚拟化保证sgx安全性的方法和系统 |
CN113544655A (zh) * | 2019-03-08 | 2021-10-22 | 国际商业机器公司 | 安全接口控件安全存储硬件标记 |
CN113544655B (zh) * | 2019-03-08 | 2023-09-01 | 国际商业机器公司 | 安全接口控件安全存储硬件标记 |
CN109993003A (zh) * | 2019-03-12 | 2019-07-09 | 广州大学 | 一种基于sgx的软件流安全验证方法及装置 |
CN110069935A (zh) * | 2019-03-20 | 2019-07-30 | 上海交通大学 | 基于标记内存的内部敏感数据保护方法及系统 |
CN113454966A (zh) * | 2019-07-24 | 2021-09-28 | Oppo广东移动通信有限公司 | 一种影子设备的生成方法、设备及存储介质 |
CN110532767A (zh) * | 2019-08-19 | 2019-12-03 | 上海交通大学 | 面向sgx安全应用的内部隔离方法 |
CN111625784A (zh) * | 2020-05-29 | 2020-09-04 | 重庆小雨点小额贷款有限公司 | 一种应用的反调试方法、相关装置及存储介质 |
CN111625784B (zh) * | 2020-05-29 | 2023-09-12 | 重庆小雨点小额贷款有限公司 | 一种应用的反调试方法、相关装置及存储介质 |
CN111831581A (zh) * | 2020-07-16 | 2020-10-27 | 长江存储科技有限责任公司 | 数据读取方法、装置及数据存储设备 |
US11392405B2 (en) | 2020-08-28 | 2022-07-19 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method and apparatus for securely entering trusted execution environment in hyper- threading scenario |
CN111753311A (zh) * | 2020-08-28 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 超线程场景下安全进入可信执行环境的方法及装置 |
CN112182560B (zh) * | 2020-09-17 | 2022-04-26 | 上海交通大学 | 针对Intel SGX内部高效的隔离方法、系统及介质 |
CN112182560A (zh) * | 2020-09-17 | 2021-01-05 | 上海交通大学 | 针对Intel SGX内部高效的隔离方法、系统及介质 |
WO2023093385A1 (zh) * | 2021-11-29 | 2023-06-01 | 中国科学院计算技术研究所 | 一种基于cet机制的保护通用内存完整性的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109359487B (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359487A (zh) | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 | |
US10810309B2 (en) | Method and system for detecting kernel corruption exploits | |
McKeen et al. | Innovative instructions and software model for isolated execution. | |
Olson et al. | Border control: Sandboxing accelerators | |
US11875180B2 (en) | Systems and methods for stalling host processor | |
US7272832B2 (en) | Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform | |
JP4302494B2 (ja) | データ処理装置内のメモリへアクセスするための技術 | |
JP4302492B2 (ja) | メモリへのアクセスを管理するための装置および方法 | |
JP4302641B2 (ja) | デバイスによるメモリへのアクセスの制御 | |
JP4302493B2 (ja) | データ処理装置内のメモリへアクセスするための技術 | |
JP5000573B2 (ja) | 保護された関数呼び出し | |
TW200412105A (en) | Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain | |
JP2004171566A (ja) | サスペンドされたオペレーティングシステムへデータ処理リクエストを送る方法 | |
WO2019237866A1 (zh) | 一种运行时访问控制方法及计算装置 | |
TW201905715A (zh) | 異常返回指令 | |
KR20230101826A (ko) | 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술 | |
Liu et al. | A buffer overflow detection and defense method based on RISC-V instruction set extension | |
Park et al. | Libmpk: software abstraction for Intel memory protection keys | |
Oliveira et al. | Ianus: Secure and holistic coexistence with kernel extensions-a immune system-inspired approach | |
US10942739B2 (en) | Check instruction for verifying correct code execution context | |
JP4299108B2 (ja) | 多数のオペレーティングシステムの間のタスクの追従 | |
JP7553019B2 (ja) | シャドウスタックを効率的に管理および処理するための装置および方法 | |
TW201926061A (zh) | 用於記憶體區域的巡檢清除-提交狀態 | |
Yoon et al. | The DragonBeam Framework: Hardware-protected security modules for in-place intrusion detection | |
TW201905706A (zh) | 領域執行情境遮罩及保存 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231208 Address after: Room 1906, Pengrunda Commercial Plaza, No. 3368 Houhaibin Road, Haizhu Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong Province, 518000 Patentee after: Shenzhen Yunjie Network Co.,Ltd. Address before: 441053 No. 296, Longzhong Road, Xiangcheng District, Xiangyang City, Hubei Province Patentee before: HUBEI University OF ARTS AND SCIENCE |