Wie privater Schlüssel, öffentlicher Schlüssel und Bitcoin-Adresse zusammenhängen

By |2018-04-14T05:07:36+00:001. März 2018|

Wer Bitcoins in der Blockchain verwalten möchte, braucht eine Wallet. Eine Wallet beinhaltet nicht etwa die Bitcoins selber, sondern sie ist viel mehr das Werkzeug, mit dem die Coins auf der Blockchain bewegt werden können. Egal, ob es sich um eine Software-Wallet, eine Hardware-Wallet oder eine Paper-Wallet handelt, die Wallet beinhaltet immer einen privaten Schlüssel. Dieser private Schlüssel berechtigt den Besitzer, die Coins, welche mit diesem verknüpft sind, zu bewegen. Mit Hilfe des privaten Schlüssels werden die Transaktionen signiert. Auf diese Weise wird sowohl die Authentizität, als auch die Integrität der Nachricht sichergestellt. Das heißt, es ist zum Einen gewährleistet, dass die Transaktion tatsächlich vom Schlüsselinhaber initiiert wurde, zum Andern, dass sie im Netzwerk nicht abgeändert wurde. Andernfalls wäre die Signatur vom Schlüsselinhaber ungültig. Verliert man den Schlüssel, so verliert man das Geld!

Wie entsteht der private Schlüssel?

Ein privater Schlüssel ist ein zufälliges 256 Bit Datenwort, das in den meisten Fällen von einem in der Walletsoftware integrierten Zufallsgenerator erzeugt wird. Zur vereinfachten Darstellung verwendet man häufig das hexadezimale Darstellungsformat, in dem der Schlüssel 64 Stellen besitzt. Um ihn im Wallet zu speichern wird hingegen das Base58Check-Format verwendet, welches auch als Wallet Import Format (WIP) bezeichnet wird.

Ausgehend vom privaten Schlüssel berechnet die Software automatisch den zugehörigen öffentlichen Schlüssel und die daraus ableitbare Bitcoin-Adresse. Sowohl die Erstellung des öffentlichen Schlüssels, als auch die Erstellung, der Bitcoin-Adresse sind nicht rückrechenbar. Jemand kann von einer Bitcoin-Adresse also nicht auf den dahinterliegenden öffentlichen Schlüssel schließen und von einem öffentlichen Schlüssel lässt sich wiederum nicht auf den zugehörigen privaten Schlüssel rückschließen. Es handelt sich somit um sogenannte Einwegfunktionen.

Berechnung der Bitcoin-Adresse

So ergeben sich aus dem privaten Schlüssel erst der öffentliche Schlüssel und später auch die Bitcoin-Adresse

Wie wird der öffentliche Schlüssel berechnet?

Die Berechnung des öffentlichen Schlüssels erfolgt durch einen Elliptic Curve Digital Signature Algorithm (ECDSA), bei welchem Kryptographie auf elliptischen Kurven verwendet wird. Ein Ausgangspunkt wird dabei auf einer Kurve in einen anderen Punkt der Kurve transformiert. Dies geschieht durch definierte Punktadditionen und -verdopplungen, wobei der private Schlüssel angibt, welche Operation, wie häufig durchzuführen ist. Die Koordinaten des Endpunktes stellen dann schließlich den öffentlichen Schlüssel dar.

Elliptische Kurve als Basis zur Berechnung des öffentlichen Schlüssels

Da die Lage der möglichen Punkte symmetrisch zur x-Achse ist, wird bei dem in der Regel verwendeten komprimierten öffentlichen Schlüssel lediglich die x-Koordinate angegeben. Mit dem Präfix 02 bzw. 03 wird dann gekennzeichnet, welcher der beiden möglichen Punkte gemeint ist.

Der öffentliche Schlüssel wird veröffentlicht, sobald eine Transaktion initiiert wird. Er stellt praktisch das Gegenstück zum privaten Schlüssel dar und ermöglicht es, jedem zu überprüfen, ob eine Transaktionsnachricht tatsächlich vom privaten Schlüsselinhaber stammt.

Wie wird die Bitcoin-Adresse berechnet?

Der komprimierte öffentliche Schlüssel wird zunächst über zwei Einwegfunktionen (SHA256 und RIPEMD160) in einen Hashwert verwandelt. Dieser Hashwert entspricht im Base58Check-Format dann der Bitcoin-Adresse. Die Bitcoin-Adresse ist, wenn man so will, so etwas wie die Kontonummer. Sie stellt letztendlich ein Pseudonym im Bitcoin-Netzwerk dar. Die Bitcoin-Adressen haben gegenüber dem öffentlichen Schlüssel, der ja auch als Pseudonym verwendet werden könnte, den Vorteil, dass sie eine zweite Sicherheitsebene darstellen. Selbst wenn eine Sicherheitslücke im ECDSA gefunden werden würde, könnte man von der Bitcoin-Adresse nicht auf den privaten Schlüssel rückschließen.

Es sei jedoch angemerkt, dass eine solche Sicherheitslücke extrem unwahrscheinlich ist und nicht nur das Bitcoin-Netzwerk, sondern auch viele andere Anwendungen (z.B. Online-Banking) betroffen sein würden.

Ein weiterer Vorteil der Verwendung von Bitcoin-Adressen als Pseudonym ist, dass mittels sogenannter Pay-to-Skript Adressen auch die Auszahlung an bestimmte Bedingungen geknüpft sein kann. Beispielsweise können drei private Schlüssel generiert werden, von den mindestens zwei zur Signation verwendet werden müssen, um eine Transaktion durchzuführen (MulitiSig). Solche Pay-to-Skript Adressen beginnen mit einer 3 statt einer 1 als Präfix.

Warum verwendet eine Person mehrere Bitcoin-Adressen?

Die Zahlungen im Bitcoin-Netzwerk verlaufen in der Regel transparent. Es gibt Dienste, über die genau einsehbar ist, welche Ein- und Auszahlungen mit einer Adresse verknüpft sind. Es entstehen immer wieder Momente, in denen der Besitzer mit einer Adresse verknüpft werden kann, zum Beispiel, wenn er eine Transaktion von einem Bekannten erhält und diesem hierfür seine Bitcoin-Adresse mitteilt.

Um nun trotzdem eine gesunde Privatsphäre sicherstellen zu können, wird in der Regel für jede Transaktion eine neue Adresse verwendet. Es mag zunächst kompliziert erscheinen, hier den Überblick über die verschiedenen Adressen zu behalten, doch mit Hilfe eines sogenannten Seeds ist dies gut händelbar.

Was sind deterministische Wallets und was genau macht ein Seed?

Glücklicherweise muss man sich nicht selber darum kümmern, den Überblick über die verschiedenen Adressen zu behalten. Zu diesem Zweck gibt es deterministische Wallets, welche ausgehend von einem sogenannten Seed, also einem Samen, beliebig viele private Schlüssel generieren können. Hierzu wird der Seed zusammen mit einer laufenden Nummer über eine Hashfunktion in einen privaten Schlüssel überführt. Weil die Hashfunktion nicht rückrechenbar ist, können die privaten Schlüssel nicht voneinander, sondern nur vom Seed abgeleitet werden. Dieser wird in der Regel über eine sogenannte mnemonische Wortfolge dargestellt, da diese leichter zu handhaben ist, als beispielsweise eine sehr lange Zahl. Es werden hierbei 12 bis 24 Wörter als Code verwendet. Jedes der Wörter stammt aus einem Katalog von 2048 Wörtern und repräsentiert somit eine Zahl zwischen 0 und 2047. Der Anwender muss nun also lediglich den zur Wallet gehörigen Seed sicher aufbewahren und kann ausgehend von diesem Seed automatisch über alle zugehörigen Bitcoin-Adressen verfügen.