为什么在Ubuntu 16.04的初始安装中,我被要求创建一个密码来禁用安全启动?

在安装Ubuntu 16.04时,我勾选了"安装第三方软件",在它下面,我被提示要勾选另一个选项,允许操作系统包自动禁用安全启动,前提是创建一个密码,这个密码将以某种方式使整个过程发生。
继续安装后,我没有收到任何指示表示安全启动已被禁用,也没有提示输入我创建的密码。
成功安装操作系统后,我重新启动计算机并查看了BIOS。在BIOS中,“安全启动”仍然启用。然而,在Ubuntu中,我可以无缝播放MP3和Flash文件,这说明第三方软件的安装成功。
目前为止,我还没有遇到任何问题(除了界面有时有些棘手和错误),但我想知道我通过创建那个密码到底实现了什么。
我创建的密码去哪了?我需要记住它吗?它不同于我的登录/超级用户密码。

Ubuntu是否永久修改了我的BIOS以便为自己创建一个例外?如果是这样,我如何查看这些更改并可能撤消它们?密码是用在哪里的?

为什么Ubuntu需要禁用/绕过安全启动来安装ubuntu-restricted-extras软件包?我的安装还好吗?我会遇到未来的问题吗?我应该尝试重新安装并手动禁用安全启动,以免首次收到该提示吗?

附加信息: 我正在运行UEFI系统,并且在Windows 10旁边双启动Ubuntu 16.04。

另一个用户在这里提出了类似问题。与该用户不同的是,我没有收到关于“以不安全模式启动”的警告,但我也想知道Ubuntu是否为自己创建了一个例外,并且如何管理这样的例外。与我不同的是,该用户没有提到任何关于创建密码的事情。

I managed to replicate the dialogue box. Here it is.

Here's some additional information.


1Ubuntu 16.04对Secure Boot处理进行了一些更改,我还没有完全探索自己;然而,我所知道的一部分内容在我的回答中有说明。我很有兴趣看到您运行命令 hexdump /sys/firmware/efi/efivars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c 后的输出。第一行的最后一个数字(0或1)表示您的Secure Boot状态(非活动或活动)。 - Rod Smith
10000000 0006 0000 0001 看起来它肯定是激活的。请注意,我已经多次禁用和重新启用它,以查看是否会发生任何事情,但没有发生任何事情。 再次强调,目前一切都运行正常,我唯一担心的是将来可能出现问题。阅读了一些文档后,似乎临时密码是作为安全引导的替代品,而不是Ubuntu直接支持该功能。考虑到我再也没有被要求输入密码,我最好的猜测是该功能不完整/有错误。 - Cosmo
1提醒一下,关于临时密码是否作为安全引导的替代物,我可能是错的。这只是我在没有额外信息的情况下所能理解的,而我找不到相关信息。你认为呢? - Cosmo
1我恐怕对这个问题没有进一步的想法。我需要花些时间和精力调查最近的变化。 - Rod Smith
1安全启动需要密码,它不能留空,并且需要某种形式的身份验证。这就是为什么网络管理员会在管理员账户上不设置密码来保护计算机系统,因为没有密码就无法远程登录。 - Delorean
1@Dorian,你能详细说明你想要表达的内容吗?如上所述,自从安装了Ubuntu以来,我从未被要求输入在安装过程中创建的密码,并且我一直启用了安全启动。此外,所有第三方驱动程序都正常工作。在什么情况下我会被要求输入安全启动密码? - Cosmo
1@Cosmo开始写了一条评论,内容相当长,所以我把它作为我的回答。 - Delorean
1个回答

UEFI安全启动通过在引导文件中使用CA密钥和签名的组合来保护您的引导加载程序免受篡改。例如,微软已经为其签名的引导加载程序提供了UEFI固件中已经存在的CA密钥。
这只保护了加载程序的早期核心部分,而不包括之后的任何内容。例如,initrd(initramfs)没有受到保护,或者之后的任何内容(GRUB、内核、模块、驱动程序、用户空间中的任何内容等)。
您安装的第三方软件可能已经包含了引导加载程序所需的某些低级PCI或RAID代码,这就是为什么您需要创建一个密码,该密码将在UEFI固件空间中创建一个密钥。在修改后,如果系统在启动时注意到有什么不同,BIOS将停在POST并要求输入与安装过程中输入的相同密码,以证明您是安装该软件的人。这种方法确保了只有亲自坐在计算机前的用户才能输入此密码进行确认,因为在BIOS POST时间无法加载任何软件来伪造这一点。
对于大多数用户系统来说,安全启动对您的保护作用很小。它不能防止病毒或恶意软件的入侵,也不能阻止这些软件的安装。它只是防止低级别引导加载程序的篡改,而这通常已经被基本的杀毒软件或操作系统安全机制所防范。据我个人观点和大部分文档所述,可以安全地禁用安全启动功能。

这听起来可能是我正在寻找的答案!所以尽管创建了密码,除非我对BIOS进行修改,否则可能永远不会被要求输入密码? - Cosmo
1不完全正确。如果您安装了修改引导加载程序的软件,UEFI固件会在每次启动时检查这些文件的签名,并将其与存储在其数据库中的密钥进行比较,这时可能会要求您提供它。 - Delorean
1你是不是指的是,“对于大多数类型的攻击,安全启动对保护你的作用很小?” - jpaugh
嗯... "引导加载程序修改" 是否包括在 GRUB 命令行中运行命令?因为看起来是这样的。有没有办法通过 GRUB 命令行输入密码,以便我可以输入命令而不会出现 "安全启动禁止加载模块" 的错误? - Cosmo
1@jpaugh 我猜你可以用"攻击"这个词。然而,大多数感染/病毒/恶意软件并不被视为直接的攻击,因为通常这些东西只是在网络中传播感染,并没有特定目标。但是,如果有人远程访问你的系统并试图干扰你的引导过程,那就可以被视为一次攻击。 - Delorean
1@Cosmo grub命令不应该触发它,因为这是在grub加载完成后在内存中运行的。但是也许你正在运行的命令尝试运行一个之前没有运行过的模块,这可能会触发UEFI警报... 你只是从BIOS中被提示输入密码吗?如果你在BIOS中禁用安全启动,它是否可以无需提示运行? - Delorean