1.TEE
1.1介绍
TEE:trusted execution environment
1.2REE介绍(Rich execution Environment)
所有移动设备都支持REE,运行通用OS:android,ios,linux
1.3虚拟化技术实现的隔离
多个OS执行在虚拟的处理器上;基于软件的隔离,缺乏硬件安全性;hypervisor可以访问所有OS的数据,进而可以访问所有App的数据
1.4TEE(trusted execution environment)
特性:
1.受硬件保护机制:TEE隔离于REE,只通过特定的入口于TEE通信,并不规定某一种硬件实现方法
2.高性能:TEE运行时使用CPU的全部性能
3.快速通信机制:TEE可以访问REE的内存,REE无法访问受硬件保护的TEE内存
4.TEE中可以同时运行多个Trusted applicaiton(TA)
TEE软件架构
TEE internal APIs
TEE Internal Core API:向上提供TrustedOS的功能、与CA通信、TA与TA通信、安全存储、密码学功能、时间
其他APIs:构建于Internal Core API之上,共享错误处理和API定义规则
私有APIs:GP未定义,无法通用,允许产品的特定差异化
启动流程:
GP标准:启动流程只在系统启动时执行一次,要求启动流程至少建立一个信任根(RoT),需要一些机制和方法去实现
一般情况下启动基于ROM代码:允许其他实现、依次验证加载的代码
一般情况下TEE首先启动:阻止REE接口生效
系统可以实现一个启动时的TEE(完全TEE的子集)
Trusted OS首先启动,再启动REE
1.5 TEE实现:ARM TrustZone
ARM Cortex-A系列处理器及Cortex-M微处理器
创建了一个隔离的Secure World
REE与TEE通过SMC实现切换
6.开源实现
除了各家私有实现外,ARM也有不少开源项目,知名度较高的有:
Arm Trusted Firmware
基于ARMv8-A应用处理器,ARM官方提供了一个开源参考实现BL31。
https://github.com/ARM-software/arm-trusted-firmware
Openvirtualization
带有一些商业属性的开源项目,部分TEE实现只有商业版支持
http://www.openvirtualization.org/
Op-Tee
Linaro 推出的开源TEE
https://github.com/OP-TEE
2 MesaTEE Design And Roadmap
memory safe(Mesa) trusted execution environment,支持内存安全语言Rust,继承了Intel SGX和ARM TrustZone等tee的设计理念:isolation and attestable integrity protection.
the full MesaTEE stack:
2.1 function-as-a-service model
2.2 hybrid memory safety:混合内存安全
内存安全的语言重写所有东西,Rust和Go。
操作系统核心实用程序,安全通信库(如TLS库),身份验证接口等顶级关键系统组件被rust-and-go重写,未改写/验证的组件在沙盒容器中被隔离,总体原则如下:
1.不安全的组件不能污染安全的组件,特别是对公共api和数据结构
2.不安全组件尽可能小,并与安全组件分离
3.不安全组件应在部署期间明确标记并准备升级
2.3 API接口
1.Mesa TEE支持了各种TEE平台,包括intel SGX,AMD SEV,ARM TrustZone。为了统一平台上的这些功能,开发了一组TEE low-level libraries,这些库的核心是标准库(STD),它独立于特定的TEE平台。
2.abstraction layer
提供trusted/untrusted APIs,
3.TEE foundation layer
wasm/mesaPy/
2.4 powerful和open service ecosystem
2.5 可信安全通信通道
2.6 配置的安全等级
1.unprotected
3. mesaTEE case studies
3.1 blockchain app
基于区块链的隐私保护计算
性能极佳的可信任的共识
公有云上敏感数据的计算
安全多方计算
安全密钥库和HSM:MesaTEE密钥库可以保护这些密钥和机密,类似于硬件安全模块(HSMs)