BlogPBKDF2 Explicado
Cripto

¿Qué Es PBKDF2 y Por Qué Importa para tu Seguridad Cripto?

La función de derivación de clave que hace que los ataques de fuerza bruta sean económicamente imposibles, explicada claramente para holders de cripto que quieren entender por qué importa.

Por el equipo SeedCrypt28 de marzo de 20267 min de lectura
Compartir:

El Problema: Las Contraseñas No Son Claves Criptográficas

Cuando eliges una contraseña como "SeedCrypt2026!" para cifrar tu seed phrase, esa cadena de texto no es, tal cual, una clave de cifrado AES-256 utilizable. AES-256 requiere una clave de exactamente 256 bits (32 bytes), y espera que esa clave tenga alta entropía (aleatoriedad) distribuida a lo largo de todos sus bits.

Una contraseña elegida por un humano típicamente tiene mucha menos entropía que una clave de 256 bits completamente aleatoria. Una contraseña alfanumérica de 16 caracteres en mayúsculas y minúsculas tiene aproximadamente 95 bits de entropía como máximo, significativamente menos que los 256 bits para los que AES-256 está diseñado. Simplemente hashear la contraseña una vez y usar el hash como clave tampoco es suficiente, porque una sola operación de hash es extremadamente rápida; las GPU modernas pueden calcular miles de millones de hashes SHA-256 por segundo.

Aquí es donde entran las funciones de derivación de clave (KDF). Su trabajo es transformar una contraseña memorizable por humanos en una clave criptográfica adecuada, al tiempo que hacen que la transformación sea computacionalmente costosa para derrotar los ataques de fuerza bruta.

¿Qué Es PBKDF2?

PBKDF2 son las siglas de Password-Based Key Derivation Function 2 (Función de Derivación de Clave Basada en Contraseña 2). Fue definida en el RFC 2898 y está estandarizada por el NIST como parte de SP 800-132. Toma una contraseña, una sal aleatoria y un número de iteraciones configurable como entradas, y produce una clave derivada de cualquier longitud deseada como salida.

La operación central es sencilla de entender: aplica una función pseudoaleatoria (normalmente HMAC con un algoritmo de hash como SHA-512) repetidamente durante un número específico de iteraciones. Cada iteración toma la salida de la anterior como entrada. Una vez completadas todas las iteraciones, el resultado final se usa como clave de cifrado.

El papel de la sal

La sal es un valor aleatorio generado de nuevo para cada operación de cifrado y almacenado junto al texto cifrado. Garantiza que dos usuarios con la misma contraseña produzcan claves derivadas completamente diferentes, evitando que las tablas de búsqueda precomputadas (tablas rainbow) se usen para atacar múltiples objetivos simultáneamente. También significa que un atacante no puede precomputar claves antes de obtener el texto cifrado; debe iniciar la derivación desde cero para cada objetivo individual.

SeedCrypt usa una sal aleatoria de 256 bits, que proporciona más que suficiente protección contra cualquier ataque de tabla rainbow o precomputación.

El número de iteraciones

El número de iteraciones es lo que determina directamente el coste computacional de derivar una clave. Un número mayor significa que cada intento de contraseña por parte de un atacante requiere más trabajo. SeedCrypt usa 600.000 iteraciones de PBKDF2-SHA512.

¿Por Qué 600.000 Iteraciones?

Las directrices del NIST de 2023 recomiendan un mínimo de 600.000 iteraciones para PBKDF2-SHA256 cuando se usa para el hash de contraseñas. Para SHA-512 (que es más lento por iteración en la mayoría del hardware), la protección equivalente se logra con algo menos de iteraciones, pero SeedCrypt usa 600.000 para coincidir con la recomendación actual del NIST con margen adicional.

En términos prácticos: una GPU de consumo moderna puede calcular aproximadamente 400.000 iteraciones de PBKDF2-SHA512 por segundo. Con 600.000 iteraciones por intento de contraseña, un atacante puede probar aproximadamente 0,67 intentos de contraseña por segundo por GPU.

Un ataque dirigido típico podría tener acceso a 100 GPUs de alta gama. Son aproximadamente 67 intentos de contraseña por segundo. Para una contraseña de 12 caracteres tomados de un conjunto de 72 caracteres (minúsculas, mayúsculas, dígitos, símbolos comunes), el espacio de búsqueda es aproximadamente 72^12 ≈ 19 cuatrillones de contraseñas posibles. A 67 intentos por segundo, agotar ese espacio de búsqueda llevaría aproximadamente 9.000 millones de años.

