Saltar al contenido
buybitcoinsmart

Glosario / Direcciones y claves

Derivación endurecida

También se conoce como Derivación reforzada.

¿Qué es la derivación endurecida?
La derivación endurecida introduce la clave privada padre en cada cálculo de una clave hija, y eso es lo que impide que una clave pública extendida filtrada desentrañe la rama que hay debajo de ella.

Se especifica en el BIP-32.

Cada nodo de un árbol BIP-32 puede producir 4.294.967.296 hijos, y la mitad superior de ese rango se comporta de forma distinta. Los índices a partir de 2.147.483.648 son endurecidos, se escriben con un apóstrofo o con la letra h, y ninguna clave pública puede derivarlos. Esa restricción es la ventaja, no una carencia.

Cómo funciona

La derivación endurecida y la normal difieren en un solo valor de entrada del mismo hash. Ambas introducen en HMAC-SHA512 el código de cadena de una clave padre y un índice de la clave hija. La derivación normal añade la clave pública padre, que ya tiene cualquiera que posea la clave pública extendida. La derivación endurecida añade en su lugar la clave privada padre, precedida de un byte cero, así que el cálculo no puede realizarse sin el secreto.

El motivo es una debilidad concreta que BIP-32 detalla en sus notas de seguridad: conocer una clave pública extendida padre más cualquier clave privada no endurecida que descienda de ella equivale a conocer la clave privada extendida padre y, por lo tanto, todas las claves por debajo de ese punto. La aritmética que hay detrás es sencilla. Una clave privada hija normal es igual a la clave padre más un valor calculado a partir de información pública, así que restar ese valor recupera la clave padre.

Los índices endurecidos cierran esa ruta. No existe una función de derivación pública para ellos, así que una clave pública extendida se detiene en seco en la frontera. Una xpub filtrada de una cuenta expone el historial de esa cuenta y nada por encima ni al lado de ella.

Dónde aparece

El endurecimiento aparece como los apóstrofos de una ruta de derivación, y dónde caen es una decisión de diseño deliberada.

La ruta estándar de SegWit nativo es m/84'/0'/0'/0/0. Los tres primeros niveles, propósito, tipo de moneda y cuenta, están endurecidos. Los dos últimos, cadena e índice de dirección, no lo están. Esa separación es exactamente lo que hace viable una billetera de solo lectura: una clave pública extendida de cuenta puede generar todas las direcciones de recepción y de cambio que hay debajo de ella, mientras que un atacante que obtenga esa misma xpub no puede subir hacia la clave maestra ni desplazarse lateralmente hacia m/84'/0'/1'.

La notación varía sin cambiar nada. BIP-32 escribe 0', muchas herramientas aceptan 0h, y Bitcoin Core escribe h en los descriptores que exporta porque un apóstrofo necesita escaparse dentro de JSON. Una ruta copiada de Sparrow a Core vuelve reescrita en la forma h, lo que alarma a la gente la primera vez y es puramente estético.

La regla práctica es breve. Endurezca cada nivel hasta la cuenta, deje no endurecidos los dos niveles que hay por debajo para que las herramientas de solo lectura sigan funcionando, y trate cualquier software que ofrezca exportar una sola clave privada hija no endurecida como un peligro y no como una comodidad, porque esa exportación combinada con su xpub es toda la rama.

Derivación endurecida frente a una frase de contraseña

La derivación endurecida es automática; una frase de contraseña BIP-39 es un secreto que usted elige. Se agrupan como formas de endurecer una billetera y abordan problemas sin relación entre sí. El endurecimiento protege un árbol frente a una clave pública extendida que se ha escapado, y toda billetera estándar ya lo aplica sin preguntarle. Una frase de contraseña es un valor de entrada adicional que se mezcla en la semilla antes siquiera de construir el árbol, y produce una billetera completamente distinta a partir de las mismas doce o veinticuatro palabras. Si olvida la frase de contraseña, las monedas quedan inalcanzables, porque nada la registra en ninguna parte. Si se olvida del endurecimiento, no pasa nada, porque nunca fue usted quien lo decidía.

No confundir con

Preguntas frecuentes

¿Qué significa el apóstrofo en m/84'/0'/0'?

Marca un nivel endurecido, lo que significa que el índice es 2.147.483.648 o superior y que la clave hija solo puede derivarse con la clave privada padre. Algunas herramientas escriben h en su lugar, y Bitcoin Core usa h en los descriptores porque JSON obligaría a escapar el apóstrofo.

¿Tengo que configurar yo mismo la derivación endurecida?

No. Toda billetera que sigue BIP-44, BIP-49, BIP-84 o BIP-86 endurece automáticamente los niveles de propósito, tipo de moneda y cuenta, y deja no endurecidos los dos niveles inferiores para que las billeteras de solo lectura sigan funcionando.

Para seguir leyendo

Términos relacionados

Más en la sección Direcciones y claves

Leer esta página en inglés