Я безуспешно пытался использовать cryptsetup - как в modi plain, так и в LUKS - для создания устройства с потоковым шифром [Chacha20 *, ARC4] вместо одного из блочных шифров по умолчанию.
Поведение одинаково для разных дистрибутивов / ядер (Fedora, Ubuntu), где ядро в принципе поддерживает шифры [/ proc / crypto, / lib / modules / * / kernel / crypto /]
Для Chacha20 chacha20poly1305 cryptsetup завершается ошибкой во время создания, так как отсутствует поддержка cbc-plain (доступно по умолчанию) - что, я полагаю, разумно для потокового шифра, чтобы не заботиться о блочных модах.
Для 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?