TEE(Trusted Execution Environment)

2024-01-30 17:08

本文主要是介绍TEE(Trusted Execution Environment),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 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/

这篇关于TEE(Trusted Execution Environment)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/660942

相关文章

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

pip install pyaudio sounddevice error: externally-managed-environment

shgbitai@shgbitai-C9X299-PGF:~/pythonworkspace/ai-accompany$ pip install pyaudio sounddeviceerror: externally-managed-environment× This environment is externally managed╰─> To install Python package

Creating OpenAI Gym Environment from Map Data

题意:从地图数据创建 OpenAI Gym 环境 问题背景: I am just starting out with reinforcement learning and trying to create a custom environment with OpenAI gym. However, I am stumped with trying to create an enviro

兔子--Android Studio出现错误:Error:Execution failed for task ':myapp:dexDebug'. com.android.ide.common.pro

重点在:finished with non-zero exit value 2. 这里表明了有重复的内容存在。 由于:Android Studio中引入包的方式有如下2种:    compile 'com.android.support:support-v4:22.0.0'    compile files('libs/support-v

Navicat Premium上出现Cannot create oci environment错误的解决办法

因为要连接运程的Orcale数据库,由于一些原因连不上,于是我把顶栏里的工具->选项->Oic(最最下面的一个)的oci.dll给替换了,然后就一直出现Cannot create oci environment这个错误 这是由于替换的oci.dll的版本不对,于是替换了各种版本有时候也会出现这个错误 最后就是因为版本不对,先看好安装的版本然后下载一个相对应的 下载地址:http://ww

【论文分享】MyTEE: Own the Trusted Execution Environment on Embedded Devices 23‘NDSS

目录 AbstractINTRODUCTIONBACKGROUNDARMv8 ArchitectureSecurity statesTrustZone extensionsVirtualization Communication with Peripherals MOTIVATIONATTACK MODEL AND ASSUMPTIONSYSTEM DESIGNOverviewExecu

Eclipse启动错误a java runtime environment

Windows下的Eclipse启动失败,如下图。 原因是找不到虚拟机,可能是Eclipse配置文件中的路径(一般是版本名)写错了,修改即可。 方法/步骤 打开eclipse文件中的eclipse.ini(后缀名如果看不到,可以通过查看属性 看到) 配置设置文件; 同时也打开java的jre文件。 仔细比较ecl

漏洞检测 Symbolic execution符号执行是什么

Symbolic execution 符号执行 Symbolic execution (King 1976) is another vulnerability discovery technique that is considered to be very promising. By symbolizing the program inputs, the symbolic execution

OpenAI Gym custom environment: Discrete observation space with real values

题意:OpenAI Gym 自定义环境:具有实数值的离散观测空间 问题背景: I would like to create custom openai gym environment that has discrete state space, but with float values. To be more precise, it should be a range of valu

手动安装environment.yml的依赖包

在使用environment.yml文件来管理项目依赖的时候,通常我们会使用Anaconda或Miniconda创建一个环境,这样可以确保所有必需的Python包和特定版本都正确安装。下面是如何手动安装environment.yml中定义的依赖包的步骤: 1. 创建一个新的conda环境 首先,你需要有一个名为environment.yml的文件,其中列出了你的所有依赖项及其版本信息。这个文件