vmlinuz * 通用和 * generic.efi.signed 之间的引导差异

分享于 

4分钟阅读

ubuntu

  繁體 雙語

问题:

/boot 中,有两个 vmlinuz 内核文件:


vmlinuz-4.8.0-37-generic


vmlinuz-4.8.0-37-generic.efi.signed



这两个内核文件的区别是什么? 谁签名第二个( 如果它确实是签名的,如名字所示),我的voiceover/bios如何知道信任和使用 *-generic.efi.signed 而不是 *-generic


回答 1:

.efi.signed 结尾的内核以签名,以供安全引导使用。 大多数计算机都有不信任标准签名的固件,但是只有 shim 程序( ESP 上的shimx64.efi 二进制文件。) 才可以信。

要详细说明,启用了安全引导的Ubuntu的签名组件的加载路径如下所示:


EFI -> Shim -> GRUB 2 -> Kernel -> Kernel modules



  • ,信任 shim,因为它已经由微软签名,它的密钥嵌入到固件中。
  • Shim修补efi引导子系统的安全,并包含规范密钥的public。 由于 shim 2已经与规范密钥的private 签署,所以它信任。
  • GRUB 2调用of系统( 现在由Shim修补)的安全性来验证核心,也用标准键的private 签名。
  • 内核验证了内核模块是由标准密钥的private 或者安全引导链中的某些它的他键签名的。

之前,IIRC,Ubuntu 15.10,Ubuntu 2没有对内核实施安全启动策略,内核在内核模块上没有实施安全引导策略。 虽然最近被收紧了。 但是,没有计划要求对普通系统二进制文件进行签名。

我不知道为什么在Ubuntu中有一个未签名的内核文件。 即使在不支持安全引导(。包括纯bios计算机)的系统上签名文件也能正常工作。 因此,未签名的文件是相当多余的,AFAIK。

注意,shim的每个组件都可以无符号形式获得,或者它们的签名将被删除。 如果你自己构建 shim,你可以自己替换标准密钥的public,或者使用你喜欢的任何它的他 public 键。 如果你想让微软签名,你就得花很多时间来构建 shim,这将是毫无意义的,除非你让微软签下它。 如果你需要自己签名,将密钥添加到机器所有者密钥( MOK ) 比重新生成 shim 更容易。 你还可以调整EFI直接支持的密钥集,这可以避免对 shim的需求。 因此,有很多你可以改变这些碎片是如何组合在一起的。 关于安全引导插件的详细信息,请参阅的主页,以及对安全引导的全面控制。有关如何管理安全引导的更多细节,请参见 my。


回答 2:

签名版本用于UEFI安全引导。 它已经使用非对称加密进行了签名。 意味着解密密钥与用来加密它的密钥不同。 bios只有一个 public 密钥,并且可以验证签名是否正确。 创建这样签名的private 密钥是秘密的,因此你不能自己创建它。 这就是bios信任它并允许它启动的原因。

更多信息:https://wiki.ubuntu.com/SecurityTeam/SecureBoot



BOO  引导  generic  DIFF  不同  Signed  
相关文章