Intentando entender el cifrado LUKS

8

Decidí encriptar mi partición raíz con LUKS + LVM.

Mi configuración de ThinkPad:

  • Samsung 830 128GB SSD
  • Disco duro de 750 GB
  • Core 2 Duo 2,5 GHz P9500
  • 8 GB de RAM

Pero cuanto más leo, menos entiendo sobre esos dos temas siguientes:

1a. El cifrado

Iba a usar SHA1 en lugar de 2/512 (como algunos sugieren), debido a esa cita de las cryptsetuppreguntas frecuentes:

5.20 ¡LUKS está roto! ¡Utiliza SHA-1!

No, no es. SHA-1 se rompe (académicamente) por encontrar colisiones, pero no por usarlo en una función de derivación de clave. Y esa vulnerabilidad de colisión es solo para uso no iterado. Y necesita el valor hash literalmente.

Esto básicamente significa que si ya tiene una clave de ranura y ha establecido el recuento de iteraciones PBKDF2 en 1 (normalmente es> 10'000), podría (tal vez) derivar una frase de contraseña diferente que le da la misma ranura. llave. Pero si tiene la llave de ranura, ya puede desbloquear la ranura de llave y obtener la llave maestra, rompiendo todo. Básicamente, esta vulnerabilidad SHA-1 le permite abrir un contenedor LUKS con gran esfuerzo cuando ya lo tiene abierto.

El verdadero problema aquí es que las personas no entienden las criptomonedas y afirman que las cosas están rotas solo porque se utiliza algún mecanismo que se ha roto para un uso diferente específico. La forma en que se usa el mecanismo es muy importante. Un hash roto para un uso puede ser completamente seguro para otros usos y aquí está.

Lo que leí como "no tiene sentido usar nada más que SHA-1". Pero algunas personas me dicen que no es exactamente así. Entonces ya no sé qué pensar.

1b.

Además, no pude encontrar ninguna información sobre si el cifrado tiene alguna influencia en el rendimiento de lectura / escritura / búsqueda del disco una vez que el disco está desbloqueado y el sistema ha iniciado sesión.

Entonces, ¿la complejidad del cifrado afecta solo el "rendimiento" en la etapa de ingreso de contraseña, o también durante el uso normal del sistema?

2. El algoritmo

He estado leyendo sobre esto desde hace un par de días, pero cuanto más leo, más me confundo. Todo lo que leo dice que AES es el más rápido y Serpent es el más lento. Pero no según mi laptop:

$ cryptsetup benchmark
Tests are approximate using memory only (no storage IO).
PBKDF2-sha1       344926 iterations per second
PBKDF2-sha256     198593 iterations per second
PBKDF2-sha512     129007 iterations per second
PBKDF2-ripemd160  271933 iterations per second
PBKDF2-whirlpool  134295 iterations per second
#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   149.8 MiB/s   147.9 MiB/s
 serpent-cbc   128b    51.0 MiB/s   196.4 MiB/s
 twofish-cbc   128b   127.6 MiB/s   152.5 MiB/s
     aes-cbc   256b   114.3 MiB/s   113.8 MiB/s
 serpent-cbc   256b    51.2 MiB/s   198.9 MiB/s
 twofish-cbc   256b   129.8 MiB/s   167.5 MiB/s
     aes-xts   256b   153.3 MiB/s   150.6 MiB/s
 serpent-xts   256b   176.4 MiB/s   184.1 MiB/s
 twofish-xts   256b   160.8 MiB/s   159.8 MiB/s
     aes-xts   512b   115.4 MiB/s   112.1 MiB/s
 serpent-xts   512b   178.6 MiB/s   184.2 MiB/s
 twofish-xts   512b   160.7 MiB/s   158.9 MiB/s

Entonces parece que Serpent no solo es el más rápido, sino que además es el más rápido con la clave más compleja.

¿No debería ser al revés? ¿Lo estoy leyendo mal o algo así?

Lockheed
fuente
Entonces, ¿por qué no usar SHA512 para obtener más seguridad si de todos modos tiene hash de 1 segundo en tiempo real?
user284148

Respuestas:

5

1a: realmente no importa tanto. cualquiera que sea el hash que utilices para la función de derivación de clave, LUKS se asegura de que sea computacionalmente costoso. Simplemente lo repetirá hasta que haya pasado 1 segundo en tiempo real.

1b: el método de derivación clave no influye en el rendimiento. el cifrado sí lo hace. cryptsetup benchmarkte lo muestra

2 - AES es el más rápido si su CPU es lo suficientemente moderna como para admitir instrucciones AES-NI (aceleración de hardware para AES). Si va con la serpiente ahora, es posible que no pueda utilizar el AES-NI de su próxima computadora portátil.

# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1      1165084 iterations per second
PBKDF2-sha256     781353 iterations per second
PBKDF2-sha512     588426 iterations per second
PBKDF2-ripemd160  726160 iterations per second
PBKDF2-whirlpool  261882 iterations per second
#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   692.9 MiB/s  3091.3 MiB/s
 serpent-cbc   128b    94.6 MiB/s   308.6 MiB/s
 twofish-cbc   128b   195.2 MiB/s   378.7 MiB/s
     aes-cbc   256b   519.5 MiB/s  2374.0 MiB/s
 serpent-cbc   256b    96.5 MiB/s   311.3 MiB/s
 twofish-cbc   256b   197.9 MiB/s   378.0 MiB/s
     aes-xts   256b  2630.6 MiB/s  2714.8 MiB/s
 serpent-xts   256b   310.4 MiB/s   303.8 MiB/s
 twofish-xts   256b   367.4 MiB/s   376.6 MiB/s
     aes-xts   512b  2048.6 MiB/s  2076.1 MiB/s
 serpent-xts   512b   317.0 MiB/s   304.2 MiB/s
 twofish-xts   512b   368.7 MiB/s   377.0 MiB/s

Tenga en cuenta que este punto de referencia no usa almacenamiento, por lo que debe verificar estos resultados con cualquier almacenamiento y sistema de archivos que realmente vaya a usar.

Frostschutz
fuente
1
1. Gracias por aclarar. Así que puedo seguir y usar SHA512 sin ningún efecto negativo en el rendimiento del disco. 2. Me resulta extraño que, según el sitio web de Intel ( ark.intel.com/search/advanced/?s=t&AESTech=true ), los viejos Pentium tenían esta optimización, pero los C2D no. "Si vas con la serpiente ahora, es posible que no puedas utilizar el AES-NI de tu próxima computadora portátil". Por eso entiendo que querías decir que tendría que volver a cifrar el disco en AES. ¿Derecha? El punto de referencia me habla del rendimiento de la CPU. Mi SSD está en SataII 3.0 Gbps (200-280MB / s), así que supongo que no lo haré mejor que serpent-xts 512b
lockheed