Claves extendidas
Claves que pueden derivar nuevas claves en una cartera HD
BIP 32
Una clave extendida (extended key) es una clave privada o pública que puede usarse para derivar nuevas claves en una cartera HD.
Puedes tener una única clave privada extendida y usarla como fuente para todas las claves privadas y claves públicas hijas de tu cartera. Además, una clave privada extendida tiene una clave pública extendida correspondiente, que puede generar solo las claves públicas hijas.
Clave extendida maestra
La clave extendida maestra es la primera clave extendida de la cartera. Se crea pasando la seed por la función HMAC-SHA512 (con la clave "Bitcoin seed"). La función devuelve 64 bytes, que dividimos en dos mitades:
- Los primeros 32 bytes son la clave privada maestra.
- Los últimos 32 bytes son el código de cadena (chain code), una entropía extra usada en la derivación de las claves hijas.
Juntos, la clave privada + el código de cadena (más algunos metadatos) forman la clave privada extendida (xprv).
HMAC-SHA512
Derivación de clave hija
Para derivar una clave hija, pasas la clave padre + el código de cadena + un índice (número de la hija) por HMAC-SHA512. El resultado se usa para crear la clave hija y el código de cadena hijo. Cambiando el índice, obtienes hijas diferentes.
Derivación normal vs. endurecida (hardened)
Hay dos tipos de derivación:
- Normal (índices 0 a 2³¹−1): puede hacerse a partir de la clave pública extendida (permite generar direcciones sin la clave privada).
- Endurecida (índices 2³¹ a 2³²−1, anotada con
'): exige la clave privada. Es más segura, porque impide que la filtración de una clave pública extendida + una clave privada hija comprometa al padre.
Dirección de la clave extendida
A partir de cualquier clave extendida, puedes derivar la clave pública hija y, a partir de ella, una dirección: