在 以前的文章 我记得微软要求 TPM 版本 2 模块能够使用 Windows 11 的先例。我指的是预装 Windows 8 的计算机使用 UEFI 而不是 BIOS 作为引导加载程序的要求,以及安全引导模块已预先安装。 现在我要谈谈,在我看来,Linux 处理问题的错误方式。
Linux 和安全启动
安全启动要求启动的每个程序都有一个签名,以保证其存储在主板非易失性存储器数据库中的真实性。 有两种方法可以出现在该数据库中。 是厂商自带的还是微软自带的。
一些 Linux 发行版与 Microsoft 达成的解决方案 这家公司接受了二进制签名,负责启动每个发行版的引导加载程序. 这些二进制文件已提供给社区。
后来,Linux 基金会将推出一个可供所有发行版采用的通用解决方案。
为了寻找更好的解决方案,红帽开发人员向 Linus Torvalds 提出以下建议:
嗨,莱纳斯,
你能包括这个补丁集吗?
提供一种功能,通过该功能可以将密钥动态添加到以安全引导模式运行的内核中。 为了允许在这种情况下加载密钥,我们要求新密钥由我们已经拥有(和信任)的密钥签名,其中我们“已经拥有”的密钥可以包括嵌入内核中的那些UEFI 数据库和加密硬件的数据库。
现在“keyctl add”已经可以处理像这样签名的 X.509 证书,但微软的签名服务只会对可执行的 EFI PE 二进制文件进行签名。
我们可以要求用户重新启动进入 BIOS,添加密钥,然后切换回来,但在某些情况下,我们希望能够在内核运行时执行此操作。
我们想出的解决方法是将包含密钥的 X.509 证书嵌入到 EFI PE 二进制文件中名为“.keylist”的部分中,然后获取 Microsoft 签名的二进制文件
莱纳斯词
Linus 的回应(让我们记住,在他的精神撤退之前重新考虑他与他人的关系的态度)如下:
注意:以下文字包含脏话
伙计们,这不是吸公鸡比赛。
如果您想使用 PE 二进制文件,请继续。 如果红帽想要加深与微软的关系,那是*你的*问题。 这与我维护的内核无关. 您可以轻松拥有一个签名引擎来解析 PE 二进制文件、验证签名并使用您自己的密钥对生成的密钥进行签名。 看在上帝的份上,代码已经写好了,就在那个该死的包含请求中。
我为什么要在乎? 为什么内核要关心一些愚蠢的“我们只签署 PE 二进制文件”? 我们支持 X.509,这是签名标准。
这可以在用户级别完成。 没有理由在内核中这样做。
莱纳斯
我的观点是,Linus 有一次是正确的。 实际上 微软不应该勒索 Linux 基金会和发行版。 确实,用户可能已经丢失。 但是,后来证明,Windows 8 失败了,XP 继续统治了更长时间。
现实是,当微软面临一场战斗时,它被迫遵守标准. 这发生在她使用 SIlverlight 失败并被迫采用 HTML 5 Web 标准时,发生在她不得不放弃 Web 渲染引擎开发并将 Edge 建立在 Chromium 上时。
我们也不应该忘记,为了吸引程序员,它必须包括在 Windows 上运行 Linux 的能力。
Linux 发行版比以往任何时候都处于更好的位置,可以为用户提供继续使用功能完美的硬件的替代方案。
确切地说,GNU/Linux 世界中的任何人都不应该去微软或任何公司,我们必须成为计算自由的抵抗者和倡导者,我们已经受够了手机的监狱,所以现在我们不得不接受要求只让一家公司受益。
据我所知,微软的决定甚至从来没有让它自己的生态系统受益,这只是一个营销问题,相信如果你不能运行 tpm 2,你会改变计算机只是为了能够运行 w 11,如果有的话微软最大的是自我,未来是linux而不是windows,对我来说,微软的决定是最好的让用户更接近linux
我喜欢 Linux,但缺乏安全启动支持迫使我只有 Ubuntu 想要更多的架构,太糟糕了,因为想要跟上当前他们正在失去的用户