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 xpub
clave principal conocida que conduce al descubrimiento de la clave privada principal. Dada la siguiente ruta de una billetera HD:
m/b/p/c
Donde m
se deriva el nodo maestro de una semilla, b, p, c
siendo nodos indexados en diferentes profundidades.
Imagine que un servidor está observando y creando c
direcciones de recepción p
de xpub
. Si una de c
las claves privadas del nodo se filtra y el servidor es pirateado, revelando así xpub
al atacante, el ataque ahora podría generar p
's y con eso, el atacante podría derivar xpriv
todas las direcciones públicas y privadas del nodo (reforzadas). nodos incluidos).c
c
Primera pregunta: si p
fuera un nodo reforzado, ¿podría el atacante calcular su clave privada a partir de su xpub
clave privada y la de un niño?
Segunda pregunta: ¿Podría el atacante "subir" la profundidad (calcular los padres xpriv
) desde p
todo el camino hasta m
después de calcular p
los xpriv
de la c
clave filtrada y p
los xpub
? ¿Haría una diferencia aquí un endurecido b
o ?p
c
Tercera pregunta: si se filtró una clave privada de profundidad y el atacante m
la conocía xpub
, ¿podría el atacante calcular m
la 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?
Primera pregunta: si
p
fuera un nodo reforzado, ¿podría el atacante calcular su clave privada a partir de suxpub
clave privada y la de un niño?
Sí. No importa cómo p
se generó. Lo que importa es cómo c
se genera.
Segunda pregunta: ¿Podría el atacante "subir" la profundidad (calcular los padres
xpriv
) desdep
todo el camino hastam
después de calcularp
losxpriv
de lac
clave filtrada yp
losxpub
?
Solo si el atacante también tiene b
y m
s xpub
. Una parte importante de la derivación es el código de cadena del padre. El código de cadena es parte del xpub
y 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
b
o ?p
Si el atacante tuviera los códigos de cadena b
de 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 xpub
y pueda generar claves sin la clave privada.
c
Tercera pregunta: si se filtró una clave privada de profundidad y el atacante conocíam
el 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 m
el xpub y c
la clave privada de s, aún puede ser posible recuperar m
la clave privada de s aunque no sea c
el padre directo de s. Si b
y p
se derivan utilizando una derivación no endurecida, entonces m
se pueden utilizar para derivar b
y p
s xpub
. A partir de ahí, con todos esos xpub
s, el atacante puede trabajar hacia atrás c
para obtener m
.
Si b
y p
está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 m
derivació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.
G.Maxwell
Luis País
c
'sxpriv
yp
'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?xpub
c
c
m
b
xpub
c
andres chow
Luis País