Vulnerabilidad en el uso de PBKDF2 para cifrado de discos
Vulnerabilidad en el uso de PBKDF2 para cifrado de discos

Vulnerabilidad en el uso de PBKDF2 para cifrado de discos

A principios de esta semana se publicó en Internet una carta del activista francés Ivan Alococo, encarcelado en Francia. El anarquista describe cómo su portátil fue confiscado tras ser arrestado y el material de la partición cifrada se introdujo como prueba contra él. Su contraseña tenía más de 20 caracteres e incluía una mezcla de mayúsculas, minúsculas, números y signos de puntuación. Esto implica que incluso contraseñas complejas pueden ser forzadas, lo cual sugiere la necesidad de pasar a frases de contraseña aún más seguras.

Descifrado de una contraseña cifrada con LUKS

La policía había descifrado la contraseña de su disco duro LUKS. Una hazaña que antes era imposible ahora se puede lograr en unos pocos meses aprovechando hasta 10.000 servidores con GPU modernas. En la raíz de esta brecha hay una función criptográfica que está mostrando su edad: PBKDF2.

¿Qué es una KDF (Key Derivation Function)?

En la informática moderna, cuando las aplicaciones proporcionan un cifrado de archivos sólido, con frecuencia usan contraseñas para proteger los archivos. Para que las contraseñas sean seguras, deben contener mucha entropía y aparecer lo más aleatorias posible. Los humanos tienden a usar caracteres y frases de su idioma nativo combinados con patrones memorables.

Las Funciones de Derivación de Claves (KDF) son herramientas que nos permiten mejorar la entropía derivada de los tipos de claves y contraseñas que usan las aplicaciones. Al realizar una serie de hashing y salting, PBKDF2 «sazona» la entrada del usuario con entropía suficiente para usar en claves privadas para algoritmos como AES.

¿Cómo funciona Argon2?

La potencia criptográfica de Argon2 es sublime pero brillante. En lugar de centrarse en el tiempo de CPU requiriendo un gran número de iteraciones de hash, Argon2 hace la guerra a la capacidad de memoria de tu GPU. Al realizar el hash de una contraseña con Argon2, el desarrollador puede aumentar la cantidad de RAM necesaria para completar el cálculo.

¿Por qué funciona esto? En las GPUs modernas, la cantidad exacta de subprocesos que están activos en paralelo varía según el modelo y depende de la cantidad de RAM requerida por subproceso. Las operaciones pequeñas en las GPUs típicas pueden ver hasta 2.000 subprocesos ejecutándose en paralelo. Mientras tanto, incluso las GPUs en la nube más grandes alcanzan un máximo de alrededor de 80 GB de memoria integrada.

¿Está roto PBKDF2?

A primera vista, no. PBKDF2 no está fundamentalmente roto. Es seguro siempre y cuando el usuario tenga una contraseña de 13 caracteres. La elección de PBKDF2 frente a Argon2 depende del dominio y la aplicación.