SkillGridInformatik durch Machen lernen

Hashing, Verschlüsselung und Signaturen

Ein Werkzeug versteckt Daten, ein anderes nimmt nur einen Fingerabdruck, ein drittes beweist den Absender. Verwechselt man sie, brechen echte Systeme.

15 Min. · 45 XP

Drei Werkzeuge werden ständig verwechselt, und die Verwechslung verursacht echte Sicherheitsvorfälle. Ein Hash ist ein Fingerabdruck: Er beweist, dass zwei Dinge gleich sind, ohne das Original zu zeigen. Verschlüsselung ist eine verschlossene Kiste: Sie versteckt Daten, damit die richtige Person sie später öffnen kann. Eine digitale Signatur ist ein Siegel: Sie beweist, wer etwas geschrieben hat und dass unterwegs nichts geändert wurde. Verschiedene Aufgaben, verschiedene Werkzeuge.

Eine Hash-Funktion nimmt eine beliebige Eingabe und erzeugt einen Wert fester Länge, immer denselben für dieselbe Eingabe. Ändere ein Zeichen, und das Ergebnis ändert sich vollständig, ohne dass man vorhersagen könnte, wie. Und sie läuft nicht rückwärts: Aus dem Hash lässt sich die Eingabe nicht zurückgewinnen. Genau diese Eigenschaft ist der Grund, warum Passwörter als Hash gespeichert werden und nicht als Text.

input            hash of the input
---------------  --------------------------------
hello            2cf24dba5fb0a30e26e83b2ac5b9e29e...
HELLO            5d41402abc4b2a76b9719d911017c592...
hello!           ce06092c8f0e3f0e2b8f6ec9c8f4b1f2...

one character changed  ->  a completely different hash
same input every time  ->  the same hash, alwaysEin Hash ist ein Fingerabdruck, keine verschlossene Kiste: Er beweist, dass die Eingabe dieselbe war, und verrät die Eingabe nie.

Verschlüsselung ist das Gegenteil von Hashing: Sie soll umkehrbar sein. Ein Schlüssel macht lesbaren Text zu unlesbaren Bytes, und der richtige Schlüssel macht sie wieder lesbar. Genau diese Umkehrbarkeit ist der Grund, warum man Passwörter niemals so speichert — wenn der Server sie entschlüsseln kann, kann das jeder, der den Schlüssel stiehlt. Verschlüsselung ist für Daten auf dem Weg und für Dateien, die später wieder gelesen werden müssen.

BrowserShop serverHTTPS: here is my card numbereverything below happens inside TLSlock and key agreed oncescrambled bytesanyone reading the cable sees noise, not the card

Eine digitale Signatur beantwortet eine andere Frage: nicht "was steht da", sondern "wer hat es geschrieben, und ist es unverändert". Du signierst mit einem privaten Schlüssel, der deine Maschine nie verlässt; jeder kann die Signatur mit dem passenden öffentlichen Schlüssel prüfen. Darauf beruhen HTTPS-Zertifikate, und deshalb kann eine Download-Seite dich prüfen lassen, ob die Datei wirklich die veröffentlichte ist.

openssl dgst -sha256 -sign release.key -out app.sig app.bin
openssl dgst -sha256 -verify release.pub -signature app.sig app.binDas Muster in je einer Zeile: Signieren erzeugt eine kleine .sig-Datei, Prüfen nimmt sie an oder lehnt sie ab.

Praxis

  1. Ordne jedem Werkzeug die Aufgabe zu, für die es wirklich gedacht ist.

    Hinweise
    • Frag bei jedem Werkzeug: Lässt es sich wieder in den Originaltext zurückverwandeln?
    • Ein Fingerabdruck identifiziert, eine Kiste versteckt, eine Signatur beweist, wer geschrieben hat.

    15 XP

  2. Zwei Nutzer wählen dasselbe Passwort. Ihre in der Datenbank gespeicherten Hashes sehen völlig verschieden aus. Wodurch?

    Hinweise
    • Das Salt liegt neben dem Hash, es ist also kein Geheimnis.
    • Seine Aufgabe ist, dass zwei Leute mit demselben Passwort nicht denselben gespeicherten Wert bekommen.

    14 XP

  3. Warum nutzt TLS einen Schlüsselaustausch, statt einfach einen gemeinsamen geheimen Schlüssel an beide Seiten zu schicken?

    Hinweise
    • Ein gemeinsames Geheimnis muss erst zu beiden Seiten gelangen — und dieser Weg ist die Schwachstelle.
    • Signieren läuft andersherum: Der Schlüssel, der die Urheberschaft beweist, verlässt seinen Besitzer nie.

    16 XP