¿Por qué los resultados de la evaluación comparativa Truecrypt y cryptsetup (LUKS) son tan diferentes?

10

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-256o aes-xts-512.

Nota: no tengo aesaceleració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.0para hacer uso del nuevo cryptsetup benchmarkcomando.

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

  • En cbcmodo, ¡ serpentes sorprendentemente rápido para descifrar!
  • En xtsmodo, serpentes 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 aesse sabe que es el más rápido (incluso sin aceleración de hardware). Así que lo descargué TrueCryptpara verificar estos resultados. TrueCryptusa el xtsmodo por defecto, así que supongo que también lo usa en sus puntos de referencia.

Método

  1. Herramientas> Benchmark
  2. Elija cualquier tamaño de búfer (aquí, 5 MB)
  3. 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 cryptsetuplos resultados.


3- pensamientos generales

  • cryptsetupproporcionó un mejor rendimiento general que TrueCrypten este caso. Esto podría explicarse de la siguiente manera:
    • cryptsetupfue compilado en mi sistema con rutinas de optimización del compilador mientras TrueCryptya estaba compilado de manera genérica;
    • AFAIK cryptsetupusa módulos criptográficos kernelspace mientras TrueCryptusa rutinas criptográficas de espacio de usuario.
  • Sin embargo, no puedo explicar por qué serpent-xts-512parece ser el camino a seguir, cryptsetupmientras que aes-xtsel único cifrado que vale la pena usar.

4- pregunta

cryptsetupy TrueCryptproporciona 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 cryptsetupy usar el serpent-xts-512cifrado para la velocidad?

fuente

Respuestas:

5

No tiene aceleración de hardware AES y estaba ejecutando las pruebas en una máquina virtual. Es poco probable que los resultados de su prueba reflejen los resultados del mundo real, ya que las velocidades de cifrado / descifrado dependen en gran medida de las cargas actuales de CPU y disco. Su mejor opción es crear dos particiones Truecrypt independientes y realizar pruebas de rendimiento manuales copiando algunos archivos grandes a / desde cada partición.

LUKS y Truecrypt también tienen implementaciones ligeramente diferentes y, como dijiste, "estos puntos de referencia solo son válidos en mi computadora". Realmente necesita probar ambos en su sistema con transferencias de archivos reales para determinar el verdadero rendimiento.


En cuanto a las diferencias, Truecrypt usa FUSE para implementar un sistema de archivos de espacio de usuario, mientras que LUKS generalmente se realiza en el núcleo real. Por esta razón, es probable que obtenga un mejor rendimiento en un sistema Linux usando LUKS / dm-crypt / cryptsetup en lugar de Truecrypt, aunque la opción que elija depende de los requisitos de su cifrado (por ejemplo, las particiones Truecrypt pueden transferirse entre operaciones sistemas si es necesario).

Penetración
fuente
Extraño: lo intenté directamente en mi sistema y, básicamente, todo se destaca, excepto serpentque se hizo mucho más lento. Entonces el problema con la serpiente está resuelto. Twofishsigue siendo más rápido que aesadentro cryptsetup y más lento TrueCrypt. Y no tengo aesaceleración de hardware en absoluto ... esto no es una cosa VM ...
Actualicé los resultados.
@Gael cryptsetupserá más rápido que TrueCryptlos mismos algoritmos de cifrado ya que se TrueCryptejecuta bajo FUSE(sistema de archivos de espacio de usuario), mientras que cryptsetupusa 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.
Avance
1

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).

usuario215314
fuente
0

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.

usuario215314
fuente