ELI5: Was ist der Unterschied zwischen einem untergeordneten Schlüssel und einem gehärteten untergeordneten Schlüssel in BIP32

Ich habe BIP32 gelesen und verstehe es mehr oder weniger.

Könnte mir bitte jemand erklären, wie ich 5 Jahre alt bin, was der Unterschied zwischen einem untergeordneten Schlüssel und einem gehärteten untergeordneten Schlüssel ist?

Ich versuche, HD-Wallet-Generierung zu einem Dienst hinzuzufügen, den ich baue. Ich muss darüber vollständig informiert sein, bevor ich mich damit versuche. Ärgern Sie sich nicht, ich werde Bitcore verwenden , also werde ich nicht direkt mit dem Krypto experimentieren.

Antworten (1)

Im Wesentlichen wird ein gehärteter untergeordneter Schlüssel mit berechnet hash(parent private key + index), während ein nicht gehärteter untergeordneter Schlüssel mit berechnet wird hash(parent public key + index).

Welche praktischen Konsequenzen hat das also?

Mit einem erweiterten öffentlichen Schlüssel können Sie nicht gehärtete öffentliche untergeordnete Schlüssel ableiten. Dies ist in Situationen nützlich, in denen Sie Zahlungen annehmen möchten, ohne sie sofort ausgeben zu können. Wenn Sie beispielsweise eine Website haben, auf der Alpakasocken verkauft werden, könnte Ihr Server einen erweiterten öffentlichen Schlüssel verwenden, um Zahlungen zu akzeptieren, ohne Ihr gesamtes Geld zu verlieren, wenn er gehackt wird. Das ist also ein Grund, warum Sie möglicherweise eine nicht gehärtete Ableitung verwenden.

Mit einem erweiterten privaten Schlüssel können Sie auch gehärtete Schlüssel ableiten.

Nicht gehärtete öffentliche Schlüssel sind jedoch schwächer, wenn ein Angreifer 1) den erweiterten öffentlichen Schlüssel und 2) einen der nicht gehärteten privaten Schlüssel hat, der davon abgeleitet wurde. Unter diesen Umständen kann der Angreifer den privaten Schlüssel des erweiterten öffentlichen Schlüssels erarbeiten und erhält daher jeden Schlüssel, der davon abgeleitet werden kann, gehärtet und nicht gehärtet.

Was sollte Ihre App also standardmäßig verwenden?

Sie sollten nicht gehärtete Schlüssel verwenden und die Möglichkeit deaktivieren, private Schlüssel zu exportieren, wenn dies einem Angreifer ermöglichen würde, andere Schlüssel in der Brieftasche zu kompromittieren. Selbst wenn ein Angreifer an einen der privaten Schlüssel gelangt, ist in Situationen, in denen der Angreifer keinen Zugriff auf den erweiterten öffentlichen Schlüssel hat, die nicht gehärtete Sicherheit gleichbedeutend mit der gehärteten Sicherheit. Meiner Meinung nach überwiegen die Eigenschaften von nicht gehärteten Schlüsseln die zusätzliche Sicherheit von gehärteten Schlüsseln.

Wenn Sie die Funktionen von nicht gehärteten Schlüsseln jedoch nicht benötigen, sollten Sie gehärtete Schlüssel verwenden, da diese sicherer sind.

Wofür können gehärtete Schlüssel verwendet werden? Was sind ihre Einschränkungen.
Gehärtete Schlüssel sind nützlich, wenn Sie nicht die Möglichkeit benötigen, jemandem einen öffentlichen Hauptschlüssel zu geben und ihn alle Adressen kennen zu lassen. Für diese Fälle haben sie viel bessere Sicherheitseigenschaften als ungehärtet.
@PieterWuille wie das? Ich glaube nicht, dass ich es verstehe. Ich möchte einen Dienst machen, der Bitcoin-Adressen generiert, die Leute bezahlen können und von denen ich weiß, dass ich sie ausgeben kann. Bei gehärteten Adressen benötige ich einen privaten Schlüssel für diesen Dienst. Wenn ich also gehackt werde, verliere ich das ganze Geld. Bei nicht gehärteten Adressen gibt es keine vertraulichen Informationen zu meinem Dienst, sodass er ohne Schaden gehackt werden kann. Ich muss nur den privaten Schlüssel irgendwo sicher aufbewahren.
Ja, das geht nur mit nicht gehärteten Schlüsseln.
Wie macht das Ändern des privaten Schlüssels in den öffentlichen Schlüssel in der Hash-Funktion die Ableitung nicht gehärtet? Oder ist es nur eine Konvention? Wahrscheinlich ist 0x00 vorangestellt, damit es wie ein öffentlicher Schlüssel aussieht?