Trusty TEE参考信息

Trusty是一套软件组件集合, 它支持实现移动设备上的可信任执行环境(TEE).Trusty包含有:

♣ 基于处理器架构的操作系统(Trusty OS).

♣ 基于TEE实现的驱动, 该驱动方便android kernel(linux)来同运行在该系统上的应用进行通讯.

♣ 基于软件的库组合, 它将提供给android系统软件通过kernel驱动同该系统上的应用进行通讯.

注意: Trusty/Trusty API会由管理者进行修改.

Trusty API的相关信息, 请参考API Reference

[Tips: trusty是android推荐的TEE实现方案.]

任何TEE系统(不仅限于Trusty)都能用于TEE环境的实现.

TEE环境的处理器通常是一个系统中单独分离的微处理器, 或者是主处理器的虚拟实例.

TEE处理器同系统中的其他部分隔离开来, 并且通过硬件的支持来实现对内存和I/O接口的保护.

TEE处理在现在的移动设备中非常重要, 设备上的主处理器被认为是"不可信任的", 并且被限制对 某些RAM的指定空间, 硬件寄存器 和 用以存储设备提供商保存在保险区间的加密数据(例如设备相关的密钥对) 进行访问.

主处理器上的软件在需要使用加密数据时, 均会通过TEE处理器代理完成.

android系统中, 对于该实现的最广泛的例子就是为保护内容的DRM framework提供服务.

TEE上的软件可以访问设备相关的密钥, 并使用该密钥进行保护内容的解码. 主处理器仅仅能够看到加密的内容, 这将对基于软件的攻击起到高级别的保护.

基于TEE的使用案例还有其他例子.

移动支付, 安全银行. 全局磁盘加密. 多步验证. 设备重置保护. 重播保护的存储. 无线显示("cast")受保护的内容. 安全密码和指纹验证过程都需要使用TEE. 同时它还可以进行间谍软件侦测.

[Tips: 一般来讲, 所有和密码/验证/敏感数据相关的操作, 都应该交由secure world进行处理.]

Trusty提供API来支持两种类型应用的开发:

♣ 运行在TEE处理器上的可信任应用/服务.

♣ 使用TEE处理器上提供服务的 正常/不可信的应用, 它将运行在主处理器上.

主处理器上软件可以使用Trusty API来同可信任应用进行通讯, 它们可以传递任意定义的消息.

该机制类似于基于IP的网络服务. 应用可以自己定义消息数据的格式/语意, 它可以是应用级别的协议.

底层的Trusty基本通讯功能将保证消息的可信任传输(以主处理器的驱动方式进行), 并且通讯是完全异步的.

可信任应用是以独立进程的方式在Trusty OS kernel上运行的. TEE处理器也会提供MMU功能, 这可以保证每个进程均运行在它自己的虚拟地址空间上.

TEE OS kernel将基于安全计时器对全部进程按照优先级顺序进行循环运行. 在当前Trusty实现中, 所有进程共享相同的优先级.

[Tips: 由于进程优先级相同, 所以运行在TEE中的进程必须仔细考虑处理时间/锁死等情况, 并尽量简化操作.]

Language and threading support

基于Trusty的应用可以用C/C++语言开发(C++支持有限), 并且可以访问一个较小的C库. 当前系统的main()函数并不接受参数. 系统调用过程由C库中的汇编代码实现, 所以可以通过名称来进行系统调用.

所有Trusty应用都是单线程的, Trusty用户空间不支持多线程功能.

Application structure

Trusty应用在载入时初始化单次, 并一直保留在系统中, 直到TEE处理器被重置. Trusty不支持动态的加载/卸载应用.

Trusted应用被编写以事件驱动的服务器形式, 它等待其他应用或者从主处理器上的其他应停用发送过来的请求命令. 同时它也可以作为其他可信任应用服务的客户端.

驱动事件的类型由API部分来描述, 并且有Trusty kernel来发送给对应的应用.

[Tips: TEE image将有bootloader在启动时一次初始化并运行. 这可以保证在image有效的情况下, TEE本身是安全的.]

Third-party Trusty applications

在当前情况下, 所有Trusty的应用均由设备提供商单独进行开发, 并将其和Trusty kernel镜像整合在一起. 该镜像将被签名, 并且由bootloader在启动过程中进行验证.

第三方的应用开发目前并不支持.

即使在Trusty系统允许新的开发者进行应用开发时, 开发者也必须非常注意安全问题, 并需要较多的开发经验.

每个新的应用将增加系统的可信任计算基础(TCB). 可信任应用可以访问设备的机密数据, 并且能够对其进行计算和数据传递操作.

