Android Trustzone 笔记

Trustzone 是基于Arm平台的一种硬件隔离机制,集成在Arm Cortex-A 系列的处理器上,Cortex-M23 和 Cortex-M33 的系统也进行了集成支持。
Arm Trustzone 创建了一个隔离的区域,用于保护包括授权、支付等高价值的代码和数据,经常用于实现可信执行环境(TEE)。
Trustzone 工作在硬件层,它将系统分为Normal OS 和Secure OS 两个部分,在SecureOS中提供可信环境。如下图所示。
Trustzone 体系结构
从官方网站上看,Trustzone的支持可以通过不同的硬件方式。
实际上一种简单的方式是:分时复用处理器,分别运行Normal OS内核和Secure OS内核。
为了安全,Secure OS 内核设计的较小,降低被攻击的概率。
还有一种做法是通过总线,设计专门的硬件线路,将Secure OS隔离起来执行,IPhone 手机上采取了这种做法。
Trustzone处于普通OS层之下。
Arm V8处理器有4个运行级别:EL0-EL3。其中EL0处于应用层,权限最低。
EL3标志位将运行环境分割成两个部分,可以切换Normal OS(也被称为Rich OS)和Secure OS。
在切换Rich和Trust时,通过SMC指令触发硬件异常。
切换时,由运行在EL3中的Secure Monitor(最高权限)保存Rich OS端的上下文(缓存),然后将缓存的Secure OS切换到执行环境。
整个过程类似于线程之间的切换。
开源Secure Monitor:https://github.com/OP-TEE
Linaro: https://www.linaro.org/latest/downloads/
Developer Arm: https://developer.arm.com/open-source
芯片文档: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.prd29-genc-009492c/index.html


对移动端安全来讲,有两块非常重要的部分。一是GSM手机上的IMEI码,这是手机联网时使用的唯一码。
另外一个是用于绑定SIM卡和运营商的SIMLock协议。
虽然这两个组件都提供安全性控制,但都可以通过很简单的方式bypass。