それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

luks ディスクの追加手順(まとめ)

luks ディスクまとめ

LUKSについては、過去に調べながらメモをしているので、いざというときに記事がバラけているので、目的のものにたどり着くのが大変なので、LUKSで暗号化ディスクを取り扱うコマンドで、よく使うものをまとめ記事にし直した。

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: pbkdf2Iterations: 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

関連記事

## 2024-04-03

crypttabの記述例を追加。