KHwang9883 / MobileModels

手机品牌型号汇总 | Mobile Models | This repository is licensed under CC BY-NC-SA 4.0
https://khwang9883.github.io/MobileModels/
Other
3.1k stars 378 forks source link

是否考虑添加各 Android 手机厂商 Bootloader 解锁后的一些信息 #93

Open longhuan1999 opened 1 year ago

longhuan1999 commented 1 year ago

比如:Bootloader 解锁后是否支持回锁、回锁后是否还会有功能缺损或风控等问题、回锁是否支持由用户设置信任根、新型手机tee在解锁和回锁后的状态

KHwang9883 commented 1 year ago

Bootloader 解锁后是否支持回锁 可以添加,但我不了解部分品牌是否支持回锁,欢迎 PR 别的我不了解,就只知道三星会熔断 KNOX

KHwang9883 commented 1 year ago

Bootloader 解锁后是否支持回锁 可以添加,但我不了解部分品牌是否支持回锁,欢迎 PR 别的我不了解,就只知道三星会熔断 KNOX

已添加,但我不确定部分品牌的情况,如有错误欢迎 PR

MlgmXyysd commented 1 year ago

个人认为

  1. 部分品牌的 TEE 即使未熔断,也并非完全可用(如三星会熔断使用 TEE Client API 与 TEE 交互的 Knox 系列功能)
  2. 部分品牌解锁后拥有永久熔断机制,但并非必定触发(如小米)
  3. 部分品牌的部分设备会在解锁后临时屏蔽 TEE,回锁后可完整恢复(如 OPPO、一加、真我、Nothing)
  4. 部分品牌虽然 TEE 未熔断,但应用并不认可(如微信 Stoer 组件要求厂商在 TEE 中添加自己的证书才能工作,但国外厂商如 Google 并未添加)
  5. 部分品牌中,仅部分设备会永久熔断,实际情况难以统计(如联想)
  6. TEE 目前来说没有什么实际作用,除了 Play Integrity 会使用该特性来验证设备是否已解锁,以及微信 Soter 组件不按照 Android 文档正确使用 Biometrics API
  7. TEE 会给应用提供一个不可伪造的解锁状态,熔断的利与弊无法定夺,单独列出容易对用户造成误导

综上,解锁后的 TEE 状态容易造成误导,且难以统计,不宜单独列出 (BTW,大部分厂商的解锁后状态已经在上述理由里列出了,如有需要自行参考)

注:

cugxuan commented 11 months ago

个人认为

  1. 部分品牌的 TEE 即使未熔断,也并非完全可用(如三星会熔断使用 TEE Client API 与 TEE 交互的 Knox 系列功能)
  2. 部分品牌解锁后拥有永久熔断机制,但并非必定触发(如小米)
  3. 部分品牌的部分设备会在解锁后临时屏蔽 TEE,回锁后可完整恢复(如 OPPO、一加、真我、Nothing)
  4. 部分品牌虽然 TEE 未熔断,但应用并不认可(如微信 Stoer 组件要求厂商在 TEE 中添加自己的证书才能工作,但国外厂商如 Google 并未添加)
  5. 部分品牌中,仅部分设备会永久熔断,实际情况难以统计(如联想)
  6. TEE 目前来说没有什么实际作用,除了 Play Integrity 会使用该特性来验证设备是否已解锁,以及微信 Soter 组件不按照 Android 文档正确使用 Biometrics API
  7. TEE 会给应用提供一个不可伪造的解锁状态,熔断的利与弊无法定夺,单独列出容易对用户造成误导

综上,解锁后的 TEE 状态容易造成误导,且难以统计,不宜单独列出 (BTW,大部分厂商的解锁后状态已经在上述理由里列出了,如有需要自行参考)

注:

  • 除上述列出厂商外,摩托罗拉在解锁后也会永久熔断、索尼部分设备在解锁后相机功能永久丢失、三星部分设备在解锁后相机功能永久丢失,其余未列出厂商均未知
  • 上述结果由单一品牌多款机型测试得出,可能会与个人单一设备测试结果有出入,仅供参考

想问一下一加的 TEE 问题有地方介绍吗,想了解一下。

PandaFiredoge commented 3 months ago

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(解锁无法使用),八达通(解锁无法新开卡/绑卡),现在还只是金融应用,再过几年极有可能就是其他应用了。

MlgmXyysd commented 3 months ago

解BL锁掉TEE至少是高通的要求;Google自己的Tensor就不掉,一加搭载天玑的设备也不掉。

高通没有要求过 TEE 熔断,都是 OEM 自己做的;Google 的高通设备(Pixel 5 及之前的设备)也不掉且不存在隐藏熔断机制;欧加系在高通平台中的底层实现有问题,在解锁后屏蔽了 TEE 调用,也并非永久熔断,而联发科平台没有同样的问题,故不会屏蔽 TEE 调用。

小米这种解BL保TEE的反而不遵守规范,因为一旦动了persist分区就有很大概率导致TEE彻底死掉,要恢复只能去售后刷工厂包了。

没有什么规范要求解锁后 TEE 熔断或者是不熔断,我之前向前员工确认过,这就是小米自己埋下的一个安全机制;熔断逻辑也不是直接因为动了 persist 分区而死掉,而是经常写入 persist 容易导致该分区损坏,之后才会触发熔断。但触发熔断的条件不止 persist 分区损坏,我曾经刷入过一些内核也触发了熔断(内核代码未触及 persist 分区);小米设备一旦触发熔断只能在公司(或工厂)内网重新进行 Provision 操作,售后或高维均无此权限,售后内更无工厂包可刷。

MlgmXyysd commented 3 months ago

微信指纹不能用是因为把指纹数据存于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 等级。