许多人对可信执行环境的概念理解存在夸大、缩小或者误读的情况,比如:

SE是不是可信执行环境,与TEE的关系是什么?

高通的SPU属于可信执行环境吗?

苹果的Secure enclave processor为啥叫安全隔区?

有鉴于此,安智客对可信执行环境的概念来梳理一番,如有不妥之处请各位批评指正。

一,可信执行环境定义

般认为,最早给出可信执行环境定义的是OMTP(Open Mobile Terminal Platform)这个组织,其在2009年其在《omtpadvancedtrustedenvironmentomtptr1v11.pdf》中定义了TEE,定义为“一组软硬件组件,可以为应用程序提供必要的设施”,需要满足两种定义的安全级别中的一种。第一个安全级别(Profile 1)目标是应对软件攻击,第二个安全级别(Profile 2)目标是同时应对软件和硬件攻击【1】。

OMTP相关标准后来由GSMA来接管。这个文档标准从安全性上定义了可信执行环境是软件和硬件结合的组件,具备防软件和硬件攻击能力。从这个层次来看可信执行环境的概念还是比较宽泛和模糊的。

到了2010年7月份,GlobalPlatform组织首次宣布了一整套TEE系统体系标准。GlobalPlatform的系列TEE规范,这也是当前许多商业或者开源产品一般都会参考该规范,并按照其定义的各种功能接口进行规范实现【2】。

GP是从接口、协议实现层面上对TEE进行了部分的规范定义,以及典型应用规范定义。但是也正是由于GP标准的不完整和不彻底性、导致了现在TEE发展面临的主要问题,这是后话。到了这个阶段,可以看出,可信执行环境应该有如下几个特征:

  • 软硬件协同的安全机制:隔离是其本质属性,隔离可以是通过软件,也可以是硬件实现,更多的软件、硬件、IP、总线一体的安全机制

  • 算力共享:能使用CPU的同等算力、硬件资源

  • 开放性:有对应的REE侧,才有TEE的必要性,只有在开放性中才需要可信执行环境的保护

最后,我们通过对ARM的对于可信执行环境的演变过程来理解可信执行环境。TrustZone 于2003 年在伦敦的伦敦塔推出。这里的旅游景点包括 Crown Jewels。ARM的安全营销经理 Rob Coombs 表示:“这是一个合适的场地:城堡有要塞和护城河隔离并缩小攻击区域,以安全层保护珍贵的资产。”

可以看到当时的介绍【3】:

“可信模式”(一个隐藏的安全区域)基于 TrustZone 技术提供的硬件隔离。 安全区域通常运行较小的可认证微内核,与大得多的主操作系统并行且相互独立。 在该模式下,可进行安全认证的代码区域缩小至 100 Kb,而非 Gb, 负责在正常模式和安全模式之间切换的软件运行在安全 EL3 级别。TrustZone 安全扩展至整个芯片,并以物理方式将系统划分为安全和非安全组件。 这隔离了某些部分,并确保在正常操作系统下运行的软件无法直接访问安全区域的资产,如内存或外设。必须明确:

基于ARM TrustZone实现的可信执行环境是一种硬件隔离安全机制,这一点常常被不明真相的人误解,这也是理解可信执行环境概念的一个关键点:隔离机制。

对于ARM自己设计的这一隔离机制,一直到10多年之后的移动手机大发展而繁荣起来,以trustonic为代表一些企业纷纷推出基于trustzone机制的TEEOS实现,成为实际意义上可信执行环境的定义。

此外,学术界对可信执行环境的研究也是一个持续的热点,以ARM TrustZone为代表的TEE一直以来都是学术界的研究热点,上海交通大学IPADS实验室有多篇TEE相关研究论文,2018年12月正式发表在《ACM GetMobile》杂志上,利文浩博士的论文“Research on ARM TrustZone”上介绍到硬件隔离通常被认为比纯软件隔离更值得信赖,因此基于芯片隔离的执行环境也被称为可信执行环境【4】。

另外,关于可信执行环境的概念,比较有代表性的,也可以参照中科院2017年的一篇博士论文《杨波. 面向移动平台的可信执行环境构建方法与应用研究[D]. 北京. 中国科学院大学. 2017-05-01》

划重点,我理解,杨波博士对可信执行环境的定义是指在计算平台上的一个安全区域,具体实现方式有多种多样,但是隔离是其本质属性。也就是说这个可信赖的执行环境一定是有隔离属性。

完整PPT介绍,详见:面向移动平台的可信执行环境构建方法与应用研究

因此可以这样说,有影响力的标准组织GP和芯片设计公司ARM这样的公司,对于可信执行环境的内涵互为补充,相辅相成,ARM设计的TrustZone隔离机制以及ATF固件实现,再加上各种三方TEEOS共同构成了可信执行环境丰富的内容。

但究其本质,可信执行环境是一个安全区域,它通过隔离的执行环境,提供一个执行空间,该空间相比REE侧操作系统有更强的安全性,比安全芯片功能更丰富,提供其代码和数据的机密性和完整性保护。因此是不是可以梳理出来隔离、算力共享、开放性这三个可信执行环境的关键特征。其具体实现形式差别在于隔离的实现机制、算力共享程度。

二,隔离是可信执行环境的第一属性

最早的隔离机制要追溯到Intel,1982年之前的CPU芯片,软件能直接访问BIOS及其周边硬件,那时候没有任何硬件的存储器保护或者多任务概念,直到Intel 80286,由于要访问16M的内存,提出了CPU两种运行模式,后面逐步形成了x86处理器的四个特权级别,分别是RING0、RING1、RING2、RING3,RING0层拥有最高权限,依此向下RING3层即拥有最低的权限。应用程序工作在RING3层,就只能访问RING3层的数据、Windows操作系统工作在RING0和RING3层,可以访问所有层的数据,即每一层只能访问本层以及权限更低层的数据,如果工作在RING3层的应用程序企图执行RING0指令,则会显示“非法指令”的错误信息。

近年,Intel提出的SGX机制,提供计算力、内存隔离能力,本质上也可以称之为可信执行环境。

我们之前也多次介绍过:

参考阅读:Intel芯片架构中TEE的实现技术之SGX初探

因此,可以说Intel的SGX是一种可信执行环境,因为其满足:隔离、开放性、算力共享。虽然说SGX和TrustZone的隔离机制不完全一样,比如SGX不能控制外设等等。

我们在来看看从隔离来看看ARM的可信执行环境实现演进过程。

2003年ARM提出的trustzone技术实现硬件隔离机制,主要针对嵌入式移动终端处理器,创建安全世界和非安全世界的隔离【5】。

2016年ARM提出轻量化的隔离机制trustzone-M,处理器有handle和thread模式,privileged和unprivileged两种特权级别满足面对IOT领域安全需求【6】。

2017年ARM提出Secure EL2,使得多个安全OS在系统中彼此功能共存,提供更细粒度的安全隔离机制【7】。

未来ARMv9,在现在MMU和trustzone隔离的基础上,对内存访问控制系统的一种扩展机制,因此其创建的安全内存区域Realms具有更安全的隔离属性。

可以看出ARM一直将隔离机制作为可信执行环境的一个基础安全功能。需要说明的是,这里隔离是指在一个CPU上的隔离,或者在一个安全区域内部的隔离。

三,可信执行环境的实现形态

现在,我们来整理产业界各种不同的可信执行环境实现形态,有的是基于芯片的实现形态,有的是基于软件厂商的实现形态,有的是基于互联网应用厂商的实现的形态,不管形式如何变化,我们看到:隔离机制、算力共享、业务开放都是其具备的共同特点。比如:

等等... 这些可信执行环境都有一个共同点,其隔离特性的实现都是在同一芯片架构算力,共享的基础上实现的。

四,与可信计算,可信计算基关系

可信计算 /可信用计算(trust computing)是一项由可信计算平台联盟(TCPA)推动和开发的技术,2003年被TCG替代,它的最初目标是开发TPM芯片。说到TPM不能不说TCM(trusted cryptography module),这是咱中国参照TPM1.2版本规范做的可信计算标准产品。

针对TPM的缺点,比如主动控制,大数据通信,咱中国的TPCM(trust platform control module)又出来了...

参考阅读:可信计算与可信计算组织

可信计算基(trust computing base TCB)是指为实现计算基系统安全保护的所有安全保护机制的集合,机制可以硬件、固件和软件的形式出现。

