手机解锁 bootloader 后,还限制了 lk 或 uefi 的签名吗?

2020-12-21 23:08:14 +08:00
 systemcall

现在的手机大部分都有安全启动,启动的时候会检测各级 bootloader 以及内核的签名
但是,Google 自己的手机以及别的一些手机,还是可以解锁 bootloader 的,这样的话就可以启动别的系统,内核被修改过也可以启动
想知道这里所说的“解锁”,是只是不再限制 lk 或 uefi 要加载的 Android OS 的签名,还是说完全放开 lk 或 uefi,还是说 CPU 的 efuse 也得到了修改,不再验证 Secure Boot?

9021 次点击
所在节点    Android
7 条回复
cmostuor
2020-12-21 23:19:48 +08:00
解锁 bootloader 以前是指可以自由读写分区 现在不知道还是不是这样 你说的 Android OS 的签名 是不是指 验证启动( Verified Boot )???
szlytlyt
2020-12-22 00:18:17 +08:00
vk42
2020-12-22 01:46:19 +08:00
解锁 bootloader 就等同于禁用 secure boot 了啊,不然不能启动第三方 boot 还有啥意义……
至于 efuse 不是所有厂商都用,我知道的就三星自家的 Knox 用的,Pixel 可以再 lock 恢复原样的
systemcall
2020-12-22 10:03:19 +08:00
@vk42 lk 或 uefi 到底解锁了吗?
看了一些文章,感觉只是不再验证将要启动的内核。但是更改分区甚至是 multi-boot 在部分设备上依然可行
如果是彻底禁用了 secure boot,那么设备的 lk 或 uefi 是否就有修改的可能?
如果只是可以加载修改过的内核,还有方法启动别的系统吗?不太清楚 ARM 架构,X86 那边如果是在实模式的话,可以跑 grub4dos 来载入别的系统,而且 secure boot 的资料感觉更多
12101111
2020-12-22 10:51:07 +08:00
lk 和 UEFI 没有解锁的, 只有极少数密钥 /代码泄漏或者有安全漏洞的设备可以解锁 uefi 的限制(比如 Lumia 950), 否则依旧只能引导 Linux 内核.

https://worthdoingbadly.com/qcomxbl/
vk42
2020-12-22 11:11:39 +08:00
@systemcall secure boot 是一整个链路,任何一环都要做验证,如果 unlock 了等于 lk 那边就直接撂挑子不管了,给啥加载啥不会去验证,所以理论上你只要能提供一个加载地址和原系统一致的可执行代码段,也是能跑的
lk 自己的话 ARM 上一般是跑在 TE 里面的,商业产品一般你是拿不到代码的,除非你拿开发板玩
RLib
2020-12-25 16:52:45 +08:00
@systemcall
对的, bootloader 解锁只是不再验证或者允许加载验证失败的 boot 镜像(取决于系统版本, 如果 boot 分区没有正确的 vbmeta 结构, 解锁了 bl 也可能拒绝加载), 后续其它分区的 dm-verity 验证依然进行的.
至于改写 bl, 理论上不行(安卓手机), 解锁是在 bl 里做的, 无法干预加载 bl 的上一环节, 另外实际上像华为机型, 解锁后关键分区依然是锁定的, 只能刷用户分区

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX