Digitale Signaturen

Erstmal einfachWas ist eine digitale Signatur?

Wie eine Unterschrift unter einem Dokument — nur fälschungssicher und mathematisch. Du benutzt deinen privaten Schlüssel, um eine Nachricht zu „unterschreiben", und jeder kann mit deinem öffentlichen Schlüssel prüfen, dass:

  • die Nachricht wirklich von dir kommt (Authentizität),
  • sie unterwegs nicht verändert wurde (Integrität),
  • du sie nicht später abstreiten kannst (Nichtabstreitbarkeit).

Live: ECDSA im Browser

Wir erzeugen ein Schlüsselpaar, unterschreiben eine Nachricht und prüfen die Signatur. Probier dann: verändere die Nachricht — die Verifikation schlägt fehl.

Warum eigentlich?Wofür braucht man das im Alltag?
  • Software-Updates: Dein OS prüft, dass das Update wirklich von Apple/Microsoft signiert ist — nicht von einem Angreifer im Netzwerk.
  • TLS-Zertifikate: Eine Zertifizierungsstelle unterschreibt, dass dieser öffentliche Schlüssel wirklich zu „bank.de" gehört.
  • Git-Commits: Mit git commit -S kannst du beweisen, dass ein Commit wirklich von dir kam.
  • Kryptowährungen: Eine Bitcoin-Transaktion ist nichts anderes als eine signierte Nachricht „ich verschicke X an Y".
  • PDF-/Vertrags-Signaturen, JWT-Tokens, …
Tiefer reinVerschlüsseln ≠ signieren

Bei RSA sieht's so aus, als wären beide Operationen „dasselbe rückwärts" — das stimmt nur grob. In der Praxis:

  • Verschlüsseln: Empfänger-Public-Key wird benutzt, nur Empfänger kann mit seinem Private-Key entschlüsseln.
  • Signieren: Absender-Private-Key wird benutzt, jeder kann mit dem Public-Key prüfen.

Außerdem: man signiert nicht die ganze Nachricht, sondern ihren Hash (sonst wäre die Signatur so groß wie die Nachricht und unfassbar langsam). Das ist auch der Grund, warum Hash-Kollisionen für Signaturen so gefährlich sind.

Häufiger DenkfehlerDie berühmten Signatur-Fails
  • PS3 (2010): Sony nutzte für ECDSA denselben Zufallswert k in jeder Signatur. Aus zwei Signaturen ließ sich der private Master-Schlüssel direkt ausrechnen. fail0verflow demonstrierte das auf der CCC-Konferenz.
  • Bleichenbacher-Angriff (1998, 2017 neu): RSA-Signaturen ohne ordentliches Padding ließen sich fälschen — Angreifer konnten beliebige Werte als „signiert" durchgehen lassen.
  • SHA-1-Kollisionen (SHAttered 2017): Mit dem ersten praktischen Bruch von SHA-1 konnte man zwei PDFs basteln, die denselben Hash hatten — also dieselbe Signatur. Eine harmlose Version signieren, später durch eine bösartige austauschen.