- REE(Rich Execution Environment)
1.1. REE简介
所有移动设备都支持REE
运行通用OS:Android、iOS、Linux
为上层App提供设备的所有功能
开放的、可扩展的且通用的
在互联互通的网络世界中运转
1.2. REE存在安全隐患
基于OS实现的App隔离极易被绕过;
OS代码庞大,漏洞频发;
OS很难被检验和认证;
OS可以看到App内部的所有数据;
大量的恶意代码和高级的攻击技术;
缺乏隔离意味着App无法安全存储密钥;
需要一个隔离环境操作密钥和敏感数据.
1.3. 当前移动安全背景
当前移动终端面临着严重的安全威胁,如下图所示:
因此移动厂商、用户、服务提供商等各方都对移动安全提出了强烈的需求。
2. Tee(Trusted Execution Environment)
2.1. Tee简介
TEE(Trusted Execution Environment),可信执行环境,该环境可以保证不被常规操作系统干扰的计算,因此称为”可信”。这是通过创建一个可以在TrustZone的”安全世界”中独立运行的小型操作系统实现的,该操作系统以系统调用(由TrustZone内核直接处理)的方式直接提供少数的服务。另外,TrustZone内核可以安全加载并执行小程序”Trustlets”,以便在扩展模型中添加”可信”功能。Trustlets程序可以为不安全(普通世界)的操作系统(如Android)提供安全的服务。
TEE通常用于运行关键的操作:
(1)、移动支付:指纹验证、PIN码输入等;
(2)、机密数据:私钥、证书等的安全存储;
(3)、内容包括:DRM(数字版权保护)等。
TEE已经成为生物识别设备的标配:使用TEE来隔离指纹的采集、存储、验证等过程。即使手机被越狱或Root,攻击者也无法获取指纹数据。
TEE内部运行一个完整的操作系统,与REE(如Android)隔离运行,TEE与REE通过共享内存进行交互:OS间/应用间。
TEE内部也分为内核态与用户态,TEE的用户态可以运行多个不同的安全应用(TA)。
TEE包含:Secure SO+ 中间件 + 安全应用 + 外部交互。
2.2. GlobalPlatform TEE 架构
TEE三层架构:TA(Trusted Application)层:可信钱包、TUI;TEE层:安全操作系统,对上层TA提供的库;硬件层:CPU状态隔离、内存隔离、外设隔离,如下图:
2.3. TEE具备的特性
受硬件机制保护:TEE隔离于REE、只能通过特定的入口与TEE通信、并不规定某一种硬件实现方法
高性能:TEE运行时使用CPU的全部性能(独占)
快速通信机制:TEE可以访问REE的内存、REE无法访问受硬件保护的TEE内存
TEE中可以同时运行多个Trusted Application(TA)
由GlobalPlatform(GP)标准化:可在多种平台上移植
TEE中的所有组件模块先定义安全,再考虑性能
TEE中的可执行代码在执行前先要被验证(validate)
对于密钥使用安全存储机制:认证性、完整性和机密性
GP定义了TEE的保护轮廓(Protection Profile): 定义了所需的硬件保护强度
TA间相互隔离
2.4. Tee软件架构
2.5. TEE Internal APIs
TEE Internal Core API:向上提供TrustedOS的功能、与CA通信、TA与TA通信、安全存储、密码学功能、时间
其他APIs:构建于Internal Core API之上,共享错误处理和API定义规则
私有APIs:GP未定义,无法通用,允许产品的特定差异化
2.6. TEE的功能及应用
TEE并不仅仅是指纹保护,指纹目前是TEE推广的强大动力,解锁、手机支付是主要应用场景。
1. 内容保护机制:对于一些高清电影、音乐等,防止被盗用。
2. 移动金融服务:手机支付等
3. 认证:指纹识别、面部识别等
4. 企业或者政府,机密信息的保护
TEE并不仅仅在手机端,从手机端到云端都有TEE:ARM:TrustZone; X86: VT-x和SGX。TEE并不是全新的概念,本质就是一种基于硬件的隔离。
TEE是和REE(Rich Execution Environment)相对应的,一般称TEE和REE为Secure World和Normal World。Linux跑在Normal World上,但是有些安全性要求比较高的行为,例如指纹的比对,支付时候用私钥签名的动作等,需要放到Secure World里面去。
EE具有其自身的执行空间,也就是说在TEE的环境下也要有一个操作系统。TEE环境比Rich OS(普通操作系统)的安全级别更高,但是比起安全元件(SE,通常是智能卡)的安全性要低一些;另一方面,加入TEE的成本增加比较低,SE的成本则更高。TEE所能访问的软硬件资源是与Rich OS分离的。TEE提供了授权安全软件(TrustApp可信应用,简称TA)的安全执行环境,同时也保护TA的资源和数据的保密性、完整性和访问权限。为了保证TEE本身的可信根,TEE在安全启动过程中是要通过验证并且与Rich OS隔离的。在TEE中,每个TA是相互独立的,而且不能在未授权的情况下互相访问。简而言之就是在TEE环境的操作系统上同样有相应的应用程序(TA),除了TEE的运行环境与普通操作系统相互独立外,TEE里的每一个TA也是需要授权并相互独立运行的。
TEE最早出于OMTP规范,ARM是TEE技术的主导者之一,其TrustZone即是支持TEE技术的产品。
ARM后将其TrustZoneAPI提供给GlobalPlatform,该API已发展为TEE客户端API。GlobalPlatform(全球最主要的智能卡多应用管理规范的组织,简称为GP)是Visa、MasterCard等国际银行卡组织主导的国际标准化组织,从2011年起开始起草制定相关的TEE规范标准,并联合一些公司(ARM等)共同开发基于GP TEE标准的可信操作系统。因此,如今大多数基于TEE技术的Trust OS都遵循了GP的标准规范。
移动设备使用TrustZone的最主要的原因之一是它可以提供”可信执行环境(TEE)”。2003年,ARM公司提出TrustZone。
ARM TrustZone技术:(1)、ARMv6版本开始的安全硬件特性,包括ARM11及Cortex A系列,目前大部分手机芯片均有该硬件特性。(2)、同时运行一个安全的OS和一个普通的OS:两个系统之间互相隔离运行,安全的OS具有更多的权限。(3)、TrustZone是一个全系统级别的安全架构:处理器、内存和外设的安全隔离。
可信终端具有以下三个基本的安全功能:
(1)、基于硬件隔离的安全执行环境:TEE提供了基于硬件隔离的安全世界来保护敏感数据的安全和程序正确执行。实现TEE需要将设备的硬件和软件资源全部划分成安全世界和非安全世界,两个世界具有独立的系统资源,包括寄存器、物理内存和外设,不能随意进行数据交换。安全世界中的代码和资源受到严格的访问控制策略保护,非安全世界的进程禁止访问安全世界,以保证存储在安全世界的敏感资源不被非法访问或窃取,能够有效减少安全系统漏洞的披露、外界的攻击和病毒的入侵。
(2)、基于信任链的平台完整性:为了保证整个系统的安全,TEE从系统引导启动开始逐步验证以保证TEE平台的完整性。设备加电后,加载ROM中的安全引导程序,并利用根密钥验证其完整性。然后,该引导程序进入TEE 初始化阶段并启动安全操作系统,逐级核查安全操作系统启动过程中的各个阶段的关键代码以保证安全操作系统的完整性,同时防止未授权或经过恶意篡改软件的运行;安全操作系统启动后,运行非安全世界的引导程序并启动普通操作系统。至此基于信任链,完成了移动终端整个系统的安全启动,能够有效抵御TEE启动过程中的非法篡改、代码执行等恶意行为。
(3)、基于安全存储的数据机密性:用户的身份、密钥和证书等敏感信息需要高度保护,TEE依靠加密和完整性保护技术来保护数据和密钥。TEE将用户的身份、密钥和证书等敏感信息存储在安全区域中,这些敏感信息只能由TEE授权的可信应用访问或修改,并且TEE为这些敏感信息的操作处理提供了加密和完整性保护机制。同时,可利用TEE中存储的密钥对普通执行环境下用户的信息,如通讯录、短信等敏感信息进行加密,保证存储在普通执行环境下敏感信息的安全性。
3. Tee实现:ARM TrustZone
3.1.Trustzone是什么?
TrustZone是ARM针对消费电子设备设计的一种硬件架构,其目的是为消费电子产品构建一个安全框架来抵御各种可能的攻击。
TrustZone在概念上将SoC的硬件和软件资源划分为安全(Secure World)和非安全(Normal World)两个世界,所有需要保密的操作在安全世界执行(如指纹识别、密码处理、数据加解密、安全认证等),其余操作在非安全世界执行(如用户操作系统、各种应用程序等),安全世界和非安全世界通过一个名为Monitor Mode的模式进行转换,如下图:
注:以上内容,均整理自网络。
参考:
https://blog.csdn.net/trustbo/article/details/78234373?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
https://blog.csdn.net/fengbingchun/article/details/78657188/