LUKS2 と TPM によるルート パーティションの暗号化

LUKS2 と TPM によるルート パーティションの暗号化

ルート パーティションを暗号化し、TPM でキーを保護することを目標としています。最終的には、暗号化キーを TPM レジスタの状態にロックしたいと考えています。Fedora Workstation 38 をセットアップしました。セットアップ ウィザード中に、ドライブを暗号化するボックスをオンにし、回復フレーズを入力しました。これは期待どおりに機能しました。ブート フェーズ中に、LUKS キーのロックを解除するためのパスフレーズの入力を求められました。以下は の出力ですlsblk -pf

lsblk -pf
NAME                                                   FSTYPE      FSVER LABEL                 UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
/dev/sr0                                                                                                                                           
/dev/zram0                                                                                                                                         [SWAP]
/dev/vda                                                                                                                                           
├─/dev/vda1                                                                                                                                        
├─/dev/vda2                                            ext4        1.0                         b8d2cbbf-0f44-4487-bccf-74d9365ec383    647M    27% /boot
└─/dev/vda3                                            crypto_LUKS 2                           08ab0fc7-5a6b-421c-be8a-d6171761a3e6                
  └─/dev/mapper/luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6
                                                       btrfs             fedora_localhost-live 09d81602-3093-4a76-8c56-d9562197cdb9   13.2G    27% /home

次に、TPM を登録しました。

sudo systemd-cryptenroll --tpm2-device=auto /dev/vda3
New TPM2 token enrolled as key slot 1.

この時点で、キースロットは 2 つあります: 0 - パスワード、1 - TPM。

次に、以下を更新しました/etc/crypttab:

luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6 UUID=08ab0fc7-5a6b-421c-be8a-d6171761a3e6 - tpm2-device=auto

次に、 systemd をリロードしましたsystemctl daemon-reload。以下は更新されたサービス ファイルです。

sudo systemctl cat systemd-cryptsetup@luks\\x2d08ab0fc7\\x2d5a6b\\x2d421c\\x2dbe8a\\x2dd6171761a3e6.service

[Unit]
Description=Cryptography Setup for %I
Documentation=man:crypttab(5) man:systemd-cryptsetup-generator(8) man:[email protected](8)
SourcePath=/etc/crypttab
DefaultDependencies=no
IgnoreOnIsolate=true
After=cryptsetup-pre.target systemd-udevd-kernel.socket
Before=blockdev@dev-mapper-%i.target
Wants=blockdev@dev-mapper-%i.target
Conflicts=umount.target
Before=cryptsetup.target
BindsTo=dev-disk-by\x2duuid-08ab0fc7\x2d5a6b\x2d421c\x2dbe8a\x2dd6171761a3e6.device
After=dev-disk-by\x2duuid-08ab0fc7\x2d5a6b\x2d421c\x2dbe8a\x2dd6171761a3e6.device
Before=umount.target

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
KeyringMode=shared
OOMScoreAdjust=500
ExecStart=/usr/lib/systemd/systemd-cryptsetup attach 'luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6' '/dev/disk/by-uuid/08ab0fc7-5a6b-421c-be8a-d6171761a3e6' '-' 'tpm2-device=auto'
ExecStop=/usr/lib/systemd/systemd-cryptsetup detach 'luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6'

システムを再起動すると正常に起動しました。予想どおり、パスワードも入力しました。

次に、パスワードを消去しました。

sudo systemd-cryptenroll --wipe-slot=password /dev/vda3
wiped slot 0.

再起動すると次のエラーが発生します (スクリーンショットで申し訳ありません)。 ここに画像の説明を入力してください

systemd-cryptsetup@luks.. サービスを調べたとき (レスキュー モードで起動した後)、ExecStartTPM パラメータがなくなったことに気付きました。

ExecStart=/usr/lib/systemd/systemd-cryptsetup attach 'luks-08ab0fc7-5a6b-421c-be8a-d6171761a3e6' '/dev/disk/by-uuid/08ab0fc7-5a6b-421c-be8a-d6171761a3e6' '' ''

systemctl statusサービスの で次のエラー メッセージが生成されました: systemd-cryptsetup[630]; No passphrase or recovery key registered

`

問題を見つけました。@u1686_grawity さん、ありがとうございます

dracut -fTPM スロットを追加した後、手順を追加する必要がありました。これにより、起動プロセスの早い段階で TSS ドライバーが読み込まれると思われます。

答え1

問題を見つけました。@u1686_grawity さん、ありがとうございます

dracut -fTPM スロットを追加した後、手順を追加する必要がありました。これにより、起動プロセスの早い段階で TSS ドライバーが読み込まれると思われます。

関連情報