论文部分内容阅读
摘要:随着处理器技术发展,终端设备、服务器承载越来越多的敏感任务和隐私数据,具有很强的安全需求。传统安全软件保护以内核安全为基础,内核被攻破意味着保护彻底失效;硬件上通过挂载安全芯片提高设备安全性,但仍未解决处理器与安全芯片之间通信安全以及运行效率问题。为了解决安全问题,研究人员引入以处理器硬件为基础的可信执行环境(Trusted Execution Environment,TEE)概念,目前投入商用的主流TEE技术包括ARM TrustZone和Intel SGX技术。虽然两者都是为解决安全保护问题,但是两者采用不同设计理念,造成这两种技术对不同应用场景保护具有显著差别。该文通过介绍当前两种技术研究进展,深入分析两者设计理念、隔离保护原理、运行架构,研究这两种技术实现和应用上的差异,总结两种技术的优缺点,探索TEE技术的改进和推广应用方向。
关键词:TEE;ARM TrustZone;Intel SGX
1 背景
随着处理器性能提升,处理器可以支撑更加复杂的硬件和软件运行,导致计算机结构变得更加庞大,引入大量的漏洞威胁。如今计算机需要处理大量用户数据、执行敏感任务,一旦遭受漏洞攻击,会造成大量损失,因此提出很强的安全需求。传统安全策略分别从软件和硬件出发,提供安全保护。软件上引入虚拟化机制,增加操作系统保护模式,利用虚拟地址限制不同应用访问地址范围,保护敏感任务和隐私数据安全,这种保护方法前提是操作系统可信,然而主流操作系统采用宏内核设计引入大量安全威胁,以Linux[1]为例,Linux代码超过1700万行,CVE[2]记录Linux漏洞多达333个,涉及拒绝服务、溢出、注入等攻击,攻击者利用系统漏洞获取系统最高访问权限,一旦内核被攻破,以虚拟化机制为基础的保护就会失效。硬件上通过扩展安全器件加强设备安全性,Intel最早提出外挂TPM(Trusted Platform Module)安全芯片实现对数据的加解密和数据完整性验证,但是TPM与处理器之间通信存在数据泄露的风险。为了解决TPM存在的问题,Intel与微软合作在TPM基础上提出Trusted Execution Technology(TXT)技术,以TPM为信任原点,构建安全启动度量机制,但是TXT技术没有解决运行效率低下的问题。
针对软件和硬件安全保护策略不足,研究人员提出以处理器硬件为基础的可信执行环境(Trusted Execution Environment,TEE)[3]概念,可信执行环境通过软硬件资源划分,为敏感任务和隐私数据提供独立隔离的执行环境,防止攻击者从中获取数据。当前主流商用TEE技术包括ARM TrustZone Technology[4]和Intel Software Guard eXtensions (SGX) [5-6]两种,分别针对ARM和x86两种架构处理器设计。ARM处理器应用于嵌入式平台,处理数字版权管理(Digital Rights Management,DRM)[7]、在线支付、身份认证等任务,这些任务面向不同用户提供相同运行逻辑。x86处理器用于桌面级PC和服务器平台,处理分布式任务,这些任务面向不同用户提供不同运行逻辑。由于两种处理器适用不同平台处理不同任务,造成TrustZone与SGX构建可信执行环境机制不同,TrustZone为可信应用程序创建一个安全世界,这些可信应用程序在安全世界內运行,SGX为应用程序创建一个受信任的环境enclave,这样可信程序可以在不受信任的系统软件上运行。两者不同的设计理念,造成这两种技术对不同应用场景保护具有显著差异。本文深入分析两者设计理念、运行架构、隔离保护原理,研究这两种技术实现和应用上的差异,总结两种技术的优缺点,探索TEE技术的改进和推广应用方向。
2 TEE安全与应用领域研究进展
ARM TrustZone和Intel SGX作为当前商业应用最广泛的两项TEE技术,研究人员就其安全性和应用场景进行了大量研究。
2.1 安全性研究
TrustZone和SGX为用户提供硬件级安全保护,抵御攻击能力是评估TrustZone和SGX安全的重要指标,文献[8]中对TrustZone和SGX常见攻击进行分析,包括三类:
1) 特权软件攻击。
2) 硬件中间信息攻击。
3) 直接探测硬件攻击。
第一类包括针对页表映射、DMA、固件以及拒绝服务等攻击。TrustZone和SGX能够有效抵御针对页表映射、DMA以及固件的攻击,但是对拒绝服务攻击防范能力不足,导致系统运行受限。但是此类攻击无法危害可信执行环境内部数据安全。同时,此类攻击严重影响系统运行,导致系统性能下降,系统的使用者可以及时发现并采取补救措施。
第二类攻击包括基于缓存的侧信道攻击[9]和针对DRAM的Row-hammer[10]攻击。TrustZone在一定程度上可以抵御Row-hammer攻击,前提是开发者设置了完整性检查机制,SGX可以有效抵御Row-hammer攻击。然而, TrustZone与SGX都无法抵御基于缓存的侧信道攻击。TrustZone虽然通过创建一个安全世界为可信应用程序提供可信执行环境,但是安全世界缓存是由运行时安全世界需求决定,ARMageddon[11]利用Prime Probe attack成功获取缓存信息,证明基于缓存的侧信道攻击对TrustZone有效。SGX并未更改原有Intel平台缓存设计,所有应用共用同一缓存,造成对缓存的保护能力不足,王鹃[12]提出使用随机化方法和检测时间方法抵御攻击,随机化缓存增加攻击者分析难度,同时,SGX遭受缓存攻击会造成应用运行性能下降,通过检测运行时间可以发现系统异常,两种方法具有可行性。在云计算平台上,Intel提出 CAT技术[13]防御侧信道攻击。 第三类直接对硬件进行探测,TrustZone和SGX将安全组件集成封装在处理器内部,处理器外部只留下有限个端口供开发者使用,可以有效防御直接探测硬件攻击。
2.2 应用领域研究
TrustZone广泛应用于智能手机、智能电视以及物联网领域。智能手机领域芯片厂商众多,国内有联发科、华为海思,国外有高通、三星等公司。各个厂家开发的芯片都支持TrustZone技术,致力于保护用户设备安全。但是不同厂家TEE解决方案不尽相同,如表1所示。
其中高通采用QSEE技术,支持32位和64位操作系统运行,海思和Linaro分别采用TrustedCore和OPTEE技术,支持32位操作系统。这些TEE解决方案在智能手机领域主要用于实现在线支付、数字版权保护、安全存储、指纹识别等需求。
智能电视领域使用TEE技术实现数字版权保护、会员鉴定等安全功能,保护厂家和用户安全。国内智能电视芯片有华为海思和星辰半导体两家公司,TEE方案由电视芯片厂商提供,且不对外公布。物联网领域包括智能家居助理、IP摄像头、可穿戴设备等[17],这些设备收集用户敏感信息,TEE技术为这些设备提供安全保护。文献[18]使用TrustZone和虚拟化技术记录传感器活动日志来提高物联网设备安全性,文献[19]使用TrustZone保护外围设备,确保无人机信息安全。
SGX广泛应用于云计算领域。文献[12]中将云计算领域运用归纳为4类。
1) 构建云端应用安全隔离执行环境,文献[20]利用SGX为用户程序运行提供可信执行环境,拒绝特权软件访问以及篡改用户程序的数据,保护用户程序安全。
2) 构建安全容器。Docker是当前主流容器,容器的特点是占用资源少、系统启动快以及I/O性能高,但是Docker容易被更高特权的容器访问,为了解决隐私和安全问题,文献[21]利用SGX构建SCONE,为Docker运行提供安全环境,保护各容器的安全。
3) 构建云端大数据安全可信计算环境。以MapReduce为例,文献[22]利用SGX为大数据计算构建安全环境,确保数据计算和数据存储安全。
4) 实现NFV(network function virtualization)的状态保护。
3 ARM TrustZone与SGX架构实现
3.1 ARM TrustZone安全实现
ARM TrustZone利用软硬件资源划分出两个独立执行域:普通世界[23]和安全世界[24]。本小节将从软件和硬件架构介绍ARM TrustZone安全实现。
3.1.1 ARM TrustZone软件架构
如图1所示,ARM TrustZone在安全世界内部实现安全操作系统(Trusted OS),用于管理安全世界内部资源。安全世界独立于主机环境运行,与普通世界一样,安全世界拥有多个特权级,其中安全操作系统运行在EL1特权级,拥有独立的异常处理、中断处理、调度和页表管理机制。Monitor模式处于EL3特权级,拥有系统最高权限,负责普通世界与安全世界切换,保存世界切换上下文。ARMv7架构以前的ARM TrustZone不支持安全世界虚拟化,即安全世界中缺少EL2特权态支持。文献[25]中指出缺少EL2特权态支持的ARM TrustZone三点挑战。
1)可信应用生态系统的挑战。
2)安全世界集成來自多个供应商的代码的挑战。
3)最小特权原则挑战。
针对这三点挑战,ARM推出ARMv8.4-A构架,该架构支持安全世界EL2特权态,引入安全世界虚拟化机制,加强安全世界与普通世界隔离。
系统启动过程容易遭受攻击和破坏,攻击者在系统断电期间篡改和替换计算机系统存储在SOC中的镜像文件。安全世界利用安全启动确保系统初始状态安全,安全启动如图2所示,一旦设备启动,处理器验证可信根之后,首先加载安全世界镜像,验证镜像签名的合法性,防止安全世界镜像被篡改和替换,验证成功后,由安全世界引导普通世界加载运行,任何一个步骤错误,都会导致加载失败。
3.1.2 ARM TrustZone硬件架构
ARM TrustZone硬件架构如图3所示,ARM TrustZone将安全组件封装到处理器内部,从物理上隔绝外部访问,安全组件包括通过总线相连,作为总线主设备,将内存、总线设备、缓存和内存管理单元以及中断等硬件资源分为安全部分与非安全部分,分别配置给安全世界与普通世界使用。
TrustZone利用TZMA组件将片上内存分为安全与非安全区域,安全区域配置大小由TZPCR0SIZE寄存器决定。片外内存DRAM由总线设备TZASC进行配置,区分来自安全世界与普通世界访问。
TrustZone对处理器核进行虚拟化,利用CP15的SCR寄存器标记处理器状态。此外,扩展AXI读写通道安全位,AXI总线直接连接片上安全组件,当处理器发出访问设备的事务请求,由AXI解码逻辑解析该请求的安全状态,防止不安全状态处理器访问安全设备。处理器利用APB连接外部设备,APB没有扩展安全位,TrustZone引入AXI-APB Bridge,连接AXI与APB,由AXI-APB Bridge承担解析APB上设备安全性的任务。
TrustZone扩展每个缓存tag域,增设安全位,用于标识缓存的安全性。此外,虚拟化MMU[26]单元对应不同世界地址转换。TrustZone提供IRQ(Interrupt Request)和FIQ(Fast Interrupt Request)两种中断模式,分别配置为普通世界和安全世界中断源,为避免处于非安全状态的处理器捕获FIQ中断,TrustZone增加中断控制组件TZIC(TrustZone Interrupt Controller),作为第一级中断控制器,控制所有外部中断源,中断控制器只能在安全状态下进行设置。 3.2 SGX安全实现
SGX允许用户应用主动创建和维护安全区域,这个区域称为enclave。如图4所示,用户与enclave之间一一对应,用户与enclave之间具有对等访问权限,具有以下4点特性。
1) SGX保证enclave内部数据和代码机密性,任何特权和恶意软件无法获取enclave内容。
2) enclave与enclave之间互相隔离,防止enclave交叉访问泄露enclave内容。
3) enclave由用户应用主动创建和管理,每个enclave都是一个独立的隔离执行域。
4) SGX阻止软件对enclave进行重放攻击。
为满足以上特性,SGX对原有Intel平台进行扩展,增加安全组件改变系统存储访问策略,扩展安全指令支持SGX运行。
1)SGX安全组件
SGX安全组件包括内存加密引擎(Memory Encrypt Engine,MEE)和内存访问控制模块EPC以及EPCM。
SGX在内存上划分一段受保护的区域PRM(Processor Reserved Memory),PRM大小在BIOS界面配置,用于存储EPC、EPCM内容。EPC、EPCM关系如图5所示。
其中,EPC是PRM的子集,由若干个4kb大小的页组成,用于存储enclave的内容。EPCM用于SGX检查,由若干个Entry组成,每个Entry对应一张EPC页,用于记录EPC页属性,标记EPC页与enclave的关系。
MEE是独立设计的硬件加解密引擎,MEE处理过的区域为MEE区域。MEE用于处理器与内存之间通信数据加密、enclave数据内容加密以及页表加密,从各个层次确保enclave内部数据的安全。
2)SGX扩展指令集
SGX扩展17条安全指令[6],贯穿enclave创建、运行与退出以及销毁的整个运行过程。enclave运行状态机如图6所示。
enclave创建与退出。用户应用调用ECREATE指令创建enclave,创建enclave过程中调用EADD指令加载EPC页以及EEXTEND指令对enclave进行测量,测量的目的是为了保护enclave的完整性,防止enclave内数据和代码被攻击者篡改或者替换。测量完毕需要使用EINIT指令使能enclave,标记enclave可用。使用完毕后,调用EREMOVE指令销毁enclave,同时清除缓存与页表信息。
enclave运行与退出。enclave运行支持中断响应,设置两种退出模式:同步与异步退出。正常运行模式:用户调用EENTER指令加载enclave运行,任务运行结束调用EEXIT退出执行。然而,enclave运行过程如果发生异常,触发处理器中断,那么处理器会调用AEX指令,在响应中断前保存当前enclave运行上下文至EPC中,用于恢复enclave运行现场。中断响应结束后,用户调用ERESUME重新加载enclave运行,直至完成后调用EEXIT正常退出。
enclave 驱逐与加载。由于PRM大小限制,导致EPC容纳enclave数目有限。SGX利用驱逐和加载解决资源不足问题,当EPC中enclave数目达到上限,系统使用EBLOCK标记长期占有资源却没有运行的enclave,在调用ETRACK清除enclave缓存和页表映射信息后,使用EWB指令将enclave相关EPC页加密后驱逐至外部存储中,然后释放EPC页,将资源给后续enclave使用。当被驱逐的enclave需要继续运行,系统通过ELDU和ELDB验证enclave完整性,防止enclave被篡改或替代,验证成功后将enclave相关资源加载到EPC页中,恢复enclave运行现场。
4 ARM TrustZone与SGX分析
ARM TrustZone和Intel SGX都是当前主流TEE技术,两者旨在构造安全的隔离环境用于敏感任务计算和隐私数据存储,防止攻击者从中获取数据,危害系统安全。但是两者面向不同平台,针对不同的应用场景,因此采取了不同的设计理念,造成两种技术对相同的应用场景保护具有明显差异。本节将从TrustZone和SGX设計理念、隔离保护原理、运行机制、面临挑战角度出发进行两者安全保护分析。
4.1 设计理念
TrustZone和SGX采用不同设计模式,如图7所示,TrustZone基于CS模式设计,构造两个独立世界,整个安全世界设置为可信执行环境。SGX基于P2P模式设计,如图8所示,每个应用拥有自己独立的安全环境,这两种不同设计模式,造成TrustZone与SGX设计理念上的巨大差异,体现在可信基设计、安全服务设计以及任务调度三个方面。
1) 可信基设计。TrustZone将整个安全世界作为可信基,包括安全组件、安全操作系统与安全应用,普通世界应用共用同一套可信基,安全世界由设备厂商配置,简化用户开发和使用难度。但是安全世界内部安全应用之间缺少有效隔离,其中任何一个安全应用出现问题,都会导致整个可信基失效。SGX将enclave作为独立可信基,enclave与应用一一对应,enclave不会对系统和其他enclave安全造成威胁,但是增加用户开发和维护的难度。
2) 安全服务设计。TrustZone预先将安全厂商设计的安全代码部署在安全世界,普通世界应用程序只能通过厂商提供的安全接口请求固定的通用安全服务。TrustZone无法为普通世界提供安全代码之外的其他专用服务。SGX安全服务更加专用化,SGX应用分为安全部分与非安全部分,这两部分代码均由用户开发,安全部分部署在enclave中隔离运行,根据不同功能开发不同安全代码。 3) 任务调度设计。TrustZone和SGX面向多核系统设计,支持虚拟机。TrustZone处理器每个核心一个时间点只做一个安全调用,由Monitor模块支持世界状态切换。SGX支持多enclave线程执行,且运行过程处理器能够响应中断执行,任务调度更加灵活。
4.2 隔离保护原理
TrustZone与SGX采用不同隔离保护原理。TrustZone提供一个独立于主机运行的安全世界,安全世界包括所有安全操作,由于TrustZone只划分两个执行域:安全世界与普通世界,因此TrustZone只需围绕安全世界制定隔离保护策略。利用软件和硬件划分安全世界与普通世界资源,软件上,安全世界内实现安全操作系统,由安全操作系统管理和调度安全资源;硬件上扩展安全位,通过AXI、TZASC、TZMA、TZPC等辅助控制器实现对内存、IO等资源的安全隔离,提供安全世界运行需要的硬件资源。设置Monitor模块,Monitor模块处于最高特权态运行,连接普通世界和安全世界,隔离不同世界之间的访问,提供系统级的安全保护。
SGX允许用户主动创建和维护enclave,部署应用安全代码与隐私数据,提供应用级别保护。每个enclave作为独立的安全环境,与TrustZone不同,SGX需要对不同的enclave提供保护,因此SGX采取不同的隔离保护方法。SGX利用硬件加密方法,在内存上设置PRM,用户应用创建的enclave加密后加载到对应EPC页中,不同enclave对应不同密钥,即使攻击者探测到EPC的内容,也无法分析enclave的有效信息。处理器使能enclave模式之后,才能加载enclave执行,保护enclave安全。SGX限制enclave在用户态运行,即使enclave运行恶意逻辑,也不会影响系统正常。
4.3 运行机制
TrustZone运行机制如图9所示,普通世界与安全世界是两个独立运行的环境,普通世界一次安全服务请求包括两个步骤:
1) 世界状态切换,包括普通世界切换至安全世界以及安全世界切换至普通世界。
2) 安全世界运行安全操作。
其中,普通世界发出安全服务请求后,由Monitor模块切换至安全世界,安全世界响应普通世界请求,执行安全操作后将结果返回给普通世界。
SGX运行机制如图10所示,用户创建enclave,并将安全代码和隐私数据部署在enclave内,SGX保护enclave代码和数据机密性与完整性,从图8可知,enclave作为应用进程的一部分,运行时,应用请求enclave安全操作,需要将处理器置为enclave模式,由enclave模式的处理器执行安全操作后返回处理结果。
与TrustZone相比,SGX运行enclave切换开销更小,虽然SGX中涉及频繁的加密和解密步骤,但是纯硬件设计降低了加解密的时间。然而TrustZone运行除了正常安全操作步骤之外,还包括进行世界状态切换,需要保存大量的上下文信息,导致单次请求安全服务时间长。文献[27-28]分别就TrustZone和SGX切换开销进行测试,TrustZone单次世界状态切换开销约为SGX单次enclave切换开销时间的 7倍。
4.4 挑战
跨领域运用挑战。TrustZone和SGX分别针对ARM和x86处理器设计,ARM处理器应用于嵌入式平台,x86处理器应用于桌面级PC以及服务器领域。然而,随着处理器工艺水平提高,ARM处理器缩小与x86主频差距,推出了服务器级处理器,应用于服务器领域。服务器上运行不同用户的不同任务,需要为不同用户提供独立的安全保护。本文在3.1.1中,分析了不同版本ARM架构的TrustZone机制,ARMv8.4-A之前架构的TrustZone设计中普通世界可以虚拟化给不同用户使用,但是安全世界不支持虚拟化,造成不同的虚拟普通世界共用同一安全世界服务,存在不同用户数据交叉问题,导致数据泄露。ARMv8.4-A架构引入安全世界虚拟化机制,安全世界可以虚拟成多个,为不同虚拟的普通世界提供安全服务。但是此类方法会扩大安全世界可信基的大小,引入漏洞的威胁。
系统资源保护挑战。SGX只对内存和对应内存映射的页表进行加密处理,这部分内存和页表由用户应用使用,对操作系统运行內存并未进行任何处理。以指纹、登录密码这些资源为例,这些资源由操作系统统一管理,用户登录验证步骤由操作系统完成,由于缺乏保护机制,这些系统资源处于不安全状态,攻击者通过攻击操作系统内核获取系统最高权限就可以获取这些敏感资源,造成巨大安全威胁。而TrustZone提供系统级资源保护,用户指纹、登录密钥等资源存储于安全世界,由安全操作系统负责管理,普通世界无法访问这些资源,即使普通世界遭受攻击,也无法对系统资源造成破坏。
5 结束语
本文对目前主流商用TEE技术TrustZone与SGX进行介绍和分析,简要概述了这两种技术抵御不同攻击的能力、应用领域以及安全实现的方法。通过本文,可以详细了解这两种技术的设计理念、隔离原理、运行机制的不同,为TEE技术应用和开发提供技术指导。同时,本文提出TrustZone和SGX技术目前研究进面临的挑战,TrustZone在服务器领域保护的局限性以及SGX对系统资源保护的局限性,为将来两种技术发展提供指导。
参考文献:
[1] Who actually develops Linux? The answer might surprise you[EB/OL].[2021-02-25].https://www.extremetech.com/computing/175919-who-actually-develops-linux-the-answer-might-surprise-you. [2] ATT
关键词:TEE;ARM TrustZone;Intel SGX
1 背景
随着处理器性能提升,处理器可以支撑更加复杂的硬件和软件运行,导致计算机结构变得更加庞大,引入大量的漏洞威胁。如今计算机需要处理大量用户数据、执行敏感任务,一旦遭受漏洞攻击,会造成大量损失,因此提出很强的安全需求。传统安全策略分别从软件和硬件出发,提供安全保护。软件上引入虚拟化机制,增加操作系统保护模式,利用虚拟地址限制不同应用访问地址范围,保护敏感任务和隐私数据安全,这种保护方法前提是操作系统可信,然而主流操作系统采用宏内核设计引入大量安全威胁,以Linux[1]为例,Linux代码超过1700万行,CVE[2]记录Linux漏洞多达333个,涉及拒绝服务、溢出、注入等攻击,攻击者利用系统漏洞获取系统最高访问权限,一旦内核被攻破,以虚拟化机制为基础的保护就会失效。硬件上通过扩展安全器件加强设备安全性,Intel最早提出外挂TPM(Trusted Platform Module)安全芯片实现对数据的加解密和数据完整性验证,但是TPM与处理器之间通信存在数据泄露的风险。为了解决TPM存在的问题,Intel与微软合作在TPM基础上提出Trusted Execution Technology(TXT)技术,以TPM为信任原点,构建安全启动度量机制,但是TXT技术没有解决运行效率低下的问题。
针对软件和硬件安全保护策略不足,研究人员提出以处理器硬件为基础的可信执行环境(Trusted Execution Environment,TEE)[3]概念,可信执行环境通过软硬件资源划分,为敏感任务和隐私数据提供独立隔离的执行环境,防止攻击者从中获取数据。当前主流商用TEE技术包括ARM TrustZone Technology[4]和Intel Software Guard eXtensions (SGX) [5-6]两种,分别针对ARM和x86两种架构处理器设计。ARM处理器应用于嵌入式平台,处理数字版权管理(Digital Rights Management,DRM)[7]、在线支付、身份认证等任务,这些任务面向不同用户提供相同运行逻辑。x86处理器用于桌面级PC和服务器平台,处理分布式任务,这些任务面向不同用户提供不同运行逻辑。由于两种处理器适用不同平台处理不同任务,造成TrustZone与SGX构建可信执行环境机制不同,TrustZone为可信应用程序创建一个安全世界,这些可信应用程序在安全世界內运行,SGX为应用程序创建一个受信任的环境enclave,这样可信程序可以在不受信任的系统软件上运行。两者不同的设计理念,造成这两种技术对不同应用场景保护具有显著差异。本文深入分析两者设计理念、运行架构、隔离保护原理,研究这两种技术实现和应用上的差异,总结两种技术的优缺点,探索TEE技术的改进和推广应用方向。
2 TEE安全与应用领域研究进展
ARM TrustZone和Intel SGX作为当前商业应用最广泛的两项TEE技术,研究人员就其安全性和应用场景进行了大量研究。
2.1 安全性研究
TrustZone和SGX为用户提供硬件级安全保护,抵御攻击能力是评估TrustZone和SGX安全的重要指标,文献[8]中对TrustZone和SGX常见攻击进行分析,包括三类:
1) 特权软件攻击。
2) 硬件中间信息攻击。
3) 直接探测硬件攻击。
第一类包括针对页表映射、DMA、固件以及拒绝服务等攻击。TrustZone和SGX能够有效抵御针对页表映射、DMA以及固件的攻击,但是对拒绝服务攻击防范能力不足,导致系统运行受限。但是此类攻击无法危害可信执行环境内部数据安全。同时,此类攻击严重影响系统运行,导致系统性能下降,系统的使用者可以及时发现并采取补救措施。
第二类攻击包括基于缓存的侧信道攻击[9]和针对DRAM的Row-hammer[10]攻击。TrustZone在一定程度上可以抵御Row-hammer攻击,前提是开发者设置了完整性检查机制,SGX可以有效抵御Row-hammer攻击。然而, TrustZone与SGX都无法抵御基于缓存的侧信道攻击。TrustZone虽然通过创建一个安全世界为可信应用程序提供可信执行环境,但是安全世界缓存是由运行时安全世界需求决定,ARMageddon[11]利用Prime Probe attack成功获取缓存信息,证明基于缓存的侧信道攻击对TrustZone有效。SGX并未更改原有Intel平台缓存设计,所有应用共用同一缓存,造成对缓存的保护能力不足,王鹃[12]提出使用随机化方法和检测时间方法抵御攻击,随机化缓存增加攻击者分析难度,同时,SGX遭受缓存攻击会造成应用运行性能下降,通过检测运行时间可以发现系统异常,两种方法具有可行性。在云计算平台上,Intel提出 CAT技术[13]防御侧信道攻击。 第三类直接对硬件进行探测,TrustZone和SGX将安全组件集成封装在处理器内部,处理器外部只留下有限个端口供开发者使用,可以有效防御直接探测硬件攻击。
2.2 应用领域研究
TrustZone广泛应用于智能手机、智能电视以及物联网领域。智能手机领域芯片厂商众多,国内有联发科、华为海思,国外有高通、三星等公司。各个厂家开发的芯片都支持TrustZone技术,致力于保护用户设备安全。但是不同厂家TEE解决方案不尽相同,如表1所示。
其中高通采用QSEE技术,支持32位和64位操作系统运行,海思和Linaro分别采用TrustedCore和OPTEE技术,支持32位操作系统。这些TEE解决方案在智能手机领域主要用于实现在线支付、数字版权保护、安全存储、指纹识别等需求。
智能电视领域使用TEE技术实现数字版权保护、会员鉴定等安全功能,保护厂家和用户安全。国内智能电视芯片有华为海思和星辰半导体两家公司,TEE方案由电视芯片厂商提供,且不对外公布。物联网领域包括智能家居助理、IP摄像头、可穿戴设备等[17],这些设备收集用户敏感信息,TEE技术为这些设备提供安全保护。文献[18]使用TrustZone和虚拟化技术记录传感器活动日志来提高物联网设备安全性,文献[19]使用TrustZone保护外围设备,确保无人机信息安全。
SGX广泛应用于云计算领域。文献[12]中将云计算领域运用归纳为4类。
1) 构建云端应用安全隔离执行环境,文献[20]利用SGX为用户程序运行提供可信执行环境,拒绝特权软件访问以及篡改用户程序的数据,保护用户程序安全。
2) 构建安全容器。Docker是当前主流容器,容器的特点是占用资源少、系统启动快以及I/O性能高,但是Docker容易被更高特权的容器访问,为了解决隐私和安全问题,文献[21]利用SGX构建SCONE,为Docker运行提供安全环境,保护各容器的安全。
3) 构建云端大数据安全可信计算环境。以MapReduce为例,文献[22]利用SGX为大数据计算构建安全环境,确保数据计算和数据存储安全。
4) 实现NFV(network function virtualization)的状态保护。
3 ARM TrustZone与SGX架构实现
3.1 ARM TrustZone安全实现
ARM TrustZone利用软硬件资源划分出两个独立执行域:普通世界[23]和安全世界[24]。本小节将从软件和硬件架构介绍ARM TrustZone安全实现。
3.1.1 ARM TrustZone软件架构
如图1所示,ARM TrustZone在安全世界内部实现安全操作系统(Trusted OS),用于管理安全世界内部资源。安全世界独立于主机环境运行,与普通世界一样,安全世界拥有多个特权级,其中安全操作系统运行在EL1特权级,拥有独立的异常处理、中断处理、调度和页表管理机制。Monitor模式处于EL3特权级,拥有系统最高权限,负责普通世界与安全世界切换,保存世界切换上下文。ARMv7架构以前的ARM TrustZone不支持安全世界虚拟化,即安全世界中缺少EL2特权态支持。文献[25]中指出缺少EL2特权态支持的ARM TrustZone三点挑战。
1)可信应用生态系统的挑战。
2)安全世界集成來自多个供应商的代码的挑战。
3)最小特权原则挑战。
针对这三点挑战,ARM推出ARMv8.4-A构架,该架构支持安全世界EL2特权态,引入安全世界虚拟化机制,加强安全世界与普通世界隔离。
系统启动过程容易遭受攻击和破坏,攻击者在系统断电期间篡改和替换计算机系统存储在SOC中的镜像文件。安全世界利用安全启动确保系统初始状态安全,安全启动如图2所示,一旦设备启动,处理器验证可信根之后,首先加载安全世界镜像,验证镜像签名的合法性,防止安全世界镜像被篡改和替换,验证成功后,由安全世界引导普通世界加载运行,任何一个步骤错误,都会导致加载失败。
3.1.2 ARM TrustZone硬件架构
ARM TrustZone硬件架构如图3所示,ARM TrustZone将安全组件封装到处理器内部,从物理上隔绝外部访问,安全组件包括通过总线相连,作为总线主设备,将内存、总线设备、缓存和内存管理单元以及中断等硬件资源分为安全部分与非安全部分,分别配置给安全世界与普通世界使用。
TrustZone利用TZMA组件将片上内存分为安全与非安全区域,安全区域配置大小由TZPCR0SIZE寄存器决定。片外内存DRAM由总线设备TZASC进行配置,区分来自安全世界与普通世界访问。
TrustZone对处理器核进行虚拟化,利用CP15的SCR寄存器标记处理器状态。此外,扩展AXI读写通道安全位,AXI总线直接连接片上安全组件,当处理器发出访问设备的事务请求,由AXI解码逻辑解析该请求的安全状态,防止不安全状态处理器访问安全设备。处理器利用APB连接外部设备,APB没有扩展安全位,TrustZone引入AXI-APB Bridge,连接AXI与APB,由AXI-APB Bridge承担解析APB上设备安全性的任务。
TrustZone扩展每个缓存tag域,增设安全位,用于标识缓存的安全性。此外,虚拟化MMU[26]单元对应不同世界地址转换。TrustZone提供IRQ(Interrupt Request)和FIQ(Fast Interrupt Request)两种中断模式,分别配置为普通世界和安全世界中断源,为避免处于非安全状态的处理器捕获FIQ中断,TrustZone增加中断控制组件TZIC(TrustZone Interrupt Controller),作为第一级中断控制器,控制所有外部中断源,中断控制器只能在安全状态下进行设置。 3.2 SGX安全实现
SGX允许用户应用主动创建和维护安全区域,这个区域称为enclave。如图4所示,用户与enclave之间一一对应,用户与enclave之间具有对等访问权限,具有以下4点特性。
1) SGX保证enclave内部数据和代码机密性,任何特权和恶意软件无法获取enclave内容。
2) enclave与enclave之间互相隔离,防止enclave交叉访问泄露enclave内容。
3) enclave由用户应用主动创建和管理,每个enclave都是一个独立的隔离执行域。
4) SGX阻止软件对enclave进行重放攻击。
为满足以上特性,SGX对原有Intel平台进行扩展,增加安全组件改变系统存储访问策略,扩展安全指令支持SGX运行。
1)SGX安全组件
SGX安全组件包括内存加密引擎(Memory Encrypt Engine,MEE)和内存访问控制模块EPC以及EPCM。
SGX在内存上划分一段受保护的区域PRM(Processor Reserved Memory),PRM大小在BIOS界面配置,用于存储EPC、EPCM内容。EPC、EPCM关系如图5所示。
其中,EPC是PRM的子集,由若干个4kb大小的页组成,用于存储enclave的内容。EPCM用于SGX检查,由若干个Entry组成,每个Entry对应一张EPC页,用于记录EPC页属性,标记EPC页与enclave的关系。
MEE是独立设计的硬件加解密引擎,MEE处理过的区域为MEE区域。MEE用于处理器与内存之间通信数据加密、enclave数据内容加密以及页表加密,从各个层次确保enclave内部数据的安全。
2)SGX扩展指令集
SGX扩展17条安全指令[6],贯穿enclave创建、运行与退出以及销毁的整个运行过程。enclave运行状态机如图6所示。
enclave创建与退出。用户应用调用ECREATE指令创建enclave,创建enclave过程中调用EADD指令加载EPC页以及EEXTEND指令对enclave进行测量,测量的目的是为了保护enclave的完整性,防止enclave内数据和代码被攻击者篡改或者替换。测量完毕需要使用EINIT指令使能enclave,标记enclave可用。使用完毕后,调用EREMOVE指令销毁enclave,同时清除缓存与页表信息。
enclave运行与退出。enclave运行支持中断响应,设置两种退出模式:同步与异步退出。正常运行模式:用户调用EENTER指令加载enclave运行,任务运行结束调用EEXIT退出执行。然而,enclave运行过程如果发生异常,触发处理器中断,那么处理器会调用AEX指令,在响应中断前保存当前enclave运行上下文至EPC中,用于恢复enclave运行现场。中断响应结束后,用户调用ERESUME重新加载enclave运行,直至完成后调用EEXIT正常退出。
enclave 驱逐与加载。由于PRM大小限制,导致EPC容纳enclave数目有限。SGX利用驱逐和加载解决资源不足问题,当EPC中enclave数目达到上限,系统使用EBLOCK标记长期占有资源却没有运行的enclave,在调用ETRACK清除enclave缓存和页表映射信息后,使用EWB指令将enclave相关EPC页加密后驱逐至外部存储中,然后释放EPC页,将资源给后续enclave使用。当被驱逐的enclave需要继续运行,系统通过ELDU和ELDB验证enclave完整性,防止enclave被篡改或替代,验证成功后将enclave相关资源加载到EPC页中,恢复enclave运行现场。
4 ARM TrustZone与SGX分析
ARM TrustZone和Intel SGX都是当前主流TEE技术,两者旨在构造安全的隔离环境用于敏感任务计算和隐私数据存储,防止攻击者从中获取数据,危害系统安全。但是两者面向不同平台,针对不同的应用场景,因此采取了不同的设计理念,造成两种技术对相同的应用场景保护具有明显差异。本节将从TrustZone和SGX设計理念、隔离保护原理、运行机制、面临挑战角度出发进行两者安全保护分析。
4.1 设计理念
TrustZone和SGX采用不同设计模式,如图7所示,TrustZone基于CS模式设计,构造两个独立世界,整个安全世界设置为可信执行环境。SGX基于P2P模式设计,如图8所示,每个应用拥有自己独立的安全环境,这两种不同设计模式,造成TrustZone与SGX设计理念上的巨大差异,体现在可信基设计、安全服务设计以及任务调度三个方面。
1) 可信基设计。TrustZone将整个安全世界作为可信基,包括安全组件、安全操作系统与安全应用,普通世界应用共用同一套可信基,安全世界由设备厂商配置,简化用户开发和使用难度。但是安全世界内部安全应用之间缺少有效隔离,其中任何一个安全应用出现问题,都会导致整个可信基失效。SGX将enclave作为独立可信基,enclave与应用一一对应,enclave不会对系统和其他enclave安全造成威胁,但是增加用户开发和维护的难度。
2) 安全服务设计。TrustZone预先将安全厂商设计的安全代码部署在安全世界,普通世界应用程序只能通过厂商提供的安全接口请求固定的通用安全服务。TrustZone无法为普通世界提供安全代码之外的其他专用服务。SGX安全服务更加专用化,SGX应用分为安全部分与非安全部分,这两部分代码均由用户开发,安全部分部署在enclave中隔离运行,根据不同功能开发不同安全代码。 3) 任务调度设计。TrustZone和SGX面向多核系统设计,支持虚拟机。TrustZone处理器每个核心一个时间点只做一个安全调用,由Monitor模块支持世界状态切换。SGX支持多enclave线程执行,且运行过程处理器能够响应中断执行,任务调度更加灵活。
4.2 隔离保护原理
TrustZone与SGX采用不同隔离保护原理。TrustZone提供一个独立于主机运行的安全世界,安全世界包括所有安全操作,由于TrustZone只划分两个执行域:安全世界与普通世界,因此TrustZone只需围绕安全世界制定隔离保护策略。利用软件和硬件划分安全世界与普通世界资源,软件上,安全世界内实现安全操作系统,由安全操作系统管理和调度安全资源;硬件上扩展安全位,通过AXI、TZASC、TZMA、TZPC等辅助控制器实现对内存、IO等资源的安全隔离,提供安全世界运行需要的硬件资源。设置Monitor模块,Monitor模块处于最高特权态运行,连接普通世界和安全世界,隔离不同世界之间的访问,提供系统级的安全保护。
SGX允许用户主动创建和维护enclave,部署应用安全代码与隐私数据,提供应用级别保护。每个enclave作为独立的安全环境,与TrustZone不同,SGX需要对不同的enclave提供保护,因此SGX采取不同的隔离保护方法。SGX利用硬件加密方法,在内存上设置PRM,用户应用创建的enclave加密后加载到对应EPC页中,不同enclave对应不同密钥,即使攻击者探测到EPC的内容,也无法分析enclave的有效信息。处理器使能enclave模式之后,才能加载enclave执行,保护enclave安全。SGX限制enclave在用户态运行,即使enclave运行恶意逻辑,也不会影响系统正常。
4.3 运行机制
TrustZone运行机制如图9所示,普通世界与安全世界是两个独立运行的环境,普通世界一次安全服务请求包括两个步骤:
1) 世界状态切换,包括普通世界切换至安全世界以及安全世界切换至普通世界。
2) 安全世界运行安全操作。
其中,普通世界发出安全服务请求后,由Monitor模块切换至安全世界,安全世界响应普通世界请求,执行安全操作后将结果返回给普通世界。
SGX运行机制如图10所示,用户创建enclave,并将安全代码和隐私数据部署在enclave内,SGX保护enclave代码和数据机密性与完整性,从图8可知,enclave作为应用进程的一部分,运行时,应用请求enclave安全操作,需要将处理器置为enclave模式,由enclave模式的处理器执行安全操作后返回处理结果。
与TrustZone相比,SGX运行enclave切换开销更小,虽然SGX中涉及频繁的加密和解密步骤,但是纯硬件设计降低了加解密的时间。然而TrustZone运行除了正常安全操作步骤之外,还包括进行世界状态切换,需要保存大量的上下文信息,导致单次请求安全服务时间长。文献[27-28]分别就TrustZone和SGX切换开销进行测试,TrustZone单次世界状态切换开销约为SGX单次enclave切换开销时间的 7倍。
4.4 挑战
跨领域运用挑战。TrustZone和SGX分别针对ARM和x86处理器设计,ARM处理器应用于嵌入式平台,x86处理器应用于桌面级PC以及服务器领域。然而,随着处理器工艺水平提高,ARM处理器缩小与x86主频差距,推出了服务器级处理器,应用于服务器领域。服务器上运行不同用户的不同任务,需要为不同用户提供独立的安全保护。本文在3.1.1中,分析了不同版本ARM架构的TrustZone机制,ARMv8.4-A之前架构的TrustZone设计中普通世界可以虚拟化给不同用户使用,但是安全世界不支持虚拟化,造成不同的虚拟普通世界共用同一安全世界服务,存在不同用户数据交叉问题,导致数据泄露。ARMv8.4-A架构引入安全世界虚拟化机制,安全世界可以虚拟成多个,为不同虚拟的普通世界提供安全服务。但是此类方法会扩大安全世界可信基的大小,引入漏洞的威胁。
系统资源保护挑战。SGX只对内存和对应内存映射的页表进行加密处理,这部分内存和页表由用户应用使用,对操作系统运行內存并未进行任何处理。以指纹、登录密码这些资源为例,这些资源由操作系统统一管理,用户登录验证步骤由操作系统完成,由于缺乏保护机制,这些系统资源处于不安全状态,攻击者通过攻击操作系统内核获取系统最高权限就可以获取这些敏感资源,造成巨大安全威胁。而TrustZone提供系统级资源保护,用户指纹、登录密钥等资源存储于安全世界,由安全操作系统负责管理,普通世界无法访问这些资源,即使普通世界遭受攻击,也无法对系统资源造成破坏。
5 结束语
本文对目前主流商用TEE技术TrustZone与SGX进行介绍和分析,简要概述了这两种技术抵御不同攻击的能力、应用领域以及安全实现的方法。通过本文,可以详细了解这两种技术的设计理念、隔离原理、运行机制的不同,为TEE技术应用和开发提供技术指导。同时,本文提出TrustZone和SGX技术目前研究进面临的挑战,TrustZone在服务器领域保护的局限性以及SGX对系统资源保护的局限性,为将来两种技术发展提供指导。
参考文献:
[1] Who actually develops Linux? The answer might surprise you[EB/OL].[2021-02-25].https://www.extremetech.com/computing/175919-who-actually-develops-linux-the-answer-might-surprise-you. [2] ATT