在 Impish Indri 上使用 TPM2 解锁根磁盘

在 Impish Indri 上使用 TPM2 解锁根磁盘

背景:
使用手册页中的信息:
http://manpages.ubuntu.com/manpages/impish/man1/systemd-cryptenroll.1.html

我已使用以下命令成功将 TPM2.0 密钥添加到 LUKS 磁盘:systemd-cryptenroll --tpm2-device=auto /dev/sda3

但是我不知道如何配置/etc/crypttab以在启动时启用自动解锁。
我尝试查看手册页中的信息:http://manpages.ubuntu.com/manpages/impish/man5/crypttab.5.html

问题:
如何配置/etc/crypttab并重新生成initramfs以支持在启动时为根磁盘进行 TPM2 解锁并带有密码回退?

答案1

我在 22.04 上实现了这个功能,并且(刚刚)发布了一个存储库来帮助任何想要让 TPM2 在启动时自动解密磁盘的人。

https://github.com/wmcelderry/systemd_with_tpm2

它适用于那些已经知道 LUKS 是什么、cryptenroll 做什么以及如何遵循 Arch wiki 上的指南并将其记录的内容 (感谢大家!) 应用到您想要在 Ubunutu 上运行的工作的人。

因此,它并不容易使用,但它确实使它比没有它时更容易上手,并且最终,如果你遇到困难,它会给你提供关于我做了什么来使它工作的线索。

隧道的尽头有一盏灯……

答案2

我在 Arch 中做过这个,阅读了各种 wiki 页面。这可能有一定的适用性(尽管我打算在 Ubuntu 中再次做同样的事情)

crypttab 的详细信息如下: https://wiki.archlinux.org/title/Trusted_Platform_Module#Data-at-rest_encryption_with_LUKS

但刷新 initramfs 的方法会有所不同,或许:

sudo update-initramfs -c -k $(uname -r)

答案3

对于其他发现此问题的人:

我认为 Impish Indri 没有这个能力(目前还做不到/开箱即用,但也许可以通过后续更新来实现)

Systemd 版本为 v248 (248.3-1ubuntu8),来自安装媒体或最新更新:systemd 248 (248.3-1ubuntu8.2)

在我看来,对 TPM 解密的支持是在 systemd 249 中引入的,根据此手册页,它表明它 (A) 支持 TPM 并且 (B) 由 systemd v249 提供 [在撰写本文时]: https://man7.org/linux/man-pages/man5/crypttab.5.html

查看 systemd-cryptsetup 让我找到一个有用的脚本,它指示如何设置和测试 OP 和我想要的系统: https://github.com/systemd/systemd/blob/c40671ba16805909925c70a9708b4b80031834cb/man/tpm2-crypttab.sh

这在 Systemd V248 上不起作用,所以我预计 v249 是第一个可以与之兼容的版本。

我正在下载并测试每日的 Jammy 版本,以查看它是否能在 22.04 中运行,并打算报告结果。

希望这对某人有帮助。

答案4

我的最新回答:这在 Ubuntu 中还不起作用,因为 systemd-cryptsetup 似乎不支持 TPM2 设备。

我现在已经在 22.04(Jammy)的每日构建中对此进行了测试 - 它确实包含 Systemd v249,但它仍然不起作用。

经过反复挖掘,我现在怀疑这是一个尚未启用的构建选项。

这可能意味着如果启用该选项,v248 就可以工作(我不记得错误消息了)

该问题的详细信息如下...

我看到的错误消息是“TPM2 支持不可用。”,似乎来自: 此头文件的第 61 行或第 78 行

控制者:

#如果有 TPM2

所以我猜测无论出于什么原因,该功能在构建时尚未启用。

我将尝试联系可能能够解释这一点的人。我可能还会尝试从源代码构建,看看我是否可以成功启用该选项并解决问题。

相关内容