Saltar al contenido
buybitcoinsmart

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.

No confundir con

Preguntas frecuentes

¿La derivación de la semilla comprueba que mis palabras sean válidas?

No, acepta cualquier texto. BIP-39 sitúa la verificación de la suma de comprobación fuera de la función de derivación y solo exige a las billeteras que le adviertan cuando falla, así que una frase con una palabra incorrecta sigue derivando una semilla de 64 bytes perfectamente formada y abre una billetera vacía.

¿Una frase semilla traducida abre la misma billetera?

No, abre una distinta. La derivación calcula el hash de la frase y no de la aleatoriedad que hay detrás, así que cambiar las palabras en inglés por sus equivalentes en español o japonés cambia los bytes de entrada y, por lo tanto, cambia todas las claves que vienen después.

¿La derivación de la semilla es lo mismo que BIP-39?

Es la mitad de BIP-39. El estándar especifica dos conversiones separadas: de entropía a palabras, y de palabras a semilla. La derivación de la semilla es la segunda, y BIP-39 afirma que las dos son completamente independientes entre sí.

Para seguir leyendo

Términos relacionados

Más en la sección Billeteras y custodia

Leer esta página en inglés