Quiero encriptar una parte de mi HDD. Pero antes de eso quería comparar los diferentes algoritmos disponibles preguntándome si debería elegir aes-xts-256
o aes-xts-512
.
Nota: no tengo aes
aceleración de hardware. Los puntos de referencia se repitieron varias veces sin muchos cambios. Me gustaría aclarar que estos puntos de referencia solo son válidos en mi computadora (Debian, core 2 duo). Esto no pretende ser una comparación completa de LUKS-TrueCrypt.
TL; DR: vaya a la parte 4
1- Cryptsetup
Así que lo descargué cryptsetup v1.6.0
para hacer uso del nuevo cryptsetup benchmark
comando.
Mando
$cryptsetup benchmark
Resultados
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 128,2 MiB/s 157,2 MiB/s
serpent-cbc 128b 49,6 MiB/s 57,7 MiB/s
twofish-cbc 128b 138,0 MiB/s 183,8 MiB/s
aes-cbc 256b 97,5 MiB/s 121,9 MiB/s
serpent-cbc 256b 51,8 MiB/s 57,7 MiB/s
twofish-cbc 256b 139,0 MiB/s 183,8 MiB/s
aes-xts 256b 156,4 MiB/s 157,8 MiB/s
serpent-xts 256b 55,7 MiB/s 58,7 MiB/s
twofish-xts 256b 161,5 MiB/s 165,9 MiB/s
aes-xts 512b 120,5 MiB/s 120,9 MiB/s
serpent-xts 512b 55,7 MiB/s 58,5 MiB/s
twofish-xts 512b 161,5 MiB/s 165,3 MiB/s
Pensamientos
Encbc
modo, ¡serpent
es sorprendentemente rápido para descifrar!Enxts
modo,serpent
es claramente el más rápido.- El tamaño de la clave parece no tener casi ningún efecto notable .
serpent
twofish
aes
no se comporta bien cuando se aumenta el tamaño de la clave.
Actualizaciones fuera de VM
2- TrueCrypt
Realmente me sorprendió, ya que aes
se sabe que es el más rápido (incluso sin aceleración de hardware). Así que lo descargué TrueCrypt
para verificar estos resultados. TrueCrypt
usa el xts
modo por defecto, así que supongo que también lo usa en sus puntos de referencia.
Método
- Herramientas> Benchmark
- Elija cualquier tamaño de búfer (aquí, 5 MB)
- Haga clic en "Benchmark"
Resultados
# Algorithm | Encryption | Decryption
AES 106 MB/s 107 MB/s
Twofish 78 MB/s 76 MB/s
Serpent 41 MB/s 42 MB/s
Pensamientos
Estos resultados corresponden mucho más a lo esperado, pero no coinciden bien con cryptsetup
los resultados.
3- pensamientos generales
cryptsetup
proporcionó un mejor rendimiento general queTrueCrypt
en este caso. Esto podría explicarse de la siguiente manera:cryptsetup
fue compilado en mi sistema con rutinas de optimización del compilador mientrasTrueCrypt
ya estaba compilado de manera genérica;- AFAIK
cryptsetup
usa módulos criptográficos kernelspace mientrasTrueCrypt
usa rutinas criptográficas de espacio de usuario.
- Sin embargo, no puedo explicar por qué
serpent-xts-512
parece ser el camino a seguir,cryptsetup
mientras queaes-xts
el único cifrado que vale la pena usar.
4- pregunta
cryptsetup
y TrueCrypt
proporciona resultados cualitativos (velocidad de cifrado relativa) y cuantitativos completamente diferentes (velocidad real de cada cifrado) en puntos de referencia en RAM.
- ¿Es algo que ya has notado?
- ¿Debo confiar
cryptsetup
y usar elserpent-xts-512
cifrado para la velocidad?
serpent
que se hizo mucho más lento. Entonces el problema con la serpiente está resuelto.Twofish
sigue siendo más rápido queaes
adentrocryptsetup
y más lentoTrueCrypt
. Y no tengoaes
aceleración de hardware en absoluto ... esto no es una cosa VM ...cryptsetup
será más rápido queTrueCrypt
los mismos algoritmos de cifrado ya que seTrueCrypt
ejecuta bajoFUSE
(sistema de archivos de espacio de usuario), mientras quecryptsetup
usa LUKS, que es un módulo de kernel. Mencioné la máquina virtual como si estuviera ejecutando cualquier otro programa en su sistema operativo host (incluso tareas en segundo plano), afectaría los resultados de sus puntos de referencia.El kernel de Linux tiene módulos Serpent optimizados para SSE2 y AVX para acelerar las cargas de trabajo en paralelo (como el descifrado CBC y XTS enc & dec).
El rendimiento de Serpent en el descifrado CBC y XTS con esos módulos cargados debe estar casi al mismo nivel que el software AES y Twofish (un poco más rápido o más lento dependiendo de su modelo de CPU exacto).
fuente
También tenga en cuenta que el código SSE2 ejecutado por el kernel invitado en algunas máquinas virtuales es mucho más lento que en el kernel host. He experimentado esto con Oracle VirtualBox. Por lo tanto, los resultados para Serpent on VM pueden no necesariamente correlacionarse con el rendimiento esperado en el host real.
fuente