Glosario / Billeteras y custodia
Derivación de la semilla
- ¿Qué es la derivación de la semilla?
- La derivación de la semilla es la función unidireccional que convierte una frase mnemónica más una frase de contraseña opcional en la semilla de 512 bits a partir de la cual una billetera realmente construye las claves.
Se especifica en el BIP-39.
La función es PBKDF2 con HMAC-SHA512, ejecutada sobre las palabras mismas en lugar de sobre la aleatoriedad que hay detrás de ellas. BIP-39 fija el número de iteraciones en 2.048 y la salida en 64 bytes, con su frase de contraseña añadida a la palabra fija "mnemonic" para formar la sal. Nada en ese paso comprueba si las palabras alguna vez fueron válidas, así que una frase mal escrita sigue produciendo una semilla bien formada y una billetera vacía.
Cómo funciona
La derivación de la semilla toma dos entradas y devuelve una salida, en una sola llamada sin estado y sin memoria de lo que haya producido las palabras. La frase mnemónica es la contraseña. La sal es el texto "mnemonic" con cualquier frase de contraseña pegada al final, y una cadena vacía la sustituye cuando no se estableció ninguna frase de contraseña. Ambas pasan primero por la normalización Unicode NFKD, de modo que los caracteres acentuados en una frase en francés o español producen el mismo hash sin importar qué teclado los escribió.
BIP-39 afirma que esta mitad del estándar es "completely independent" de la mitad que genera una frase, y lo dice en tono de aprobación: no hay restricciones sobre la estructura de la frase, y los clientes pueden escribir sus propias listas de palabras o incluso generadores de frases completos. La lectura práctica es más cruda. Si se le da a la función doce palabras sin sentido, esta devuelve 64 bytes perfectamente utilizables. BIP-39 exige que el software calcule la suma de comprobación fuera de este paso y "issue a warning if it is invalid", una advertencia en lugar de un rechazo, razón por la cual algunas herramientas restaurarán una frase que acaban de decirle que está rota.
De calcular el hash de la frase en lugar del de la entropía que hay detrás surgen dos consecuencias. Traducir una frase palabra por palabra a otro idioma produce una semilla completamente distinta, porque los bytes de entrada cambiaron aunque la aleatoriedad subyacente no lo hizo. Y la dirección nunca se revierte: una semilla BIP-32 arbitraria no se puede volver a escribir como una frase BIP-39, razón por la cual "exportar la semilla" y "exportar las palabras" son solicitudes distintas.
Dónde aparece
La derivación de la semilla sale a la superficie en el momento en que dos piezas de software no están de acuerdo sobre qué función ejecutar. El respaldo de múltiples partes en el Trezor Safe 3 y el Safe 5, ambos reseñados aquí, es SLIP-39 en lugar de BIP-39: una lista de 1.024 palabras leída 10 bits a la vez, lo que da 20 palabras por parte para un secreto de 128 bits y 33 palabras para uno de 256 bits. Esas partes nunca tocan el paso PBKDF2 de BIP-39. SLIP-39 fue publicado por los propios autores de BIP-39 como reemplazo, y culpa a "the overly coupled design of BIP-0039 and its use of a one-way derivation function" del hecho de que las partes no se puedan convertir de vuelta; ir en la otra dirección funciona, pero obliga a que cada parte resultante tenga 59 palabras, sin importar la longitud con la que se empezó.
La reseña de Coldcard en este sitio muestra lo que la derivación no puede hacer por usted. Una migración de firmware en marzo de 2021 dejó que la generación de la semilla tomara datos de un generador de números pseudoaleatorios por software en lugar del generador por hardware, y Coinkite actualizó su aviso el 1 de agosto de 2026. La derivación en sí nunca falló. Convirtió un secreto débil en una semilla de 64 bytes bien formada, situada detrás de una suma de comprobación válida, y ninguna billetera aguas abajo tuvo forma alguna de notarlo.
Para observar cómo se ejecuta la función sin arriesgar nada, BIP-39 publica vectores de prueba que alinean la entropía, el mnemónico y la semilla resultante, usando la frase de contraseña "TREZOR" para cada vector.
Derivación de la semilla frente a ruta de derivación
La derivación de la semilla ocurre una vez, antes de que exista una sola clave; una ruta de derivación se consulta después, cada vez que se necesita una dirección. Esa diferencia decide hasta qué punto resulta grave una restauración que parece vacía. Una ruta equivocada es una configuración: cambie el tipo de script, vuelva a escanear, y el saldo aparece. Una frase de contraseña equivocada cambia la semilla, lo que cambia todo el árbol debajo de ella, y ninguna configuración en ningún lugar trae de vuelta la anterior.