当然基于TEE的应用开发可以带来广泛的机遇和改变, 由于TEE的定义限制, 这些应用在经过严格的攻击测试前是不能进行分发的. 通常情况下这类应用的运行应该由用户完全信任的数据证书来保证.

Downloading and building Trusty

可以在以下地址访问Android开源项目(AOSP)的Trusty实现:

https://android-review.googlesource.com/#/admin/projects/?filter=trusty

AOSP上的Trusty kernel 分支地址:

https://android.googlesource.com/kernel/common/+/android-trusty-3.10

https://android.googlesource.com/kernel/common/+/android-trusty-3.18

在已存在的android编译环境中使用以下方式编译Trusty:

$ repo init -u https://android.googlesource.com/trusty/manifest

$ repo sync

$ make -j24 generic-arm64

可以用过选择不同的编译目标来进行以上的编译:

device/*/*/project/*

其他TEE介绍

高通的可信执行环境---QSEE

Google的TEEOS----Trusty

关于open tee有如下几点事实

linaro公司及其op-tee介绍

TI公司M-Shield™移动安全技术

AMD芯片架构中TEE实现技术之PSP初探

Intel芯片架构中TEE的实现技术之SGX初探

MIPS架构上虚拟化TEE实现介绍

浅谈三星KNOX安全解决方案

比如openTEE实现中:

OpenTee协助设备提供商在arm系列CPU上实现完整的TEE-OS环境支持. 上图的绿色线框部分由OpenTee实现. 设备提供商基于tee_client/tee_os进行TEE相关应用的开发.

基于tee的android secure video path参考:

完成基于硬件的secure video path需要以下模块的共同支持:

♣ 按照android drm plugin标准实现对应的plugin模型(playready/widevine)-android side.

♣ 实现安全的TEE环境支持.

♣ video process unit可以支持clear/secure video decode/display. 基于android omx plugin标准实现(5.0/6.0?).

♣ 基于硬件的证书处理机制(某些运营商的证书会随设备出厂预装).

♣ HDCP支持.

原文发布于微信公众号 - 安智客(china_safer)

原文发表时间:2018-02-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安智客

图解手机盾的安全设计(二)

昨天的文章里,我们聊了手机盾的相关方、手机盾的安全架构以及其生命周期。相对的,我们也必须了解服务方生命周期管理! 手机盾服务的完整生命周期包括:服务申请、服务应...

2368
来自专栏编程软文

程序员常用软件,你用了哪些

2915
来自专栏musazhang的专栏

【 腾讯云的1001种玩法 】腾讯云数据库优化最佳实战:以 TXSQL 为例

TXSQL-Tencent MySQL 自从2016年5月份正式立项,在近一年的时间里对 MySQL 的读写性能、强同步、大并发量访问和稳定性等方面做了大量工作...

6453
来自专栏FreeBuf

趋势OfficeScan系列产品漏洞分析

作者 Shadowkeeper OfficeScan是趋势科技开发的一套专为网路环境的桌上型电脑和行动用户端所提供的即时、全面的防毒解决方案。安全公司Silen...

2588
来自专栏北京马哥教育

一种经典的网游服务器架构

? 这个图是一个区的架构图,所有区的架构是一样的。上面虚线框的ServerGroup和旁边方框内的架构一样。图上的所有x N的服务器,都是多台一起的。红线,绿...

3344
来自专栏申龙斌的程序人生

用程序生成群头像全家福,增强社群的归属感

现在微信群越来越多了,群主为了增进群成员的归属感和互动也是想尽了办法。我参加IP潜能营有3周了,期间发现了Jesse1981的一篇文章,她用了多种程序和工具生成...

38910
来自专栏大数据文摘

Google Spanner原理:地球上最大的单一数据库

8278
来自专栏安恒信息

维基解密最新文件——“小飞象”使物理入侵瞒天过海

“小飞象”项目机密文件 今天,维基解密发布了美国中央情报局(CIA)的小飞象(Dumbo)项目文件。Dumbo可以暂停摄像头正在使用的进程,并且可以破坏相关任何...

3004
来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(十六)--- Pomelo介绍&入门

前言&介绍 Pomelo:一个快速、可扩展、Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最...

4.2K8
来自专栏琯琯博客

awesome-linux-software-cn

Awesome-Linux-Software 是由 LewisVo 发起并维护的 Linux 软件资源列表。该列表收集了许多在 Linux 平台下非常棒的软件、...

1.3K14

扫码关注云+社区

领取腾讯云代金券