Adressgenerator für Bitcoin Wallet

Wie von Maxwell hier in HD-Wallets beschrieben, können wir unter der Annahme, dass wir ein Schlüsselpaar mit privatem Schlüssel SK.aund öffentlichem Schlüssel PK.asowie einen Seed- sund einen Generatorpunkt haben , ein neues Schlüsselpaar wie folgt Ggenerieren :(SK.b, PK.b)

PK.b = PK.a + sG
SK.b = SK.a + s

Der Vorteil bei dieser Methode besteht darin, dass ein Dienstanbieter neue öffentliche Schlüssel generieren kann, ohne den privaten Schlüssel des Kunden zu kennen. Meine Frage ist, warum wir den Seed und den privaten Schlüssel nicht multiplizieren, anstatt sie hinzuzufügen?

PK.b = PK.a * s
SK.b = SK.a * s

Gibt es ein Problem mit der späteren Methode, die ich vorgeschlagen habe?

Antworten (1)

Ein früherer Entwurf von BIP0032 tat dies tatsächlich. (Entschuldigung für die Verlinkung zum Bitcoin-Wiki - diese Änderung wurde vorgenommen, bevor wir für die BIP-Verfolgung auf Git umgestellt haben.)

Laut Changelog geschah dies aus Geschwindigkeitsgründen.

  • [30. Apr. 2013] Umstellung von Multiplikation mit I L auf Addition von I L (schnellere, einfachere Implementierung)

Es ist viel schneller, wenn ein untergeordneter privater Schlüssel von einem übergeordneten privaten Schlüssel abgeleitet wird. Das neue Verfahren erfordert nur eine normale Addition (mod n) anstelle einer ECDSA-Punktmultiplikation.

Es ist nicht schneller, wenn ein untergeordneter öffentlicher Schlüssel von einem übergeordneten öffentlichen Schlüssel abgeleitet wird. Das erfordert immer noch eine ECDSA-Multiplikation gefolgt von einer ECDSA-Addition. (Tatsächlich ist es etwa 2 % langsamer. )

Die Verwendung von Addition fügt keine Sicherheitsprobleme hinzu. Es ist möglich, einen übergeordneten privaten Schlüssel aus einem untergeordneten privaten Schlüssel und einem erweiterten öffentlichen Schlüssel zu erhalten, aber das würde auch zutreffen, wenn eine Multiplikation verwendet würde.

Danke für die Antwort! Wie ich auch erwartet habe, dürfte es an der Leistung und Effizienz liegen. Macht die Multiplikation es jedoch nicht sicherheitsstärker? Außerdem wäre es für einen Angreifer einfach, den öffentlichen Hauptschlüssel basierend auf dem öffentlichen Schlüssel der Kinder zu finden, nehme ich an? Er muss nur den öffentlichen Schlüssel eines Kindes um eine andere Zahl subtrahieren (Brute-Forcing-Seed-Größe).
Nein, es fügt nichts hinzu. Es gibt keine Sicherheitseigenschaften, die eine Multiplikation ergibt, die eine Addition nicht hat. Die Gründe für die Änderung waren, dass es 1) nichts verbesserte, 2) schneller war, 3) einfacher zu implementieren war und 4) die Leute nicht davon ausgehen würde, dass es irgendwelche Eigenschaften hat, die es nicht hat (viele nehmen an, dass es keine Umkehrung für die EC-Multiplikation gibt). existiert, was wahr ist, aber nur zum Auflösen nach k in k*P = Q; Auflösen nach P ist möglich).
@PieterWuille kannst du deinen letzten Satz etwas näher erläutern? Was meinst du damit, dass das Lösen von P möglich ist?
@abeikverdi Dies geht über den Rahmen der ursprünglichen Frage hinaus, also habe ich eine neue Frage gestellt .