489 / 691PBKDF2

PBKDF2

Derivación del seed en BIP39

PBKDF2 convierte texto de entrada y sal en una clave derivada mediante cálculos repetidos. BIP39 lo usa para convertir frase mnemónica y passphrase en un seed; no genera nueva aleatoriedad.

Password-Based Key Derivation Function 2 es una función determinista parametrizada por entrada, sal, número de iteraciones, función seudoaleatoria y longitud de salida. BIP39 fija un perfil concreto PBKDF2-HMAC-SHA512, no todas las aplicaciones posibles de PBKDF2.

La entrada denominada password es la frase mnemónica en UTF-8 NFKD. La sal es mnemonic + passphrase, también en UTF-8 NFKD; sin passphrase se añade un valor vacío. BIP39 exige HMAC-SHA512, 2048 iteraciones y 64 bytes, o 512 bits, de salida. [BIP39 — Mnemonic generation and seed conversion]

PBKDF2 crea el primer resultado intermedio con la entrada de contraseña, la sal y el índice del bloque de salida. Calcula los siguientes aplicando la misma función seudoaleatoria al resultado anterior y combina los valores mediante XOR. Con HMAC-SHA512, un bloque tiene 64 bytes, por lo que BIP39 necesita uno. No basta con aplicar SHA-512 al texto 2048 veces. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]

Las mismas entradas normalizadas y los mismos parámetros producen el mismo seed. Aumentar arbitrariamente las 2048 iteraciones o cambiar la función al recuperar no mejora la seguridad de la cartera existente: el resultado deja de coincidir con la derivación BIP39 prescrita. Traducir las palabras a otra lista tampoco es un cambio neutro. [BIP39 — Mnemonic generation and seed conversion]

Las iteraciones aumentan el trabajo por intento, pero no añaden aleatoriedad secreta independiente. Con las palabras y datos de comparación de la cartera, un atacante puede probar passphrases débiles sin conexión. Una salida de 512 bits no implica protección equivalente a 512 bits de entropía, y 2048 no es una recomendación universal para sistemas nuevos. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]

El checksum BIP39 ayuda a detectar errores en las palabras antes de usarlas. La conversión PBKDF2 es independiente de la generación y validación de la frase; no certifica que la passphrase pertenezca a la cartera buscada. BIP32 u otros métodos deterministas pueden utilizar después el seed como paso posterior. [BIP39 — Mnemonic generation and seed conversion]

Los vectores públicos BIP39 indican entropía, palabras y seed esperado con la passphrase de prueba TREZOR. Una implementación correcta debe reproducir toda la salida y respetar NFKD. Estas entradas conocidas nunca deben ser una copia propia para fondos; coincidir con el vector tampoco verifica por sí solo la seguridad de toda la aplicación. [BIP39 — Mnemonic generation and seed conversion]

Para obtener la imagen más completa, lee esta entrada junto con BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. También enlazan con esta entrada BIP39 passphrase.

DOC · 001BIP39 — Mnemonic generation and seed conversionEspecificación ↗DOC · 002RFC8018 — PBKDF2 constructionEspecificación ↗
Fuentes primero · No es asesoramiento financiero