Glosario / Direcciones y claves
Clave hija
También se conoce como Clave pública hija o Clave privada hija.
- ¿Qué es una clave hija?
- Una clave hija sale de un paso de derivación y no de un generador de números aleatorios, y se identifica por el índice que su clave padre usó para producirla.
Se especifica en el BIP-32.
Nada en una clave hija es más débil que la clave que está por encima de ella. Una clave hija es una clave privada completa de 256 bits con su propio código de cadena, capaz de firmar transacciones y de tener, a su vez, claves hijas. La palabra describe una posición en un árbol, y en una billetera estándar las claves que realmente guardan sus monedas están cinco niveles por debajo de la raíz del árbol.
Cómo funciona
Derivar una clave hija requiere un hash y una suma. El código de cadena de la clave padre se convierte en la clave de HMAC-SHA512, los datos son el material de la clave padre seguido de un índice de cuatro bytes, y el resultado de 64 bytes se divide por la mitad. Los 32 bytes de la derecha se convierten en el código de cadena de la clave hija. Los 32 bytes de la izquierda se suman a la clave privada padre, módulo el orden de la curva secp256k1, y la suma es la clave privada hija.
Esa suma es la razón de que la derivación pública sea siquiera posible. Sumar un número a una clave privada equivale a sumar un punto a la clave pública, así que un software que solo tenga la parte pública puede calcular la misma clave pública hija sin ver nunca un secreto. BIP-32 también contempla el caso en que el resultado del hash cae fuera del rango válido, cuya probabilidad sitúa por debajo de 1 entre 2 elevado a 127, y la instrucción es saltarse ese índice y pasar al siguiente.
Las claves hermanas no delatan nada. Dos claves hijas de una misma clave padre no comparten nada que un observador pueda detectar a partir de sus direcciones, y eso es lo que hace que valga la pena usar una dirección nueva por pago. Solo puede recuperar la relación quien tenga la clave pública extendida padre.
Dónde aparece
Una billetera está hecha, en realidad, de claves hijas, así que usted se las encuentra como números de índice y no como claves.
Abra una pantalla de control de monedas en Sparrow o Electrum y verá que cada dirección lleva su ruta: m/84'/0'/0'/0/7 es la octava dirección de recepción de la primera cuenta, contando desde cero. Confirme un retiro en un Trezor o en un Ledger y el dispositivo mostrará esa misma ruta junto a la dirección, que es como usted comprueba que el destino pertenece a su propio árbol y no a quien haya comprometido la computadora.
También vale la pena leer la profundidad. La clave maestra está en la profundidad 0, y en una ruta al estilo de BIP-44 la clave que firma un pago está en la profundidad 5. Cada nivel intermedio es hijo del de arriba y padre del de abajo, así que ambas palabras describen una relación y no un rango.
De todo esto se desprende un hábito. Nunca exporte una clave privada hija individual de una billetera HD, salvo que tenga la intención de abandonar la rama por completo. Una clave privada hija no endurecida, combinada con la clave pública extendida padre, revela la clave privada extendida padre, así que una sola exportación descuidada puede entregar una cuenta entera en lugar de una dirección.
Clave hija frente a clave padre
Una clave hija y una clave padre son el mismo tipo de objeto visto desde los extremos opuestos de un paso de derivación. Toda clave, salvo la maestra, es la clave hija de otra, y toda clave de la que se ha derivado alguna es la clave padre de otra, así que un nodo del árbol en m/84'/0'/0' es ambas cosas a la vez. La asimetría está en lo que cada una puede calcular. Una clave padre deriva sus claves hijas sin límite, mientras que una clave hija, por sí sola, no dice nada de la clave que tiene por encima. Esa propiedad unidireccional es todo el modelo de seguridad del árbol, y la derivación endurecida es lo que la mantiene unidireccional.