BIP-32 - Wie kann der erweiterte öffentliche Elternschlüssel den erweiterten privaten Elternschlüssel offenlegen?

Unten ist das Snippet von bip-32. Ich verstehe nicht, unter welchen Umständen würde der „erweiterte öffentliche Schlüssel des Elternteils“ offengelegt werden? Im Fall von E-Commerce wird ein „untergeordneter erweiterter öffentlicher Schlüssel“ von einem „übergeordneten erweiterten öffentlichen Schlüssel“ abgeleitet. Die E-Commerce-Website muss nur den „untergeordneten erweiterten öffentlichen Schlüssel“ kennen, um öffentliche Schlüssel/Adressen abzuleiten. Wird in einem solchen Fall das Wissen um den „erweiterten öffentlichen Schlüssel des Kindes“ den „erweiterten privaten Schlüssel des Elternteils“ offenlegen?

„Eine Schwäche, die vielleicht nicht sofort offensichtlich ist, ist, dass die Kenntnis eines erweiterten öffentlichen Elternschlüssels plus aller nicht gehärteten privaten Schlüssel, die davon abstammen, gleichbedeutend ist mit der Kenntnis des erweiterten privaten Elternschlüssels (und somit aller davon abstammenden privaten und öffentlichen Schlüssel). ."

Beispiel für ein Code-Snippet in Javascript

function testXPub() {
 const mnemonic = 'ddddddddddddddddddddddddddddddddddddddddddddddd'
 const seed = bip39.mnemonicToSeed(mnemonic)
 const node = bip32.fromSeed(seed)
 const xpubNode = node.neutered()
 console.log("xpubNode :%o", xpubNode)
 console.log("xpubNode (string): %o", xpubNode.toBase58())

 const xpub_m_0_node = xpubNode.derive(0)
 console.log("xpub_m_0_node :%o", xpub_m_0_node)
 console.log("xpubNode (string): %o", xpub_m_0_node.toBase58())
 const xpub_m_0_0_node = xpubNode.derive(0).derive(0)
 console.log("xpub_m_0_0_node :%o", xpub_m_0_0_node)
 console.log("xpubNode (string): %o", xpub_m_0_0_node.toBase58())
}

Anstatt also xpubNode zu teilen, würde ich xpub_m_0_0_node teilen.

Nicht sicher, was mit dem vorgeschlagenen Link zusammenhängt? Ich bin daran interessiert, gemäß bip32 zu verstehen, warum jemand den „erweiterten öffentlichen Schlüssel der Eltern“ teilen sollte. Der Anwendungsfall für xpub, von dem ich annehme, dass der „erweiterte öffentliche Schlüssel des Kindes“ vom erweiterten öffentlichen Schlüssel des Elternteils abgeleitet wird.

Antworten (1)

Ich bin daran interessiert, gemäß bip32 zu verstehen, warum jemand den „erweiterten öffentlichen Schlüssel der Eltern“ teilen sollte.

Der Zweck der gemeinsamen Nutzung des übergeordneten erweiterten öffentlichen Schlüssels besteht darin, dass öffentliche untergeordnete Schlüssel (und damit Adressen) daraus abgeleitet werden können, ohne eine Reihe von Adressen einzeln kennen zu müssen. Dies ist einfacher für getrennte Setups, bei denen ein Online-Computer nur über die öffentlichen Schlüssel verfügt, da der Online-Computer nicht ständig mit weiteren Adressen aktualisiert werden muss, auf die er achten muss. Es kann die Adressen selbst generieren.

Wird in einem solchen Fall das Wissen um den „erweiterten öffentlichen Schlüssel des Kindes“ den „erweiterten privaten Schlüssel des Elternteils“ offenlegen?

Nein. Nur die Kenntnis sowohl des übergeordneten erweiterten öffentlichen Schlüssels als auch eines untergeordneten privaten Schlüssels, der mit ungehärteter Ableitung abgeleitet wurde, legt den übergeordneten privaten Schlüssel offen.

