Warum sind Bitcoin-Adressen Hashes von öffentlichen Schlüsseln?

Derzeit werden Bitcoin-Adressen und ihre Prüfsummen aus dem öffentlichen Schlüssel durch wiederholtes Hashing mit SHA256 und RIPEMD160 erstellt. Jetzt verstehe ich die Gründe für die Verwendung von Hashing zum Erstellen der Prüfsumme, aber warum wurde nicht nur der ursprüngliche öffentliche Schlüssel mit einer hinzugefügten Prüfsumme verwendet? Liegt es nur an den kürzeren Adressen oder gibt es andere Auswirkungen auf die Privatsphäre/Sicherheit, wenn Hashes von öffentlichen Schlüsseln anstelle von nur öffentlichen Schlüsseln verwendet werden?

Antworten (1)

Es ist nur, um kürzere Adressen zu bekommen. Reguläre öffentliche Schlüssel sind 65 Bytes lang, was viel zu lang ist, um bequem zu sein. Komprimierte öffentliche Schlüssel sind 33 Byte groß und könnten möglicherweise anstelle von Hashes verwendet werden, obwohl diese etwas länger als 20-Byte-Hashes sind. Es scheint auch wahrscheinlich, dass Satoshi nichts über komprimierte öffentliche Schlüssel wusste oder sich nicht damit wohl fühlte, sie zu verwenden, als er Bitcoin entwarf.

Hashes scheinen gegen bestimmte Angriffe zu helfen (z. B. einige Angriffe auf ECDSA), eröffnen jedoch auch die Möglichkeit anderer Angriffe (z. B. Angriffe auf RIPEMD-160). Mir ist nicht klar, dass sie die Sicherheit insgesamt verbessern.

Satoshi stellte sich Send-to-Address auch nicht als normale Zahlungsmethode vor, sie waren etwas, das anstelle von Send-to-IP verwendet werden konnte, wenn der Empfänger offline war. Das heißt, sie helfen der Sicherheit ein wenig (obwohl Satoshi sich dessen vielleicht auch nicht bewusst war), ein Angreifer kann nicht mit dem Angriff auf ECDSA (das nur 128-Bit-Sicherheit hat) beginnen, bevor der öffentliche Schlüssel bekannt ist (und den öffentlichen Schlüssel findet). eine Adresse erfordert ein 160-Bit-Preimage).
Um auf Pieters Kommentar einzugehen: Es könnte ein absichtlicher Teil des Designs gewesen sein, die Sicherheit des Netzwerks zu erhöhen. Falls ein Fehler in der elliptischen Kurvenkryptographie gefunden wird, der es jemandem ermöglichen würde, den privaten Schlüssel aus dem öffentlichen Schlüssel abzuleiten, könnte jemand seine Bitcoins an den Hash eines neu generierten öffentlichen „Ersatz“-Schlüssels eines anderen Algorithmus (z. B. RSA) senden ) und es wäre ein gültiges Verhalten. Später, wenn das Netzwerk den „Ersatz“-Algorithmus vollständig unterstützt, können die Coins wieder verwendet werden, ohne jemals anfällig für Diebstahl/Hacking zu sein.
@liamzebedee Ist dieser Punkt nicht strittig, sobald eine Transaktion durchgeführt wurde, da sie den vollständigen öffentlichen Schlüssel enthält? Andererseits ist das ein starkes Argument dafür, niemals denselben Schlüssel zweimal zu verwenden, obwohl es unmöglich ist, jemanden daran zu hindern, Geld an Sie zu überweisen ...
Könnte man in Bezug auf die Sicherheit den öffentlichen Schlüssel herausfinden, der dem Pubkey-Hash einer Person entspricht, indem man sich das scriptSig ansieht, wenn er zum ersten Mal eine Transaktion durchführt?
@liamzebedee bedeutet das, dass es unsicher ist, unsere öffentlichen Schlüssel offenzulegen?