Posible vector de ataque de la billetera BIP32 HD

He estado leyendo sobre la billetera BIP32 HD y su implementación y me encontré con algunas preguntas sobre el posible vector de "ataque" conocido de claves secundarias privadas filtradas y xpubclave principal conocida que conduce al descubrimiento de la clave privada principal. Dada la siguiente ruta de una billetera HD:

m/b/p/c

Donde mse deriva el nodo maestro de una semilla, b, p, csiendo nodos indexados en diferentes profundidades.

Imagine que un servidor está observando y creando cdirecciones de recepción pde xpub. Si una de clas claves privadas del nodo se filtra y el servidor es pirateado, revelando así xpubal atacante, el ataque ahora podría generar p's y con eso, el atacante podría derivar xprivtodas las direcciones públicas y privadas del nodo (reforzadas). nodos incluidos).cc

Primera pregunta: si pfuera un nodo reforzado, ¿podría el atacante calcular su clave privada a partir de su xpubclave privada y la de un niño?

Segunda pregunta: ¿Podría el atacante "subir" la profundidad (calcular los padres xpriv) desde ptodo el camino hasta mdespués de calcular plos xprivde la cclave filtrada y plos xpub? ¿Haría una diferencia aquí un endurecido bo ?p

cTercera pregunta: si se filtró una clave privada de profundidad y el atacante mla conocía xpub, ¿podría el atacante calcular mla clave privada o el exploit solo permite calcular el padre directo de un niño filtrado?

Pregunta adicional: ¿Alguien podría dar casos de uso reales para usar uno o más nodos reforzados en una ruta?

Respuestas (1)

Primera pregunta: si pfuera un nodo reforzado, ¿podría el atacante calcular su clave privada a partir de su xpubclave privada y la de un niño?

Sí. No importa cómo pse generó. Lo que importa es cómo cse genera.

Segunda pregunta: ¿Podría el atacante "subir" la profundidad (calcular los padres xpriv) desde ptodo el camino hasta mdespués de calcular plos xprivde la cclave filtrada y plos xpub?

Solo si el atacante también tiene by ms xpub. Una parte importante de la derivación es el código de cadena del padre. El código de cadena es parte del xpuby si el atacante no tiene el código de cadena, entonces no puede obtener la clave privada del padre.

¿Haría una diferencia aquí un endurecido bo ?p

Si el atacante tuviera los códigos de cadena bde y m, sí, el endurecimiento marcaría la diferencia. El endurecimiento evita por completo este ataque. Sin embargo, el endurecimiento no permite que alguien tenga xpuby pueda generar claves sin la clave privada.

cTercera pregunta: si se filtró una clave privada de profundidad y el atacante conocía mel xpub de , ¿podría el atacante calcular la clave privada de m o el exploit solo permite calcular el padre directo de un niño filtrado?

El ataque solo opera en una clave secundaria y su clave pública extendida principal directa.

Sin embargo, dado mel xpub y cla clave privada de s, aún puede ser posible recuperar mla clave privada de s aunque no sea cel padre directo de s. Si by pse derivan utilizando una derivación no endurecida, entonces mse pueden utilizar para derivar by ps xpub. A partir de ahí, con todos esos xpubs, el atacante puede trabajar hacia atrás cpara obtener m.

Si by pestán endurecidos, entonces no es posible.

Pregunta adicional: ¿Alguien podría dar casos de uso reales para usar uno o más nodos reforzados en una ruta?

Tome BIP 44 por ejemplo. Define una ruta de derivación estándar de m/44'/0'/0'/i/k. m/44'/0'/0'Se entrega el xpub at . Pero dado que en sí se deriva con una derivación reforzada, si se filtra alguna de las claves maestras del usuario, la clave maestra del usuario sigue siendo segura, ya que se utiliza la mderivación m/44'reforzada m/44'/0'.xpub

Además, Bitcoin Core deriva todas las claves utilizando una derivación reforzada. Esto se debe a que utiliza BIP 32 para una función de copia de seguridad más sencilla (puede utilizar una copia de seguridad más antigua y seguir obteniendo todas las mismas claves) en lugar de la auditabilidad.

Los códigos de cadena están destinados a compartirse con otros, no se publican en la cadena de bloques, pero no son datos secretos. Describir que la derivación pública de BIP32 es segura contra las relaciones de clave privada siempre que el atacante no sepa que el código de cadena es técnicamente correcto, pero podría ser un poco engañoso.
Por lo tanto, en la ruta anterior, si se conocieran algunos c's xprivy p's , solo los nodos de 's estarían expuestos y el atacante no podría hacer nada más con el resto de los nodos principales de 's. En esencia, endurecer los nodos solo es útil en un escenario en el que también se conocen o , lo que hace que todo el árbol quede expuesto con cualquier clave privada, ¿es correcto? xpubccmbxpubc
Si, eso es correcto. Pero como señala G. Maxwell, el código de cadena está destinado a ser compartido y compartir el código de cadena dará como resultado que todo el árbol quede expuesto.
Muy bien, eso es todo lo que necesitaba saber, ¡gracias!