Re: Adiantum and integrity safe?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 15.05.2019 08.38, Milan Broz wrote:
On 14/05/2019 12:17, Kristian Klausen wrote:
I have a weak Intel Atom(N450) server and three external HDDs. I want to use the HDDs in RAID 5 with encryption  and integrity[1].

The Atom CPU is rather weak:
#           Algorithm |  Key |  Encryption |  Decryption
aes-xts                  256b    36.5 MiB/s   37.0 MiB/s
xchacha12,aes-adiantum   256b    83.4 MiB/s   84.3 MiB/s
So I want to use Adiantum, is it safe to combine them?
Ex[2][3]: cryptsetup luksFormat --type luks2 <device> --cipher xchacha12,aes-adiantum --integrity poly1305
Hi,

this combination will not work.

Adiantum is fast, but integrity checking will slow it down, so these requirements are going againts themselves.

But thew problem is technical here:

- the proper parameter is "--cipher xchacha12,aes-adiantum-IV" (IV is plain64 for non-integrity mode,
but should be random for integrity protection modes)

- the "poly1305" authenticator is intended to be used with chacha20 through RFC7539 wrapper,
so it will try to wrap Adiantum using the RFC7539 and it is not supported.
(Cipher test will return fail because constructed kernel cipher string is not supported.)

(The intended use was --cipher chacha20-random --integrity poly1305, but it will be quite slow here.)

- You should be able to use Adiantum with other authentication tags (like --integrity hmac-sha256)
but it will be slow on Atom.
Thanks for the very thorough answer.

I just did some benchmarking*:
aes-xts-plain64                                        | 17,8 MB/s
xchacha12,aes-adiantum-plain64                         | 22,5 MB/s
xchacha20,aes-adiantum-plain64                         | 24,6 MB/s
xchacha20,aes-adiantum-plain64 --integrity hmac-sha256 | 7,3 MB/s (around the same with --integrity-no-journal)
As you can see the Atom is weak.

I also tried plain integrity:
with journal    | 11,2 MB/s
without journal | 32 MB/s without journal
without journal and xchacha20,aes-adiantum-plain64 ontop | 19,1 MB/s

I'm not sure how costly RAID-5 is, so it could be even worse.
So I'm probably going with either dm-integrity -> mdraid or dm-integrity -> mdraid -> dm-crypt.

*:
truncate -s 500M disk1.img
dd if=/dev/urandom of=key.bin bs=512 count=1

sudo cryptsetup luksFormat -q --type luks2 --cipher <cipher> disk1.img key.bin
sudo cryptsetup luksOpen disk1.img disk1luks --key-file key.bin

# integrity only
#sudo integritysetup format disk1.img
#sudo integritysetup open disk1.img disk1integrity
#sudo dd if=/dev/zero of=/dev/mapper/disk1integrity bs=1M oflag=direct status=progress

# crypt ontop
#sudo cryptsetup luksFormat -q --type luks2 --cipher xchacha20,aes-adiantum-plain64 /dev/mapper/disk1integrity key.bin #sudo cryptsetup luksOpen /dev/mapper/disk1integrity disk1luks --key-file key.bin

sudo dd if=/dev/zero of=/dev/mapper/disk1luks bs=1M oflag=direct status=progress

If you do not need authenticated encryption, but just add crc32 integrity checking, maybe stacking
RAID over dm-integrity (using integritysetup) will work better (with optional LUKS layer on top using
fast Adiantum cipher).

There are currently some experiments with new bitmap mode in dm-integrity (will be supported by next
integritysetup) that are intended exactly for this RAID stacking scenario, but it is not stable yet.


Milan


[1] https://gist.github.com/MawKKe/caa2bbf7edcc072129d73b61ae7815fb
[2] https://mirrors.edge.kernel.org/pub/linux/utils/cryptsetup/v2.0/v2.0.0-ReleaseNotes
[3] https://mirrors.edge.kernel.org/pub/linux/utils/cryptsetup/v2.0/v2.0.6-ReleaseNotes

Regards
Kristian Klausen

_______________________________________________
dm-crypt mailing list
dm-crypt@xxxxxxxx
https://www.saout.de/mailman/listinfo/dm-crypt

Kristian
_______________________________________________
dm-crypt mailing list
dm-crypt@xxxxxxxx
https://www.saout.de/mailman/listinfo/dm-crypt




[Index of Archives]     [Device Mapper Devel]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux