PGP Tool

Aprender · 7 min de lectura

Argon2id vs PBKDF2: ¿qué función de derivación de claves deberías usar?

Ambas extienden una contraseña en una clave de cifrado, pero cuestan a los atacantes cantidades muy distintas de dinero.

Cuando cifras algo con una frase de paso, la frase en sí es demasiado corta para usarla directamente como clave AES. Una KDF toma la frase de paso y la expande — ejecutando miles de operaciones para convertirla en una clave de 256 bits, a la vez que hace costosa la fuerza bruta.

PBKDF2 — el clásico de confianza

PBKDF2 se estandarizó en 2000 y sigue en todas partes — TLS, FileVault, OpenPGP. Itera HMAC-SHA-256 un número configurable de veces. Más iteraciones = más lento para los atacantes.

La debilidad de PBKDF2: es barato en hardware especializado. Una GPU puede ejecutar miles de iteraciones en paralelo. Un atacante con una pequeña granja de GPUs puede probar suposiciones órdenes de magnitud más rápido que una CPU.

Argon2id — el estándar moderno

Argon2 ganó la Password Hashing Competition de 2015: consume mucha memoria. Cada iteración requiere un gran bloque de RAM. Una GPU con 4 GB puede ejecutar 4 ataques simultáneos en lugar de 4000 — la proporción de costes se desplaza hacia el defensor.

Argon2id es la variante recomendada — combina Argon2i (resistente a canales laterales) y Argon2d (más rápida). Por defecto en libsodium, Bitwarden, 1Password y OpenPGP desde 2024.

Cuándo usar cuál

  • Usa Argon2id para cualquier cifrado nuevo. El coste de la librería es pequeño (~250 KB WASM) y la ganancia en seguridad es real.
  • Usa PBKDF2 cuando necesites máxima compatibilidad — clientes PGP más antiguos, herramientas de archivo, dispositivos embebidos.
  • Esta aplicación usa Argon2id para nuevos cifrados y recurre a PBKDF2 para textos cifrados heredados.

Números prácticos

En un portátil moderno, Argon2id (m=65536 KiB, t=3, p=1) tarda ~200 ms. Una GPU ejecutando PBKDF2-SHA256 con 200k iteraciones consigue ~50M de suposiciones/s. La misma GPU ejecutando Argon2id con 64 MB de memoria consigue ~100 suposiciones/s. Seis órdenes de magnitud de ventaja para el defensor.