
Su un PC con CPU Intel i7-4790K (dotata di accelerazione hardware per l’algoritmo di cifratura aes), 16GB di RAM ed hard disk Seagate Barracuda 7200 da 500GB il supporto per la cifratura integrato nel filesystem ext4 è stato quello che si è comportato meglio in assoluto, con velocità in scrittura praticamente identiche a quelle di ext4 con la cifratura disabilitata. dm-crypt/LUKS è stato più veloce di ZFS con file sotto ai 5 GB. gocryptfs come prevedibile, in quanto strumento user-space, è stato il filesystem più lento tra i 4.
Dettagli del test
Sono state create 3 partizioni sul disco:
- una formattata con ext4 (con due cartelle da cifrare rispettivamente con FScrypt e gocryptfs),
- un volume dm-crypt/LUKS formattato in ext4
# cryptsetup luksFormat --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 /dev/sdc2
# cryptsetup open /dev/sdc2 lukspart# mkfs.ext4 /dev/mapper/lukspart
- un pool ZFS col dataset cifrato
zpool create tank /dev/sdc3
zfs create -o encryption=aes-256-gcm -o keyformat=passphrase -o keylocation=prompt tank/encrypted_data
zfs load-key tank/encrypted_data
zfs mount tank/encrypted_data
Ho generato con dd 3 file rispettivamente da 1GB, 5GB e 10GB contenenti bit casuali
dd if=/dev/urandom of=testfile1G bs=1G count=1 oflag=direct
dd if=/dev/urandom of=testfile5G bs=1M count=5120 oflag=direct
dd if=/dev/urandom of=testfile10G bs=2M count=5120 oflag=direct
Con rsync ho misurato la velocità di trasferimento di questi file nelle varie partizioni o directory cifrate e per confronto anche con la semplice copia in una partizione ext4 non cifrata. Dopo ogni copia, per pulire la cache ho lanciato il comando “echo 3 > /proc/sys/vm/drop_caches”
time rsync --progress testfile1G /mnt/
“filesystemcifrato
“time rsync --progress testfile5G /mnt/
“filesystemcifrato
“time rsync --progress testfile10G /mnt/
“filesystemcifrato
“
Velocità in lettura
Per completezza ho misurato anche le velocità di lettura col comando:
time dd if=testfile5G of=/dev/null bs=1G count=1
