Digitale Signaturen
Eine Unterschrift auf Papier beweist nicht viel: wer deine einmal gesehen hat, kann sie nachmalen. Eine digitale Signatur ist anders. Sie beweist, dass der Text von dir kommt, und dass sich seitdem kein einziger Buchstabe geändert hat — und sie nachzumachen ist genauso unmöglich wie das Zurückzählen auf der Kurve aus dem vorigen Kapitel. Denn genau die benutzt sie.
Wörter, die du gleich brauchst
- Signieren
- Mit deinem privaten Schlüssel eine Art Siegel über einen Text machen. Das Siegel ist eine Zahl, die zu genau diesem Text und genau diesem Schlüssel gehört.
- Verifizieren
- Mit dem öffentlichen Schlüssel prüfen, ob das Siegel stimmt. Das kann jeder, denn den öffentlichen Schlüssel darf jeder haben. Stimmt es: der Text ist echt und unverändert. Stimmt es nicht: etwas wurde geändert, oder jemand anderes hat signiert.
- ECDSA
- Der Name des Signatursystems, das auf elliptischen Kurven läuft. Das EC steht für elliptic curve. Das benutzt deine Identitätskarte.
- Zertifikat
- Eine Erklärung von einer vertrauenswürdigen Stelle: „dieser öffentliche Schlüssel gehört zu dieser Person“. Selbst auch signiert, von genau dieser Stelle. Ohne Zertifikat weißt du, dass jemand signiert hat, aber nicht wer.
Das Schloss andersherum
Im Kapitel über asymmetrische Schlüssel klickte jeder dein Vorhängeschloss an eine Schachtel, und nur du konntest sie mit deinem privaten Schlüssel wieder öffnen. Eine Signatur dreht das um: du machst etwas mit deinem privaten Schlüssel, und jeder kann mit deinem öffentlichen Schlüssel prüfen, dass du es warst. Denn nur wer den privaten Schlüssel hat, kann ein Siegel machen, das zum passenden öffentlichen Schlüssel stimmt.
Was eine Signatur beweist und was nicht
| Beweist sie | Beweist sie nicht |
|---|---|
| Dass die unterzeichnende Person den privaten Schlüssel in Händen hatte. | Wer diese Person ist. Dafür brauchst du ein Zertifikat. |
| Dass der Text Buchstabe für Buchstabe derselbe ist wie beim Signieren. | Dass der Text wahr ist. Du kannst eine Lüge perfekt signieren. |
| Dass die unterzeichnende Person es hinterher nicht abstreiten kann. | Wann es passiert ist. Dafür gibt es den Zeitstempel. |
Probier es selbst
Alles passiert in deinem Browser. Es wird nichts an den Server geschickt.
- Klick auf Schlüsselpaar erzeugen. Schau, wie viel kürzer dieser öffentliche Schlüssel ist als der von RSA — das ist die Kurve.
- Klick auf Signieren. Du bekommst ein Siegel von 64 Bytes.
- Klick auf Verifizieren. Gültig.
- Ändere jetzt einen einzigen Buchstaben im Text — einen Punkt, einen Großbuchstaben — und klick wieder auf Verifizieren, ohne neu zu signieren. Ungültig. Es gibt kein „fast richtig“.
- Stell den Text wieder her und klick zweimal auf Signieren. Zwei verschiedene Siegel für denselben Text — und trotzdem beide gültig.
Vom Schlüssel zum Menschen
Eine gültige Signatur sagt: „jemand mit genau diesem privaten Schlüssel hat das signiert“. Aber wer ist das? Da kommt das Zertifikat ins Spiel. Der belgische Staat sagt: „dieser öffentliche Schlüssel gehört zu Koen Thomeer, geboren an diesem Tag“ — und signiert diese Erklärung selbst. Willst du sicher sein, dass es der Staat war, dann prüfst du diese Signatur gegen den Schlüssel des Staates. So bekommst du eine Kette des Vertrauens, die bei einem einzigen Schlüssel endet, den du einfach glauben musst: der Wurzel. Auf deiner Identitätskarte stehen diese Zertifikate im Chip, neben deinen Schlüsseln.
Zwei Schlüssel auf deiner Karte, mit Absicht
| Schlüssel | Wofür | Was das bedeutet |
|---|---|---|
auth |
Anmelden: beweisen, dass du es bist | Keine Signatur unter einem Dokument. Nur „ja, das bin ich“. |
sign |
Dokumente signieren | Rechtlich genauso gültig wie deine Unterschrift mit dem Stift. Unwiderruflich. |
Darum fragt deine Karte manchmal zweimal nach deiner PIN, und darum ist das
zweite Mal wichtiger. Das Anmelden bei einer Website benutzt auth.
Einen Vertrag zu signieren benutzt sign, und das kannst du nie
mehr rückgängig machen. Im letzten Kapitel machst du beides mit deiner eigenen
Karte.
Das ist Mathematik: beweisen, dass du etwas weißt, ohne es zu sagen
Dein privater Schlüssel ist eine Zahl n. Dein öffentlicher Schlüssel ist der Punkt n·P auf der Kurve. Eine Signatur ist eine Rechnung, in der n so versteckt ist, dass jeder mit n·P prüfen kann, dass du n kennst — ohne dass n jemals dabei herauskommt. Und dieser Zufall aus Schritt 5? Jede Signatur benutzt eine frische Zufallszahl; ohne die sickert n doch noch durch. Das ist 2010 wirklich passiert, bei der PlayStation 3, deren Hauptschlüssel so nach außen kam. Eine fehlende Zufallszahl, und ein Milliardenkonzern lag offen. Mathematik verzeiht keine Schlamperei.