在我们刷机root的时候,有时候你会发现手机出现了tee损坏,安卓手机提示tee到底什么是
怎么回事呢?以及出现tee损坏后,我们一般怎么解决修复。
![](http://www.romleyuan.com:9001/attach/photo/497be6d4def34982bcb36f05e0f84abf.jpg)
Q:Momo所指的“TEE损坏”具体指什么?是整个TEE系统完全损坏了吗?
A:Momo中的“TEE”并不是指整个TEE系统,而是指受TEE系统管理的一个硬件证书:Attesta
tion密钥。所以当Momo出现“TEE损坏”时,我们可以判断,密钥认证的过程无法完成,Atte
station Key可能损坏了。
Q:怎样的行为会导致“TEE损坏”?
A:Attestation Key被破坏即可导致“TEE损坏”。对于小米/红米的设备来说,绝大多数高
通平台设备的Attestation Key存在于persist分区,只要别随意对这个分区进行写操作就
可以避免损坏;对于大多数联发科平台的设备,Attestation Key位于RPMB分区,这个分
区比较特殊,它与其它分区有严格的隔离,正常来说只有TEE系统能访问到它,主系统访
问不到(包括Recovery),所以如果你的设备的密钥位于这个分区,就不用担心“TEE损坏
”了;还有极少数设备的密钥位于NV相关的分区。总之,不同品牌不同平台的设备密钥存
在的分区都有可能不同,不要随意动自己不熟悉的分区。
Q:如何避免“TEE损坏”?
A:1. 避免刷入“格机模块”,格机很有可能导致密钥被清除,在刷入一个Magisk模块前
要对模块严格检查。
2. 不要随意改/写/移动/删除persist分区和NV相关分区下的文件。
3. 谨慎刷入第三方ROM,有少部分第三方ROM会在刷机脚本中写一些修改persist分区
的内容,这样做的本意是对传感器的校准数据进行一些修正,但是有可能误伤密钥。
4. 刷机前后不要随意清除各个分区,在卡刷ROM的前后清除分区数据可以避免一些bug
于是有些“小白”把persist分区也格式化了...正常来说应该是格式化data和cache分区
5. 尽量不要用第三方recovery卡刷升降级系统,目前没有理论证明这样做会导致“TEE
损坏”,但是我见过一个用TWRP降级后导致“TEE损坏”的案例,个人觉得可能是第三方
Recovery的问题。
Q:什么是“TEE假死”,该如何判断它?
A:“TEE假死”是指密钥并未损坏但是由于某些原因导致密钥认证无法完成
。
原因大致可分为两种,一种是由于手机厂商的设定导致,比如欧加(OPPO 一加 真我
魅族、联想、摩托罗拉、努比亚的设备在解锁bootloader后以及部分荣耀设备在运行
国行系统时Attestation Key被屏蔽,导致密钥认证无法完成,造成密钥损坏的假象。
还有一种是由于刷机导致,比如部分联发科平台在破坏vbmeta后,或者高通平台设备
的persist分区的密钥读写权限被修改都会造成密钥被损坏的假象。
(早期的“bootloader伪装上锁”模块就是通过修改密钥的权限导致密钥被屏蔽,从
而无法有效检测bootloader锁的状态达到防止被检测的目的)
如果发现Momo检测出了“TEE损坏”,可以把系统刷回官方后看是否有恢复(有条件
的可以尝试把备份的字库数据恢复),如果还不行就回锁bootloader,要是仍然显
示“TEE损坏”,那就说明密钥是真的损坏了。
Q:“TEE损坏”该如何修复,恢复备份的密钥可以修复吗?
A:依靠个人是无法修复的,这需要在专用的安全设备下进行密钥注入才能修复
需要去高级售后或者反厂解决。即便是恢复备份的密钥也无法修复,因为密钥认
证不光是检查Attestation Key本身的状态,还检查RPMB分区内密钥哈希值是否对
应,如果TEE系统检测到了密钥被破坏,它会立即删除RPMB分区下密钥的哈希值
前面我提到了RPMB分区只有TEE系统能访问,主系统完全访问不到,所以RPMB分
区下的数据被破坏,我们是束手无策的,除非能找到BootROM的漏洞。
免责声明:1. 以上提及的“密钥”都是特指Attestation Key,不代表其它类型的密钥。
个人建议:及时备份字库数据,这样当基带/传感器校准数据/其它类型的密钥
(比如Widevine Key)受损时,可以在恢复这些数据的同时不破坏Attestation
Key,避免“TEE损坏”。如何备份字库呢,请参照这个文件
ROOT备份字库:http://www.romleyuan.com/lec/read?id=1103