BIP32 HD Wallets: HMAC vs. „nur“ Hashing the Seed

In A. Antonopoulus' Mastering Bitcoin (2nd edition) auf Seite 106 findet sich eine schöne Illustration, wie die Basis für ein BIP32 HD Wallet generiert wird:

Geben Sie hier die Bildbeschreibung ein

Also hier ist die eine Sache, die ich daran nicht verstehe:

In der Mitte des Bildes befindet sich der Teil, in dem der Seed HMACed und auf 512 Bit gestreckt wird. Warum wird ein HMAC benötigt, anstatt einfach nur einen Hash des Seeds (SHA512) zu nehmen?

Soweit ich weiß, besteht der Unterschied zwischen einem Hash und einem HMAC darin, dass der HMAC eine Art Nichtabstreitbarkeit liefert, nämlich dass nur diejenigen, die in der Lage sind, einen gültigen HMAC zu erstellen, diejenigen sind, die einen bestimmten Schlüssel kennen (so ähnlich wie eine Unterschrift). Diese Funktion ist jedoch im gegebenen Anwendungsfall nutzlos.

Warum also HMAC-SHA512 statt SHA512? Ist die Idee, den Arbeitsaufwand für die Generierung eines HD-Wallets künstlich zu erhöhen, um die Möglichkeiten eines Brute-Force-Angriffs einzuschränken?

Antworten (1)

Ich habe diese Antwort von David Schwartz unter den Kryptografie-Tags in Stackexchange gefunden, sie beantwortet möglicherweise Ihre Frage: HMAC . Es besagt im Grunde, dass HMAC kleiner ist und weniger CPU zum Berechnen benötigt.

Danke Johannes für deine Antwort. Ich glaube aber, da liegt ein Missverständnis vor. Es sieht so aus, als würde David Schwartz, wenn er sagt "HMAC ist kleiner und benötigt weniger CPU", HMAC nicht mit Hashes vergleichen. Stattdessen vergleicht er symmetrische Kryptographie (HMAC) mit asymmetrischer Kryptographie (Signaturen). --- Mit anderen Worten: Ich denke, es ist ziemlich sicher zu sagen, dass HMACs tatsächlich "schwerer" sind als nur Hashes, nicht zuletzt, weil das Erstellen eines HMACs tatsächlich Hashing in seinem Prozess beinhaltet (tatsächlich zweimal).
@Dalit Tatsächlich ist Johns Antwort hier falsch.