BIP32 empfiehlt einen 256-Bit-Seed. Warum verwenden die meisten Bitcoin-Wallets nur einen 128-Bit-Seed?

Laut dem Abschnitt „Master Key Generation“ von BIP32 werden „256 Bits empfohlen“.

Siehe https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#Master_key_generation

Warum hielt BIP32 256 Bit für die empfohlene Seed-Größe und warum hielten die Autoren so vieler Bitcoin-Wallet-Implementierungen 256 Bit für unnötig?

Antworten (2)

Die Gründe für die 3 Nummern:

  • Bitcoin verwendet 256-Bit-ECDSA-Signaturen. Diese erfordern in der Größenordnung von 2 128 Schritte, um einen privaten Schlüssel aus dem bekannten öffentlichen Schlüssel zu finden. Dies ist das Sicherheitsniveau von Bitcoin: Wir zielen darauf ab, dass ein Angreifer immer 2 128 Schritte ausführen muss. Wenn der Seed weniger als 128 Bit Entropie hat, führt dies zwangsläufig zu einem schnelleren Algorithmus, bei dem ein Angreifer einfach alle möglichen Seeds in weniger als 2 128 Schritten durchlaufen kann. Aus diesem Grund benötigt BIP32 mindestens 128 Bit Entropie .

  • Wenn der Seed weniger als 256 Bit Entropie hat (aber mehr als 128), haben die resultierenden Schlüssel auch weniger als 256 Bit Entropie. Da die Elliptische-Kurven-Kryptographie Schlüssel mit vollen 256 Bit verwendet (obwohl es einen schnelleren Angreifer gibt, als sie in 2 128 Schritten zu knacken), empfiehlt BIP32 auch 256 Bit Entropie .

  • Die Kombination aus privatem Schlüssel und Kettencode (der „erweiterte private Schlüssel“) in BIP32 ist 512 Bit groß. Aus diesem Grund kann die Verwendung eines Seeds mit mehr Entropie als 512 Bit die Sicherheit möglicherweise nicht weiter erhöhen - es sind nur Informationen, die weggeworfen werden. Aus diesem Grund begrenzt BIP32 den Seed auf höchstens 512 Bit Entropie .

Danke für deine Antwort Pieter. Ich bin mir jedoch nicht ganz klar: Wie Sie sagen, werden sowohl öffentliche Schlüssel (komprimierte Darstellung von EC-Punkten) als auch private Schlüssel (Skalare) jeweils mit 256 Bit dargestellt, aber beide haben eine effektive Bitstärke von nur 128 Bit. Warum gibt es also überhaupt einen Vorteil, skalare Schlüssel aus einem Seed zu generieren, der mehr als 128 Bit Entropie hat? Der einzige Grund, der mir einfällt, ist, dass die Bitstärke ein wenig reduziert wird, wenn der Seed gehasht wird, um Unterschlüssel abzuleiten, aber das würde eine Empfehlung für einen Seed von zB 140 Bit anstelle von vollen 256 Bit erklären.
Nun, in der Lage zu sein, einen EC-Schlüssel mit nur 2^128 Schritten zu brechen, ist etwas theoretisch. In der Praxis haben diese Algorithmen erhebliche Speicher-/CPU-Kompromisse und wären in der Praxis immer noch viel langsamer als eine direkte 2^128-erschöpfende Suche nach Schlüsseln mit nur 128 Bit Entropie. Ich denke, die Antwort ist Verteidigung in der Tiefe: Weniger als 128 Bit Entropie schaden definitiv der Sicherheit. Weniger als 256 Bit können weh tun. Mehr als 512 Bits können nicht helfen.

Scheint eine Frage zu sein, die am besten von den Autoren von BIP32 beantwortet wird.

Abgesehen davon ist es die uralte Frage "wie viel Entropie" brauche ich?!

Dies ist eine ziemlich interessante Lektüre zu: 128 Bit im Allgemeinen. https://crypto.stackexchange.com/questions/48256/how-much-entropy-do-you-need-for-a-secure-certificate-generation

Auch als Faustregel gilt: Wenn man 128 Bit Entropie in ein System einfügt, dann bildet es auch die Obergrenze für die Entropie von allem, was davon abgeleitet wird.

Wenn ich über die Absicht des Autors spekulieren darf, werden wahrscheinlich 256 Bit empfohlen, da die eventuellen Schlüssel genau diese Größe haben und auf diese Weise die Entropie mit der Schlüsselgröße übereinstimmt.

Danke für die Idee, ich habe den Autor von BIP32 per E-Mail gefragt, ob er erwägen würde, diese Frage auf Stackexchange zu beantworten.