Verschlüsselung Flashcards
Substitutionschiffre: Vorgehensweise
- Teile den Klartext in handliche Einheiten
- Ersetze jeden Buchstaben gemäß einer (bijektiven) Tabelle durch einen anderen Buchstaben oder ein Symbol. Jedes Klartextsysmbol hat genau ein Chiffretextsymbol und umgekehrt. Die Position des Zeichens bleibt unverändert.
Algo: Ersetzungsverfahren
Schlüssel: Tabelle
Substitutionschiffre: Probleme
Ausnutzung von Klartextstatistiken (Buchstabenhäufigkeit, Häufigkeit von Buchstabenkombinationen, Semantik)
-> Bei längeren Chiffretexten automatische und garantiert richtige Entschlüsselung möglich
Transpositionschiffre: Vorgehensweise
- Teile den Klartext in handliche Einheiten (z.B. Buchstaben)
- Ändere Reihenfolge der Buchstaben (z.B. Skytale oder Tabelle). Die Zeichen bleiben unverändert, es ändert sich nur die Position.
Transpositionschiffre: Probleme
Transpositionschiffren sind leicht zu knacken (wenige mögliche Schlüssel). Für sich genommen unsicher.
Vernam-Chiffre: Vorgehensweise
- m XOR k = c (bitweise)
c XOR k = m (bitweise) - Verschlüsselung funktioniert genauso wie Entschlüsselung -> Involutionschiffre
Vernam-Chiffre: Probleme
Die Vernam-Chiffre bietet perfekte Sicherheit, sie kann nicht gebrochen werden, wenn
- der Schlüssel immer mindestens so lang ist wie die Nachricht (bzw. wie alle zu erwartenden Nachrichten)
- Jedes Schlüsselbit darf nur einmal verwendet werden
-> Funktioniert in der Praxis nicht
Vernamchiffre - Angriffe
1)
c1=0101 und c2=1100 sind unter gleichem Schlüssel entstanden. m1 ist 1011. Wie lautet m2?
m1 xor k = c1
k = c1 xor m1
c2 xor k = m2
2)
c1 und c2 sind unter gleichem Schlüssel entstanden. Über m ist nichts bekannt. Was kann der Angreifer über m1 und m2 lernen?
c1 xor c2 = m1 xor k xor m2 xor k
c1 xor c2 = m1 xor m2
Die Positionen, an denen sich die Chiffretexte unterscheiden sind die gleichen, an denen sich die Klartexte unterscheiden. Unter Kenntnis der verwendeten Sprache lassen sich beide Klartexte Stück für Stück rekonstruieren.
Idee von Blockchiffren
Bei Substitutionschiffren über großen Blöcken wird die Häufigkeitsanalyse hinfällig. Sicher, allerdings werden die Tabellen exorbitant groß. Daher wird eine Funktion anstatt einer Tabelle benötigt, die sich effizient berechnen lässt. -> Permutation
Blockchiffre Ek ist eine Permutation über {0,1}^b
DES: Vorgehensweise grob
geg: 56Bit Masterschlüssel
Blocklänge 64 Bit
Feistel-Konstruktion
- Initial Permutation
- 16 Runden f mit XOR R/L
- Initial Permutation^-1
- Rundenschlüssel besteht aus 48 Bits des Masterschlüssels (56Bit) -> key schedule
- Entschlüsselung: Prozess rückwärts
DES: Vorgehensweise f
- Expander erweitert 32 zu 48 Bit-Blöcken durch Wdh
- Vernam: XOR mit ki
- Substitution: S-Boxen - Lookup von 6 auf 4 Bit
Transposition: Bitshuffle
3DES: Vorgehensweise
- mehrfache Ausführung von DES
3DES: Probleme
- Durch MITM-Angriff Sicherheitsniveau 112Bit ungleich Schlüssellänge 168 (3*56)Bit
MITM-Angriff
Das Sicherheitsniveau von DES und 3DES ist ungleich der Schlüssellänge:
Für 2DES: 2⁵⁷ anstatt 2¹¹²
Für 3DES: 2¹¹² anstatt 2¹⁶⁸
- Probiere alle k1 aus und speichere Zwischenergebnis in Tabelle (entspricht Bruteforce auf 1. Hälfte der Chiffre)
- Für k2: Teste, ob DES-¹ in der Tabelle ist. Falls ja: Kandidatenpaar durch Probeentschlüsselung testen. Wenn das klappt, ist der Schlüssel gefunden
MITM - Aufwand 2DES
Aufwand: 2^56+2^56+2^48=2^57
(2^56 DES-Berechnungen und 2^56 Probeentschlüsselungen plus Zusatztests: 2^56 * 1/2^8)
Speicherbedarf: Tabelle mit 2^56 Einträgen
MITM - Aufwand 3DES
Aufwand: 2^56 + 2^112 + 2^104 = 2^112
(2^56 DES-Berechnungen und 2^112 Probeentschlüsselungen plus Zusatztests: 2^112 * 1/2^8)
Speicherbedarf: Tabelle mit 2^56 Einträgen
AES: Vorgehensweise
Idee: Verwendung von vielen kleinen Permutationen hintereinander. -> jede für sich schwach, aber zusammen: hart
- 16 Byte = 128 Bit Blocklänge
- 128,192,256 Bit Schlüssellänge
- 10,12,14 Runden
1) Key Addition (-> entspr. Vernamchiffre, Schlüsselabhängigkeit herstellen)
2) Substitution (-> entspr. Substitutionschiffre, Linearität zerstören)
3) Shift Row (entspr. Transpositionschiffre, Durchmischen der Byteblöcke)
4 Mix Column (entspr. Transpositionschiffre, gegenseitiges Beeinflussen der Bits)
In der letzten Runde: kein Mix-Column, dafür zusätzliche KeyAddition mit k11
Ideale Blockchiffre
Eine ideale Blockchiffre verhält sich bei Schlüssellänge 2^l wie 2^l zufällig bestimmte Permutationen.
Sichere Blockchiffre: Definition
Eine Blockchiffre heißt sicher, wenn man sie nicht von einer idealen Blockchiffre unterscheiden kann, ohne den Schlüssel zu kennen. Ein Angriff gegen eine Blockchiffre liegt vor, wenn dieser nicht auch gegen eine ideale Blockchiffre eingesetzt werden kann. -> Bruteforce ist kein Bruch der Chiffre
Sichere Blockchiffre: Voraussetzungen
Eine Blockchiffre ist nicht sicher, wenn
- der Angreifer den Schlüssel herausfinden kann
- der Angreifer einen verschlüsselten Text von Zufallstext unterscheiden kann
- wenn der Angreifer den Klartext (oder nur ein Bit davon) heruasfinden kann
- ähnliche Schlüssel zu ähnlichen Verschlüsselungen führen
Blockchiffre: Wie groß muss der Schlüssel sein?
40Bit: katastrophal schwach 80Bit: niedriges Sicherheitsniveau 128Bit: normales Sicherheitsniveau 192Bit: hohes Sicherheitsniveau 256Bit: sehr hohes Sicherheitsniveau (inkl. QuantenC.)
Blockchiffre - Modes of Operation
Electronik Codebook Mode - ECB
Cipher Block Chaining - CBC
Output Feedback Mode - OFB
Counter Mode - CTR
Modes of Operation - Wozu?
Verschlüsselung von Nachrichten, die länger als b Bit sind mit einer b-Bit-Blockchiffre, OHNE dass
- gleiche Klartextblöcke innerhalb der Nachricht zu gleichen Chiffretextblöcken führen
- gleiche Nachrichten zu gleichen Chiffretexten führen
ECB-Mode
Problem: Gleicher Chiffretext bedeutet gleicher Klartext (siehe Pinguin, auch zwischen mehreren Nachrichten)
Gleicher Effekt wie bei Substitutionschiffre
-> Benutze niemals ECB-Mode
CBC-Mode
1) Initialisierungsvektor: Zusammen mit der Nachricht wird ein öffentlicher, einmaliger Bitvektor (IV) verschlüsselt, der jede Verschlüsselung anders aussehen lässt
2) Verkettung: Jeder Klartext wird durch den vorhergehenden Chiffretext modifiziert, damit gleiche Blöcke zu verschiendenen Chiffretexten führen
OFB-Mode
Stromchiffre: Der Schlüsselstrom (IV,k) ist unabhängig von der Nachricht m.
Probleme:
- m wirkt sich nicht auf die nächste Runde aus (ähnlich Vernam)
- IV darf sich nicht wiederholen (ansonsten ist die Schlüsselstromsequenz identisch, siehe Pinguin und Vernam)
OFB-Mode - Vor-/Nachteile
- Falls zi = zj: Die Schlüsselstromsequenz wiederholt sich periodisch, siehe Pinguin
=> totaler Zusammenbruch der Sicherheit
=> ungeeignet für zB DVD, da die gesamte Chiffre durchlaufen werden muss wenn nur ein einzelner Block entschlüsselt werden soll
Aber: braucht keinen eigenen Entschlüsselungsalgorithmus und kein Padding
CTR-Mode
- Stromchiffre: Der Schlüsselstrom (IV,k) ist unabhängig von der Nachricht m.
Probleme:
- m wirkt sich nicht auf die nächste Runde aus (ähnlich Vernam)
- IV darf sich nicht wiederholen (ansonsten ist die Schlüsselstromsequenz identisch, siehe Pinguin und Vernam)
- Falls zi = zj: Die Schlüsselstromsequenz wiederholt sich periodisch, siehe Pinguin
=> totaler Zusammenbruch der Sicherheit
Vorteil: Ver- und Entschlüsselung beliebiger (!) Blöcke ohne Zeitverlust. Vgl. DVD
Mode of Operation - Fazit
- immer Mode of Operation benutzen
- niemals ECB-Mode benutzen
- sicherstellen, dass der IV nicht wiederholt wird
Zusammenhang Blcokchiffre / Substitutionschiffre
Eine Substitutionschiffre ist eine Blockchiffre mit Blocklänge eins.
IV
Varianten
1) Counter IV:
zB Nachrichtennummer. Unterscheidet sich nur in 1 Bit, Problem wenn sich die beiden Nachrichten um gleichen Bit unterscheiden. Außerdem Synchronisationsproblem
2) Zufälliger IV
muss immer mitgeschickt werden, Zufallszahlen nicht immer verfügbar
3) Abgeleiteter IV
Counter vor Verwendung durch Blockchiffre schicken
Vorteil beider Ansätze
Stromchiffre
Jedes Zeichen des Klartextes wird einzeln verschlüsselt. Es wird ein Schlüsselstrom erzeugt, mit dem die Nachtichten m1, m2, mn verschlüsselt werden.
Blockchiffre
Der Klartext wird in Blöcke einer festen Länge zerlegt und dann verschlüsselt.