18 free-software linux-kernel uefi secure-boot
我打算在未来几天购买一台新笔记本电脑,我对新的、酷炫的超极本印象深刻。作为 GNU/Linux 的长期用户,我当然会在其上安装我选择的发行版。
很有可能我必须购买一台预装了 Windows 8 的电脑;并且很有可能它会运行 UEFI 并具有“安全启动”,在该安全启动上未签名的内核将无法启动。
UEFI 可能不错,BIOS 可能需要退休。我猜毛茸茸的东西是Secure Boot。
据我所知,一些受信任的证书将嵌入到固件中,因此嵌入到内核等中。如果内核的证书可以追溯到固件中的任何一个,内核将启动,否则 UEFI 会告诉我关闭并拒绝启动。此过程将阻止未经认证的软件启动。这可能有好处,尽管我看不到它们。
我想知道开源内核如何获得这些密钥之一并且仍然是免费的。我已经阅读了 Linux 邮件列表上的一个线程,其中 Red hat 员工要求 Linus Torvalds 提取一个变更集,该变更集实现了解析 PE 二进制文件的工具并采取一组复杂的操作让内核在安全启动模式下启动(据我所知)。他们想这样做是因为微软只对 PE 二进制文件进行签名。Torvalds 先生善意地拒绝了这个变更集,指出内核已经实现了标准,而不是 PE。RedHat 正在尝试将此代码推送到内核,以便他们有一天不必分叉它。
看,这是一件复杂的事情。让我问我的问题:
这将如何影响开源和免费内核、爱好者/学术内核开发人员等。例如,这会引导吗(一个非常基本的引导扇区代码):
hang:
jmp hang
times 510-($-$$) db 0
db 0x55
db 0xAA
Run Code Online (Sandbox Code Playgroud)这个网站上的一条新闻是对这个问题的启发。一个名为Hispalinux 的西班牙 Linux 用户组已就此向欧洲委员会提交了针对 Microsoft 的投诉。
我应该担心吗?我拒绝使用专有软件或受信任的公司签名的软件。我一直这样做到现在,我想继续这样做。提前致谢。
小智 9
我刚刚通过最近购买的 Windows 8 和 UEFI 安全启动附带的笔记本电脑完成了这项工作。经过大量时间和研究,以下是我可以回答的:
普通用户会注意到 UEFI 的好处是他们在屏幕上看到的第一件事将是 Microsoft/供应商品牌的 UEFI 引导加载程序显示。没有像“按 Del 进行设置,按 F11 选择启动设备”等可怕的事情。
然后它将很好地过渡到 Microsoft 内核/引导加载程序等待屏幕。这提供了一种“提示的力量”微软主题体验。如果这是一个实际的好处,我猜是旁观者的眼睛。我非常震惊,因为我没有希望在启动时看到的正常信息。例如,如果您的供应商不使用标准密钥进入基本 UEFI/Bios 设置,那么祝您好运。
哦,是的,理论上这将阻止引导扇区病毒,或者至少让创建者创建/窃取某人的 ID 并向 Verisign 支付 99 美元(RedHat Fedora 路线。谷歌它。)
有关如何完成实际签名的一些信息,请查看:http : //al.robotfuzz.com/playing-with-uefi-secure-boot-part-2-basic-authenticode-signing-with-ms-tools /
WHO ?只有微软?
啊,还有问题。任何人都可以使用任何密钥签署代码。问题是机器只会运行由受信任的授权密钥签名的代码。密钥的公共部分在出厂时安装在系统 UEFI 核心中,用于验证使用私钥签名的 UEFI 程序(启动代码)的签名。
猜猜出厂时安装了谁的公钥?猜猜谁要求默认启用安全启动?
每个系统制造商显然都会把微软的钥匙放在那里。他们可能也把Canonical的(Ubuntu的)键,Red Hat的关键,苹果键等多个键,虽然手段破坏更多的积分,显然是有物理限制他们有多少存储。
对于像您这样的反叛计算机用户来说,解决方案是什么?
希望您的系统供应商允许您访问系统启动配置
希望他们允许您关闭安全启动。Windows 启动代码在没有安全启动的情况下仍将运行。
如果您真的很幸运,系统供应商将允许您将自己的证书颁发机构密钥放入其中,并且您可以对自己的东西进行签名。只有当您想使用安全启动时,这才是真正需要的。
我的 MSI 笔记本电脑允许我执行上述所有操作。
我希望看到一个任何人都可以免费获得 Linux 发行版并替换他们的操作系统的世界。这是我们在安全启动之前所拥有的。我们也有很多引导扇区病毒。必须在您的系统配置中禁用安全启动可能是一个足够小的障碍来验证您是否有安装操作系统的脑力,或者知道有人这样做。
无法关闭它是一件坏事,这取决于制造商。不要责怪微软,除非他们“说服”制造商阻止禁用安全启动。
此过程将阻止未经认证的软件启动。这可能有好处,尽管我看不到它们。
你有一个新的安全机制来控制什么可以和什么不能从你的硬件启动。一个安全功能。你不觉得你需要它,直到为时已晚。但我离题了。
我已经阅读了 Linux 邮件列表上的一个线程,其中 Red hat 员工要求 Linus Torvalds 提取一个变更集,该变更集实现了解析 PE 二进制文件的工具并采取一组复杂的操作让内核在安全启动模式下启动(据我所知)。
驱动程序,如您的 GPU 固件,必须根据安全启动进行签名,否则它可能是另一个 rootkit。现状是这些驱动程序以 PE 格式签名。无论如何,内核可以在没有这些的情况下启动,但硬件将无法工作。在内核中解析 PE 格式只是一个技术上更简单的选择,而不是要求每个硬件供应商为每个发行版签名他们的 blob,或者设置一个用户空间框架来执行此操作。Linus 决定不吸微软的鸡巴。这不是技术论据。
作为家庭用户,使用 UEFI 和安全启动可以获得哪些好处?
最明显的功能是 UEFI 快速启动。我有几个 Windows 8 徽标桌面,它们启动速度非常快,我经常错过弹出启动菜单。英特尔和原始设备制造商在这方面进行了相当多的工程。
如果您是那种热衷于讨厌臃肿和代码重复的 linux 用户,您可能还想在固件级别管理多重引导并完全摆脱引导加载程序。UEFI 提供了一个引导管理器,您可以使用它直接引导到内核或选择使用固件菜单引导其他操作系统。虽然它可能需要一些修补。
此外,启动时和固件菜单中的图形更漂亮。启动期间更好的安全性(Secure Boot)。其他功能(IPv4/6 网络引导、2TB+ 引导设备等)主要面向企业用户。
无论如何,正如 Linus所说,BIOS/UEFI 应该“只加载操作系统,然后离开那里”,对于快速启动的家庭用户来说,UEFI 确实如此。它当然比 BIOS 做更多的事情,但如果我们谈论的是家庭用户,他们不会关心这个。
这个签名是怎么做的?
理论上,二进制文件用私钥加密以产生签名。然后可以用公钥验证签名以证明二进制文件是由私钥的所有者签名的,然后二进制文件经过验证。在维基百科上查看更多信息。
从技术上讲,只对二进制文件的哈希进行签名,并且签名以 PE 格式和附加格式混杂在二进制文件中。
在程序上,公钥由您的 OEM 存储在您的固件中,它来自 Microsoft。你有两个选择:
谁可以获得签名/证书?是付费的吗?可以公开吗?(它应该在 Linux 的源代码中可用,不是吗?)
由于签名/证书嵌入在二进制文件中,因此所有用户都应该获得它们。任何人都可以设置自己的 CA 并为自己生成证书。但是如果你想让微软为你生成一个证书,你就必须通过威瑞信来验证你的身份。这个过程花费 99 美元。公钥在固件中。私钥在微软的保险箱里。证书位于已签名的二进制文件中。不涉及源代码。
Microsoft 是唯一提供签名的机构吗?不应该有一个独立的基金会来提供它们吗?
与管理 PKI、验证身份、与每个已知 OEM 和硬件供应商协调的过程相比,技术方面相当简单。这成本很高。多年来,微软碰巧拥有这方面的基础设施 (WHQL) 和经验。所以他们提议签署二进制文件。任何独立基金会都可以加紧提供同样的东西,但到目前为止还没有人这样做过。
从 IDF 2013 的 UEFI 会议中,我看到 Canonical 也开始将自己的密钥放在某些平板电脑固件上。因此,Canonical 可以在不通过 Microsoft 的情况下对自己的二进制文件进行签名。但他们不太可能为你签署二进制文件,因为他们不知道你是谁。
这将如何影响开源和免费内核、爱好者/学术内核开发人员等。
您的定制内核不会在安全启动下启动,因为它没有签名。不过你可以关掉它。
安全启动的信任模型锁定了内核的某些方面。就像你不能通过写入 /dev/kmem 来破坏你的内核,即使你现在是 root。您无法休眠到磁盘(在上游工作),因为无法确保在恢复时内核映像不会更改为引导套件。当您的内核崩溃时,您不能转储核心,因为 kdump (kexec) 的机制可用于引导引导套件(也在上游工作)。这些是有争议的,并没有被 Linus 接受到主线内核中,但是一些发行版(Fedora、RHEL、Ubuntu、openSUSE、SUSE)无论如何都带有自己的安全启动补丁。
个人而言,构建安全启动内核所需的模块签名需要 10 分钟,而实际编译只需要 5 分钟。如果我关闭模块签名并打开 ccache,内核构建只需要一分钟。
UEFI 是与 BIOS 完全不同的引导路径。UEFI 固件不会调用所有 BIOS 启动代码。
一个名为 Hispalinux 的西班牙 Linux 用户组已就此向欧洲委员会提交了针对 Microsoft 的投诉。
如上所述,除了微软之外,没有人加紧做公共服务。目前没有证据表明微软有意在这方面做恶,但也没有什么可以阻止微软滥用其事实上的垄断地位,进行权力之旅。因此,尽管 FSF 和 Linux 用户组可能看起来不太务实,实际上也没有坐下来建设性地解决问题,但人们很有必要向 Microsoft 施加压力并警告其后果。
我应该担心吗?我拒绝使用专有软件或受信任公司签名的软件。我一直这样做到现在,我想继续这样做。
采用安全启动的原因:
| 归档时间: |
|
| 查看次数: |
2268 次 |
| 最近记录: |