wuxianlin 25-11-08 07:46
微博认证:数码博主

关于高通平台的Android机解锁BootLoader后“TEE(Trusted Execution Environment)损坏”问题。

实际上,TEE并没有损坏,而是高通平台在TEE存储/加解密出厂预置的keystore attestation key(大家广泛知道的keybox.xml)的默认实现,关联了设备的AVB(Android Verified Boot)状态,导致解锁后attestation key无法使用。mtk平台的默认实现就没有这个问题。据我观察,高通平台有pixel、小米修改了默认实现,解决了这个问题。

也就是说,高通平台unlock bootloader,如果OEM厂商没有修改默认实现,attestation key就会不可用,三方应用调用keystore attestation API失败,三方应用就以为是TEE损坏。
有大量应用在调用此功能,如12306的部分功能,用于向服务端证明设备的安全性,不成功会影响对应功能,参考
http://t.cn/A6ekpRPR

好消息是,大约从出厂Android 13开始,CTS要求设备支持RKP(Remote Key Provisioning),借助此方案,解锁bootloader的高通设备也能获取到Google远程下发的attestation证书,仓库http://t.cn/AXAssqD7

真欧加设备的获取条件:
外销机:给com.android.rkpdapp科学上网。
内销机:开发者选项打开【禁止权限监控】(理解为关闭ColorOS系统优化,类比关闭MIUI优化开关,使用完毕可以关闭,避免影响其他功能),打开gms,给com.android.rkpdapp科学上网。

root的内销机的额外方法:通过magisk/xposed模块,至少在com.android.rkpdapp作用域,去除cn.google.services feature,打开gms,给com.android.rkpdapp科学上网,如果不想科学上网,也可以利用magisk的resetprop,修改remote_provisioning.hostname属性为中国大陆可以访问的反向代理服务器域名,如remoteprovisioning.grapheneos.org

测试方法:
按照上述步骤操作后,下载、安装、打开key attestation:
http://t.cn/AXAssqD7
右上角三个点,尝试切换【使用安全模块】、【认证设备型号】开关,观察界面显示,新机应该能看到TEE和strongbox两个环境的attestation证书。附图是我的一台realme的机器的测试结果。
大家试试,如果没成功可以确认机器的出厂Android版本、gms开关、开发者选项开关或者cn.google.services feature的去除情况、科学上网或者成功修改remote_provisioning.hostname,root后可以抓包com.android.rkpdapp观察是否有联网获取 以及服务端是否有返回报错,没root可以打log搜索Rkpd相关日志。

温馨提示:大家不要折腾persist分区,容易损坏加密的key,不要折腾执行/vendor/bin/KmInstallKeybox写入泄露的keybox,不同平台实现可能存在差异,一方面keybox被吊销后又会用不了,另一方面可能影响lock状态的attestation key,得不偿失。

更新:我帮大家试了一下执行kminstallkeybox的效果,建议不要轻易尝试:http://t.cn/AX2HV6Zq

发布于 广东