原文:http://blog.csdn.net/wed110/article/details/53894927

可信执行环境(TEE,Trusted Execution Environment) 是Global Platform(GP)提出的概念。针对移动设备的开放环境,安全问题也越来越受到关注,不仅仅是终端用户,还包括服务提供者,移动运营商,以及芯片厂商。TEE是与设备上的Rich OS(通常是Android等)并存的运行环境,并且给Rich OS提供安全服务。它具有其自身的执行空间,比Rich OS的安全级别更高,但是比起安全元素(SE,通常是智能卡)的安全性要低一些。但是TEE能够满足大多数应用的安全需求。从成本上看,TEE提供了安全和成本的平衡。TEE在安全方面注重如下:

开放环境的使用,使得设备暴漏于各种攻击之下;

隐私,个人信息如联系人,短消息,照片,视频等,需要不被盗窃,丢失或者受到恶意软件的攻击;

内容保护,对于DRM而言,条件接收服务或者内容保护的许可等也倾向于使用硬件级别的保护;

公司数据,比如登陆VPN的凭据等的保护;

连接性保护,在3G,4G,wifi,乃至NFC等方面,密钥资源的保护;

金融风险,比如金融交易中的用户交互数据(交易内容,交易额,用户输入PIN等)。

TEE的参与者则包含SP,运营商,OS和移动应用开发者,设备厂商,芯片厂商等。

如前所述,TEE是与Rich OS并存的,可见下图。

其中,TEE所能访问的软硬件资源是与Rich OS分离的。TEE提供了授权安全软件(可信应用,TA)的安全执行环境,同时也保护TA的资源和数据的保密性,完整性和访问权限。为了保证TEE本身的可信根,TEE在安全启动过程中是要通过验证并且与Rich OS隔离的。在TEE中,每个TA是相互独立的,而且不能在未授权的情况下不能互相访问。

GP在TEE的标准化方面下足了工夫,基础的规范有TEE内部API,TEE客户端API,当然目前还有一系列的补充的功能性API规范,以及应用管理、调试功能、安全保护轮廓等规范正在制定中。

TEE内部API主要包含了密钥管理,密码算法,安全存储,安全时钟资源和服务,还有扩展的可信UI等API。可信UI是指在关键信息的显示和用户关键数据(如口令)输入时,屏幕显示和键盘等硬件资源完全由TEE控制和访问,而Rich OS中的软件不能访问。内部API是TEE提供给TA的编程接口;

TEE外部API则是让运行在Rich OS中的客户端应用(CA)访问TA服务和数据的底层通信接口。

TEE的位置

TEE是运行在设备中的,提供介于普通RichOS和SE(智能卡)之间的安全性的框架。当前的很多安全架构还是基于Rich OS + SE的方式,其实这在方便程度和成本上都不能提供“刚刚好”的契合。因为某些小额的支付,DRM,企业VPN等,所需要的安全保护强度并不高,还不需要一个单独的SE来保护,但是又不能直接放在Rich OS中,因为后者的开放性使其很容易被攻击。所以对于这类应用,TEE则提供了合适的保护强度,并且平衡了成本和易开发性。这可以从下图的分析中看到。

对于抗攻击性,SE最高,Rich OS很低;对于访问控制爱,与抗攻击性类似,但是Rich OS能做得更多一些;对于用户界面,SE无能为力,而Rich OS最丰富;开发难易程度上,Rich OS最容易,当然如果TEE标准做得好,也能做得“相当”容易;处理速度上,TEE和Rich OS相当,因为二者使用的同一个物理处理器,SE则肯定慢;最后,SE是物理上可移除的。

从成本和安全性的平衡来看,下图给出了展示。

可见,加入了TEE后,额外成本增加很低,而可以达到一个中等保护的级别;如果要达到高级别保护,就需要额外的成本了。这个图的分析并不是说TEE的出现就使得设备上不需要SE了,而是作为一种中等安全级别的层级,满足相应的安全目的。

具体用例

