UEFI和SecureBoot的影响有多严重?


18

我计划在未来几天购买一台新笔记本电脑,而新的,超酷的超极本给我留下了深刻的印象。作为GNU / Linux的长期用户,我当然会在上面安装自己选择的发行版。

我可能必须购买一台预装Windows 8的计算机。很有可能它将运行UEFI并具有“安全启动”,非签名内核将无法启动。

UEFI可能不错,BIOS可能需要退出。我想毛茸茸的是安全启动

据我了解,一些受信任的证书将嵌入到固件中,然后嵌入到内核等中。如果可以将内核的证书追溯到任一固件的证书,则内核将启动,否则UEFI会告诉我并拒绝启动。此过程将防止启动未经认证的软件。尽管我看不到它们,但这可能会有好处。

我不知道开源内核如何获得这些密钥之一并且仍然免费。我已经阅读了Linux邮件列表上的一个线程,其中Red Hat员工要求Linus Torvalds提取一个变更集,该变更集实现了对PE二进制文件进行解析的功能,并采取了一系列复杂的操作以使内核以安全启动模式启动(据我所知) )。他们想要这样做是因为Microsoft仅签署PE二进制文件。Torvalds先生亲切地拒绝了这个变更集,他说内核已经实现了不是PE的标准。RedHat正在尝试将此代码推送到内核,这样他们就不必在一天之内分叉它。

瞧,这是一件复杂的事情。让我问我的问题:

  • 作为家庭用户,使用UEFI和安全启动可以获得什么好处?
  • 如何签署
  • 谁可以获得签名/证书?它付钱了吗?可以公开吗?(它应该在Linux的源代码中可用,不是吗?)
  • Microsoft是提供签名的唯一授权吗?不应该有一个独立的基金会来提供这些服务吗?
  • 这将如何影响开源和免费内核,爱好者/学术内核开发人员。例如,该引导(一个非常基本的引导扇区代码):

    hang:
       jmp hang
    times 510-($-$$) db 0
    db 0x55
    db 0xAA
    

新闻项目在这个网站是这个问题的inspration。西班牙的一个名为Hispalinux的 Linux用户组已就此问题向Europan Comission提出了针对Microsoft的投诉。

我应该担心吗?我拒绝使用专有软件或受信任公司签名的软件。到目前为止,我已经这样做了,我想继续这样做。提前致谢。


2
UEFI本身并没有多大问题,但安全启动可能会。
约旦

3
您始终可以在禁用安全启动的情况下进行UEFI启动...
jasonwryan

1
根据本文所述, Microsoft要求供应商防止在基于ARM的设备中禁用SecureBoot,以提供使用Windows-8兼容徽标的许可证。

1
我没看过,但是如果您无法将其刷写到主板上并且一切仍然正常(在POST-OS切换时每个设备都处于正确状态),它并没有太大帮助。然后是显卡固件,一个。硬盘固件?键盘?...但是,与澄清要求相比,这更接近讨论。(当然,至少该引用仅声称UEFI是社区的努力;不是特定的实现。)
CVn 2013年

1
查看有关UEFI和安全启动的Linux Foundation 文档
vonbrand 2013年

Answers:


9

此过程将防止启动未经认证的软件。尽管我看不到它们,但这可能会有好处。

您具有新的安全性机制来控制可以从硬件引导和不能引导的硬件。安全功能。直到为时已晚,您才觉得自己需要它。但是我离题了。

我已经阅读了Linux邮件列表上的一个线程,其中Red Hat员工要求Linus Torvalds提取一个变更集,该变更集实现了对PE二进制文件进行解析的功能,并采取了一系列复杂的操作以使内核以安全启动模式启动(据我所知) )。

驱动程序(例如您的GPU固件)必须与安全启动一起签名,否则它可能是另一个rootkit。现状是那些驱动程序以PE格式签名。无论如何,内核都可以引导,但是硬件无法正常工作。在内核中解析PE格式只是技术上较简单的选择,而不是要求每个硬件供应商为每个发行版签名其blob,或设置一个用户空间框架来执行此操作。Linus决定不吮微软的家伙。那不是技术论点。

