Zum Inhalt springen

Krypto-Grundlagen

Öffentliche Schlüssel, private Schlüssel und Adressen: was jeder tatsächlich tut

Ein privater Schlüssel signiert, ein öffentlicher verifiziert, eine Adresse empfängt — und warum nur einer davon geheim bleiben muss.

Redaktion von My Coin Partner 5 Min. Lesezeit
Three blocks of decreasing size connected left to right by one-way arrows

Partner-Erklärung

My Coin Partner erhält von einigen der beschriebenen Plattformen eine Provision. Die Provision entscheidet nicht darüber, was wir bewerten oder empfehlen, und jeder Vergleich nennt das Raster, nach dem bewertet wurde. Vollständige Offenlegung lesen.

Fast jeder schwerwiegende Krypto-Fehler lässt sich darauf zurückführen, dass drei Dinge verwechselt werden, die ähnlich klingen und sich völlig unterschiedlich verhalten. Sobald die Unterscheidung klar ist, hört der Großteil der Sicherheitsratschläge auf, eine auswendig zu lernende Regelliste zu sein, und wird offensichtlich.

Der private Schlüssel signiert

Ein privater Schlüssel ist eine sehr große geheime Zahl. Seine einzige Funktion ist es, Signaturen zu erzeugen: Für eine gegebene Transaktion erzeugt er einen Nachweis, dass der Inhaber des Schlüssels sie autorisiert hat. Das ist die gesamte Aufgabe.

Die entscheidende Eigenschaft ist, dass eine Signatur von jedem verifiziert werden kann, ohne den Schlüssel offenzulegen, der sie erzeugt hat. Das ist es, was das System überhaupt funktionieren lässt. Es ist auch der Grund, warum der private Schlüssel der einzige der drei ist, der geheim bleiben muss, und warum jeder, der ihn erlangt, Ihre Gelder ohne weiteren Schritt bewegen kann. Es gibt keine Passwortebene darunter und keine Instanz, die das Ergebnis rückgängig machen kann.

Der öffentliche Schlüssel verifiziert

Der öffentliche Schlüssel wird aus dem privaten Schlüssel durch eine Einwegberechnung abgeleitet. Aus dem privaten Schlüssel lässt sich der öffentliche Schlüssel trivial berechnen; aus dem öffentlichen Schlüssel lässt sich der private Schlüssel mit keinem praktikablen Mittel zurückgewinnen. Diese Asymmetrie ist die gesamte Grundlage.

Seine Aufgabe ist die Verifikation. Jeder, der den öffentlichen Schlüssel besitzt, kann prüfen, dass eine Signatur vom passenden privaten Schlüssel erzeugt wurde, und so bestätigt das Netzwerk, dass eine Transaktion von demjenigen autorisiert wurde, der die Gelder kontrolliert. Ihn zu veröffentlichen kostet nichts.

Die Adresse empfängt

Eine Adresse wird aus dem öffentlichen Schlüssel abgeleitet, üblicherweise durch Hashing und das Hinzufügen einer Prüfsumme. Sie ist kürzer, enthält eine Fehlererkennung, sodass eine falsch getippte Adresse fast immer abgelehnt statt akzeptiert wird, und auf den meisten Netzwerken gibt sie den öffentlichen Schlüssel nicht preis, bis Sie zum ersten Mal von ihr aus ausgeben.

Ihre Aufgabe ist es, weitergegeben zu werden. Eine Adresse ist ein Ziel, nicht mehr. Eine Adresse zu teilen birgt kein Risiko für Ihre Gelder; das schlimmste Ergebnis ist ein Verlust an Privatsphäre, denn jeder mit der Adresse kann ihre Transaktionshistorie auf einem öffentlichen Ledger einsehen.

Wo die Seed-Phrase hineinpasst

Eine Seed-Phrase ist kein vierter Schlüssel. Sie ist eine menschenlesbare Kodierung der Zahl, die Ihre privaten Schlüssel erzeugt — üblicherweise alle davon, über viele Adressen hinweg, deterministisch. Das ist der Grund, warum eine einzige Phrase eine gesamte Wallet wiederherstellen kann.

Daraus folgt unmittelbar, dass eine Seed-Phrase strikt sensibler ist als jeder einzelne private Schlüssel, weil sie allen zugleich entspricht. Jede Regel zu Seed-Phrasen — niemals in eine Website eintippen, niemals fotografieren, niemals in einem Passwort-Manager speichern, den man nicht selbst kontrolliert — folgt aus genau dieser einen Tatsache und nicht aus Aberglauben. Unser Glossareintrag behandelt die Kodierung selbst.

Was dadurch offensichtlich wird

Mit den drei klar unterschiedenen Rollen müssen mehrere Standardratschläge nicht mehr auswendig gelernt werden:

  • Eine Adresse zu teilen ist sicher, weil eine Adresse nur empfängt. Einen privaten Schlüssel zu teilen ist ein Totalverlust, weil ein privater Schlüssel signiert.
  • Eine Hardware-Wallet ist wertvoll, gerade weil sie das Signieren innerhalb des Geräts durchführt, sodass der private Schlüssel niemals auf einem mit dem Internet verbundenen Computer existiert.
  • „Die Adresse überprüfen“ bezieht sich auf die Prüfsumme und auf Zwischenablage-Malware, nicht auf Geheimhaltung.
  • Ein Dienst, der nach Ihrer Seed-Phrase fragt, um irgendetwas zu „validieren“ oder „wiederherzustellen“, fragt nach jedem Schlüssel, den Sie besitzen. Es gibt keine legitime Version dieser Anfrage.

Die Einbahn-Beziehung

Die Ableitungsrichtung lohnt sich zu merken: Seed-Phrase zu privatem Schlüssel zu öffentlichem Schlüssel zu Adresse, jeder Schritt vorwärts einfach und rückwärts unmöglich. Jede praktische Konsequenz folgt aus diesem Pfeil. Sie können das ferne Ende frei weitergeben und müssen das nahe Ende absolut schützen, und nichts dazwischen ändert das.

Warum ein Seed viele Adressen erzeugt

Moderne Wallets sind hierarchisch und deterministisch, was eine präzise Art ist zu sagen, dass ein einziger Seed nach einem festgelegten Verfahren einen ganzen Baum von Schlüsseln erzeugt. Jeder Zweig erzeugt einen neuen privaten Schlüssel, und jeder davon erzeugt seinen eigenen öffentlichen Schlüssel und seine eigene Adresse.

Zwei nützliche Konsequenzen folgen daraus. Eine Wallet kann für jede Zahlung eine neue Adresse ausgeben, ohne ein neues Backup zu benötigen, weil jede dieser Adressen von demselben Seed abstammt. Und die Wiederherstellung dieses Seeds auf anderer Software liefert dieselben Adressen zurück, weil das Ableitungsverfahren standardisiert und nicht proprietär ist.

Es erklärt auch eine verbreitete Verwirrung: Viele Adressen in einer Wallet zu sehen bedeutet nicht, dass viele getrennte Geheimnisse existieren. Es gibt ein Geheimnis, und alles andere ist davon abgeleitet. Das ist praktisch, und es ist genau der Grund, warum die Seed-Phrase der eine Punkt des Totalversagens ist.

Signieren gibt den Schlüssel nicht preis

Es lohnt sich, die Eigenschaft, auf der alles beruht, ausdrücklich zu benennen. Eine Signatur wird aus dem privaten Schlüssel und der Nachricht erzeugt und kann gegen den öffentlichen Schlüssel geprüft werden — aber das Beobachten einer beliebigen Anzahl von Signaturen erlaubt es einem Angreifer nicht, den privaten Schlüssel zu rekonstruieren, der sie erzeugt hat.

Das macht es sicher, wiederholt mit demselben Schlüssel zu signieren, statt jedes Mal einen neuen zu benötigen. Es erklärt auch, warum das Signieren einer Nachricht zum Nachweis des Besitzes einer Adresse eine normale, sichere Handlung ist, während die Eingabe einer Seed-Phrase es niemals ist. Das eine ist die vorgesehene Nutzung des Systems, das andere die Übergabe des Systems.

Wo das Modell an seine Grenzen stößt

Zwei Entwicklungen erschweren das saubere Bild, und beide sind es wert, bekannt zu sein, weil sie ändern, was eine Signatur bedeutet.

Multisig-Vereinbarungen verlangen mehrere private Schlüssel, um eine Transaktion zu autorisieren, sodass kein einzelner Schlüssel ausreicht. Das beseitigt den einzelnen Ausfallpunkt auf Kosten einer komplexeren Wiederherstellungsgeschichte — Sie haben nun mehrere Geheimnisse zu schützen und eine Regel darüber, wie viele davon benötigt werden.

Account Abstraction erlaubt es auf Netzwerken, die dies unterstützen, dass die Regeln, denen ein Konto unterliegt, programmiert statt festgelegt werden: Ausgabelimits, Zeitverzögerungen oder Wiederherstellung durch eine benannte Partei. Nützlich, und es bedeutet, dass „wer den Schlüssel besitzt, kontrolliert die Gelder“ auf diesen Netzwerken nicht mehr strikt zutrifft. Der Basismechanismus bleibt unverändert; was sich geändert hat, ist, wer berechtigt ist, ihn aufzurufen.

Weiterführende Beiträge