web-dev-qa-db-ja.com

LUKSおよびループデバイス

LUKS/dm-crypt/cryptsetupに関するチュートリアル、特に暗号化されたファイルコンテナの作成方法に関するチュートリアルをたくさん読みました。

最初のステップは、ddでファイルを作成することです。

次に、ファイルを/dev/loop0にマッピングしてループデバイスをフォーマットするチュートリアルもありますが、ループデバイスにマッピングせずにファイルを直接フォーマットするチュートリアルもあります。

私の質問:ループデバイスのステップは必要ですか?違いはなんですか?

3
gaiapac

ループデバイスを自分で管理しない場合、cryptsetupは自動的にループデバイスをセットアップし、不要になったら閉じます。したがって、2つの間に違いはありません。 cryptsetupは常にループデバイスで機能します。 man cryptsetupを参照してください:

ループバックデバイスの使用に関する注意事項

Cryptsetupは通常、ブロックデバイス(ディスクパーティションまたはLVMボリューム)で直接使用されます。ただし、デバイス引数がファイルの場合、cryptsetupはループバックデバイスを割り当てて、このファイルにマップしようとします。このモードでは、ループ自動クリアフラグをサポートするLinuxカーネル2.6.25以降が必要です(最後のクローズでループデバイスが自動的にクリアされます)。もちろん、ファイルをループデバイスに手動でいつでもマップできます。例については、cryptsetup FAQを参照してください。

デバイスマッピングがアクティブな場合、statusコマンドの出力でループバッキングファイルを確認できます。 losetup(8)もご覧ください。

2
Vincent Yu

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に直接触れないようにします。そうしないと、暗号化エンジンをバイパスして、暗号化されていないループバックファイルを作成します。

0
dragon788