luks ディスクまとめ
LUKSについては、過去に調べながらメモをしているので、いざというときに記事がバラけているので、目的のものにたどり着くのが大変なので、LUKSで暗号化ディスクを取り扱うコマンドで、よく使うものをまとめ記事にし直した。
- luks ディスクまとめ
- LUKS追加手順
- format して、パスワードを設定する
- format して、鍵ファイルを指定する。
- 予備のパスワードを設定する
- パスワードで解除して、予備カギ(ファイル)を指定して追加する。
- 鍵ファイルで解除して、予備カギ(ファイル)を指定し、追加する。
- カギ(keyfile/ファイル)が登録されているか調べる
- カギ(パスワード/text)が登録されたかされているか調べる
- 不要な鍵を消したい(パスワード・ファイル)を指定して消す。
- 使ってないスロット(パスワードがわからない)を消す。
- crypttab に登録する
- 関連記事
LUKS追加手順
一連の流れは、次のようになる。
## ディスクの確認 lsblk ## 初期化 sudo cryptsetup luksFormat /dev/sdX ## パスワードの確認 sudo cryptsetup luksOpen --test-passphrase /dev/sdX ## (必要なら)crypttab編集 sudo vim /etc/crypttab ## 開いて(必要ならlvm作って)フォーマット sudo cryptsetup luksOpen cyrpt-disk00 /dev/sdX sudo pvcreate /dev/mapper/cyrpt-disk00 sudo vgcreate data /dev/mapper/cyrpt-disk00 sudo lvcreate my01 -n data -l 100%FREE sudo mkfs.ext4 /dev/mapper/data-my01
format して、パスワードを設定する
フォーマット時に既存データの削除を尋ねられる。
cryptsetup luksFormat /dev/sdX
format して、鍵ファイルを指定する。
上記のコマンドで、鍵ファイルをを指定する場合
cryptsetup luksFormat /dev/sdX /path/to/e1.keybin
予備のパスワードを設定する
予備パスワードを追加する。既存パスが必要
sudo cryptsetup luksAddKey /dev/sdX
パスワードで解除して、予備カギ(ファイル)を指定して追加する。
sudo cryptsetup luksAddKey /dev/sdX spare.keybin
鍵ファイルで解除して、予備カギ(ファイル)を指定し、追加する。
sudo cryptsetup luksAddKey /dev/sdX --key-file=e1.keybin spare.keybin
カギ(keyfile/ファイル)が登録されているか調べる
sudo cryptsetup luksOpen --key-file path/to/key --test-passphrase /dev/sdX
カギ(パスワード/text)が登録されたかされているか調べる
sudo cryptsetup luksOpen --test-passphrase /dev/sdX
標準入力を使うこともできる。
## テキストは標準入力からも渡せるが、bash_historyに残るので避ける。 echo -n my_pass_phrase | sudo cryptsetup luksOpen --test-passphrase /dev/xxx
カギが何本登録された調べる
sudo cryptsetup luksDump /dev/sdd ## wc で本数を見る。 sudo cryptsetup luksDump /dev/sda | grep -E '[0-9]+: luks2' | wc -l
出力例
LUKS header information Version: 2 Epoch: 3 Metadata area: 16384 [bytes] Keyslots area: 16744448 [bytes] UUID: 54f5c540-f0ec-428e-a182-99403484f5a1 Label: (no label) Subsystem: (no subsystem) Flags: (no flags) Data segments: 0: crypt offset: 16777216 [bytes] length: (whole device) cipher: aes-xts-plain64 sector: 4096 [bytes] Keyslots: 0: luks2 Key: 512 bits Priority: normal Cipher: aes-xts-plain64 Cipher key: 512 bits PBKDF: argon2id Time cost: 7 Memory: 1048576 Threads: 4 Salt: 6d 13 8a 5a 27 a5 24 84 18 a9 fb c9 ef cd c1 1b 99 98 d1 2f 6a 60 cb 6b 76 d9 c9 50 71 0f 4a 6b AF stripes: 4000 AF hash: sha256 Area offset:32768 [bytes] Area length:258048 [bytes] Digest ID: 0 Tokens: Digests: 0: pbkdf2 Hash: sha256 Iterations: 112604 Salt: f3 13 27 c1 2b d9 fa 56 34 cb b3 7b fc cb 34 b2 2f 6b 90 a2 23 6e f9 a1 40 56 4e 17 c6 27 46 1d Digest: 9a 31 29 de d7 30 74 fc 40 70 76 7d b0 46 f7 00 35 ed 7a f6 9f 35 e9 36 e3 37 6a 2e c9 dd 5c 35
cipher: aes-xts-plain64
から AES-XTS で暗号化されているとわかる。
0: pbkdf2
と Iterations: 112604
で暗号鍵はハッシュ化され、ストレッチングされているとわかる。
Key: 512 bits
で暗号鍵の解除パスワードは512bitにSaltされたものが使われているとわかる。
不要な鍵を消したい(パスワード・ファイル)を指定して消す。
cryptsetup luksRemoveKey
使ってないスロット(パスワードがわからない)を消す。
cryptsetup luksKillSlot
crypttab に登録する
mycrypt01 UUID=xxxx-xxx-aa9 /path/to/key luks,discard,keyslot=1
複数台のSSD/HDDがあるときは、シリアルをメモしておくと便利。
モデル名は smartctl -a /dev/sda
でもわかるが、smartctlを入れるのが面倒なときは、hdparm
でも取得可能
hdparm -I /dev/sda
# Model Hitachi HDxxxxx/STRxxxxx my_crypt01 UUID=xxxx-xxx-aa9 /path/to/key luks,discard,keyslot=1
記入できたらテスト。
crypttab の設定を反映してテストする。
sudo cryptdisks_start my_crypt01 sudo cryptdisks_stop my_crypt01
関連記事
- https://takuya-1st.hatenablog.jp/entry/2023/01/24/144835
- https://takuya-1st.hatenablog.jp/entry/2021/11/25/222603
- https://takuya-1st.hatenablog.jp/entry/2023/02/08/222523
## 2024-04-03
crypttabの記述例を追加。