国炜 王宗岳 焦四辈 翟世俊 李乔
摘要:为了阐述移动终端上两种用于安全应用的隔离技术TEE和虚拟化的异同,首先分析了每一种隔离技术的框架和系统原理,随后通过分析这两种隔离技术在安全框架、SoC实现、生态维护、应用场景方面的差异,总结了在实际移动终端安全方案的设计中应考虑的因素。
关键词:移动终端 安全隔离 可信执行环境 虚拟化
1 引言
随着移动应用、移动终端操作系统、集成电路等技术领域的飞快发展,移动智能终端的存储、计算、通信等能力的迅速提升,其已不再局限于通信和娱乐等领域,已经广泛应用于移动办公、金融支付等与人们工作和生活密切相关的众多领域。移动智能终端为了追求种类丰富的应用和机制的用户体验,通常搭载开放的操作系统。但是,开发的系统容易引入系统漏洞和恶意病毒,导致金融风险、个人及企业信息泄露等安全問题。
为了打造更安全的移动智能终端,学术及产业界相继提出了应用、操作系统、硬件等层面的隔离技术及方案,确保移动终端数据和应用的安全性。因此近几年,TEE(Trusted Execution Environment,可信执行环境)和移动终端虚拟化技术被广泛地涉及,然而就应用模式和安全要求来说,TEE和虚拟化技术有着本质的不同。本文将从应用模式额安全要求两个维度来阐述这两种技术的共同点与差异。
2 TEE
2.1 TEE的产生
TEE作为一种移动安全技术,由标准化组织GlobalPlatform开发并应用于移动安全应用中。它为实现智能终端安全目标和产业利益相关方的需求提供了较佳的解决方案,找到了终端开放性与安全性之间的平衡点。TEE是一种隔离的执行环境,与搭载REE(Rich Execution Environment,通用的操作系统)一同运行,其安全水平高于REE,足以满足大多数移动用户的安全需求。搭载TEE的智能终端在提供丰富应用的同时,能够满足金融支付、隐私保护、数字版权保护等应用的高安全需求,得到了用户和智能终端厂商、服务提供商的广泛认可。
TTE提供了硬件芯片、操作系统、应用软件三个层面的隔离,来保护用户的敏感数据与敏感操作。在硬件芯片层面上,TEE使用的CPU、内存和存储空间与REE完全隔离,REE无法直接访问TEE硬件资源。在操作系统层面上,TEE内搭载独立的安全操作系统,用于实现密码运算、密钥管理、安全存储、安全时钟、安全用户接口等安全功能,保护用户的敏感操作。在应用层面上,应用软件被分为安全部分和非安全部分,REE用于实现图形界面、音效等非安全部分;而TEE用于实现身份认证、加密存储等安全部分,REE下的应用只能通过调用TEE客户端API接口与TEE中的可信应用进行交互,访问TEE操作系统中的安全资源和安全服务,在未授权访问的情况下,REE中的应用不能访问TEE的任何资源。
2.2 TEE的软件安全架构
TEE的软件安全架构如图1所示[2],由两个分离的部件集组成:第一部分是REE端客户端应用和API,其中API包含TEE功能API和TEE客户端API,客户端应用使用TEE客户端API接入到右侧的可信应用提供的安全服务。REE通信代理提供REE和TEE之间的安全通道;第二部分是TEE端的可信应用、可信操作系统(包含TEE通信代理、可信核框架、可信功能、以及可信内核)与可信外围设备(包括可信用户界面、安全元件、存储空间等)。
运行在TEE内的可信应用使用TEE内部API访问TEE内的通用的安全功能。可信核框架为可信应用提供类似操作系统的功能,可信功能为应用开发者提供必要的支持能力。
2.3 TEE的安全属性
(1)基于硬件隔离机制的平台封闭性
可信执行环境提供基于硬件隔离的安全执行区域来保护数据安全和程序正确执行,实现TEE需要将设备的硬件和软件资源全部划分成安全区域和非安全区域,两个区域具有独立的系统资源,包括寄存器、物理内存和外设,不能随意进行数据交换。安全区域中的代码和资源受到严格的访问控制策略保护,非安全区域的进程禁止访问安全区域,以保证存储在安全区域的资源不被非法访问或窃取;安全区域用于实现TEE,运行安全操作系统、存储密钥及执行安全敏感的任务,保证了TEE平台的封闭性,能够有效减少系统漏洞的披露、外界的攻击和病毒的入侵。
(2)基于信任链机制的平台完整性
为了保证整个系统的安全,TEE从系统引导启动开始逐步验证,保证TEE平台的完整性。设备上电复位后,加载ROM中的安全引导程序,并利用根密钥验证其完整性。然后,该引导程序进入TEE初始化阶段并启动安全操作系统,逐级核查安全操作系统启动过程中的各个阶段的关键代码以保证安全操作系统的完整性,同时防止未授权或经过恶意篡改软件的运行。安全操作系统启动后,运行普通执行环境的引导程序并启动普通操作系统。至此基于信任链完成了移动终端整个系统的安全启动,能够有效抵御TEE启动过程中的非法篡改、代码执行等恶意行为。
(3)基于安全存储机制的平台机密性
用户的身份、密钥和证书等敏感信息需要高度保护,TEE通过使用加密和完整性技术来保护安全敏感的数据和密钥。对于安全存储来说,最大的风险是密钥的非安全存储以及密钥在使用过程中的对外暴露[3],TEE提供基于硬件隔离的安全环境来存储和处理敏感信息,增强了密钥等敏感信息使用的隔离性和安全性,可以有效保证敏感信息的安全存储,防止密钥隐私信息泄露。
2.4 基于TrustZone的TEE实现
ARM公司在2006年提出TEE概念,基于这个概念提出了硬件虚拟化技术TrustZone及相关硬件IP方案,并逐渐应用于主流的ARM架构的芯片处理器上。TrustZone技术包括ARM处理器架构以及系统架构上硬件安全体系的扩展,其目的是防范设备可能遭受的多种特定威胁[4]。目前,ARM TrustZone是在移动智能终端上构建TEE安全方案的主流技术。
TrustZone技术的关键是隔离,即在处理器架构上,每个物理的处理器核提供两个虚拟核,一个是非安全核(Non-secure),另一个是安全核(Secure),同时通过使用监视模式来进行两个虚拟核的状态切换。TrustZone技术将所有SoC(System-on-a-Chip,片上系统)硬件资源和软件资源进行隔离,使这些资源分别属于由两个状态核所控制的执行区域中。通过TrustZone的总线硬件逻辑来可确保非安全执行内的区域组件无法访问安全区域资源,以便在这两个区域之间构成一道强大的隔离边界。将敏感的数据和密钥资源放入安全执行区域,以及在安全状态的处理器内核中运行可信的软件,可确保敏感资源能够防范众多潜在的攻击,包括使用键盘或触摸屏等输入设备来窃取密码等。TrustZone技术的硬件和软件架构如图2所示[5]。
3 虚拟化技术
3.1 概述
虚拟化是一个广义的术语,是一个为了简化管理,优化资源的解决方案。如同现在空旷、通透的写字楼,整个楼层几乎看不到墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率[6]。
虚拟化技术既是使用控制程序(Control Program,也被称为Virtual Machine Monitor或Hypervisor),隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS)[7],所以在某种意义上来说,虚拟化技术实现了某种程度的资源隔离。根据虚拟化技术所实现的隔离层次来说,可以将虚拟化技术分为软件的虚拟化和硬件虚拟化。在软件虚拟化技术方案中,虚拟机中的操作系统可以看成是真实操作系统下的一个应用程序,这样,虚拟操作系统上执行的应用程序到实际真实的操作系统之间,就要比通常的真实操作系统上的应用程序多经过一个通信层。而CPU层虚拟化技术是一种硬件实现虚拟化的方案,通过特别的指令集,来使支持虚拟化方案的CPU来控制虚拟过程。通过这些特别的指令集以及CPU的虚拟化,可以很容易提高虚拟机的性能,相比软件的虚拟化技术在性能和安全性方面得到了很大程度的提高。
本文为了将虚拟化技术与TEE做等实力的对比,将着重采用Hypervisor Type 1类型的虚拟化,这种类型是直接将虚拟化放在硬件平台上,实现了硬件平台上操作系统的一部分功能。而Hypervisor Type 2是将其作为宿主操作系统的一个应用程序来运行。在此种情况下,宿主操作系统直接运行在硬件上,用Hypervisor应用程序创建虚拟机,虚拟机里面运行的操作系统称为客户操作系统。
3.2 虚拟化技术(Type 1)架构
通过使用CPU的超级权限模式(Supervisor Mode)将控制程序(Hypervisor)与虚拟机进行隔离,同时通过控制程序所控制的MMU(Memory Management Unit,内存管理单元)将每一个虚拟机进行隔离。
图3是两种可能的架构图示[8]。左边的图示表示了控制程序工作在管理用户模式(Supervisor Mode),而客户操作系统及他们的应用工作在用户模式。右边的图示表示了控制程序工作在控制模式(Hypervisor Mode),控制模式较管理用户模式具有更多的特权,它允许一个客户操作系统工作在管理用户模式,而它的应用工作在用户模式,因此控制模式下保证了受来自客户操作系统的最小的干扰。ARM Cortex A15支持控制模式,除此之外,它还具有一些扩展能力,如中断处理、页表管理等。
3.3 TEE和虚拟化架构
ARM Cortex A15采用硬件隔离的安全方案来同时支持TEE和虚拟化技术[9],也就是说在一套芯片核上TrustZone与控制模式(Hypervisor Mode)共存。
TrustZone:将CPU和其它硬件资源分为Non-Secure和Secure两种状态。Non-Secure状态用于执行非可信的操作系统和应用程序,Secure状态用于执行可信的操作系统和应用程序。监控模式(Monitor Mode)只存在于Secure状态下,并且提供Non-Secure状态和Secure状态之间的切换,它是最高权限的处理器模式。
Hypervisor Mode:硬件隔离的控制器工作在CPU的Hypervisor Mode。相比Supervisor Mode,Hypervisor Mode具有更高的权限,这种模式仅仅工作在处理器处于Non-Secure状态下。
在一定程度上,监控代码可以被看作是控制代碼,它可以允许Non-Secure状态和Secure状态里的虚拟机任选其一,架构图如图4所示。
在ARM Cortex A15架构上,TEE和虚拟化都是基于硬件隔离的安全方案,这样有效地避免了不同操作系统之间不必要的干扰。例如,TEE实现了主操作系统和安全操作系统之间通信的控制,以及安全操作系统与设备资源(键盘、显示等)的控制。同样,Hypervisor Mode也实现了不同操作系统之间信息传递的控制。
虽然虚拟技术和TEE具有看似相同的目的和概念,然而他们在某些方面还具有一定的差异化,以下将逐一介绍他们之间的不同点。
3.4 TEE与虚拟化技术的差异
(1)安全框架
TEE是硬件安全方案,它将安全敏感操作从REE系统中隔离出来,由一个特别的安全操作系统来执行这些安全服务功能。这些安全服务类似于DRM(Digital Rights Management,数字版权管理)和支付,被称为可信应用TA。除此之外,TEE具备一些内置的安全功能,如安全存储、加解密、安全数据、可信用户接口以及与REE保持通信功能的安全通道,并且TEE仅仅伴随着带有安全启动过程的平台出现,这个安全启动保证了TEE环境的可靠性和完整性,这些构成了整个平台可信的基础。
TEE环境里的所有代码资源都是受保护的,并且对这些代码的管理是需要一定的基于硬件控制的权限,而非软件控制的权限。可信应用的下载和安装也是基于一定的信任基础上,特别对于第三方开发的可信应用,在应用下载和安装之前,都要对该应用的来源做鉴别和认证,这样就减少了恶意软件、木马程序对安全操作系统的攻击。
相比TEE的安全功能,虚拟化技术允许在一个主机处理器上执行多个操作系统,这些操作系统虽然彼此隔离,但是并没有使这些操作系统具有安全特性。虚拟化并没有提供相应的接口来处理安全功能,更没有分离出安全硬件。如果其中一个操作系统面临攻击,虽然其它的操作系统都是彼此间相互隔离,可这些其它的操作系统却同样面临着被攻击的危险。从将操作系统彼此隔离以便保证一些操作系统的安全角度来说,虚拟化技术突显弱化。
(2)SoC实现
SoC实际上是一个很复杂的系统,对于ARM架构的芯片来讲,TEE的实现是基于TrustZone技术,也就是说当处理器处于Secure状态下时开始执行TEE中的安全功能。同时处理器的状态信息会传递到总线以及SoC的外围设备接口中,这样就在给定的状态中无形地增加了一个防火墙配置,以此来决定哪些外围设备可以访问,哪些不能访问。这种在Secure状态下的配置可以是静态配置,也可以是动态配置,因此TEE具有一定的权限访问系统所有外围设备,然而REE中的操作系统或控制器只能访问那些没有安全标签的资源。除此之外,硬件调试能力也可以基于CPU处于安全模式下配置,例如将对设备的调试功能在CPU处于Non-Secure模式下开启,而在CPU处于Secure模式下关闭。
对于SoC系统,TEE具有控制所有硬件外围设备并在CPU不同的状态下过滤对这些外围设备的访问,这样系统自己就要很清楚目前是哪一个执行环境正在访问哪些资源。
而对于虚拟化技术来说,控制器仅仅是软件部件,它可以直接接入外围设备,系统自己并不感知虚拟机,因为虚拟化仅仅是用来组织运行在ARM核上的软件,所以依靠它来打造一个完整的安全系统会非常的困难。并且,控制器必须非常小心地处理所有可能的非直接存储访问,这就意味着所有的总线管理者(如DMA、多媒体加速器、显示控制器等)也必须要被虚拟化,有的时候这些仅仅被一个操作系统使用,否则操作系统会使用硬件来间接地访问其它虚拟机的地址空间。
在ARM SoC系统上,虚拟化仅仅受限在ARM核,这样系统其实并不感知虚拟机。明显地,如果与DMA或者显示控制器交互的所有交互必须经过控制器,这样势必会带来性能的影响,并且大量的复杂化设计也会带来代码存在漏洞的风险。
(3)生态创建和良好维持
目前TEE已经大量部署,对于它所依赖的平台完全可以做到透明化,并且TEE具有操作系统不可知性,即无论移动平台使用的是什么操作系统,都会具有一套标准的通信接口来保证操作系统与运行在TEE中的可信应用互相通信。除此之外,从平台的部署、平台的认证,到业务的开发与部署,所有的环节都已就绪,这位移动行业以及应用服务提供商使用TEE技术来执行安全敏感的应用和保护敏感的信息提供了一整套成熟的技术与生态。
TEE聚焦在硬件安全特性,这些硬件特性通常前后兼容平台版本,因此一旦TEE被移植到一个平台,移植到这个平台其它版本所需的工作量也会有限。
相反,移动平台上的虚拟化产品并没有一个标准化的生态来关注行业的安全需求。除此之外,虚拟化在以下两个层面会更加受侵入,其一是虚拟机层面,为使操作系统在控制器上运行,需要对操作系统进行必要的移植和重编译。其二是控制器驱动需要适应每一个新的平台监视器版本。
(4)应用场景
TEE被设计成一个安全解决方案,因此在以下安全应用场景,TEE发挥了强大的作用[10]:
1)移动支付:涉及金融敏感性的移动支付应用,其需求等级较高的安全级别,通过TEE与安全元件的结合使用,来存取控制敏感数据。
2)数字版权管理:授权用户接入到特定的媒体内容,它可以基于过期日期、播放次数、播放设备或者其它手段来限制用户的接入。拥有TEE设计的移动终端将DRM敏感部件存储在其安全的区域内,靠这些敏感部件来管理版权。
3)企业应用:可信执行环境使企业能够让员工远程工作,且不必担心安全风险。既可以让员工使用自己的智能手机或平板电脑工作,又可以保证公司的安全资产不会冒任何丢失的风险,因为应用中的所有信息都采用安全存储方法。
然而虚拟化技术是使多个软件环境运行在共享的物理资源上,因此它的使用场景更适用于那些以降低成本、提高效率的应用场景中。
4 结论
由本文的分析可知,TEE是一种基于硬件隔离的安全解决方案,它一般被用来执行一些敏感的应用,如DRM、移动金融支付以及企业移动办公。TEE成熟的产业为整个移动行业提供了一套标准的基于平台硬件安全能力的生态圈。
虚拟化技术是在一个共享的物理资源上分离软件集的有用的解决方案,然而,它的初衷并不是被用来执行安全服务。对虚拟化技术做一些扩展性增强,或许能够慢慢地改善控制器方案的安全性,但是为了它能够像TEE一样服务于安全敏感的应用,它还需要更多的普及,以及简化硬件访问控制的设计实施。
参考文献:
[1] OMTP Documents.1.1. Open Mobile Terminal Platform Advanced Trusted Environment OMTP TR1 v1.1[Z]. 2012.
[2] Global Platform Device Technology. TEE System Architecture Version 1.0[Z]. 2011.
[3] 焦四輩,杨正军,国炜. 智能终端可信之星环境安全性分析[J]. 互联网天地, 2016(8).
[4] ARM. ARM Security Technology[EB/OL]. (2015-03-01). http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.prd29-genc-009492c/index.html.
[5] 张大伟.郭煊.韩臻. 安全可信智能移动终端研究[J]. 中兴通讯技术, 2015(5): 39-44.
[6] 数据中心. 虚拟化,虚拟化技术,虚拟化服务器,存储虚拟化[Z]. 2016.
[7] 商庆同. 虚拟化管理平台适配层的研究与评价[D]. 北京: 北京邮电大学, 2011.
[8] 邓志. 处理器虚拟化技术[M]. 北京: 电子工业出版社, 2014.
[9] A Techcon. Virtual Prototyping Methodology to Boot Linux on the ARM Cortex A15[Z]. 2014.
[10] 国炜,潘娟. 移动智能终端可信环境分析[J]. 现代电信科技, 2012(12): 8-12. ★