Kali Linux の cryptsetup パッケージに最近導入された LUKS nuke パッチについては、かなりの議論がありました。この機会に、この機能についてより詳しく説明し、知っておく価値のあるいくつかの便利なアプローチを示したいと思いました.
LUKS Nuke の概要
Michael Lee の ZDNet 記事でよく説明されているように、暗号化された LUKS コンテナーを作成すると、マスター キーがランダムに生成されます。次に、パスフレーズを使用してマスター キーを暗号化します。このプロセスは、パスフレーズがデータに直接結合されていないことを意味します。つまり、同一データの 2 つのセットが暗号化され、同じパスフレーズが使用された場合、マスター キーは各セットに固有のままであり、スワップ アウトできません。ただし、これは、使用するパスフレーズに関係なく、マスター キーが失われると、データの回復が不可能になることを意味します。このプロセスは、故意にキーを消去することにより、都合よく核兵器として使用されます。
LUKS Nuke の使用例
Kali Linux にこの機能を導入した主な目的は、クライアントの機密情報を安全に移動するプロセスを簡素化することです。ドライブを「LUKS Nuking」するとディスクにアクセスできなくなりますが、それはです キースロットを事前にバックアップし、事後に復元することができます。これにより、旅行前に機密性の高いラップトップを「ブリック」し、復元キー (暗号化) から分離し、安全な場所に戻ったマシンにそれらを「復元」することができます。このようにして、旅行の途中でハードウェアを紛失したり、その他の方法でアクセスしたりした場合、自分自身を含め、誰もデータを復元できません。
キースロットを削除する方法は他にもありますが、Nuke オプションの利点は、迅速かつ簡単で、Kali インストールに完全にログインする必要がないことです。ヘッダーのバックアップを保持している場合は、不快に感じたときにいつでもキースロットを Nuke できます。その後、安心できたら復元を行ってください。
自分で試してみてください
Kali Linux を使用してデータを暗号化し、バックアップし、破棄し、復元する手順を見ていきましょう。フルディスク暗号化を備えた Kali Linux 1.0.6 をダウンロードしてインストールすることから始めます。それが完了したら、次のように情報を確認できます:
[email protected]:~# cryptsetup luksDump /dev/sda5
LUKS header information for /dev/sda5
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
Key Slot 0: ENABLED
Iterations: 223775
Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
ご覧のとおり、スロット 0 が有効になっており、スロット 1 から 7 は未使用です。この時点で、核キーを追加します。
[email protected]:~# apt install cryptsetup-nuke-password
[email protected]:~# dpkg-reconfigure cryptsetup-nuke-password
これは LUKS コンテナに何も変更を加えず、代わりに initrd に nuke パスワードと小さなフックをインストールしました。このフックは、起動時に nuke パスワードを入力したことを検出し、「cryptsetup luksErase」を呼び出します。 その時点で LUKS コンテナに
素晴らしい。次に、暗号化キーをバックアップする必要があります。これは、「luksHeaderBackup」オプションで簡単に実行できます。
[email protected]:~# cryptsetup luksHeaderBackup --header-backup-file luksheader.back /dev/sda5
[email protected]:~# file luksheader.back
luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
[email protected]:~#
したがって、私たちの場合、このデータを暗号化して保存したいと考えています。これを行う方法はいくつかありますが、openssl を使用して、Kali のデフォルト ツールを使用してプロセスを迅速かつ簡単にします。
[email protected]:~# openssl enc -aes-256-cbc -salt -in luksheader.back -out luksheader.back.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
[email protected]:~# ls -lh luksheader.back*
-r-------- 1 root root 2.0M Jan 9 13:42 luksheader.back
-rw-r--r-- 1 root root 2.0M Jan 9 15:50 luksheader.back.enc
[email protected]:~# file luksheader.back*
luksheader.back: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
luksheader.back.enc: data
これで、暗号化されたヘッダーをバックアップする準備が整いました。この場合、簡単にアクセスできる場所にヘッダーを配置します。これは、安全な場所に保管されている USB サム ドライブと同じくらい簡単です。この時点で、再起動して Nuke キーを使用し、Kali がどのように応答するかを確認します。
そのため、Nuke キーを使用しましたが、予想どおり、Kali を起動できなくなりました。 Kali ライブ CD を起動し、LUKS ヘッダーを再度ダンプして、実際のディスクで何が起こったかを見てみましょう。
[email protected]:~# cryptsetup luksDump /dev/sda5
LUKS header information for /dev/sda5
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
Key Slot 0: DISABLED
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
ご覧のとおり、キースロットは使用されていません。 Nuke は期待どおりに機能しました。ヘッダーを元の場所に復元するには、USB ドライブから暗号化されたヘッダーを取得するだけです。それを取得したら、復号化して復元を実行できます。
[email protected]:~# openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back
enter aes-256-cbc decryption password:
[email protected]:~# cryptsetup luksHeaderRestore --header-backup-file luksheader.back /dev/sda5
WARNING!
========
Device /dev/sda5 already contains LUKS header. Replacing header will destroy existing keyslots.
Are you sure? (Type uppercase yes): YES
[email protected]:~# cryptsetup luksDump /dev/sda5
LUKS header information for /dev/sda5
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 512
MK digest: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db
MK salt: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48
16 a2 b0 a9 2c bb cc f6 ea 66 e6 b1 79 08 69 17
MK iterations: 65750
UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d
Key Slot 0: ENABLED
Iterations: 223775
Salt: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88
7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
スロットが復元されました。再起動して通常の LUKS パスワードを入力するだけで、システムは元の状態に戻ります。