Mittwoch, 14. Juni 2017

Adressen bei Kryptowährungen: eine Einführung

Adressen bei Kryptowährungen: eine Einführung

Adressen sind wichtige Konzepte für jeden, der mit Kryptowährungen hantiert. In unserem kleinen Guide versuchen wir, das Phänomen genauer zu beleuchten: Was sind Adressen? Wir werden sie gemacht? Und wie unterscheiden sich Adressen bei verschiedenen Kryptowährungen wie Bitcoin, Monero und Ethereum? Und wie können Adressen einmal besser zu lesen und zu merken sein?

Während allerdings SWIFT und IBAN Nummern von zentralen Instituten wie Banken vergeben werden, existieren die Adressen auf Kryptowährungen bereits. Jede Adresse, ob von Bitcoin, Ethereum oder Litecoin, hat bereits lange existiert, bevor eine Wallet sie gefunden hat. Der Grund dafür ist, dass Blockchain Adressen das Ergebnis mathematischer Operationen sind.

Der öffentliche Schlüssel: Womit die Generierung von Adressen beginnt

Nachdem die Zahlungen an IP-Adressen eingestampft wurden, wurde P2PKH zum Standardformat für Bitcoin Adressen. Wenn ihr es nicht kennt, soltest ihr vielleicht erstmal mit Bitcoin üben, bevor ihr diesen Artikel weiterlest. Eine P2PKH Adresse sieht etwa so aus:

1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC.

P2PKH Adressen haben etwa 34 Zeichen und beginnen mit einer 1. P2PKH steht für “Pay To Public Key Hash”, was bedeutet, dass man an die Hash eines Öffentlichen Schlüssels zahlt. Für diejenigen, die das zum ersten Mal hören, mag sich das äußerst kompliziert anhören. Aber wir gehen Stück für Stück durch die ganze Prozedur der Adress-Generierung und erklären es so einfach wie möglich.
Jede Wallet-Software kann ganz einfach eine P2PKH Adresse generieren. Oder, um es korrekter zu sagen: so viele davon finden, wie ihr wollt. Dahinter steckt keine Quantenphysik, sondern die Verbindung verschiedener Standard-Operationen der Kryptographie.
Zunächst sammelt die Wallet Entropie, also Zufälligkeit, um einen privaten ECDSA Schlüssel zu erzeugen. ECDSA ist der kryptographische Algorithmus, der im Kern von Bitcoin-Adressen und -Transaktionen steckt. Es ist ein aymmetrischer Signatur-Algorithmus, was bedeutet, dass man mithilfe des PRIVATEN Schlüssels Nachrichten signieren und diese Signaturen mithilfe des ÖFFENTLICHEN Schlüssels prüfen kann. Mit ECDSA kann man der Welt ganz einfach die Info geben, die diese braucht, um deine Unterschrift zu signieren. Es ist die sicherere digitale Form der händischen Unterschrift.
Nachdem man also mit ein wenig Entropie einen privaten Schlüssel erzeugt hat, leitet die Wallet von diesem den öffentlichen Schlüssel ab. Dazu nimmt sie zufällige Koordinaten auf einer bestimmten Elliptischen Kurve (für Besserwisser: secp256k1) und macht damit einige weitere Berechnungen. Die Details sind nicht weiter wichtig. Worauf es ankommt, ist, dass dieser öffentlichen Schlüssel im Prinzip alles ist, was man braucht, um Bitcoins zu versenden und zu empfangen. In den frühen Tagen von Bitcoin wurde er auch dafür verwendet.
Sehr rasch wurde das Konzept jedoch erweitert. Denn der öffentliche Schlüssel hat einige Nachteile. Er ist nicht nur sehr lang und unhandlich (etwa 65 Zeichen), sondern auch anfällig für Rechtschreibfehler. Zudem riskiert man die Guthaben, falls ECDSA einmal gebrochen wird, etwa durch Quantencomputer, wenn man den öffentlichen Schlüssel enthüllt, etwa in einer Zahlungsaufforderung. Daher haben die Bitcoin-Entwickler schon früh eine Methode entwickelt, um den öffentlichen Schlüssel in die bekannte Adresse zu transformieren.

Die Erschaffung der Bitcoin Adresse

Um also eine Bitcoin-Adresse zu generieren, nimmt die Wallet den öffentlichen Schlüssel und jagt ihn durch einige Krypto-Algorithmen. Dabei geht es vor allem um Hash-Operationen.  “‘Hashen’ ist eine kryptographische Operation. Mathematiker nennen sie auch Einmal-Funktion, weil sie einen Input (die Datei, eine Email) stets in denselben zufällig anmutenden Output verwandelt, es aber nicht möglich ist, vom Output auf den Input zu kommen.”

Grob gesagt passiert bei der Adress-Generierung das folgende: Die Software hasht den öffentlichen Schlüssel erst mit SHA 256 und dann mit RIPEMD-160. Dann fügt sie an das Ergebnis die bytes 00 als Präfix an den Anfang an – das ist der Grund weshalb P2PKH-Adressen mit einer “1” beginnen – und noch vier Prüfsummen-Bytes an das Ende. Die vier Prüfsummen-Bytes werden erzeugt, indem die Wallet die RIPEMD-160 Hash inklusive Präfix zweimal mit SHA 256 hasht und dann die ersten vier Bytes des Ergebnisses nimmt. Die so bearbeitete RIPEMD-160 Hash, die noch hexadezimal ist, wird in das alphanummerische base58 konvertiert, und Voilá: wir haben die Bitcoin-Adresse, wie wir sie kennen und lieben.

Was wichtig ist, ist, dass diese Adresse einen öffentlichen Schlüssel repräsentiert, und zwar auf eine Weise, die besser zu lesen ist und dank der Prüfsumme verhindert, dass ihr einem teuren Tippfehler zum Opfer fallt. Immer wenn ihr in die Wallet eine Adresse eingibt, werden sowohl Präfix als auch Prüfsumme kontrolliert. Wenn sie nicht passen, gibt es einen Error, und eine Transaktion ist, zum Glück, nicht möglich.
Wenn man den privaten Schlüssel besitzt, der über diese Operation zu einer Adresse führt, ist man die einzige Person, die eine gültige Transaktion mit Bitcoin schreiben kann, die mit dieser Adresse verbunden sind – während jeder dank der Adresse die notwendigen Infos hat, um die Signatur zu verifizieren. Dieser einfache Prozess – Transaktionen signieren und Signaturen verifizieren – ist mehr oder weniger alles, was Transaktionen in Kryptowährungen machen.

Keine Kommentare:

Kommentar veröffentlichen