Open longhuan1999 opened 11 months ago
Bootloader 解锁后是否支持回锁
可以添加,但我不了解部分品牌是否支持回锁,欢迎 PR
别的我不了解,就只知道三星会熔断 KNOX
Bootloader 解锁后是否支持回锁
可以添加,但我不了解部分品牌是否支持回锁,欢迎 PR 别的我不了解,就只知道三星会熔断 KNOX
已添加,但我不确定部分品牌的情况,如有错误欢迎 PR
个人认为
综上,解锁后的 TEE 状态容易造成误导,且难以统计,不宜单独列出 (BTW,大部分厂商的解锁后状态已经在上述理由里列出了,如有需要自行参考)
注:
个人认为
- 部分品牌的 TEE 即使未熔断,也并非完全可用(如三星会熔断使用 TEE Client API 与 TEE 交互的 Knox 系列功能)
- 部分品牌解锁后拥有永久熔断机制,但并非必定触发(如小米)
- 部分品牌的部分设备会在解锁后临时屏蔽 TEE,回锁后可完整恢复(如 OPPO、一加、真我、Nothing)
- 部分品牌虽然 TEE 未熔断,但应用并不认可(如微信 Stoer 组件要求厂商在 TEE 中添加自己的证书才能工作,但国外厂商如 Google 并未添加)
- 部分品牌中,仅部分设备会永久熔断,实际情况难以统计(如联想)
- TEE 目前来说没有什么实际作用,除了 Play Integrity 会使用该特性来验证设备是否已解锁,以及微信 Soter 组件不按照 Android 文档正确使用 Biometrics API
- TEE 会给应用提供一个不可伪造的解锁状态,熔断的利与弊无法定夺,单独列出容易对用户造成误导
综上,解锁后的 TEE 状态容易造成误导,且难以统计,不宜单独列出 (BTW,大部分厂商的解锁后状态已经在上述理由里列出了,如有需要自行参考)
注:
- 除上述列出厂商外,摩托罗拉在解锁后也会永久熔断、索尼部分设备在解锁后相机功能永久丢失、三星部分设备在解锁后相机功能永久丢失,其余未列出厂商均未知
- 上述结果由单一品牌多款机型测试得出,可能会与个人单一设备测试结果有出入,仅供参考
想问一下一加的 TEE 问题有地方介绍吗,想了解一下。
https://community.wvbtech.com/d/3692/52
解BL锁掉TEE至少是高通的要求;Google自己的Tensor就不掉,一加搭载天玑的设备也不掉。小米这种解BL保TEE的反而不遵守规范,因为一旦动了persist分区就有很大概率导致TEE彻底死掉,要恢复只能去售后刷工厂包了。
微信指纹不能用是因为把指纹数据存于TEE本身就不遵守开发规范,国产厂商给他擦屁股,当然也有修复模块。TEE假死就已经可以判断BL锁已解,但是目前还没有应用检测到BL开锁就停止运行这么极端。其次就是影响SafetyNet,Google设备认证等级会掉L3,导致NetFlix和Disney+这些看不了高清,不过对这方面没需求的影响也不大。
https://community.wvbtech.com/d/3692/59
现在已经有应用解锁BL不能使用了,主要是海外金融软件。OCBC SG Digital(解锁无法使用),八达通(解锁无法新开卡/绑卡),现在还只是金融应用,再过几年极有可能就是其他应用了。
解BL锁掉TEE至少是高通的要求;Google自己的Tensor就不掉,一加搭载天玑的设备也不掉。
高通没有要求过 TEE 熔断,都是 OEM 自己做的;Google 的高通设备(Pixel 5 及之前的设备)也不掉且不存在隐藏熔断机制;欧加系在高通平台中的底层实现有问题,在解锁后屏蔽了 TEE 调用,也并非永久熔断,而联发科平台没有同样的问题,故不会屏蔽 TEE 调用。
小米这种解BL保TEE的反而不遵守规范,因为一旦动了persist分区就有很大概率导致TEE彻底死掉,要恢复只能去售后刷工厂包了。
没有什么规范要求解锁后 TEE 熔断或者是不熔断,我之前向前员工确认过,这就是小米自己埋下的一个安全机制;熔断逻辑也不是直接因为动了 persist 分区而死掉,而是经常写入 persist 容易导致该分区损坏,之后才会触发熔断。但触发熔断的条件不止 persist 分区损坏,我曾经刷入过一些内核也触发了熔断(内核代码未触及 persist 分区);小米设备一旦触发熔断只能在公司(或工厂)内网重新进行 Provision 操作,售后或高维均无此权限,售后内更无工厂包可刷。
微信指纹不能用是因为把指纹数据存于TEE本身就不遵守开发规范,国产厂商给他擦屁股
微信指纹不能用当然是因为张小龙不遵守开发规范,但不是厂商给他擦屁股,是微信拿这个来要挟厂商收费。
TEE假死就已经可以判断BL锁已解
这个说法是错误的,TEE 无法调用可能是被屏蔽了,可能是密钥丢失,也可能是永久熔断,或者设备压根就不支持。但无论是那一样都无法用来判断设备目前为已解锁状态,小米设备触发过熔断回锁,TEE 一样无法调用,但设备的确是未解锁。正相反,如果 TEE 可正常调用,它才会向所有应用提供一个设备已解锁的标记(参见 Attestation 相关文档),应用无需权限即可获取 BL 锁状态。由此可知解锁后 TEE 状态为无法调用其实是利大于弊的。
其次就是影响SafetyNet
首先,SafetyNet 已经废弃,应用都已被要求迁移至 Play Integrity。其次,TEE 状态并不会影响 SafetyNet 两个检查的状态,只能影响 evaluationType,TEE 正常工作时其为 HARDWARE,反之其为 BASIC,但如果 TEE 正常工作却返回了一个已解锁的状态,那么两个检查必定会失败。Play Integrity 的情况更为复杂一些,全部正常并且 TEE 工作才能获得 MEETS_STRONG_INTEGRITY 等级,反之只能获得 MEETS_DEVICE_INTEGRITY 等级。这就要求用户如果解锁了 BL 还想要通过 SafetyNet / Play Integrity 认证,就必须采取任意手段,将 TEE 置为无法调用的状态(当然如果有可用的私钥,也可以选择伪装来获取更高的认证等级)。
Play Integrity 的认证等级和 SafetyNet 类似,有关更多等级对应信息,请参阅我的 TG 频道:https://t.me/MlgmXyysd_bibilailai/1210
Google设备认证等级会掉L3
Google Widevine DRM 等级与 TEE 状态无关,我只举两个例子:一加解锁后 TEE 被屏蔽调用,但 DRM 等级仍为 L1;小米触发 TEE 熔断后 DRM 会降级 L3,但在设置内重新写回 DRM L1 Key 后,虽然 TEE 仍无法工作,但 DRM 等级为 L1。
现在已经有应用解锁BL不能使用了,主要是海外金融软件。
同上文,TEE 未熔断的情况下会向所有应用提供一个设备已解锁的标记。
OCBC SG Digital(解锁无法使用),八达通(解锁无法新开卡/绑卡),现在还只是金融应用,再过几年极有可能就是其他应用了。
OCBC SG Digital 查的是无障碍和 root,不是 BL 锁状态;Octopus 本地查询 root 和非 Play 应用,开新 NFC HCE 八达通卡时通过服务器查询 Play Integrity 状态,要求 MEETS_STRONG_INTEGRITY 等级。
比如:Bootloader 解锁后是否支持回锁、回锁后是否还会有功能缺损或风控等问题、回锁是否支持由用户设置信任根、新型手机tee在解锁和回锁后的状态