可信计算作为一个技术体系概念,主要是指tcg给出的技术体系,主要的技术手段是封装、度量与远程证明,主要的技术载体是tpm芯片、支持可信计算的设备等等。

可信执行环境与可信计算、可信计算基的关系,也可以参照知乎上的一个回答理解【9】。

侠义上讲可信执行环境与侠义上的可信计算没有关系。

但可信执行环境的一些实现实例可以看作是广义上的可信计算范畴。

而可信计算基作为一个名词概念,安智客认为可以将TEEOS作为一个可信计算基来讲。

参考阅读:可信软件基概述

五,结论

侠义的讲,可信执行环境依赖的芯片隔离机制,应该是共享CPU算力以及外设资源。

广义的讲,可信执行环境,无论基于软件还是芯片构建的隔离机制,最终应用也可以共享CPU算力。

现在来回答,SE是不是一种可信执行环境?

由于SE是单一器件,其隔离特性是芯片间的属性,没有共享算力,没有TEE和REE的概念,因此可以说SE不是一种可信执行环境。

那为什么IOT设备集成了SE,还需要使用TrustZone来保证呢?因为攻击面不一样了,安全是个系统级别的方案,ARM的Ethan.Zhang有一篇《IOT安全方案有了SE,为什么还要用TrustZone?》【10】

文章提到,IOT设备系统集成安全芯片SE保护范围在安全芯片本身,而安全芯片的频率比较低,资源受限,比较难做应用扩展,很难解决IOT设备的系统级别的安全问题,那么TrustZone刚好可以补充这些问题。TrustZone是指令集级别的安全解决方案,是从芯片设计最早阶段从最底层来解决安全问题,例如隔离环境,安全启动,安全升级和防止回滚攻击等,另外TrustZone天生具备灵活的优势,可以非常灵活来管理安全外设,提供运行时的保护,资源可配置,能够动态分配安全资源满足更多的应用场景的要求,TrustZone+安全芯片SE会逐渐成为IOT的趋势

参考阅读:eSE/inSE/TEE的分析与对比

高通的SPU呢?同样,SPU全称叫Secure Processing Unit (SPU) 硬件处理单元,SPU有自己上电启动系统。它具有自己的独立专用CPU和运行代码的RAM。它还具有自己的加密引擎和密钥管理工具,旨在使其能够有效地加密和解密所需的任何信息。并不享有主CPU算力,也可以说不是一种可信执行环境,它只是高通可信执行环境QSEE的安全性补充,或者说是高通芯片平台的一个内置安全器件SE,而其业务开放性是建立在SPU本身的安全性上的。

通过以上总结分析,可以说各种硬件形式的安全核、安全芯片、安全处理器等等,都不能称之为可信执行环境。

包括苹果的Secure enclave Processor,其白皮书上讲是一个安全隔区【11】。

参考材料:

【1】,http://www.gsma.com/newsroom/wp-content/uploads/2012/03/omtpadvancedtrustedenvironmentomtptr1v11.pdf

【2】,https://globalplatform.org/specs-library/

【3】,https://community.arm.com/cn/b/blog/posts/trustzone

【4】,https://www.trustkernel.com/uploads/pubs/TZResearch_GetMobile2018.pdf

【5】,https://static.docs.arm.com/100878/0100/fundamentals_of_armv8_a_100878_0100_en.pdf?_ga=2.28114687.231647902.1569237841-186662845.1540281047

【6】,https://static.docs.arm.com/100690/0201/armv8_m_architecture_trustzone_technology_100690_0201_01_en.pdf?_ga=2.193917038.231647902.1569237841-186662845.1540281047

【7】,https://developer.arm.com/-/media/Files/pdf/Isolation_using_virtualization_in_the_Secure_World_Whitepaper.pdf?revision=c6050170-04b7-4727-8eb3-ee65dc52ded2

【8】,https://www.synopsys.com/dw/ipdir.php?ds=arc-sem

【9】,https://www.zhihu.com/question/66383184

【10】,https://aijishu.com/a/1060000000009143

【11】,https://www.apple.com/business/docs/site/iOS_Security_Guide.pdf

欢迎各位批评指正!

声明:本文来自安智客,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。