MINT lernen

Digitale Signaturen

Eine Unterschrift auf Papier lässt sich abpausen — eine digitale Signatur passt nur zu genau einem Text und verrät jede nachträgliche Änderung.

1

Der Hashwert als Fingerabdruck

Eine Hashfunktion \(H\) berechnet aus einer beliebig langen Nachricht \(m\) einen kurzen Prüfwert \(H(m)\), den Hashwert — den Fingerabdruck der Nachricht.

  • Feste Länge:SHA-256 liefert immer 256 Bit (64 Hex-Ziffern) — für ein Wort ebenso wie für ein ganzes Buch.
  • Lawineneffekt:Ein einziges geändertes Zeichen ergibt einen völlig anderen Hashwert.
  • Einwegfunktion:Aus dem Hashwert lässt sich die Nachricht nicht zurückrechnen.
  • Kollisionsresistenz:Zwei verschiedene Nachrichten mit gleichem Hashwert sind praktisch nicht zu finden.
Beispiel:
SHA-256(„Treffen um 15 Uhr“) = aca9317f66e499af…
| Nachricht 1

Der Hashwert hat 64 Hex-Ziffern, hier stehen nur die ersten 16.

SHA-256(„Treffen um 16 Uhr“) = 6573f6f1720e1e3a…
| 1 Zeichen

Nur die Ziffer 5 wurde zur 6 — trotzdem stimmt keine der ersten 16 Stellen mehr überein.

134 von 256 Bit verschieden
Lawine

Etwa die Hälfte aller Bits kippt. Am Hashwert erkennt man sofort, dass sich die Nachricht geändert hat.

2

Signieren und prüfen

Alice will Bob beweisen, dass eine Nachricht von ihr stammt und unverändert ankommt.

  • Signieren (Alice):Hashwert \(H(m)\) bilden und mit dem eigenen privaten Schlüssel verschlüsseln — das Ergebnis ist die Signatur \(s\). Nachricht und Signatur zusammen verschicken.
  • Prüfen (Bob):\(s\) mit Alices öffentlichem Schlüssel entschlüsseln, \(H(m)\) selbst berechnen, beide Werte vergleichen.
  • Gleich:Integrität (unverändert), Authentizität (von Alice) und Nichtabstreitbarkeit (nur Alice besitzt den privaten Schlüssel).
  • Verschieden:Nachricht verändert oder falscher Schlüssel → Signatur ungültig.
  • Nicht vertraulich:Die Nachricht selbst bleibt lesbar; für Geheimhaltung muss zusätzlich verschlüsselt werden.
Ablauf:
\(h=H(m)\)
| hashen

Alice berechnet den Fingerabdruck ihrer Nachricht \(m\).

\(s\) = \(h\), verschlüsselt mit Alices privatem Schlüssel
| signieren

Alice sendet \(m\) und \(s\) an Bob.

\(h'\) = \(s\), entschlüsselt mit Alices öffentlichem Schlüssel
| Bob prüft

Das kann jeder, denn der öffentliche Schlüssel ist bekannt.

\(h'=H(m)\;\Rightarrow\;\) Signatur gültig
vergleichen

Bob hasht \(m\) selbst. Stimmen beide Werte überein, ist die Nachricht echt und unverändert.

Die Bank hat Alices signierten Überweisungsauftrag erhalten. Ändere als Angreifer Empfänger, Betrag oder Zweck — per Klick auf ein Feld oder mit Tab und Enter bzw. den Pfeiltasten — und vergleiche die beiden Fingerabdrücke Bit für Bit. Probiere danach die beiden Angriffe unter der Bühne, einzeln und zusammen.

Fingerabdrücke vergleichen

Halte fest: Schon ein einziges geändertes Zeichen macht die Signatur ungültig, und eine passende Signatur zu einem neuen Text kann nur erzeugen, wer den privaten Schlüssel besitzt. Das hilft aber nur, wenn der öffentliche Schlüssel zum Prüfen wirklich dem Absender gehört.

Merke

Signatur: Hashwert der Nachricht, verschlüsselt mit dem privaten Schlüssel des Absenders.

3

Allgemeine Hinweise

Schlüssel nicht vertauschen

Geheim verschicken: mit dem öffentlichen Schlüssel des Empfängers verschlüsseln. Signieren: mit dem privaten Schlüssel des Absenders.

Warum erst hashen?

Asymmetrische Verfahren sind langsam. Signiert wird deshalb nur der kurze Hashwert — gleich schnell, ob die Nachricht eine Zeile oder ein Gigabyte lang ist.

Echter Schlüssel nötig

Eine gültige Prüfung zeigt nur: Die Signatur passt zu diesem öffentlichen Schlüssel. Ob er wirklich Alice gehört, muss zusätzlich gesichert werden.

Videos