作为家庭用户,使用UEFI和安全启动可以获得什么好处?

最明显的功能是UEFI快速启动。我已经接触了多个Windows 8徽标桌面,它们的启动速度如此之快,以至于我经常错过弹出启动菜单的机会。英特尔和OEM对此进行了很多设计。

如果您是那种讨厌膨胀代码重复的Linux用户,那么您可能还希望在固件级别管理多重引导并完全摆脱引导加载程序。UEFI提供了一个启动管理器,您可以使用它直接启动到内核或通过固件菜单选择启动其他OS。虽然可能需要修补。

另外,在启动时和固件菜单中的图形都比较好。引导过程中的安全性更高(安全引导)。其他功能(IPv4 / 6 netboot,2TB +引导设备等)主要供企业用户使用。

无论如何,正如Linus 所说,BIOS / UEFI应该“只是加载操作系统并摆脱困境”,UEFI肯定会出现在具有快速启动功能的家庭用户中。当然,它比BIOS的功能更多,但是如果我们谈论的是家庭用户,他们将不会在乎。

如何签署?

理论上,二进制文件用私钥加密以生成签名。然后可以使用公钥验证签名,以证明二进制文件已由私钥所有者签名,然后验证了二进制文件。在Wikipedia上查看更多内容

从技术上讲,仅对二进制文件的哈希值进行签名,并且签名将以PE格式和其他格式的旋转方式嵌入二进制文件中。

程序上,公钥由OEM存储在固件中,它来自Microsoft。您有两种选择:

  1. 生成自己的密钥对,并安全地管理它们,安装自己的公钥固件,并签署用自己的私钥二进制(sbsign从Ubuntu的,或pesign在Fedora),或
  2. 将您的二进制文件发送给Microsoft,让他们签名。

谁可以获得签名/证书?它付钱了吗?可以公开吗?(它应该在Linux的源代码中可用,不是吗?)

由于签名/证书嵌入在二进制文件中,因此希望所有用户都可以获取它们。任何人都可以建立自己的CA并为自己生成证书。但是,如果您希望Microsoft为您生成证书,则必须通过Verisign来验证您的身份。该过程的成本为99美元。公用密钥在固件中。私钥在Microsoft的保险箱中。证书在签名的二进制文件中。不涉及源代码。

Microsoft是提供签名的唯一授权吗?不应该有一个独立的基金会来提供这些服务吗?

与管理PKI,验证身份,与每个已知的OEM和硬件供应商进行协调的过程相比,技术方面的琐碎。这要付出高昂的代价。微软恰好具有多年的基础架构(WHQL)和经验。因此,他们提供签署二进制文件的权利。任何独立的基金会都可以加紧提供同样的东西,但是到目前为止,还没有人做到这一点。

在IDF 2013的UEFI会议上,我看到Canonical也已开始将自己的密钥用于某些平板电脑固件。因此,Canonical无需通过Microsoft即可签署自己的二进制文件。但是他们不太可能为您签名二进制文件,因为他们不知道您是谁。

这将如何影响开源和免费内核,爱好者/学术内核开发人员等。

您自定义构建的内核不会在安全启动下启动,因为它没有签名。您可以将其关闭。

安全启动的信任模型可锁定内核的某些方面。就像您即使现在是root,也无法通过写入/ dev / kmem来破坏内核。您无法休眠到磁盘(在上游工作),因为在恢复时无法确保内核映像不会更改为bootkit。当内核崩溃时,您不能转储内核,因为kdump(kexec)机制可用于引导bootkit(也在上游工作)。这些是有争议的,Linus不接受它们进入主线内核,但是无论如何,某些发行版(Fedora,RHEL,Ubuntu,openSUSE,SUSE)都附带了自己的安全启动补丁。

就个人而言,构建安全启动内核所需的模块签名花费10分钟,而实际编译仅花费5分钟。如果我关闭模块签名并打开ccache,则内核构建仅需一分钟。

UEFI是与BIOS完全不同的引导路径。UEFI固件不会调用所有BIOS引导代码。

西班牙的一个名为Hispalinux的Linux用户组已就此问题向Europan Comission投诉了Microsoft。

