Raspberry Pi 4 Model B 4GB モデルで使っている外部ディスクを Cryptsetup を使って暗号化することにしました。
dm-crypt/デバイスの暗号化 - ArchWiki
Cryptsetup は暗号化デバイスを作成・管理する dm-crypt を使うためのコマンドラインツールです。
導入
$ sudo apt update -y && sudo apt upgrade -y && sudo apt install cryptsetup -y
対象のディスク
$ sudo fdisk -l
Disk /dev/sda: 111.79 GiB, 120034123776 bytes, 234441648 sectors
暗号化
※作成はデバイス単位で、すべてのデータが削除されます。
$ sudo cryptsetup -v luksFormat /dev/sda
キーファイル作成
dm-crypt/デバイスの暗号化 - ArchWiki
キーファイルは暗号化されたボリュームを解錠するパスフレーズとして使用するデータを含んだファイルです。
$ sudo sh -c "echo -n 'your_passphrase' > /etc/key_encrypted_hdd"
$ sudo chown root:root /etc/key_encrypted_hdd; sudo chmod 400 /etc/key_encrypted_hdd
マウント
-
作成したキーファイルを使って、LUKS(Linux Unified Key Setup)パーティションをロック
# mount $ sudo cryptsetup open /dev/sda encrypted_hdd --key-file /etc/key_encrypted_hdd $ ls /dev/mapper/ control encrypted_hdd
-
フォーマット
うちにあるディスクはどれもセクタ欠落している模様...$ sudo mkfs.ext4 /dev/mapper/encrypted_hdd mke2fs 1.47.0 (5-Feb-2023) Creating filesystem with 29301110 4k blocks and 7331840 inodes Filesystem UUID: 80efd32d-0796-4c27-b305-d509bb4525b5 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done
-
マウント
$ sudo mkdir /media/encrypted_hdd $ sudo mount /dev/mapper/encrypted_hdd /media/encrypted_hdd mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload.
-
リロードを促された場合は実施する
$ sudo systemctl daemon-reload
-
確認
# マウントされているか $ df | grep encrypted_hdd /dev/mapper/encrypted_hdd 114777692 24 108901064 1% /media/encrypted_hdd # 暗号化されているか $ lsblk -f | grep -E 'sda|encrypt' sda crypto_LUKS 2 30a46184-a0b2-404c-****-************ └─encrypted_hdd ext4 1.0 a66a1eb9-34bb-4c1b-****-************ 103.9G 0% /media
特に問題なくマウントできたら、自動マウント設定を行う。
自動マウント
- 解錠
/etc/crypttab
を使って、起動時に自動的にマウントを解錠するように設定。$ sudo cat /etc/crypttab #encrypted_hdd /dev/sda /etc/key_encrypted_hdd luks encrypted_hdd UUID=b2422980-xxxx-xxxx-xxxx-xxxx /etc/key_encrypted_hdd luks
- マウント
$ cat /etc/rc.local #!/bin/bash mount /dev/mapper/encrypted_hdd /media/encrypted_hdd