Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Digitale Signaturen und Zertifikate

Nach dieser Lektion: Ich kann erklären, wie eine Signatur und ein Zertifikat beweisen, wer etwas gesendet hat.

Lektion, 65 Min.5 BefehleLab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Was beweist eine digitale Signatur?

Eine digitale Signatur beweist zwei Dinge: Die Nachricht stammt von der Person mit dem privaten Schlüssel, und sie wurde seitdem nicht verändert. Ein Zertifikat sagt, welcher öffentliche Schlüssel zu welchem Namen gehört.

Beides zusammen sorgt dafür, dass Ihr Browser eine Bank-Webseite von einer Fälschung unterscheidet.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie eine Signatur und ein Zertifikat beweisen, wer etwas gesendet hat.

Schlüsselwörter

BegriffWas er bedeutet
Digitale Signaturein Wert, den nur die Besitzerin oder der Besitzer des privaten Schlüssels bilden kann
Zertifikateine unterschriebene Datei, die einen Namen an einen öffentlichen Schlüssel bindet
Zertifizierungsstelleeine Stelle, die Zertifikate ausstellt und unterschreibt
Vertrauenskettedie Reihe von Zertifikaten vom Server bis zum Vertrauensanker
Vertrauensankerein Zertifikat, dem ein Gerät von vornherein vertraut
Ablaufdatumder Tag, nach dem ein Zertifikat nicht mehr gilt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Beim Signieren tauschen die Schlüssel die Rolle

Beim Verschlüsseln nutzen Sie den öffentlichen Schlüssel des Gegenübers. Beim Signieren nutzen Sie Ihren eigenen privaten Schlüssel.

Jede Person mit Ihrem öffentlichen Schlüssel kann dann prüfen, ob die Signatur passt. Nur Sie konnten sie bilden.

Man signiert nur den Hashwert

Eine Nachricht kann sehr lang sein, und asymmetrische Verfahren sind langsam. Darum bildet man zuerst den Hashwert der Nachricht. Diesen kurzen Wert signiert man.

Wer prüft, hasht die Nachricht selbst und vergleicht mit dem Wert, der aus der Signatur kommt.

Ein Spielzeug zum Nachrechnen

Wir nehmen das kleine RSA der letzten Lektion: n = 253, öffentlich e = 7, privat d = 63. Als Hashfunktion nehmen wir ein Spielzeug: die Summe aller Byte-Werte, Rest modulo 200.

Beides ist nicht sicher. Es soll nur zeigen, wie der Ablauf geht.

Den Spielzeug-Hashwert von „Zahle 40 Euro“ bilden

Befehl
python3 -c "print(sum(b'Zahle 40 Euro') % 200)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Signieren: mit dem privaten Exponenten potenzieren

Befehl
python3 -c "print(pow(75, 63, 253))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Prüfen: mit dem öffentlichen Exponenten zurückrechnen

Befehl
python3 -c "print(pow(179, 7, 253))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was das Terminal ausgibt

Die drei Befehle geben 75, 179 und wieder 75 aus. Der Hashwert ist 75. Die Signatur ist 179. Die Prüfung mit dem öffentlichen Schlüssel ergibt 75 und passt zum Hashwert.

Wäre die Nachricht verändert worden, hätte die Prüfung einen anderen Wert ergeben.

Ein anderer Text mit dem Spielzeug-Hash

Befehl
python3 -c "print(sum(b'Zahle 04 Euro') % 200)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das zeigt, warum der Hash stark sein muss

Warnung

Der Befehl gibt wieder 75 aus. „Zahle 04 Euro“ hat dieselbe Signatur wie „Zahle 40 Euro“. Eine Signatur ist nur so gut wie ihre Hashfunktion. Echte Signaturen nutzen SHA-256.

Ein HMAC braucht ein gemeinsames Geheimnis

Ein HMAC ist ein Hashwert, in den ein geheimer Schlüssel eingeht. Beide Seiten kennen denselben Schlüssel. Jede Seite kann ihn bilden und prüfen.

Eine Signatur ist stärker: Nur die Person mit dem privaten Schlüssel kann sie bilden. Alle anderen können nur prüfen.

Einen HMAC von „Hallo“ berechnen

Befehl
python3 -c "import hmac, hashlib; print(hmac.new(b'schluessel', b'Hallo', hashlib.sha256).hexdigest())"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der HMAC hat dieselbe Länge wie SHA-256

Der Befehl gibt 64 Zeichen aus, die mit 119b544d beginnen. Mit einem anderen Schlüssel kommt ein völlig anderer Wert heraus.

Wer den Schlüssel nicht kennt, kann den Wert nicht nachbauen.

Ein Zertifikat bindet einen Namen an einen Schlüssel

Ein Problem bleibt: Woher wissen Sie, dass ein öffentlicher Schlüssel wirklich zur Bank gehört? Jede Person könnte einen Schlüssel unter fremdem Namen anbieten.

Ein Zertifikat löst das. Eine Zertifizierungsstelle prüft den Namen und unterschreibt die Verbindung von Name und Schlüssel.

Ein Beispiel: was in einem Zertifikat steht

FeldBeispielBedeutung
Nameshop.beispiel.deFür wen es gilt
Öffentlicher Schlüssel(ein langer Wert)Der Schlüssel zum Namen
AusstellerZwischenstelle NordWer unterschrieben hat
Gültig bis2028Danach gilt es nicht mehr
Signatur(ein langer Wert)Die Unterschrift des Ausstellers

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Was Ihr Browser bei jedem Zertifikat prüft

PrüfungFrageFällt sie durch
GültigkeitIst das Ablaufdatum noch nicht erreicht?Warnung: abgelaufen
KetteHat jedes Zertifikat den Aussteller des nächsten?Warnung: Kette unterbrochen
AnkerEndet die Kette bei einem bekannten Anker?Warnung: unbekannter Aussteller
NamePasst der Name zur aufgerufenen Adresse?Warnung: falscher Name

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, das Schloss im Browser heiße: Diese Webseite ist ehrlich. Das stimmt nicht. Es heißt: Die Verbindung ist verschlüsselt, und der Name wurde geprüft. Auch eine Betrugsseite kann ein gültiges Zertifikat haben.

Weiterführend: ein Zertifikat widerrufen

Ein Zertifikat kann ungültig werden, bevor es abläuft, zum Beispiel wenn ein privater Schlüssel gestohlen wurde. Dann widerruft die Stelle es.

Schreiben Sie in drei Sätzen, wie ein Browser von einem Widerruf erfahren könnte und was geschieht, wenn er die Liste der Widerrufe nicht erreicht.

Über dieses Lab und seinen Quellcode: Lab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.