注:本文不涉及专业技术细节,放心食用
Why
-
普通操作系统的安全问题:
- 功能复杂,代码庞大,漏洞高发.
- 运行着大量的恶意代码,存在大量攻击技术.
- 管理员权限可以访问APP的所有数据.
- 没有隔离的能力,无法安全的存储密钥.
How
- 能不能在设备上同时运行另一个安全的操作系统,
专门用来存储密钥,运行安全相关敏感代码,
并且常规操作系统不能随意访问它.
What
Trusty
Trusty是一种安全的操作系统(免费开源),
可为Android提供可信执行环境 (TEE).Trusty与Android在同一CPU上并行运行,
但Trusty通过硬件和软件与系统的其余组件隔离.Trusty可以访问CPU和内存的全部功能,但完全隔离.
隔离可以保护Trusty免受用户安装的恶意APP,
以及可能在Android中发现的潜在漏洞的侵害.在具有TEE实现的设备上,主处理器通常称为“不可信”处理器.
这意味着它无法访问制造商用于存储机密数据的特定RAM/硬件寄存器/一次写入Fuse区域.
在主处理器上运行的软件,会将所有需要使用机密数据的操作,委派给TEE处理器.应用场景:
移动支付、安全银行、多重身份验证、设备重置保护、抗重放攻击的持久存储、
安全 PIN 和指纹处理,甚至还能用于恶意软件检测。
TrustZone技术横向对比
TPM
TPM用于静态完整性度量, 无法确保运行态的安全.
TrustZone/SGX除了提供程序加载时的完整性验证外,
还保证程序运行时安全,缓解针对程序运行时的攻击.SGX
TrustZone中, 通过CPU将系统划分为两个隔离环境, 两者之间通过SMC指令通信,
一旦Secure world中存在恶意程序, 那么将危害整个系统的安全.
而SGX中, 一个CPU可以运行多个安全enclaves, 并发执行, 即使某个enclave中存在恶意程序,
它也不能访问和危害其他enclave的被保护内容.
总结
TEE是一个标准/概念,一个可信的执行环境(Trusted execution environment).
Trusty是一个实现了TEE标准的操作系统.
REE是相对TEE来说的,Andorid系统属于REE,属于不可信的执行环境.
TrustZone是ARM处理器的一个特性或者说功能,
为TEE/TrustyOS的实现提供了硬件基础.鸿蒙微内核也是一个TEE的实现.
比较新的手机类似解锁之类安全功能,
通常都使用了TrustZone特性来实现保障安全性.
参考
https://source.android.google.cn/security/trusty/?hl=zh-cn
http://www.jos.org.cn/html/2018/9/5594.htm#outline_anchor_52
https://zhuanlan.zhihu.com/p/53677903