やること
- フルディスク暗号化したい
- TPM2で自動ロック解除したい
- 秋葉原でジャンクの1TB HDDを2台買ってきたのででかいデータドライブにしたい
1TB x 2のHDDをLUKSで暗号化してBtrfs
GPTパーティションテーブルを使用します
各ディスクGPTパーティションテーブルを作成し、ディスクサイズいっぱいに1つのパーティションを作成します
LUKSを設定
crtyptsetup luksFormatでLUKSヘッダーを作成します
❯ sudo cryptsetup -v luksFormat /dev/sdg1[sudo: authenticate] Password:
警告!!========/dev/sdg1 のデータを上書きします。戻せません。
よろしいですか? ('yes' を大文字で入力してください): YES/dev/sdg1 のパスフレーズを入力してください:同じパスフレーズを入力してください:キースロット 0 が作成されました。コマンド成功。
❯ sudo cryptsetup -v luksFormat /dev/sdh1
警告!!========/dev/sdh1 のデータを上書きします。戻せません。
よろしいですか? ('yes' を大文字で入力してください): YES/dev/sdh1 のパスフレーズを入力してください:同じパスフレーズを入力してください:データデバイスのおかしな(bogus) optimal-io サイズ (33553920 バイト) は無視します。キースロット 0 が作成されました。コマンド成功。以下のコマンドでLUKSデバイスをマッパーとして開きます
❯ sudo cryptsetup open /dev/sdg1 data-raid1/dev/sdg1 のパスフレーズを入力してください:
❯ sudo cryptsetup open /dev/sdh1 data-raid2/dev/sdh1 のパスフレーズを入力してください:Btrfsを設定
btrfsのデータ領域をRAID0ではなくsingleモードでフォーマットします。
RAID0でもRAID1でもなくsingleモードにすると、ファイルごとに異なるディスクに分散して保存されるようになります。(たぶん)
❯ sudo mkfs.btrfs -f /dev/mapper/data-raid1 /dev/mapper/data-raid2btrfs-progs v6.17See https://btrfs.readthedocs.io for more information.
Label: (null)UUID: 32d0260a-55ea-48a4-8992-7f42edef2f93Node size: 16384Sector size: 4096 (CPU page size: 4096)Filesystem size: 1.82TiBBlock group profiles: Data: single 8.00MiB Metadata: RAID1 1.00GiB System: RAID1 8.00MiBSSD detected: noZoned device: noFeatures: extref, skinny-metadata, no-holes, free-space-treeChecksum: crc32cNumber of devices: 2Devices: ID SIZE PATH 1 931.50GiB /dev/mapper/data-raid1 2 931.50GiB /dev/mapper/data-raid2TPM2で自動ロック解除を設定
systemd-cryptenrollコマンドを使用して、LUKSデバイスにTPM2トークンを登録します
TPM2で自動ロック解除はSecure Bootが無効でも利用できますが、Secure Bootが無効の場合はどのような変更をハードウェアに加えてもPCR7が変更されないため、セキュリティ的にはあまり意味がありません。
❯ sudo systemd-cryptenroll --tpm2-device=listPATH DEVICE DRIVER/dev/tpmrm0 MSFT0101:00 tpm_crb
❯ sudo systemd-cryptenroll --tpm2-device=auto /dev/sdg1🔐 Please enter current passphrase for disk /dev/sdg1: •••••••••••••••New TPM2 token enrolled as key slot 1.
❯ sudo systemd-cryptenroll /dev/sdg1SLOT TYPE 0 password 1 tpm2
❯ sudo systemd-cryptenroll --tpm2-device=auto /dev/sdh1🔐 Please enter current passphrase for disk /dev/sdh1: •••••••••••••••New TPM2 token enrolled as key slot 1.自動マウントを設定
/etc/crypttabにLUKSデバイスの設定を追加します
❯ sudo cat /etc/crypttab# Configuration for encrypted block devices.# See crypttab(5) for details.
# NOTE: Do not list your root (/) partition here, it must be set up# beforehand by the initramfs (/etc/mkinitcpio.conf).
# <name> <device> <password> <options># home UUID=b8ad5c18-f445-495d-9095-c9ec4f9d2f37 /etc/mypassword1# data1 /dev/sda3 /etc/mypassword2# data2 /dev/sda5 /etc/cryptfs.key# swap /dev/sdx4 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256# vol /dev/sdb7 none
data-raid1 UUID=9aacc6ed-932b-4ff3-b057-fb80e672ba1a none tpm2-device=autodata-raid2 UUID=0b17f127-0fc3-45c7-915e-089391fb050e none tpm2-device=autofstabに自動マウントの設定を追加します
先程デバイスを2つに跨がってBtrfsをフォーマットしましたが、どちらか1つの任意のデバイスを指定すればBtrfsが他のデバイスも探索してマウントしてくれます
❯ sudo cat /etc/fstab
/dev/mapper/data-raid1 /mnt/enc-data-raid btrfs compress-force=zstd 0 0まとめ
いかがでしたか?
これはUSB接続のHDDで試しましたが、TPM2で自動ロック解除ができたのでよかったです。