Ich habe über BIP32 HD Wallet und seine Implementierung gelesen und bin auf einige Fragen bezüglich des möglichen bekannten „Angriffs“-Vektors von durchgesickerten privaten untergeordneten Schlüsseln und bekannten übergeordneten Schlüsseln gestoßen, die zur Entdeckung des xpub
übergeordneten privaten Schlüssels führen. Gegeben ist der folgende Pfad einer HD-Wallet:
m/b/p/c
Wo m
ist der Master-Knoten, der von einem Seed abgeleitet ist, b, p, c
wobei es sich um indizierte Knoten in verschiedenen Tiefen handelt.
Stellen Sie sich vor, ein Server beobachtet und erstellt Empfangsadressen c
von p
's xpub
. Wenn der c
private Schlüssel eines Knotens von durchgesickert und der Server gehackt wird, wodurch xpub
der Angreifer aufgedeckt wird, könnte der Angriff nun p
's generieren xpriv
, und damit c
könnten alle privaten und öffentlichen Adressen des Knotens von vom Angreifer abgeleitet werden (gehärtet c
Knoten enthalten).
Erste Frage: Wenn es p
sich um einen gehärteten Knoten handelt, könnte der Angreifer seinen privaten Schlüssel trotzdem aus seinem xpub
und dem privaten Schlüssel eines Kindes berechnen?
xpriv
Zweite Frage: Könnte der Angreifer die Tiefe (Berechnung der übergeordneten ) von p
ganz nach oben "erklimmen", m
nachdem er p
's xpriv
aus dem geleakten c
Schlüssel und p
's berechnet hat xpub
? Würde ein Härter b
oder p
hier einen Unterschied machen?
Dritte Frage: Wenn ein privater Schlüssel aus c
der Tiefe von durchgesickert ist und der Angreifer m
den von kennt xpub
, kann der Angreifer dann m
den privaten Schlüssel berechnen oder erlaubt der Exploit nur die Berechnung des direkten Elternteils eines durchgesickerten Kindes?
Bonusfrage: Könnte jemand tatsächliche Anwendungsfälle für die Verwendung eines oder mehrerer gehärteter Knoten in einem Pfad nennen?
Erste Frage: Wenn es
p
sich um einen gehärteten Knoten handelt, könnte der Angreifer seinen privaten Schlüssel trotzdem aus seinemxpub
und dem privaten Schlüssel eines Kindes berechnen?
Ja. Es spielt keine Rolle, wie p
generiert wurde. Entscheidend ist, wie c
generiert wird.
xpriv
Zweite Frage: Könnte der Angreifer die Tiefe (Berechnung der übergeordneten ) vonp
ganz nach oben "erklimmen",m
nachdem erp
'sxpriv
aus dem geleaktenc
Schlüssel undp
's berechnet hatxpub
?
Nur wenn der Angreifer auch ein b
und m
's hat xpub
. Ein wichtiger Teil der Ableitung ist der Chaincode des Elternteils. Der Chaincode ist Teil des xpub
und wenn der Angreifer den Chaincode nicht hat, kann er den privaten Schlüssel des Elternteils nicht ableiten.
Würde ein Härter
b
oderp
hier einen Unterschied machen?
Wenn der Angreifer die Chaincodes b
von und hätte m
, würde Härtung einen Unterschied machen. Die Härtung verhindert diesen Angriff vollständig. Das Härten erlaubt es jedoch niemandem, einen xpub
Schlüssel ohne den privaten Schlüssel zu haben und zu generieren.
Dritte Frage: Wenn ein privater Schlüssel aus
c
der Tiefe von durchgesickert ist und der Angreiferm
den xpub von kennt, kann der Angreifer dann den privaten Schlüssel von m berechnen oder erlaubt der Exploit nur die Berechnung des direkten Elternteils eines durchgesickerten Kindes?
Der Angriff funktioniert nur auf einem untergeordneten Schlüssel und seinem direkten übergeordneten erweiterten öffentlichen Schlüssel.
Angesichts m
des xpub- und c
des privaten Schlüssels von kann es jedoch immer noch möglich sein, den privaten Schlüssel von wiederzugewinnen, m
obwohl er nicht c
der direkte Elternschlüssel von ist. Wenn b
und p
unter Verwendung einer ungehärteten Ableitung abgeleitet werden, m
kann then zum Ableiten von und b
verwendet werden . Von dort aus kann der Angreifer mit all diesen s rückwärts arbeiten, um .p
xpub
xpub
c
m
Wenn b
und p
verhärtet sind, dann ist es nicht möglich.
Bonusfrage: Könnte jemand tatsächliche Anwendungsfälle für die Verwendung eines oder mehrerer gehärteter Knoten in einem Pfad nennen?
Nehmen Sie zum Beispiel BIP 44. Es definiert einen Standardableitungspfad von m/44'/0'/0'/i/k
. Das xpub at m/44'/0'/0'
wird ausgegeben. Aber da er selbst mit gehärteter Ableitung abgeleitet wird, ist der Hauptschlüssel des Benutzers immer noch sicher, wenn irgendwelche von m
, m/44'
oder m/44'/0'
's durchgesickert sind, da gehärtete Ableitung verwendet wird.xpub
Darüber hinaus leitet Bitcoin Core alle Schlüssel mithilfe einer gehärteten Ableitung ab. Dies liegt daran, dass BIP 32 für die einfachere Backup-Funktion verwendet wird (Sie können ein älteres Backup verwenden und immer noch dieselben Schlüssel erhalten) und nicht für die Überprüfbarkeit.
G. Maxwell
Luis Pais
c
'sxpriv
undp
'sxpub
bekannt wären,c
würden nur die Knoten von exponiert und der Angreifer könnte nichts anderes mit den restlichenc
übergeordneten Knoten von machen. Im Wesentlichen ist das Härten von Knoten nur in einem Szenario nützlich, in dem auch oderm
bekannt sind, wodurch der gesamte Baum mit einem beliebigen privaten Schlüssel exponiert wird, ist das richtig?b
xpub
c
Andreas Chow
Luis Pais