Saltar al contenido principal

PBKDF2 - Derivación de claves basada en contraseña

Lectura de 2 min aprox.

PBKDF2 (Password-Based Key Derivation Function 2) es una función para derivar de forma segura una clave criptográfica a partir de una contraseña. Al aplicar repetidamente una función hash decenas de miles a cientos de miles de veces, eleva el costo computacional y resiste los ataques de fuerza bruta. Fue publicada por RSA Laboratories en 2000 como PKCS #5 v2.0 y estandarizada en NIST SP 800-132. Es un algoritmo consolidado y de larga trayectoria, integrado en una amplia variedad de sistemas, como el WPA2 de Wi-Fi y el cifrado de disco de macOS.

Antecedentes históricos

PBKDF1, el predecesor de PBKDF2, se definió en PKCS #5 v1.5 en 1993, pero tenía el problema de que la longitud de clave derivable estaba limitada a la longitud de salida de la función hash. PBKDF2, publicado en 2000, eliminó esta restricción y permitió derivar claves de longitud arbitraria. En 2010 se estandarizó formalmente como NIST SP 800-132 y se llegó a recomendar su uso incluso en sistemas del gobierno de EE. UU. Si bien cuenta con una larga historia y un amplio historial de adopción, los límites de su seguridad han comenzado a señalarse a medida que las GPU han avanzado.

Cálculo iterativo basado en HMAC

La estructura interna de PBKDF2 es simple. Aplica repetidamente HMAC (Hash-based Message Authentication Code) usando como entrada la contraseña y una sal.

Contraseña + sal
HMAC-SHA256 (1.ª pasada)
HMAC-SHA256 (2.ª pasada)
... × 600 000 veces
Clave derivada

La salida de cada iteración se acumula mediante XOR para generar la clave final. A partir de 2025, OWASP recomienda al menos 600 000 iteraciones con HMAC-SHA256. Al usar HMAC-SHA512, se recomiendan al menos 210 000 iteraciones.

Adopción en Wi-Fi WPA2

El ejemplo más cercano de PBKDF2 en uso es el Wi-Fi WPA2-Personal (WPA2-PSK). Al derivar la clave de cifrado real a partir de la contraseña de Wi-Fi (PSK: Pre-Shared Key), utiliza PBKDF2-HMAC-SHA1 iterado 4096 veces. Este número de iteraciones era razonable cuando se especificó en 2004, pero con el rendimiento actual de las GPU es posible realizar cientos de miles de intentos por segundo, y las contraseñas cortas pueden descifrarse en un tiempo realista. WPA3 ha pasado a SAE (Simultaneous Authentication of Equals), resolviendo este problema.

Limitaciones en la actualidad

La mayor debilidad de PBKDF2 es que su cálculo está limitado por la CPU y consume casi nada de memoria. Las GPU tienen miles de núcleos de cómputo y pueden ejecutar masivamente en paralelo cálculos simples como HMAC-SHA256. Con las GPU de alto rendimiento de 2025 (como la NVIDIA RTX 4090), incluso con 600 000 iteraciones de PBKDF2-HMAC-SHA256 es posible probar decenas de miles de contraseñas candidatas por segundo.

PropiedadPBKDF2bcryptscryptArgon2id
Año de aparición2000199920092015
Memoria intensiva
Resistencia a GPUBajaMediaAltaAlta
Estandarización NISTSP 800-132NingunaRFC 7914RFC 9106
Ranking de recomendación OWASP4.º (heredado)2.º3.º1.º

La migración en la práctica

En los sistemas existentes que usan PBKDF2, es común una migración gradual que vuelve a aplicar el hash con Argon2id o bcrypt en el siguiente inicio de sesión del usuario. Al migrar un hash de contraseña, se necesita un diseño que conserve en paralelo el hash antiguo y el nuevo y verifique ambos hasta que todos los usuarios hayan completado la migración. Desde la perspectiva de la gestión de claves, también es una buena oportunidad para revisar el propósito y el método de almacenamiento de la clave derivada.

«Llevamos a cabo la migración de PBKDF2 a Argon2id a lo largo de seis meses. Al adoptar un enfoque de rehasheo en el inicio de sesión y verificar ambos hashes durante el período de transición, pudimos completarla con cero impacto para los usuarios.»

Los fundamentos de la criptografía se explican en Los fundamentos del cifrado, y el panorama general de la gestión de contraseñas en La guía de gestión segura de contraseñas. Para la seguridad de contraseñas en la era poscuántica, consulta también Seguridad de contraseñas poscuántica.libros especializados en criptografía (Amazon) te permitirán profundizar aún más.

Conceptos erróneos comunes

Existe el concepto erróneo de que «PBKDF2 es el más seguro porque NIST lo ha estandarizado», pero la estandarización es una garantía de compatibilidad, no de seguridad. El propio NIST recomienda el uso de funciones de memoria intensiva en SP 800-63B, y PBKDF2 se sitúa cerca de la «línea mínima aceptable». La idea de que «aumentar el número de iteraciones también puede contrarrestar a las GPU» también es errónea; dado que las GPU pueden ejecutar en paralelo el mismo cálculo HMAC que las CPU, aumentar el número de iteraciones afecta por igual a los usuarios legítimos y a los atacantes.

Términos relacionados

¿Te resultó útil este artículo?

XHatena