Incluso una contraseña más corta de 10 caracteres con el mismo conjunto de caracteres tardaría más de 2 millones de años en agotarse. El número de iteraciones transforma una contraseña prácticamente limitada en algo computacionalmente irreversible por fuerza bruta.

SHA-512 vs SHA-256 para PBKDF2

SeedCrypt usa PBKDF2-SHA512 en lugar del más común PBKDF2-SHA256 por dos razones. Primera, la longitud de salida: SHA-512 produce un hash de 512 bits, que es suficiente para derivar tanto una clave AES de 256 bits como una sal de 256 bits en una sola llamada de derivación sin ningún estiramiento adicional. Segunda, la asimetría de hardware: SHA-512 es nativamente rápido en CPUs de 64 bits pero funciona relativamente lento en hardware GPU y ASIC. Dado que los atacantes modernos dependen principalmente de granjas de GPU para la fuerza bruta, SHA-512 impone un coste proporcionalmente mayor sobre ellos que sobre el usuario legítimo que descifra en una CPU estándar.

Esta es una ventaja práctica significativa. Las mismas 600.000 iteraciones cuestan más en infraestructura para el atacante que lo que le cuesta al usuario el tiempo de espera del descifrado (que normalmente es inferior a un segundo en cualquier dispositivo moderno).

PBKDF2 vs Argon2 vs bcrypt

Los criptógrafos debaten los méritos relativos de las diferentes KDF. Argon2 (el ganador de la Password Hashing Competition en 2015) y bcrypt se mencionan frecuentemente como alternativas a PBKDF2.

Argon2 tiene una ventaja genuina: es intensivo en memoria, lo que significa que requiere grandes cantidades de RAM por intento además de ciclos de CPU. Esto limita significativamente la efectividad de los ataques de GPU y ASIC que se benefician de la alta paralelización pero que típicamente tienen RAM limitada por unidad de cómputo. Para las aplicaciones de mayor seguridad, Argon2id es actualmente la opción recomendada.

PBKDF2-SHA512 a 600.000 iteraciones sigue siendo un estándar bien comprendido, ampliamente desplegado y normalizado por el NIST que proporciona una seguridad sólida para el modelo de amenaza típico de un respaldo cifrado con contraseña. No es el estado del arte, pero está muy por encima del umbral mínimo y cuenta con un extenso análisis de seguridad en el mundo real que lo respalda.

Qué Significa Esto en la Práctica para la Seguridad de tu Seed Phrase

Cuando usas SeedCrypt para cifrar tu seed phrase, se genera una sal aleatoria de 256 bits para ese cifrado específico. Tu contraseña se procesa entonces con PBKDF2-SHA512 con 600.000 iteraciones combinadas con esa sal, produciendo una clave AES de 256 bits que se usa directamente para el cifrado AES-256-GCM. La sal y la etiqueta de autenticación se almacenan junto al texto cifrado para que el descifrado pueda reproducir la misma clave derivada.

Un atacante que obtiene tu respaldo cifrado ve la sal y el texto cifrado. Debe ejecutar PBKDF2-SHA512 con 600.000 iteraciones para cada intento de contraseña. Con cualquier contraseña razonablemente compleja (12 o más caracteres mixtos), esto es computacionalmente inviable dado cualquier recurso realista de un atacante.

La sal garantiza que, incluso si otro usuario de SeedCrypt eligiera la misma contraseña, tu respaldo cifrado usaría una clave completamente diferente. No existe vulnerabilidad por contraseña compartida.

SeedCrypt

Cifra tus seed phrases. Sin conexión. Para siempre.

AES-256-GCM · PBKDF2-SHA512 · Sin nube · Windows & Android

Obtener SeedCrypt desde €29

Conclusión

PBKDF2 es el mecanismo que hace viable el cifrado basado en contraseñas para proteger secretos valiosos como las seed phrases. Sin él, incluso el cifrado AES-256 sería vulnerable a los ataques de fuerza bruta contra contraseñas típicas de usuarios. Con él, el coste computacional de adivinar contraseñas se eleva a niveles que hacen que los ataques sean económica y computacionalmente inviables para cualquier atacante realista.

Entender PBKDF2 te ayuda a comprender por qué la solidez de la contraseña sigue importando: las contraseñas más largas y complejas aumentan aún más el coste del atacante, y por qué la combinación de una buena contraseña más 600.000 iteraciones de PBKDF2 proporciona una base sólida para la seguridad a largo plazo de tu seed phrase.