web-dev-qa-db-ja.com

Linuxでcryptsetup / dm-cryptを使用したスト​​リーム暗号によるディスク暗号化?

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でストリーム暗号をどのように使用できるかということです。

1
THX

Cryptsetup Issue Trackerで、ブロック暗号のみがサポートされ、ストリーム暗号はサポートされていないことが通知されました。したがって、一貫した動作は、おそらくChacha20と同様にARC4の場合、つまり、失敗するがデバイス/コンテナの作成を許可しない場合です。

https://gitlab.com/cryptsetup/cryptsetup/issues/301 を参照してください

0
THX