如上所述,除微软外,没有人加紧进行公共服务。当前没有证据表明微软打算为此做任何邪恶的事情,但是也没有任何东西可以阻止微软滥用其事实上的垄断地位并进行权力之旅。因此,尽管FSF和Linux用户组看起来似乎并不务实,也没有真正坐下来建设性地解决问题,但人们很有必要向Microsoft施加压力并警告其后果。

我应该担心吗?我拒绝使用专有软件或受信任公司签名的软件。到目前为止,我已经这样做了,我想继续这样做。

接受安全启动的原因:

  • 它消除了真正的安全攻击媒介。
  • 它是一种技术机制,可为用户提供更大的自由来控制其硬件。
  • Linux用户需要了解安全启动机制,并在Microsoft完全垄断安全启动策略之前采取积极行动。

2
感谢您提供详尽,出色的答案!非常全面。UEFI听起来很酷,尽管我既没有使用过它,也没有编写代码。

1
确实,很好的答案。仅有两件事:1)通常,您可以将自己的密钥加载到UEFI中-这样,您就可以安全地启动自己签名的所有内容;2)安全启动仅在信任UEFI的情况下才是安全的-如果使用恶意固件更新,则信任链将被破坏。这不是不可想象的
彼得

那么,GNU / Linux发行版是否使用FastBoot / QuickBoot?我不知道为什么很难做到这一点,但是我也找不到关于它的信息-但是由于您提到的这是最终用户的可见功能,所以我想它最终会被使用吗?
Hi-Angel

9

我刚刚购买了Windows 8和UEFI安全启动中最新购买的笔记本电脑。经过大量的时间和研究,我可以回答以下问题:

  • 听起来您不适合“家庭用户”类别。

普通用户会注意到UEFI的好处是,他们在屏幕上看到的第一件事就是Microsoft / Vendor品牌的UEFI引导加载程序显示。这些可怕的事情都没有,例如“按Del键进行安装,按F11键选择启动设备”等。

然后它将很好地过渡到Microsoft内核/引导加载程序等待屏幕。这代表了“提示”微软主题体验的“力量”。我猜这是情人眼中的实际好处。我很遗憾,我没有我期望在启动时看到的正常信息。例如,如果您的供应商不使用标准密钥来输入基本的UEFI / Bios设置,则祝您好运。

哦,是的,理论是,这将阻止引导区病毒,或者至少使创建者创建/窃取某人的ID并向Verisign支付99美元(RedHat Fedora途径。

啊,还有摩擦。任何人都可以使用任何密钥签名代码。问题是计算机将仅运行由受信任的授权机构密钥签名的代码。密钥的公共半部分已安装在工厂的系统UEFI核心中,用于验证使用私有密钥签名的UEFI程序(引导代码)的签名。

猜猜谁的公钥在工厂安装?猜猜谁要求默认情况下启用安全启动?

每个系统制造商显然都会把Microsoft的钥匙放在那里。他们还可以输入 Canonical的(Ubuntu)密钥,Red Hat的密钥,Apple的密钥等。尽管更多的密钥意味着更多的破坏点,并且显然可以存储多少物理限制。

对于像您这样的叛逆计算机用户,解决方案是什么?

  • 希望您的系统供应商允许您访问系统引导配置

  • 希望他们允许您关闭安全启动。Windows启动代码仍将在没有安全启动的情况下运行。

  • 如果您真的很幸运,系统供应商将允许您放入自己的证书颁发机构密钥,并且您可以签名自己的东西。仅当您想使用安全启动时才真正需要此功能。

我的MSI笔记本电脑允许我执行上述所有操作。

我希望看到一个世界,每个人都可以免费获得Linux Distro副本并替换其操作系统。这就是我们在安全启动之前所拥有的。我们也有很多启动扇区病毒。必须在系统配置中禁用安全启动,这可能是一个很小的障碍,足以验证您是否具备安装操作系统的才智,或者知道这样做的人。

没有能力将其关闭是一件坏事,这取决于制造商。不要责怪微软,除非他们“说服”该制造商防止禁用安全启动。


欢迎光临,谢谢!答案很酷,但是我想再等一会再接受,因为我想看看其他人的想法。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.