hello efi的UEFI安全启动问题

时间:2017-08-31 11:33:03

标签: linux uefi gnu-efi

我创建了一个efi,并使用docs -

与pesign签名

UEFI安全启动:

https://en.altlinux.org/UEFI_SecureBoot_mini-HOWTO

https://en.opensuse.org/openSUSE:UEFI_Secure_boot_using_qemu-kvm

https://en.opensuse.org/openSUSE:UEFI_Image_File_Sign_Tools

https://wiki.ubuntu.com/SecurityTeam/SecureBoot

http://tomsblog.gschwinds.net/2014/08/uefi-secure-boot-hands-on-experience/

并启动:

sudo qemu-system-x86_64 -L . -pflash /usr/share/qemu/OVMF.fd -hda fat:uefi_disk

uefi磁盘包含已签名的efi文件

但为了安全启动,我需要

DB
DBX
KEK
PK

这样我就可以注册OVMF安全启动了 但在教程中,从来没有得到这些如何生成。 请建议

2 个答案:

答案 0 :(得分:0)

您需要使用openssl生成这些密钥。请看下面的链接:https://wiki.archlinux.org/index.php/Secure_Boot#Creating_keys

答案 1 :(得分:-1)

除了生成用于安全启动的密钥外,还需要注意对密钥进行签名。 https://www.rodsbooks.com/efi-bootloaders/secureboot.html

中详细定义了生成密钥,对其进行签名并将其存储到密钥库的过程

可以通过两种方式对安全密钥进行分类:专用和公共引导以及安全引导遵循信任根的链,用于添加密钥PK => KEK => DB。数据库中的任何更改都需要使用KEK私钥签名,KEK的更改需要由PK私钥签名,而PK的更改则要求密钥由先前PK公开密钥的私钥签名。

  • 生成PK对,并用私钥签名PK公钥。 PK是一个自签名密钥。
  • 生成KEK对并使用PK私钥签名KEK公钥
  • 使用KEK私钥生成数据库密钥对并签署数据库公共密钥
  • 使用KEK私钥生成DBX密钥对并签署DBX密钥对

注意:要从BIOS替换以前的PK,您将需要由平台所有者签名的空密钥。大多数BIOS允许在未经验证的情况下更改密钥,但理想情况下不应这样做。安全启动的全部目的是可以将事物追溯到信任的根源并进行验证。

除了生成全新的密钥集之外,您还可以使用计算机所有者的密钥MOK通过安全启动注册新密钥。

  • 生成密钥对
  • 使用私钥(使用sbsign)对实用程序进行签名
  • 将公钥添加到MOK实用程序(使用mokutility)
  • 也在上面提到的链接中描述