如何合并多个 MOK 密钥或删除不需要的密钥?

如何合并多个 MOK 密钥或删除不需要的密钥?

据我所知,自从我开始在 Bionic 上使用安全启动以来,我只有一个 MOK.priv 文件。

上周的内核更新(像往常一样)要求我创建一个 MOK 密码,并在启动时在 MOK 注册屏幕中重新输入此密码。但我错过了注册屏幕(第一次)。

从那时起,我就能够注册 MOK 密钥并签署所需的内核模块,从而重新启用安全启动。然后,我在机器上发现了一个“孤立的”MOK 密钥。也许是因为没有注册,我最终又得到了一个 MOK 密钥?也可能不是,因为它的日期是去年 8 月。

-rw------- 1 root root 1.1K Jun 13  2018 /root/keyfiles/MOK.der
-rw------- 1 root root 1.4K Jun 13  2018 /root/keyfiles/MOK.priv.gpg
-rw-r--r-- 1 root root  910 Aug 13  2018 /var/lib/shim-signed/mok/MOK.der
-rw------- 1 root root 1.7K Aug 13  2018 /var/lib/shim-signed/mok/MOK.priv

我知道我拥有的 MOK 文件是第一对。第二对对我来说是新东西。

MOK 文件不应留在机器上。我可能只加密第二个密钥,但是

a) 我不太愿意接触 /var/lib/shim-signed/ 中的文件,并且

b) 我想在机器上保留一个 MOK 文件(并注册到 BIOS 中)

更糟糕的是,今天我必须安装 Acronis 备份代理的升级版(它依赖于内核模块 snapapi26),现在有更多的 MOK 文件(虽然扩展名不同,但在我看来 MOK.secdata 是一个关键)

-rw-r--r-- 1 root root  854 Apr  7 18:34 /var/lib/sb/MOK.2
-rw-r--r-- 1 root root 1.8K Apr  7 18:49 /var/lib/sb/MOK.secdata
-rw-r--r-- 1 root root    0 Apr  7 18:34 /var/lib/sb/MOK.seclock
-rw-r--r-- 1 root root  228 Apr  7 18:34 /var/lib/sb/MOK.secmeta

我希望我的机器上有一个(加密的)MOK.priv 和 MOK.der。我如何将这些 MOK 钥匙“合并”为一个(仅从大小就可以看出它们并不相同)?如果这不可能,我是否需要多个 MOK 钥匙?如果不需要,我应该保留哪一个?

附注,不需要回答我的主要问题:如果您能解释一下(或链接),当您已经有一个可以使用的 MOK 密钥时,为什么还会创建新的 MOK 密钥,我将非常感激。

更新:重新启动后会显示 Acronis 创建的密钥的 MOK 注册屏幕。但 Acronis 安装程序中没有提示为其设置密码,因此我无法注册。Acronis 所需的内核模块已安装并签名,因此可以安全地删除 Acronis 密钥。我可以直接删除 /var/lib/sb/MOK.* 吗?

答案1

我曾经mokutil --list-enrolled查看过哪些密钥正在使用。有一个我创建的密钥、一个用于 Ubuntu 代码签名的密钥和一个 Ubuntu CA 密钥。

由于 Acronis 正在运行并且它创建的密钥未被使用,因此我删除了“/var/lib/sb/MOK。”

然后我运行mokutil --export,它给了我 3 个密钥。对导出的这 3 个密钥与我机器上的 der 文件进行对比,我发现密钥 #1 是/root/keyfiles/MOK.der,密钥 #2 是/var/lib/shim-signed/mok/MOK.der。所以我加密了 /var/lib/shim-signed/mok/MOK.gpg。

我最终得到了 2 对,一对是我创建的,一对是 Ubuntu 创建的。我将保留它们原样。

我希望已删除的 Acronis 密钥不会再次出现注册屏幕。

至于什么时候要求注册另一个密钥,答案就在这里。我没深入研究过。

附言:这个答案非常有帮助。

相关内容