1、TrustZone简介
•
ARM
的一个硬件架构
•
同时运行一个安全
OS
及一个非安全
OS
–
两
OS
物理隔离
–
安全
OS
权限更高
–
两
OS
分时运行,可以互相通信
•
全
系统级别的安全架构
–
处理器、内存及外设均隔离
–
遵循
Global Platform
的
TEE
规范
2、TrustZone功能
•
安全存储:完整、保密
–
TEE
加密
REE
的明文数据,密文存储在
REE
的文件系统中
–
每个
文件、
TA
、芯片都有独立的密钥
•
安全加密
–
对称
、
非对称加密
–
消息摘要、
MAC
–
密钥、随机数生成
•
安全启动
–
基于
OTP
中的根密钥及固化的
Boot
来验证后级程序的完整性
•
外设安全访问
–
输入密码时,由
TEE
接管键盘、触摸屏等
3、TrustZone原理
•
设计原则:隔离
•
将单个物理核虚拟化为两个虚拟核:安全核及非安全核
•
非安全核运行
Rich OS
(
Android
、
Linux
、
QNX
等),
称为
REE
•
安全核运行
Trusted OS
(
OP-TEE
,
Trusty
,
QSEE
等),称为
TEE
•
两
个虚拟核按时间片来占用物理核,通过
Monitor Mode
(
arm-trusted-firmware
)
来
切换
,
类比于
OS
对多进程的处理
•
对
AXI
总线进行拓展,增加一个非安全位(
Non-Secure bit
)。非安全世界寻址时将
NS
位置
1
,安全世界寻址时将
NS
位置
0
。
•
如果
REE
尝试访问
TEE
的内存,则会被总线拦截,触发异常
•
TEE
与
REE
间通过
Message
机制来通信,
API
遵从
Global Platform
(
GP
)的规范
4、TEE应用-业内
•
Android
:
–
华为
Mate
安全支付:在
TEE
中验证指纹及华为账号
–
支付
宝支付:在
TEE
中验证指纹
•
车机(
NXP
提供):
–
在
TEE
中完成授权服务
–
基于
NXP i.MX
,
Rich OS
为某国产
OS
,
Trusted
为
OP-TEE
•
阿里云:
–
利用
TEE
来管理
OTA
证书
–
提供独立的
AliOS
-TEE
•
虚拟汽车
钥匙
•
无人机行业
5、案例:Android指纹登录
利用指纹代替账户密码登录:
1.
应用请求指纹验证,构造
AuthToken
2.
将
AuthToken
发送到
TEE
,激活指纹采集
3.
读取指纹,与已存储的匹配
4.
匹配成功则对其进行签名(
HMAC
),并返回到
REE
5.
Fingerprintd
发送
AuthToken
到
KeyStore
6.
Keystore
转发
AuthToken
到
Keymaster
来请求用户名密码
7.
KeyMaster
进行验签,成功则返回用户名密码完成登录