当前位置: 首页 > 编程日记 > 正文

TEE(Trusted Execution Environment)简介

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+ 中间件 + 安全应用 + 外部交互。

TEE三层架构:TA(Trusted Application)层:可信钱包、TUI;TEE层:安全操作系统,对上层TA提供的库;硬件层:CPU状态隔离、内存隔离、外设隔离,如下图:


TEE并不仅仅是指纹保护,指纹目前是TEE推广的强大动力,解锁、手机支付是主要应用场景。

TEE并不仅仅在手机端,从手机端到云端都有TEE:ARM:TrustZone; X86: VT-x和SGX。TEE并不是全新的概念,本质就是一种基于硬件的隔离。

TEE并不是100%都安全,关于TEE的CVE开始出现,各家实现的TEE良莠不齐。

TEE的目的是增强移动设备的安全特性,包括软件编程接口、硬件IP在内的一整套方案。芯片在软件和硬件上,有REE和TEE两个区域,分别对应富执行环境和可信执行环境。其主要思想就是在同一个CPU芯片上,通过硬件配置方式实现不同IP组件的访问控制,从而提供一个完全隔离的运行空间。ARM在芯片IP设计中已经全面支持了TEE,包括高通、联发科、三星、海思、展讯等都纷纷采用,成为基于硬件安全的主流方案。

TEE是和REE(Rich Execution Environment)相对应的,一般称TEE和REE为Secure World和Normal World。Linux跑在Normal World上,但是有些安全性要求比较高的行为,例如指纹的比对,支付时候用私钥签名的动作等,需要放到Secure World里面去。

TEE具有其自身的执行空间,也就是说在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环境的操作系统由不同的企业在推行,例如华为海思有自己的TrustZone的操作系统,高通的QSEE、ARM的Trustonic、还有Linaro开源的OPTEE等。

TEE最早出于OMTP规范,ARM是TEE技术的主导者之一,其TrustZone即是支持TEE技术的产品。

2006年,OMTP (Open Mobile Terminal Platform,开放移动终端平台)工作组智能终端的安全率先提出了一种双系统解决方案:即在同一个智能终端下,除了多媒体操作系统外再提供一个隔离的安全操作系统,这一运行在隔离的硬件之上的隔离安全操作系统用来专门处理敏感信息以保证信息的安全。该方案即TEE的前身。

基于OMTP的方案,ARM公司(嵌入式处理器的全球最大方案供应商,它们架构的处理器约占手机市场95%以上的份额)于2006年提出了一种硬件虚拟化技术TrustZone及其相关硬件实现方案。TrustZone即是支持TEE技术的产品,TrustZone是所有Cortex-A类处理器的基本功能,是通过ARM架构安全扩展引入的,而ARM也成为了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是一个全系统级别的安全架构:处理器、内存和外设的安全隔离。

手机内部分为硬件、操作系统、应用软件三层。安全技术和解决方案的演进顺序依次为应用软件层安全技术、操作系统层安全技术和硬件层安全技术。从抗攻击的角度来讲,越是基于底层的安全防护越是抗攻击。目前很多手机厂商推出的指纹,都是基于硬件的安全方案来进行保护的,通过一个硬件隔离区来保护指纹数据和敏感操作,这种硬件隔离技术就是TEE技术。TEE是存在于智能手机(或任何移动设备)主处理器内的安全区,确保敏感数据在可信的环境里得到存储、处理和保护。TEE有能力对经授权的安全软件(所谓的”可信应用程序”)进行安全的执行,因此可通过实施保护、保密性、完整性和数据访问权限,提供端到端的安全性。目前在国内市场苹果、华为、三星等手机共同选择了TEE技术。

目前,ARM在芯片IP设计中已全面支持了TEE,包括高通、联发科、三星、海思、展讯等企业已采用,成为基于硬件安全的方案。

可信终端具有以下三个基本的安全功能:

(1)、基于硬件隔离的安全执行环境:TEE提供了基于硬件隔离的安全世界来保护敏感数据的安全和程序正确执行。实现TEE需要将设备的硬件和软件资源全部划分成安全世界和非安全世界,两个世界具有独立的系统资源,包括寄存器、物理内存和外设,不能随意进行数据交换。安全世界中的代码和资源受到严格的访问控制策略保护,非安全世界的进程禁止访问安全世界,以保证存储在安全世界的敏感资源不被非法访问或窃取,能够有效减少安全系统漏洞的披露、外界的攻击和病毒的入侵。