公司安全用例:当用户使用移动设备访问电子邮件,内部网和公司文档的时候,需要有可信赖的端到端安全,以确保公司数据在设备上是受保护的,及网络认证数据不被误用。通过将关键资产与开发环境分离,TEE可以有如下方式来增加公司应用的安全:

公司应用,如email管理器可以依赖于TA,实现敏感功能如加密存储和email的访问控制;

VPN认证可以依赖于TA,允许VPN凭据的安全提供和认证算法实现;

访问策略可以用可信UI实现。当需要访问加密数据和建立网络连接时,需要用户输入口令;

一次性口令(OTP)可以由TA实现,从而把智能手机作为一个安全认证token使用,这种方式是当使用PC登陆公司网络时适用的(双因子认证方法)。

 内容保护用例:对于高质量内容,如音乐,视频,书籍和游戏,相应的SP也需要有内容保护机制来防止非法拷贝和传播。对内容保护而言,可以有如下几种方式:
         防止拷贝系统(如数字水印);

数字版权管理系统(如微软的PlayReady或者OMA DRM);

条件接收系统(如Nagra,NDS,Irdeto等)。

这些内容保护系统也可以依赖于TA的如下功能:

存储密钥,凭据和证书;

执行关键软件;

执行关键的内容保护函数和/或安全地委托给SE。

移动支付用例:移动支付可以分为远程移动交易,和近场支付两类。风险则有可能是设备中的恶意代码在用户不知情的情况下,去做了如下的事情:

获取用户口令或PIN;

修改交易数据,比如交易金额;

在没有用户确认的情况下生成交易。

借助于TEE的可信UI特性,TEE可以提供用户认证、交易确认和交易处理等方面的保护。

TEE的概念是基于ARM的TrustZone技术的,虽然GP在文档里一直没有明说这一点。而TrustZone架构是ARM系统化设计出来的,在处理器核和调试功能等方面都有充分的功能性和安全性考虑。因此在针对OMTP的电子消费设备的安全威胁,以及OMTP TR1中提到的扩展的安全威胁,ARM和GP都有相应的考虑。对于硬件安全威胁,ARM在架构设计上使其攻击更加困难,相应的代价也更高一些;而对于软件安全威胁,也不再是一场取得操作系统root权限的游戏了,而是把Rich OS和TEE的执行空间和资源分离,除非TEE本身有漏洞,或者TA包含恶意代码,否则软件攻击也会非常困难。当然,TEE本身应当是通过一定级别的认证(EAL2或EAL3,特殊行业应用EAL4及以上),而TA也肯定是需要相应机构的认证和签名才能部署到设备上去的。无论是TEE的认证,还是TA的可信管理,都是另外的重量级话题。而在此之前,如何实现Rich OS与TEE的通信机制,高效的内存共享机制,以及多核架构带来的问题等,都是具有挑战性的话题。

http://blog.csdn.NET/braveheart95/article/details/8882322

TEE通信分析 kenel层收到中断后通过netlink上报到hal层,hal层通过ioctl调用kernel层,从而操作硬件,执行相应的动作。

TEE的实现(硬件、软件与开源)

虽然TEE已经发展比较成熟了,但是对于一般开发者或者研究人员,想要真正体会TEE的功能却是一件比较困难的事件。下面总结关于TEE的一些实现,供参考,可以方便TEE的上手实验与操作。

支持TEE的嵌入式硬件技术包含如下:

(1)AMD的PSP(Platform Security Processor)处理器

http://www.amd.com/en-us/innovations/software-technologies/security

https://classic.regonline.com/custImages/360000/369552/TCC%20PPTs/TCC2013_VanDoorn.pdf

(2)ARM TrustZone技术(支持TrustZone的所有ARM处理器)

http://www.arm.com/zh/about/events/globalplatform-trusted-execution-environment-trustzone-building-security-into-your-platform.php

(3)Intel x86-64指令集:SGX Software Guard Extensions

Intel软件保护扩展:https://software.intel.com/sites/default/files/329298-001.pdf

(4)MIPS:虚拟化技术Virtualization

