可信执行环境TEE(转)
硬件威胁:ARM的架构设计
软件威胁
TEE是中等安全级别
可信执行环境(TEE)是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的通信机制,高效的内存共享机制,以及多核架构带来的问题等,都是具有挑战性的话题。
可信执行环境TEE(转)的更多相关文章
- 可信执行环境(TEE)介绍
可信执行环境(TEE)是Global Platform(GP)提出的概念.针对移动设备的开放环境,安全问题也越来越受到关注,不仅仅是终端用户,还包括服务提供者,移动运营商,以及芯片厂商.TEE是与设备 ...
- 可信执行环境(TEE)介绍 与应用
原文:http://blog.csdn.net/wed110/article/details/53894927 可信执行环境(TEE,Trusted Execution Environment) 是G ...
- Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收
执行环境有全局执行环境和函数执行环境之分,每次进入一个新执行环境,都会创建一个搜索变量和函数的作用域链.函数的局部环境不仅有权访问函数作用于中的变量,而且可以访问其外部环境,直到全局环境.全局执行环境 ...
- 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
HostingEnvironment是承载应用当前执行环境的描述,它是对所有实现了IHostingEnvironment接口的所有类型以及对应对象的统称.如下面的代码片段所示,一个HostingEnv ...
- JavaScript语言精粹--执行环境及作用域,this
1.执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为. 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 虽然我们无法访问,但是解析器在处理数据时 ...
- JS高程4.变量,作用域和内存问题(2)执行环境及作用域
1.执行环境:执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为, 每个执行环境都有一个与之相关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 2.全局执行环境: 最外围的 ...
- JavaScript执行环境
执行环境(Execution Context,也称为"执行上下文")是JavaScript中最为重要的一个概念.执行环境定义了变量或函数有权访问的其它数据,决定了各自的行为.当Ja ...
- JavaScript值类型与执行环境和垃圾处理机制
JavaScript变量分为基本值类型和引用值类型,基本值类型就是以下这五种:Boolean,Number,String,Null,Undefined.基本值类型和引用值类型具有以下特点: 1.基本值 ...
- 高程(4):执行环境、作用域、上下文执行过程、垃圾收集、try...catch...
高程三 4.2.4.3 一.执行环境 1.全局执行环境是最外层的执行环境. 2.每个函数都有自己的执行环境,执行函数时,函数环境就会被推入一个当前环境栈中,执行完毕,栈将其环境弹出,把控制器返回给之前 ...
随机推荐
- SQLite : 解决“找不到请求的 .Net Framework 数据提供程序。可能没有安装”的问题
在使用subsonic 3时,如果不完整安装SQLite的SDK包,直接在项目中使用System.Data.SQLite将引发上述错误. 原因是:是 DBproviderfacotories 没有导 ...
- sql 在将 nvarchar 值 转换成数据类型 int 时失败。
假设有存储过程:proc_test2 create proc proc_test2 @Id int begin as declare @sql varchar(max) @sql = 'select ...
- HDU2523:SORT AGAIN
Problem Description 给你N个整数,x1,x2...xn,任取两个整数组合得到|xi-xj|,(0<i,j<=N,i!=j). 现在请你计算第K大的组合数是哪个(一个组合 ...
- Django:之Sitemap站点地图、通用视图和上下文渲染器
Django中自带了sitemap框架,用来生成xml文件 Django sitemap演示: sitemap很重要,可以用来通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录. 开启si ...
- iOS9以后 GDataXMLNode修改方式
iOS9以后GDataXMLNode修改方式
- ant 配置 和测试 1
配置路径 D:\dba\change\UAT\unity\schema\test ----v0 版本 sql.xml (默认target 是versionfinal ,也就是最终版本) --ver ...
- 【匈牙利算法】 二分图模板 poj 1274
#include <iostream> #include <cstdio> #include <memory.h> using namespace std; int ...
- /var/lib/mysql/mysql.sock错误的解决办法
问题描述: 使用mysql -uroot -p登录出现找不到 /var/lib/mysql/mysql.sock或者被使用的问题. 可以用如下命令登录:mysql -p --socket=/tmp/m ...
- JDBC 事务隔离级别
JDBC 事务隔离级别 先解释一下:a:脏读取:一个事务读取了另外一个并行事务未提交的数据b:不可重复读取:一个事务再次读取之前的数据时得到的数据不一致,被另外一个事务修改c:虚读:一个事务重 ...
- Android 使用存放在存assets文件夹下的SQLite数据库
因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面.一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机 ...