
He introducido el uso de cryptsetup para cifrar una parte del espacio en disco, pero la velocidad de escritura es muy lenta. Descubrí que existe un módulo para utilizar directamente el hardware para las operaciones de cifrado, utilizando el módulo cryptodev.
He instalado cryptodev y lo estoy ejecutando.
openssl speed -evp aes-128-cbc -engine cryptodev
Probé la velocidad de escritura con
time dd bs=5000k count=1 if=/dev/zero of=/home/... conv=fsync
antes y después de incluir el módulo cryptodev y con este control no veo ninguna mejora. ¿Hay otras cosas que definir para que cryptsetup utilice este motor? Gracias
[editar]---------------------------------------------
$ cryptsetup luksDump DISK --debug
# cryptsetup 1.7.0 processing "cryptsetup luksDump DISK --debug"
# Running command luksDump.
# Locking memory.
# Installing SIGINT/SIGTERM handler.
# Unblocking interruption on signal.
# Allocating crypt device DISK context.
# Trying to open and read device DISK with direct-io.
# Initialising device-mapper backend library.
# Trying to load LUKS1 crypt type from device DISK.
# Crypto backend (OpenSSL 1.0.2h 3 May 2016) initialized in cryptsetup library version 1.7.0.
# Detected kernel Linux 4.1.15-xuelk-2.0.1-dirty armv7l.
# Reading LUKS header of size 1024 from device DISK
# Key length 32, device size 204800 sectors, header size 2050 sectors.
LUKS header information for DISK
Version: 1
Cipher name: aes
Cipher mode: cbc-essiv:sha256
Hash spec: sha256
Payload offset: 4096
MK bits: 256
MK digest: 00 a6 fb a5 64 1d 08 47 9d ea 76 d3 34 f2 19 cf 66 b7 e7 94
MK salt: 8c 14 4e 3a 97 d6 d7 18 ca 46 f9 f0 47 d5 44 3f
46 0c c5 4e d7 35 1d 46 ca 2b fc af 13 14 d1 98
MK iterations: 13500
UUID: a808c328-0c0e-43a7-9057-b6b9a49afeb9
Key Slot 0: ENABLED
Iterations: 108472
Salt: 76 be 3e a1 5f 37 9b bc 1b 84 69 9e 36 db 5f ba
43 93 96 34 57 02 59 df 2c 19 f4 df 1a 09 53 7a
Key material offset: 8
AF stripes: 4000
Respuesta1
Básicamente, el comando cryptsetup
simplemente configura el dm-crypt
módulo del kernel. Eso significa que el cifrado/descifrado de su disco ocurre dentro del kernel. El kernel no usa openssl en absoluto.
Puede probar de manera confiable el rendimiento actual del cifrado del disco duro con:
cryptsetup benchmark
ElLos valores predeterminados de cryptsetup son aes-xts, 256b, al crear el dispositivo cifrado con cryptsetup luksCreate
(ver la cryptsetup luksDump
salida).
Algunos resultados experimentales de hardware de mediana escala:
CPU cryptsetup benchmark
AMD Phenom 9750 2.4 GHz aes-xts 256b 146.7 MiB/s 148.5 MiB/s
Intel Atom C3758 2.2 GHz aes-xts 256b 874.0 MiB/s 875.4 MiB/s
Intel i5-4250U 1.3 GHz aes-xts 256b 1703.3 MiB/s 1723.1 MiB/s
Intel i7-6600U 2.6 GHz aes-xts 256b 2978.0 MiB/s 3117.5 MiB/s
El kernel de Linux contiene varios controladores para hardware que acelera las operaciones criptográficas. Por lo general, se cargan de forma predeterminada y son utilizados por el subsistema criptográfico del kernel.
Por ejemplo, las CPU Intel más nuevas vienen con laConjunto de instrucciones AES-NIque aceleran significativamente AES; puede verificar si la CPU los admite de esta manera:
tr ' ' '\n' < /proc/cpuinfo | grep aes
Algunos sistemas incluso vienen con coprocesadores criptográficos (cf. p. ej.Intel QuickAssist - QAT). Pueden acelerar las cosas, pero también pueden ralentizarlas; por lo tanto, al realizar evaluaciones comparativas, tiene sentido verificar los registros de arranque si el kernel configura dicho hardware especial y si los módulos/firmware necesarios están cargados. Si dicho hardware está presente, tiene sentido comprobar el rendimiento con el coprocesador habilitado o deshabilitado (por ejemplo, poniendo en lista negra los *qat*
módulos relevantes).