| Skript-Anfang | Skript – Seite 29 |
|---|---|
| Skript-Ende | Skript – Seite 32 |
Praktikum
- Das was abgegeben wurde ist in Ordnung
- Wenn etwas nicht stimmt, meldet er sich von selbst
Evaluation
- Wurde durchgeführt
Datenauthentisierung
- Garantiert, dass Daten nicht verändert wurden
- Dazu:
- Beweisender (B) ist der Sender / Erzeuger von Daten
- B berechnet mittels eines kryptographischen Schlüssels eine Prüfsumme über die zu authentifizierenden Daten
- Prüfer (P) überprüft die Prüfsumme mittels eines kryptographischen Schlüssels
- Wir unterscheiden:
- Symmetrische Verfahren (Schlüssel zur Berechnung = Schlüssel zur Prüfung)
- Asymmetrische Verfahren (Schlüssel zur Berechnung ≠ Schlüssel zur Prüfung)
Message Authentication Code (MAC)
- Siehe auch: http://de.wikipedia.org/wiki/Message_Authentication_Code
- Symmetrisches Verfahren
- Basieren häufig auf Blockchiffren oder Hash-Funktionen
- B und P müssen vorab einen symmetrischen Schlüssel ausgetauscht haben
Erste Idee zur Umsetzung
- Basierend auf einer Hash-Funktion M:{0,1}* → {0,1}n
- B und P vereinbaren Schlüssel k ∈ {0,1}128
Erklärung
- Hashfunktion nach Merkle-Damgard
- || bedeutet „direkt hintereinander“
- H(k||m) = Funktion zur Berechnung der Prüfsumme
- k= Schlüssel
- m = Nachricht
- c = Prüfummse
Authentisierung
- B authentisiert m ∈ {0,1}*
- Berechne c = M(k||m)
- Sende m und c an P
Prüfung
- P prüft Authentizität von m
- Berechne c‘ = M(k||m)
- Prüft ob c=c‘ gilt
Dieses Verfahren ist unsicher
- Angreifer kann weitere Blöcke an m hängen, Hashwert weiter rechnen und so eine gültige Prüfsumme berechnen
- Schützt also nur den Anfang einer Nachricht, aber nicht das Ende
- → „Wir greifen morgen um 10 Uhr an“
- → „Wir greifen morgen um 10 Uhr an, wenn es nicht regnet“
- Auch H(m||k) keine gute Idee, denn das schützt auch nur das Ende der Nachricht und nicht den Anfang
Beispiel für eine Length Extension Attack
- Normalerweise braucht ein Angreifer den Schlüssel um eine neue Prüfsumme zu erzeugen
- Mit einer Length Extension Attack wird die Prüfsumme wieder in die Hashfunktion eingegeben und man setzt am Ende wieder an
- Die Länge der ursprünglichen Nachricht muss dafür bekannt sein
- Neue Prüfsumme und Daten werden übermittelt
| – | Original | Modifiziert |
|---|---|---|
| Data | count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo | count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo&waffle=liege |
| Signature | 6d5f807e23db210bc254a28be2d6759a0f5f5d99 | 0e41270260895979317fff3898ab85668953aaa2 |
Sichere MAC-Verfahren
- CMAC basiert auf Blockchiffren (C=Chiffre)
- HMAC basiert auf Hash-Funktionen (Hash)
- HMAC(k,m) = H((ko+opad)||H((ko+ipad)||m))
- opad = 0x5C … 5C (Schlüssellänge)
- ipad = 0x36 … 36 (Schlüssellänge)
- H((ko+ipad)||m) → Sichert den Anfang der Nachricht ab
- H((ko+opad)||H((ko+ipad)||m)) → Sichert das Ende der Nachricht ab

Verschlüsselungsverfahren und MAC-Verfahren
- Werden häufig zusammen geschaltet
- Secure Messaging
- Vertraulicher und authentischer Tunnel / Kanal
- MAC-Verfahren müssen nicht die Vertraulichkeitgarantieren
- MAC-Verfahren erfüllen nicht das Schutzziel Nichtabstreitbarkeit
- Prüfer und und Beweisender verwenden den gleichen Schlüssel
- Auch P könnte die Daten authentisiert haben
- Gegenüber Dritten ist nicht nachweisbar, ob B oder P die Daten authentisiert hat
- Zwei Nebenbedingungen:
- Setze für Verschlüsselung und Datenauthentifizierung verschiedener Schlüssel ein („Trenne wo du trennen kannst“)
- Erst Verschlüsseln → dann verschlüsselte Daten Authentisieren (Vertraulichkeit ist ein anderes Schutzziel als Authentizität)
Signaturverfahren
- Sind asymmetrische Authentifizierungsverfahren
- B nutzt geheimen Schlüssel zur Berechnung der Prüfsumme
- P prüft mittels öffentlichem Schlüssel
- Erfüllt auch das Schutzziel Nichtabstreitbarkeit → Prüfsumme nur vom Inhaber des geheimen Schlüssels berechnet werden
- Zum Beispiel RSA oder Digital Signature Algorithm (DSA)
RSA
- B nutzt geheimen Schlüssel d um Prüfsumme S = md mod n zu berechnen
- P nutzt öffentlichen Schlüssel e um m‘ = se mod n zu berechnen
- Wegen (md)e = mod n = m akzeptiert P, wenn m‘ = m
- Besteht aus:
- Hashfunktion H:{0,1}* → {0,1}n ( Um Sicherheitsniveau 100 Bit zu erreichen muss n >= 200 sein)
- Einem Signaturalgorithmus
Problem
- Es können nur Nachrichten der Länge m ≤ n signiert werden
- Für n ≈22000 als Bitlänge ≤ 2000
Lösung
- Nachricht m wird zunächst gehasht
- Signiert und geprüft wird dann H(m)
- Dazu wichtig: Hashfunktion muss kollisionsresistent sein
- Gilt für zwei Nachrichten m und m‘ → H(m) = H(m‘) → dann ist eine gültige Signatur für m auch eine für m‘
DSA
- Sicherheit beruhrt auf der vermuteten Schwere des Diskreten Logarithmusproblems in bestimmten endlichen Gruppen
- Diskretes Logarithmusprublem in Z*p = {1, … , p-1}
- Gegegeben: Zwei Elemente g,h ∈ Z*p
- Lösung: loggh (d.h. x mit gx = h)