Glosario / Billeteras y custodia
Semilla de billetera HD
También se conoce como Semilla raíz.
- ¿Qué es la semilla de billetera HD?
- La semilla de billetera HD es el número binario en bruto, de 128 a 512 bits, que BIP-32 introduce en un único hash para producir la clave maestra y el código de cadena de una billetera.
Se especifica en el BIP-32.
Las billeteras hablan de palabras porque las personas pueden copiarlas a mano, pero BIP-32 nunca ve palabras. Consume una cadena de bytes y produce una clave maestra en un único paso de HMAC-SHA512, utilizando como clave el texto fijo "Bitcoin seed". Las palabras son una codificación popular de esa cadena de bytes, y no la única en uso.
Cómo funciona
BIP-32 especifica una semilla de entre 128 y 512 bits, recomienda 256 y no dice nada sobre de dónde proceden esos bits. La semilla entra en HMAC-SHA512 como el mensaje, con la cadena ASCII "Bitcoin seed" como clave. La función devuelve 64 bytes. Los 32 de la izquierda se convierten en la clave privada maestra; los 32 de la derecha se convierten en el código de cadena maestro, el secreto adicional que impide que una clave hija filtrada exponga sus hermanas. Todo lo demás en una billetera, cada cuenta, cada dirección, cada salida de cambio, desciende de ese par repitiendo un hash similar con un número de índice.
La especificación incluye un caso límite que nunca ocurre en la práctica. Si esos 32 bytes de la izquierda resultan ser cero, o un valor igual o superior al orden de la curva secp256k1, la semilla no es válida y la billetera debe intentarlo de nuevo. La probabilidad es de alrededor de uno entre 2 elevado a 127, así que ninguna implementación ha informado nunca de haberlo encontrado.
De dónde proceden los bits es una capa aparte, y hay varias respuestas. BIP-39 siempre emite exactamente 512 bits al pasar el mnemónico por PBKDF2. Electrum pasa su propia frase por PBKDF2 con una sal diferente y obtiene una semilla que ninguna herramienta BIP-39 reproducirá jamás a partir de las mismas palabras. Una billetera también puede tomar 256 bits directamente de un generador de números aleatorios por hardware y no mostrar ninguna frase, y eso es lo que hace Bitcoin Core.
La dirección del recorrido importa. Las palabras se convierten en una semilla; una semilla no se convierte en palabras. Una vez que una billetera solo conserva el valor en bruto, ningún software podrá imprimir un mnemónico a partir de él, razón por la cual exportar "la semilla" no sustituye a conservar la frase que la produjo.
Dónde aparece
Pregunte a Bitcoin Core sobre una billetera y este informa de un hdseedid, una huella digital de la semilla, en lugar de cualquier frase, porque Core nunca ha implementado BIP-39. La llamada RPC sethdseed, añadida en la versión 0.17.0, podía instalar una semilla concreta en una billetera heredada, y las billeteras de descriptores pasaron a ser las predeterminadas para las billeteras recién creadas en Bitcoin Core 23.0.
La documentación para desarrolladores es el otro lugar donde aparece a la vista de todos. Tanto BIP-32 como BIP-39 publican vectores de prueba que muestran la semilla como 128 caracteres hexadecimales junto al mnemónico que la produjo, lo cual es la ilustración más clara disponible de que son dos objetos distintos.
El momento práctico en que esto se nota es al migrar entre herramientas. Algunas billeteras y especificaciones, incluidos los respaldos de semilla de Coldcard y varias utilidades para desarrolladores, importan o exportan el valor en bruto en lugar de palabras. Entregar una semilla en bruto a una herramienta que espera un mnemónico, o al revés, produce un error o, peor aún, una billetera válida pero vacía. Compruebe qué capa está pidiendo un campo antes de pegar nada en él.
Semilla de billetera HD frente a frase semilla
La semilla es un número; la frase es una forma de escribir ese número. Mantenerlas separadas explica varias cosas que de otro modo parecen magia. Es la razón por la que añadir una frase de contraseña opcional cambia la semilla mientras deja sus palabras intactas. Es la razón por la que la frase de Electrum y una frase BIP-39 pueden ser ambas doce palabras en inglés y aun así abrir billeteras distintas. Y es la razón por la que una billetera que anuncia "importación de semilla" puede referirse a un mnemónico, una cadena hexadecimal o una clave privada extendida, tres entradas que comparten un apodo y nada más.