(2)、基于信任链的平台完整性:为了保证整个系统的安全,TEE从系统引导启动开始逐步验证以保证TEE平台的完整性。设备加电后,加载ROM中的安全引导程序,并利用根密钥验证其完整性。然后,该引导程序进入TEE 初始化阶段并启动安全操作系统,逐级核查安全操作系统启动过程中的各个阶段的关键代码以保证安全操作系统的完整性,同时防止未授权或经过恶意篡改软件的运行;安全操作系统启动后,运行非安全世界的引导程序并启动普通操作系统。至此基于信任链,完成了移动终端整个系统的安全启动,能够有效抵御TEE启动过程中的非法篡改、代码执行等恶意行为。

(3)、基于安全存储的数据机密性:用户的身份、密钥和证书等敏感信息需要高度保护,TEE依靠加密和完整性保护技术来保护数据和密钥。TEE将用户的身份、密钥和证书等敏感信息存储在安全区域中,这些敏感信息只能由TEE授权的可信应用访问或修改,并且TEE为这些敏感信息的操作处理提供了加密和完整性保护机制。同时,可利用TEE中存储的密钥对普通执行环境下用户的信息,如通讯录、短信等敏感信息进行加密,保证存储在普通执行环境下敏感信息的安全性。

注:以上内容均整理自网络。

相关文章:

自动驾驶关键环节:行人的行为意图建模和预测(上)

作者 | 黄浴出品 | AI科技大本营(ID:rgznai100)【导读】介绍一下最近行人行为意图建模和预测的研究工作,还是分上下两部分,本文为上半部分。Social LSTM: Human Trajectory Prediction in Crowded Spaces比较早的是斯坦福大学 201…

自定义windows下自动清除文件夹或者文件的只读属性的脚本

脚本内容入下:其中脚本中 ”/d"作用 (可以用来改变当前驱动器目录)例如: 我现在是在D盘,现在我要切换到C:\windows目录 脚本参数中 ATTRIB -R /S /D 解释内容如下:(上述脚本参数中的 cd …

C++11容器中新增加的emplace相关函数的使用

C11中,针对顺序容器(如vector、deque、list),新标准引入了三个新成员:emplace_front、emplace和emplace_back,这些操作构造而不是拷贝元素。这些操作分别对应push_front、insert和push_back,允许我们将元素放置在容器头…

Silverlight+WCF 新手实例 象棋 主界面-棋谱-获取列表(三十八)

2019独角兽企业重金招聘Python工程师标准>>> 在线演示地址:SilverlightWCF 新手实例 象棋 在线演示 在SilverlightWCF 新手实例 象棋 主界面-棋谱-布局写谱(三十六)中,我们完成下棋双方的棋谱显示,这节,我们为观众增加…

确认!语音识别大牛Daniel Povey将入职小米,曾遭霍普金斯大学解雇,怒拒Facebook

整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 【导读】10 月 17 日,语音界传奇 Daniel Povey 发布推特,宣布自己 2019 年末将要入职小米,目前正在签订合同阶段,入职后,他将带领一支团队研发…

软链接与硬链接

$ ln f1 f2 #创建f1的一个硬连接文件f2$ ln -s f1 f3 #创建f1的一个符号连接文件f3$ ls -li # -i参数显示文件的inode节点信息转载于:https://www.cnblogs.com/zhizouxiao/p/3794668.html

一文读懂Python复杂网络分析库networkx | CSDN博文精选

作者 | yyl424525来源 | CSDN博客文章目录1. 简介安装支持四种图绘制网络图基本流程2. Graph-无向图节点边属性有向图和无向图互转3. DiGraph-有向图一些精美的图例子环形树状图权重图Giant ComponentRandom Geometric Graph 随机几何图节点颜色渐变边的颜色渐变Atlas画个五角星…

C++11多线程中std::call_once的使用

C11中的std::call_once函数位于<mutex>头文件中。在多线程编程中&#xff0c;有时某个任务只需要执行一次&#xff0c;此时可以用C11中的std::call_once函数配合std::once_flag来实现。如果多个线程需要同时调用某个函数&#xff0c;std::call_once可以保证多个线程对该函…

Solaris 上网配置

2019独角兽企业重金招聘Python工程师标准>>> 早上装solaris10系统的时候&#xff0c;没选默认&#xff0c;选了desk-session模式安装。全英文无界面安装&#xff0c;中间还跑出几个乱码。 靠着随便选随便F2&#xff0c;终于安装完了。 就在那设完分辨率后&#xff0…

Configure,Makefile.am, Makefile.in, Makefile文件之间关系

为什么80%的码农都做不了架构师&#xff1f;>>> 1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题&#xff0c;比如检查编译器&#xff0c;库&#xff0c;头文件等&#xff0c;生成文件configure.scan,它是configure.ac的一个雏形。 your source files…

这款耳机一点不输千元级的AirPods

你如果问我&#xff1a;生活中你觉得必不可少的一件电子产品是什么&#xff1f;那么我会毫不犹豫的回答你&#xff1a;是耳机&#xff01;出门忘带耳机是绝对不能忍听不听没关系&#xff0c;但是有它比较安心我觉得生活中不仅是我很多人都对耳机有一种依赖因为很多人都喜欢音乐…

CUDA Samples: Image Process: BGR to Gray

在图像处理中&#xff0c;颜色变换BGR到Gray&#xff0c;常见的一般有两种计算方式&#xff0c;一种是基于浮点数计算&#xff0c;一种是基于性能优化的通过移位的整数计算。浮点数计算公式为&#xff1a; gray 0.1140 * B 0.5870 * G 0.2989 * R;整数计算公式为&#xff1…

CYQ.Data 数据框架系列索引

2019独角兽企业重金招聘Python工程师标准>>> 索引基础导航&#xff1a; 1&#xff1a;下载地址&#xff1a;http://www.cyqdata.com/download/article-detail-426 2&#xff1a;入门教程&#xff1a;http://www.cyqdata.com/cyqdata/article-cate-33 3&#xff1a;购…

Tesseract 3 语言数据的训练方法

OCR,光学字符识别 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描&#xff0c;然后对图像文件进行分析处理&#xff0c;获取文字及版面信息的过程。OCR技术非常专业&#xff0c;一般多是印刷、打印行业的从业人员使用&#xff0c;可以快速的将纸质资料…

Windows C++中__declspec(dllexport)的使用

__declspec是Microsoft VC中专用的关键字&#xff0c;它配合着一些属性可以对标准C/C进行扩充。__declspec关键字应该出现在声明的前面。 __declspec(dllexport)用于Windows中的动态库中&#xff0c;声明导出函数、类、对象等供外面调用&#xff0c;省略给出.def文件。即将函数…

图灵奖得主LeCun力推无监督学习:要重视基于能量的学习方法

作者 | Tiernan Ray译者 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导语&#xff1a;图灵奖得主深度学习大牛 Yann LeCun 表示&#xff0c;人工智能的下一个发展方向可能是放弃深度学习的所有概率技巧&#xff0c;转而掌握一系列转移能量值的方法。据说&a…

html5小游戏Untangle

2019独角兽企业重金招聘Python工程师标准>>> 今天介绍一个HTML5的小游戏&#xff0c;让大家体验到HTML5带来的乐趣。这个小游戏很简单&#xff0c;只要用鼠标拖动 蓝点&#xff0c;让图上的所有线都不相交&#xff0c;游戏时间就会停止&#xff0c;是动用大家头脑的…

【VMCloud云平台】SCCM(四)域内推送代理

继上一篇云平台完成SCCM部署篇之后&#xff0c;SCCM篇正式开始&#xff0c;今天将开始介绍SCCM为域内机器推送代理&#xff08;紫色为完成实施&#xff0c;红色为实施中&#xff09;&#xff1a; 1、 点击站点&#xff1a; 2、 右键属性&#xff0c;点击客户端安装设置&#…

Python实现决策树(Decision Tree)分类

关于决策树的简介可以参考&#xff1a; http://blog.csdn.net/fengbingchun/article/details/78880934在 https://machinelearningmastery.com/implement-decision-tree-algorithm-scratch-python/ 中给出了CART(Classification and Regression Trees,分类回归树算法,简称CART…

顶尖技术专家严选,15场前沿论坛思辨,2019中国大数据技术大会邀您共赴

