Modi plainまたはLUKSの両方でcryptsetupを使用して、デフォルトのブロック暗号の1つではなくストリーム暗号[Chacha20 *、ARC4]を使用してデバイスを作成しようとして成功しませんでした。
動作は異なるディストリビューション/カーネル(Fedora、Ubuntu)でも同じであり、カーネルは原則として暗号をサポートします[/ proc/crypto、/ lib/modules/*/kernel/crypto /]
Chacha20の場合、cbc-plainサポート(デフォルトが使用可能)がないため、chacha20poly1305 cryptsetupは作成中に失敗します。これは、ストリーム暗号がブロックmodiを気にしないのが妥当だと思います。
RC4の場合、デバイスを作成してアクセスできますが、閉じた後、デバイスを再オープンできないため、再度開くことができません。
RC4に対する私のアプローチ:
> dd if=/dev/zero of=/dev/shm/container bs=1M count=200
> dd if=/dev/urandom of=/tmp/keyfile bs=1k count=8
> cryptsetup --cipher arc4 --key-file=/tmp/keyfile open --type plain /dev/shm/container ramdisk
> mkfs.ext4 /dev/mapper/ramdisk
> echo "test" > /dev/mapper/ramdisk/test.foo
> cryptsetup close ramdisk
> cryptsetup --cipher arc4 --key-file=/tmp/keyfile open --type plain /dev/shm/container ramdisk
-- fails
LUKSを使用する場合、ヘッダー情報は次のようになります。
> cryptsetup luksDump /dev/shm/container
LUKS header information for /dev/shm/container
Version: 1
Cipher name: arc4
Cipher mode: cbc-plain
Hash spec: sha256
Payload offset: 4096
実際、さまざまなarc-modi-IVの組み合わせでデバイスをフォーマットすることもできます-プレーンコンテナはデフォルトでcbc-plainも使用していると思います(これは合理的に聞こえませんか?)。
私の仮定は、cryptsetup/dm-cryptがストリーム暗号をサポートしておらず、chacha20の場合の失敗がデフォルトの動作であり、arc4が正常にキャッチされないということです。
問題は、この仮定が正しいかどうか、またはdm-cryptでストリーム暗号をどのように使用できるかということです。
Cryptsetup Issue Trackerで、ブロック暗号のみがサポートされ、ストリーム暗号はサポートされていないことが通知されました。したがって、一貫した動作は、おそらくChacha20と同様にARC4の場合、つまり、失敗するがデバイス/コンテナの作成を許可しない場合です。
https://gitlab.com/cryptsetup/cryptsetup/issues/301 を参照してください