Für die erste Frage, würde der Online-Computer nicht nur einen "erweiterten öffentlichen Schlüssel für Kinder" benötigen, um neue Adressen ohne die Notwendigkeit eines privaten Schlüssels generieren zu können? Ich gehe davon aus, dass der „erweiterte öffentliche Schlüssel des Kindes“ von einer anderen Person unter Verwendung des „Elternkettencodes“, des „öffentlichen Elternschlüssels“ und des nicht gehärteten Index von einem anderen Computer abgeleitet wird.
Ein untergeordneter öffentlicher Schlüssel kann seine Geschwister nicht ableiten. Er kann nur seine eigenen Kinder ableiten, also wird er selbst zu einem übergeordneten öffentlichen Schlüssel.
Ich bin nur daran interessiert zu verstehen, ob ich einen erweiterten öffentlichen Schlüssel für Kinder habe, der von einem erweiterten öffentlichen Schlüssel abgeleitet ist. Wird der "erweiterte öffentliche Schlüssel für Kinder" mit einem nicht gehärteten privaten Schlüssel, der davon abstammt, anfällig dafür sein, dass jemand den erweiterten privaten Schlüssel des Super-Elternteils kennt ? dh 'erweiterter privater Schlüssel' --derive--> 'erweiterter öffentlicher Schlüssel' --derive--> 'erweiterter öffentlicher Schlüssel'
Nein, wie ich in meiner Antwort sagte, ist es unmöglich, übergeordnete Schlüssel nur von untergeordneten Schlüsseln abzuleiten, erweitert oder nicht, öffentlich oder nicht.
Tut mir leid, Andrew, ich verstehe es immer noch nicht. Ich habe meine Antwort mit einem Beispielcode in Javascript bearbeitet. Wie Sie oben sehen, kann ich viele Ebenen des erweiterten öffentlichen Schlüssels ableiten. Ist das nicht wahr?
Ja, Sie können viele Ebenen ableiten. So? Jede Ebene wird von dem Schlüssel der unmittelbar vorhergehenden Ebene abgeleitet. Die einzige direkte Beziehung besteht zwischen diesem Schlüssel und seinem übergeordneten Element. Es gibt keine direkte Beziehung zwischen einem Schlüssel und seinem Großelternteil, sondern nur eine indirekte. Da alle Schlüssel einen Algorithmus verwenden, der nicht umkehrbar ist (er verwendet Einwegfunktionen), ist es unmöglich, einen übergeordneten Schlüssel aus einem untergeordneten Schlüssel abzuleiten. Um einen Großelternschlüssel eines Schlüssels zu erhalten, müssen Sie seinen übergeordneten Schlüssel erhalten. Aber weil das unmöglich ist, ist es auch unmöglich, den Großelternschlüssel zu bekommen.
Genau genommen ist es unmöglich, einen übergeordneten Schlüssel aus einem untergeordneten Schlüssel abzuleiten. Laut github.com/bitcoin/bips/blob/master/bip-0032.mediawiki „ist eine Schwäche, die möglicherweise nicht sofort offensichtlich ist, die Kenntnis eines übergeordneten erweiterten öffentlichen Schlüssels sowie aller nicht gehärteten privaten Schlüssel, die davon abstammen ist gleichbedeutend mit der Kenntnis des übergeordneten erweiterten privaten Schlüssels (und damit aller davon abstammenden privaten und öffentlichen Schlüssel)." , wenn man den „übergeordneten erweiterten öffentlichen Schlüssel“ teilt, sind Sie anfällig dafür, dass jemand in den „übergeordneten erweiterten privaten Schlüssel“ hackt.
Ich frage mich also, warum jemand jemals den "erweiterten öffentlichen Schlüssel der Eltern" teilen würde? Warum teilen Sie xpub_m_0_0_node nicht einfach gemäß meinem Code, der sich nur wenige Ebenen unterhalb des übergeordneten Elements befindet und daher nicht anfällig für Hacks ist?
Es ist anfällig. m/0/0 ist der Elternteil von m/0/0/i. Bei einem beliebigen privaten Schlüssel bei m/0/0/i und xpub bei m/0/0 können Sie den privaten Schlüssel bei m/0/0 steuern. Der übergeordnete Schlüssel bezieht sich nicht nur auf den Schlüssel an der Wurzel. Jeder Schlüssel kann ein übergeordneter Schlüssel sein.
Stimmen Sie zu, m/0/0 ist hackbar. Kann der Großelternteil für das Codebeispiel gehackt werden, dh m/0, sobald der private Schlüssel von m/0/0 offengelegt wird?
Nein. Sie können das private Hey nur wiederherstellen, wenn Sie das xpub haben. Sie benötigen also xpub von m/0, um seinen privaten Schlüssel zu erhalten, sobald Sie den privaten Schlüssel von m/0/0 haben.