私は、LUKS/dm-crypt/cryptsetup に関するチュートリアル、特に暗号化されたファイル コンテナーを作成する方法について多くのチュートリアルを読みました。
最初のステップは、 を使用してファイルを作成することですdd
。
次に、いくつかのチュートリアルではファイルを/dev/loop0
ループ デバイスにマップしてフォーマットし、他のチュートリアルではファイルをループ デバイスにマップせずに直接フォーマットします。
質問: ループ デバイス ステップは必要ですか? 違いは何ですか?
答え1
dd
またはfallocate
(または他のいくつかのツール)を使用してhead
、コンテナーとして機能するファイルを作成できます。その後、Vincent Yu が述べたように、cryptsetup
ループのセットアップ/ティアダウンを処理できます。
fallocate -l 100M mypath/filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo cryptsetup -y luksFormat mypath/filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo cryptsetup luksOpen mypath/filecontainer filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo mkfs -t ext4 /dev/mapper/filecontainer
sync
sudo cryptsetup luksClose filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
デバッグsudo losetup
出力で、エントリAUTOCLEAR = 1
の に注意してくださいfilecontainer
。できた代わりに夢中になるloopdev=$(sudo losetup -f); mount -o loop <etc>
が、cryptsetup
それを処理させるのは方法もっといいよ。
重要なのは、まず、デフォルトでcryptsetup luksOpen containerfile mappedname
マウントされるようにすること/dev/mapper/mappedname
( で始まるフルパスを指定する/
と、そこにマウントされると思います) を確認し、次に/dev/mapper/mappedname
ターゲットをフォーマットして、 に直接触れていないことを確認することですfilecontainer
。そうしないと、暗号化エンジンをバイパスし、暗号化されていないループバック ファイルが作成されます。
答え2
ループ デバイスを自分で管理しない場合は、cryptsetup
自動的にループ デバイスが設定され、不要になったら閉じられます。したがって、2 つに違いはなく、cryptsetup
常にループ デバイスで動作します。参照man cryptsetup
:
ループバックデバイスの使用に関する注意事項
Cryptsetup は通常、ブロック デバイス (ディスク パーティションまたは LVM ボリューム) 上で直接使用されます。ただし、デバイス引数がファイルの場合、cryptsetup はループバック デバイスを割り当てて、このファイルにマップしようとします。このモードには、ループ自動クリア フラグ (ループ デバイスは最後のクローズ時に自動的にクリアされます) をサポートする Linux カーネル 2.6.25 以降が必要です。もちろん、ファイルをループ デバイスに手動でマップすることもできます。例については、cryptsetup FAQ を参照してください。
デバイス マッピングがアクティブな場合、ステータス コマンドの出力にループ バッキング ファイルが表示されます。losetup(8) も参照してください。