| Skript-Anfang | Skript – Seite 7 |
|---|---|
| Skript-Ende | Skript – Seite 11 |
CAECAR
- 2 Tabellen übereinander legen und Buchstaben-Paare aus Klar und Geheim verbinden
- Kerckhoff-Prinzip
- 26 Schlüssel existieren (=Schlüsselraum)
Erweiterter CAECAR (Bsp. 1.10)
- Beliebiges Ersetzen von Buchstaben vergößert den Schlüsselraum
- Siehe auch Abbildung Seite 8
- CAECAR = z.B.: QDSQDZ
- Anzahl der Schlüssel
- 1. Buchstabe kann durch 26 mögliche Buchstaben ersetzt werden
- 2. Buchstabe kann durch 25 mögliche Buchstaben ersetzt werden
- ..
- 26. Buchstabe kann durch 1 möglichen Buchstaben ersetzt werden
- = 26! bzw. 288 mögliche Schlüssel (1*2*3*..*24*25*26 = 403.291.461.126.605.635.584.000.000)
- Möglicher Angriff über die relative Häufigkeit von Buchstaben in sinnvollen deutschen Texten
Angriffsverfahren – Relative Häufigkeit von Buchstaben
- Die relativen Häufigkeiten werden beim Chiffrieren übernommen, z.B.: E → S
- S kommt im Chiffretext genauso häufig vor wie E im Klartext
- Welcher Buchstabe kommt am häufigsten vor? (ursprünglich E)
- Welcher Buchstabe kommt am zweithäufigsten vor? (ursprünglich N)
- Durch geschicktes Betrachten des Textes können die Buchstaben fortlaufend entziffert werden
- Auch das Austauschen von Leerzeichen und Satzzeichen kann über das Verfahren dechiffriert werden
- Solche Angriffe werden auch statistische Angriffe genannt
- Siehe auch Tabelle auf Seite 9
Weitere Ansätze
- Jedes x-te E durch einen anderen Buchstaben ersetzen (Enigma)
- Buchstaben auffüllen nach bestimmten Raster (einfügen an Positonen 1, 3, 5, .. , etc.)
- Ersetzen von Buchstabenpaaren
Buchstabenpaare ersetzen
- AB → XZ
- AA → ZT
- Nicht sicher! → Brechen über Bigrammhäufigkeit (en, ss, ch, tr)
Sicheres Verschlüsselungsverfahren (Bsp 1.11)
- Klartexte sind Bitstrings x=(x1, … , xn) ∈ {0,1}n
- Kodierung über ASCII-Code
- A = 01000001
- B = 01000010
- C = 01000011
- Schlüssel (k1, … , kn) ∈ {0, 1}n
- Verschlüsselungsfunktion: F = {0, 1}n x {0, 1}n → {0, 1}n; (x, k) → x ⊕ k
- ⊕ ist die komponentenweise Addition modulo Z
- (x1 , … , xn) ⊕ (k1 , … , kn) = (x1 ⊕ k1 , … , xn ⊕ kn)
- 0 ⊕ 0 = 0
- (1 ⊕ 0) = (0 ⊕ 1) = 1
- 1 ⊕ 1 = 0
- XOR
- Absolut sicher → nicht knackbar mit endlichen Ressourcen
Sicherheitsdiskussion
- Angreifer kennt Chiffretext
- y = (y1, … , yn)
- Ziel des Angreifers ist die Rekonstruktion des Klartextes (ohne Kenntnis des Schlüssels)
Verfahren
- Schlüssel k = (k1 , … , kn)
- Schlüssel ist zufällig gewählt, d.h. für alle ? ? ? gilt Pr(x ⊕ k = y) = (1/2)n
- Länge von Schlüssel und des Text sind gleich lang
- Für xi = 0 → Pr(yi = 0)
- xi ⊕ ki
- 0 ⊕ ki
- = Pr(ki=0) = 1/2
- Für xi = 1 → Pr(yi = 0)
- xi ⊕ k_i
- 1 ⊕ ki
- → Pr(yi = 0) = 1/2
- → Pr(yi = 1) = 1/2
- unabhängig von xi
Vorteile/Merkmale
- unabhängig von xi → y enthält keinerlei Informationen über x
- Im informationstechnischen Sinne bedeutet dies Absolut sicheres Verschlüsselungsverfahren
- Selbst ein Angreifer mit unbeschränkten Ressourcen (Ressourcenkapazität und Zeit) kann den Klartext nicht ermitteln
Nachteile
- Idee: Den selben Schlüssel für alle Texte nutzen
- Dann gilt:
- y1 ⊕ y2 = (x1 ⊕ k) ⊕ (x2 ⊕ k) = x1 ⊕ x2
- y2 ⊕ y3 = x2 ⊕ x3
- y1 ⊕ y3 = x1 ⊕ x3
- Je mehr Texte mit dem selben Schlüssel verschlüsselt sind, desto schneller/einfacher wird das Verfahren geknackt
Angriff:
- Ermittle alle sinnvollen Zeichenkombinationen für x1
- Wähle eine aus (Annahme/Raten, diese ist der ursprüngliche Klartext)
- Berechne x2 = x1 ⊕ x2 ⊕ x1
- Berechne x3 = s.o.
- Prüfe, ob x2 und x3 sinnvolle Kombinationen sind
- Man muss den Schlüssel nicht identifizieren, wir rechnen mittels XOR die Texte gegeneinander und prüfen, ob sinnvolle Texte dabei entstehen.
Ergebnis C.E. Shannon (1948)
- siehe Satz 1.2
Wie messen wir Sicherheit?
- Sicherheitsniveau von n Bit heißt, ein Angreifer benötigt 2n Versuche um das Verfahren zu brechen
- Durchsuchen des Schlüsselraums
- Anwendung anderer kryptographischer Methoden
- Heute gefordertes Sicherheitsniveau = 128 bit (also insbesonders Schlüssellänge = 128 bit)
- Sicherheit hängt primär von der Stärke des Algorithmus ab
- Auch zu berücksichtigen
- konkrete Implementation des Algorithmus
- Hintergrundsysteme (z.B.: Zuordnung der Schlüssel zu Personen, Sicherung der Schlüssel)