扫码了解2019中国大数据技术大会&#xff08;https://t.csdnimg.cn/IaHb&#xff09;更多详情。2019中国大数据技术大会&#xff08;BDTC 2019&#xff09;将于12月5日-7日在北京长城饭店举办&#xff0c;本届大会将聚焦智能时代&#xff0c;大数据技术的发展曲线以及大数据与社…

jQuery 加法计算 使用+号即强转类型

1 var value1 $("#txt1").val(); 2 var value2 $("#txt2").val(); 3 //数值前添加号 number加号和数值加号需要用空格隔开 即实现加法运算 4 $("#txt3").val(value1 value2); 转载于:https://www.cnblogs.com/xiemin-minmin/p/11026784.…

Android Volley 库通过网络获取 JSON 数据

本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库通过网络获取 JSON 数据 参考资料 Android 关于网络操作一般都会介绍 HttpClient 以及 HttpConnection 这两个包。前者是 Apache 开源库&#xff0c;后者是 Android 自带 API。企业级应用&#xff0…

​哪些开发问题最让程序员“头秃”?我们分析了Stack Overflow的11000个问题

作者 | Nick Roberts编译 | AI科技大本营&#xff08;ID:rgznai100&#xff09;自 2008 年成立以来&#xff0c;Stack Overflow 一直在拯救所有类型的开发人员。自那时以来&#xff0c;开发人员提出了数百万个关于开发领域的问题。但是&#xff0c;迫使开发者转向 Stack Overfl…

OpenCV3.3中决策树(Decision Tree)接口简介及使用

OpenCV 3.3中给出了决策树Decision Tres算法的实现&#xff0c;即cv::ml::DTrees类&#xff0c;此类的声明在include/opencv2/ml.hpp文件中&#xff0c;实现在modules/ml/src/tree.cpp文件中。其中&#xff1a;(1)、cv::ml::DTrees类&#xff1a;继承自cv::ml::StateModel&…

ARM 寄存器 和 工作模式了解

一. ARM 工作模式 1. ARM7&#xff0c;ARM9&#xff0c;ARM11&#xff0c;处理器有 7 种工作模式&#xff1b;Cortex-A 多了一个监视模式&#xff08;Monitor&#xff09; 2. 用户模式&#xff1a;非特权模式&#xff0c;大部分任务执行在这种模式&#xff0c;它运行在操作系…

英文版PDF不能显示中文PDF文件的解决方法

首先&#xff0c;PDF如果是英文版本的话&#xff0c;先装一个与之对应的PDF中文包。装上之后要检查的两项&#xff1a;1、PDF本身打开Adobe pdf选择“edit”"Preference""Internet"将"internet"下的三个勾全部勾上"OK"2、IE设置打开IE…

Linux下__attribute__((visibility (default)))的使用

在Linux下动态库(.so)中&#xff0c;通过GCC的C visibility属性可以控制共享文件导出符号。在GCC 4.0及以上版本中&#xff0c;有个visibility属性&#xff0c;可见属性可以应用到函数、变量、模板以及C类。 限制符号可见性的原因&#xff1a;从动态库中尽可能少地输出符号是一…

java web学习项目20套源码完整版

java web学习项目20套源码完整版 自己收集的各行各业的都有&#xff0c;这一套源码吃遍所有作业项目&#xff01; 1、BBS论坛系统(jspsql)2、ERP管理系统&#xff08;jspservlet&#xff09;3、OA办公自动化管理系统&#xff08;Struts1.2Hibernate3.0Spring2DWR&#xff09;4、…

360金融携手上海交大共建AI实验室,开启人才战略新布局

10月16日&#xff0c;上海交通大学计算机科学系—360金融人工智能联合实验室成立仪式在上海交通大学闵行校区举行&#xff0c;联合实验室致力于AI技术在新金融领域的应用探索。成立仪式上&#xff0c;360金融CEO吴海生宣布了“未来科学家”计划&#xff0c;这是360金融在人工智…

wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

wxWidgets刚開始学习的人导引全文件夹 PDF版及附件下载1 前言2 下载、安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxSmith进行可视化设计附&#xff1a;学习材料清单3 wxWidgets应用程序初体验本文中全部的体验&#xff0c;在Code::Blocks…