当前安卓设备使用的加密方案是基于Soc中一块可写入的rom实现,称为熔丝,其结果不可逆。

1、secureboot

secureboot是安卓设备安全保障的基础,在当下绝大部分量产的手机中,其中SOC存在一块这样的存储区域,大小约512bit,其特性为可以写入,但只能写入一次,类似与光盘,但使用电来将每个bit的保险丝熔断,称为efuse,保存的数据通常为其信任根的公钥的哈希值,作为设备软硬件校验链的起点。

2、AVB(Android Verify Boot)

是kernel起来后,开始校验,通过vbmeta结构对boot、dtbo、recovery等小镜像进行验签,保证Android镜像的安全,若镜像校验不过(损坏或被替换),机器处于开机动画阶段反复重启,有的厂商也会在界面做出客制化图片,一般和Android官方的告警类似。
总体来说AVB校验会产生四种结果,与lock的状态是强相关的,红、黄、橙、绿
红色:lock,镜像不过
黄色:秘钥没换
橙色:unlock,不验镜像
绿色:正常开机

3、dm-verity(device mapper)

在AVB基础上通过对数据进行4k分段算出hash,再对hash做hash,形成一个hash树的结构,因为校验开销大,不可能在开机阶段全部验证完成,所以是在系统起来之后用到那部分验证哪部分。主要校验vendor、system等大镜像。

4、keymaster

key管理器,在tz中负责秘钥生成、校验、管理等工作。

5、crypto

tz中的加密解密模块,部分厂商会对此部分客制化,例如隐私文件系统的加解密。

6、rpmb(replay private memory block)

ufs或emmc中划分的一块安全空间,其访问权限极高且与CPU的序列号进行绑定,主要存着厂商内置的支付类APP的公私钥和指纹模板,例如alipay、weixin key、fido等。

7、TEE(Trust execute environment)

用于隔离Android、linux系统的环境,负责安全相关,例如锁屏密码、指纹识别、移动支付、加密流媒体、秘钥管理、加解密等高安全性功能,存放运行上述功能的TA(trust application)通过共享内存的方式与Android交换数据,由中断产生或时间片控制与REE切换并共享核心资源。
目前高通平台有自研的TEE,名字叫QSEE(qcom security execution environment),现在叫QTEE(qcom trust execution environment),MTK平台使用其他软件厂商的方案早期用过豆荚,现在大部分产品使用trustonic,紫光展锐使用基于开源项目optee魔改的tos。

8、SELinux

Linux 内核中提供的强制访问控制(MAC)系统。使用安全上下文的方式控制文件和资源、程序的权限,使用不太多。