Eine digitale Signatur (Unterschrift) sichert Verbindlichkeit und Authentizität des Absenders. Beide Ziele lassen sich durch asymmetrische Verschlüsselung erreichen.
Zum Signieren einer Nachricht verschlüsselt der Erzeuger diese mit seinem geheimen Schlüssel. Er veröffentlicht Klartext und die erzeugte Signatur. Jeder Nutzer kann nun mithilfe den öffentlichen Schlüssels des Erzeugers zum Entschlüsseln der Signatur nutzen. Erhält er eine identische Kopie der Nachricht, dann war die Signatur echt.
In der Realität ist es jedoch sehr ungünstig, das Klartextdokument und ein ebenso großes Dokument, welches die Unterschrift darstellt zu erzeugen und zu übermitteln. Daher signiert man nicht den Klartext, sondern die gehashter Form des Klartextes.
Das Anwenden einer Hash-Funktion auf einen Dokument erzeugt einen Hashwert, der folgende Eigenschaften besitzt:
- Kompression: Nachrichten beliebiger Länge werden auf Nachrichten einer festen Länge komprimiert.
- Einwegfunktion: Aus dem Komprimat kann man nicht auf die Nachricht schlussfolgern.
- Kollisionsresistenz: Es ist praktisch unmöglich, zwei verschiedene Nachrichten mit dem gleichen Hashwert zu finden.
Da eine Hash-Funktion beliebigen Text jeweils in einen Hash-Wert fester Größe umwandelt, muss es Texte mit gleichem Hash-Wert geben! Kollisionsresistenz bedeutet, dass es praktisch unmöglich ist, solche Kollisionen zu erzeugen.
Für Freaks: Beispiel für MD5-Kollisionen (Tipp: beide Dateien in Cryptool hashen)