LUKS/dm-crypt/cryptsetupに関するチュートリアル、特に暗号化されたファイルコンテナの作成方法に関するチュートリアルをたくさん読みました。
最初のステップは、dd
でファイルを作成することです。
次に、ファイルを/dev/loop0
にマッピングしてループデバイスをフォーマットするチュートリアルもありますが、ループデバイスにマッピングせずにファイルを直接フォーマットするチュートリアルもあります。
私の質問:ループデバイスのステップは必要ですか?違いはなんですか?
ループデバイスを自分で管理しない場合、cryptsetup
は自動的にループデバイスをセットアップし、不要になったら閉じます。したがって、2つの間に違いはありません。 cryptsetup
は常にループデバイスで機能します。 man cryptsetup
を参照してください:
ループバックデバイスの使用に関する注意事項
Cryptsetupは通常、ブロックデバイス(ディスクパーティションまたはLVMボリューム)で直接使用されます。ただし、デバイス引数がファイルの場合、cryptsetupはループバックデバイスを割り当てて、このファイルにマップしようとします。このモードでは、ループ自動クリアフラグをサポートするLinuxカーネル2.6.25以降が必要です(最後のクローズでループデバイスが自動的にクリアされます)。もちろん、ファイルをループデバイスに手動でいつでもマップできます。例については、cryptsetup FAQを参照してください。
デバイスマッピングがアクティブな場合、statusコマンドの出力でループバッキングファイルを確認できます。 losetup(8)もご覧ください。
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
出力で、filecontainer
エントリのAUTOCLEAR = 1
に注意してください。あなたはcould代わりにloopdev=$(Sudo losetup -f); mount -o loop <etc>
に夢中になりますが、cryptsetup
を処理させるとWAYもっといい。
重要なのは、cryptsetup luksOpen containerfile mappedname
を最初に使用して、デフォルトで/dev/mapper/mappedname
にマウントすることを確認することです(/
で始まるフルパスを指定すると、代わりにマウントされます。そして、/dev/mapper/mappedname
ターゲットをフォーマットし、filecontainer
に直接触れないようにします。そうしないと、暗号化エンジンをバイパスして、暗号化されていないループバックファイルを作成します。