Determinación de xprv a partir de xpub y clave privada secundaria

Estoy confundido por la redacción en BIP0032:

Una debilidad que puede no ser obvia de inmediato es que el conocimiento de una clave pública extendida principal más cualquier clave privada no reforzada que descienda de ella es equivalente a conocer la clave privada extendida principal (y, por lo tanto, todas las claves públicas y privadas que descienden de ella). Esto significa que las claves públicas extendidas deben tratarse con más cuidado que las claves públicas normales. También es la razón por la que existen claves reforzadas y por qué se utilizan para el nivel de cuenta en el árbol. De esta manera, una fuga de clave privada específica de la cuenta (o inferior) nunca corre el riesgo de comprometer la cuenta maestra u otras cuentas.

El diseño de billetera recomendado predeterminado es m/0'/0/i.

Entonces, si filtro el xpubde m/0'/0(que, en teoría, tiene mi auditor) y una clave privada en , ¿no se verían comprometidas m/0'/0/14todas las claves ? m/0'/0/iLo entiendo m/1'y mestá a salvo, pero ahora ha perdido una cuenta completa cuando todo lo que se necesitaba hacer era fortalecer el índice. ¿A qué se debe esta recomendación?

Respuestas (1)

Esta recomendación proviene directamente de una de las consideraciones de seguridad del mismo documento:

Sin embargo, tenga en cuenta que las siguientes propiedades no existen: (...) Dada una clave pública ampliada principal (K par , c par ) y una clave privada secundaria no reforzada (k i ), es difícil encontrar k par .

El motivo de esta recomendación es el hecho de que todas las derivaciones de claves no endurecidas se basan en algunas de las propiedades de la curva elíptica. Uno de ellos es que puede agregar algún número a la clave privada (que en sí mismo es un número ordinario). Cuando convierte el mismo número al punto en la curva elíptica, puede agregarlo a la clave pública (que en sí misma es el punto en la curva elíptica). Esta nueva clave privada es exactamente la clave privada de la nueva clave pública.

El problema es que este número que agregamos (analizar 256 (I L )) se puede calcular a partir de la clave pública principal y la clave privada principal.

Entonces, si conocemos la clave privada secundaria k secundaria y el número antes mencionado parse 256 (I L ) (que conocemos, porque conocemos la clave pública principal), entonces podemos reorganizar la ecuación de la que se derivó esta clave:

k niño = parse 256 (I L ) + k par (mod n)

y busque k par , que es la clave privada principal.