http://www.imgtec.com/mips/architectures/virtualization.asp

几个TEE的软件实现(提供开源工具或者基于TEE开发的SDK)如下:

(1)Trustonic公司的t-base,是一个商业产品,已经得到GlobalPlatform的授权认可

https://www.trustonic.com/products-services/trusted-execution-environment/

(2)Solacia公司的securiTEE,也是一个商业产品,并且得到了GlobalPlatform的授权认可

http://www.sola-cia.com/en/securiTee/product.asp

(3)OP-TEE,开源实现,来自STMicroelectronics,BSD授权支持下的开源

开源地址:https://github.com/OP-TEE

(4)TLK,开源实现,来自Nvidia,BSD授权支持下的开源

开源地址:http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/ote_partner/tlk.git;a=summary

(6)T6,开源实现,GPL授权下的开源研究,主要是上海交大的,是国内开展TEE研究比较早的

地址:http://www.liwenhaosuper.com/projects/t6/t6_overview.html

(7)Open TEE,开源实现,来自芬兰赫尔辛基大学的一个研究项目,由Intel提供支持,在Apache授权下提供支持

开源地址:https://github.com/Open-TEE/project

(8)SierraTEE,来自Sierraware公司的实现,拥有双重属性,一半开源一半商业性质

地址:http://www.openvirtualization.org/

商业的TEE实现,如Trustonic的t-base,Solacia的securiTEE不花钱肯定是无法使用的。而T6和SierraTEE貌似都必须购买相应的硬件开发板才能使用其开源的TEE软件,而且硬件开发板也不便宜。OP-TEE、TLK和Open TEE是完全开源实现,值得去学习体验一下TEE环境,博主接下来会分别体验一下这三个开源TEE后再来作评价,是否好用,是否依赖特定硬件,现在还不得而知,只等后面体验后更新吧。

主要参考

[0] 维基百科,http://en.wikipedia.org/wiki/Trusted_execution_environment#cite_note-10

其它参考

[1] GlobalPlatform Device Specifications: Trusted Execution Environment. http://www.globalplatform.org/specificationsdevice.asp

[2] Trusted Computing Group. Committee Specification-TPM 2.0 Mobile Reference Architecture (an intermediate draft), April 4, 2014

[3] OMTP Ltd. Advanced Trusted Environment: OMTP TR1. 2009. http://www.gsma.com/newsroom/wp-content/uploads/2012/03/omtpadvancedtrustedenvironmentomtptr1v11.pdf

[4] TRUSTED LOGIC‘s TRUSTED FOUNDATIONS? SOFTWARE complies with OMTP latest

security requirements. http://www.trusted-logic.com/IMG/pdf/TRUSTED_LOGIC_TRUSTED_FOUNDATIONS_OMTP_FINAL.pdf

[5] Trusted Foundations? first to incorporate the latest GlobalPlatform TEE Specification. 2011. http://tlmobility.com/IMG/pdf/Trusted_Foundations_FINAL.pdf

可信执行环境(TEE)介绍 与应用的更多相关文章

  1. 可信执行环境TEE(转)

    硬件威胁:ARM的架构设计 软件威胁 TEE是中等安全级别 可信执行环境(TEE)是Global Platform(GP)提出的概念.针对移动设备的开放环境,安全问题也越来越受到关注,不仅仅是终端用户 ...

  2. 可信执行环境(TEE)介绍

    可信执行环境(TEE)是Global Platform(GP)提出的概念.针对移动设备的开放环境,安全问题也越来越受到关注,不仅仅是终端用户,还包括服务提供者,移动运营商,以及芯片厂商.TEE是与设备 ...

  3. 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?

    HostingEnvironment是承载应用当前执行环境的描述,它是对所有实现了IHostingEnvironment接口的所有类型以及对应对象的统称.如下面的代码片段所示,一个HostingEnv ...

  4. 图解JavaScript执行环境结构

    JavaScript引擎在开始编译代码的时候,会对JavaScript代码进行一次预编译,生成一个执行环境,比如如下代码: window.onload=function(){ function sub ...

  5. 一起talk GDB吧(第六回:GDB改动程序执行环境)

    各位看官们,大家好,上一回中我们说的是GDB查看信息的功能,而且说了怎样使用GDB查看程序执行时的 信息.这一回中,我们继续介绍GDB的调试功能:改动程序执行环境.当然了,我们也会介绍怎样使用GDB ...

  6. 怎样高速正确的安装 Ruby, Rails 执行环境

    对于新入门的开发人员,怎样安装 Ruby, Ruby Gems 和 Rails 的执行环境可能会是个问题,本页主要介绍怎样用一条靠谱的路子高速安装 Ruby 开发环境. 次安装方法相同适用于产品环境! ...

  7. JavaScript之一: 闭包、执行环境、作用域链

    这是大虾的第一篇博文,大虾试图用最直白的语言去描述出所理解的东西,大虾是菜鸟,水平有限,有误的地方希望路过的朋友们务必指正,谢谢大家了. 从读书时代一路走来,大虾在学习的时候逐渐喜欢上了去追寻根源,这 ...

  8. 匿名函数里的this的执行环境和指向--javascript

    重新看了下闭包,在javascript高级程序设计第二版里的闭包里有如下例子,例子中介绍说匿名函数的执行环境具有全局性和this指向window,对于这句话很费解,所以就想个方法验证下. var na ...

  9. javascript 之执行环境-08

    概念 执行环境(Execution context,简称EC)或执行上下文对象(后面统一用执行上下文表示),它定义了变量或者函数有权访问的其他数据,决定了他们各自的行为.是不是有点不好理解,那我先简单 ...

随机推荐

  1. 在Android上编译OSG[3.0.2 ] (转)

    在Android上编译OSG[3.0.2 ] 分类:Android   This file contents can be applied for version OpenSceneGraph(OSG ...

  2. Linux学习之十二-Linux文件属性

    Linux文件属性 在Linux中,对于每个文件都有相应属性,以Linux中root用户家目录下新建文件a.txt为例,在a.txt中输入几个字符 使用命令ls -ild a.txt查看文件的权限等 ...

  3. linux中判断符号[]注意事项

    1.中括号[]内的每个组件都需要有空格键来分割: 2.在中括号内的变量,最好都一双引号括号起来: 3.在中括号内的常量,最好都以单引号或双引号括号起来.

  4. 雕刻效果的实现【OpenCV+QT】

    雕刻能够区分为凸雕和凹雕. 凸雕基右下角的点减去左上角的点. 凹雕是左上角的点减去右下角的点. [效果图] 由于进行了缩放.效果看起来差一些.

  5. element的el-tabs控制,以及el-select 多选默认值

    一.el-tabs 1.element自己已经封装好了,当切换时v-model的值自动切换为el-tabs-pane的name对应的值. 如下: <el-tabs v-model='active ...

  6. mysql rpm安装,以及修改charset

    http://my.oschina.net/u/1156660/blog/343154?fromerr=tmDGGiDL 修改charset: http://stackoverflow.com/que ...

  7. Sqlserver 实际开发中表变量的用法

    在实际的开发中,我们可能遇到的问题是,在一个存储过程里面,我们可能要返回多段sql的结果集,但是最终怎么把多个结果集合成一块呢,那么这个时候临时表变量就来了 declare  @tmp table   ...

  8. Ubuntu Server 安装 NodeJS

    准备命令: $ sudo apt-get install python $ sudo apt-get install build-essential $ sudo apt-get install gc ...

  9. kernel&uboot学习笔记

    uboot kernel uboot 1.Uboot编译流程分析: uboot是如何编译生成的? 2.根据include/configs/$(target).h可以生成include/autoconf ...

  10. 新手学习JSP+Servlet笔记一

    作为一个新手,初次接触jsp,servlet,习惯了后台的开发,前台的知识一窍不通,利用闲暇时间,给自己补补,从MyEclipse开始. 安装好MyEclipse之后,没有安装程序的可以下载 http ...