Sicherer Kanal: von Alice zu Bob Blockchiffren, Stromchiffren
Aktuell: http://heise.de/-1573945 Dr. Wolf Müller
Kodierung versus Verschlüsselung Ist base64 ein symmetrisches Verschlüsselungsverfahren? Bijektive Abbildung von Nachrichtentext und kodiertem Text. Auch zwischen verschiedenen Alphabeten. Genaue Vorschrift für Encoding, Decoding. ABER: Jeder kann es, kein zusätzliches Wissen nötig! Kein Schlüssel. Dr. Wolf Müller
Blockchiffren Klartext M Verarbeitung von Eingabeblöcken fester Länge, wobei jeder Block mit der gleichen Funktion verschlüsselt wird. Typische Blockgröße 64-Bit Klartext M der Länge m wird in r Blöcke der Länge n zerlegt. Letzter Block hat Länge 1≤k≤n, wird mit Füllmuster aufgefüllt (Padding) Damit bei Entschlüsselung das Ende des originalen Klartextes im aufgefüllten Block erkennbar, muss Länge des Füllbereichs oder Länge des Klartextbereichs mit in diesen Block codiert werden. http://de.wikipedia.org/wiki/Padding Ver- / Entschlüsselung separat für jeden Block mit gleichem Schlüssel K bzw. K‘, mit f(K)= K‘. M1 M2 M3 … Mr Schlüssel K K Schlüssel K Verschlüsselung Verschlüsselung … Verschlüsselung … C1 C2 Cr Schlüssel K‘ K‘ Schlüssel K‘ Verschlüsselung Verschlüsselung … Verschlüsselung … M1 M2 Mr Klartext M Dr. Wolf Müller
Block Operation Modes: ECB Electronic Codebook (ECB) Ci=E(Mi,K), Mi=D(Ci,K) Sender: Encryption Empfänger: Decryption E K M1 C1 E K M2 C2 … D K C1 M1 D K C2 M2 … … … Time Probleme? Dr. Wolf Müller
Demo #!/bin/bash CHIPHER=$1 BMP="xxx.bmp" ENC="enc-"$CHIPHER".bmp" rm -f $ENC tmp.enc #Längen LL=`ls -l $BMP | awk '{print $5}'` #Length HH=54 #Header BB=$(($LL-$HH)) #Body #Encryption openssl enc -$CHIPHER -e -in $BMP -out tmp.enc -k 0815 #BMP (Header + Encrypted Body without Padding) head -c $HH $BMP > $ENC tail -c $BB tmp.enc >> $ENC echo "$ENC written!" Dr. Wolf Müller
Ergebnisse: xxx.bmp des-cbc des-ecb aes-128-ecb aes-256-ecb Dr. Wolf Müller
Block Operation Modes: ECB Eigenschaften ECB Jeder Block ist unabhängig von anderen Blöcken. Verschlüsselung von gleichem Plaintext wird zu gleichem Ciffretext verschlüsselt. Fehlerfortpflanzung: Wenn ein Fehler in einem Chiffreblock vorkommt, ist nur der entsprechende Plaintextblock betroffen. Synchronisation: Wenn der Empfänger die Blockgrenzen nicht synchronisieren kann, ist eine Entschlüsselung unmöglich. Blöcke können unbemerkt dupliziert, hinzugefügt, vertauscht oder entfernt werden! Dr. Wolf Müller
Block Operation Modes: CBC Cipher Block Chaining (CBC) Ci=E(MiCi-1,K), Mi=D(Ci,K)Ci-1, C0=IV Initialisierungsvektor Sender: Encryption Empfänger: Decryption M1 M2 … C1 C2 … IV=C0 D D k k E E k k IV C1 C2 … M1 M2 … Dr. Wolf Müller
Block Operation Modes: CBC Eigenschaften von CBC Initialisierungsvektor IV muss angegeben werden. IV muss nicht geheim sein. Chiffreblock hängt ab von IV und allen Plaintextblöcken vor ihm. Identische Plaintextblöcke werden in verschiedene Chiffetextblöcke verschlüsselt. Reihenfolge der Blöcke ist signifikant. Wird sie verändert, ändert sich die Chiffrierung. Identische Plaintext-Sequenzen (am Anfang) werden zu identischen Chiffre-Sequenzen verschlüsselt, es sollten also unterschiedliche Initialisierungsvektoren verwendet werden. Fehlerfortpflanzung: Wenn ein Fehler in einem Chiffreblock auftritt, kann dieser und der nächste Plaintextblock nicht entschlüsselt werden. Synchronisation: Wenn Synchronisation bei diesem Chiffreblock wiedergewonnen wird, können dieser und der nächste Plaintextblock nicht entschlüsselt werden. Dr. Wolf Müller
Block Operation Modes: CFB Cipher Feedback (CFB) Ci=E(Ci-1,K)Mi, Mi=D(Ci-1,K)Ci, C0=IV Sender: Encryption Empfänger: Decryption Ci-1 Ci-1 D k E k Ci Mi Mi Ci Gleiche Eigenschaften, wie CBC. Nachrichten kürzerer als Blockgröße sind möglich. Dr. Wolf Müller
Block operation modes: OFB Output Feedback (OFB) zi=E(zi-1,K), Ci=ziMi, Mi=ziCi, z0=IV Sender: Encryption Empfänger: Decryption zi-1 Mi zi-1 Ci E k D k Ci Mi Nachrichten kürzer als Blockgröße sind möglich. Dr. Wolf Müller
Block operation modes: OFB OFB Eigenschaften Zustandssequenz zi ist unabhängig vom Plaintext. (Vorausberechnung möglich) Entspricht Verschlüsselung mit Pseudozufallszahlengenerator mit nichtlinearem Feedback. Fehlerfortpflanzung: keine. Synchronisation: Wenn Grenzsynchronisation verloren ist, muss das ganze System neu synchronisiert werden. Dr. Wolf Müller
Block operation modes: Weiteres Übersicht: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation Standard/Praxis: Recommendation for Block Cipher Modes of Operation (NIST) http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf Interessant: Counter CTR-Mode: vorberechenbar paralellisierbar Ggf. für Dateisysteme Dr. Wolf Müller
Block operation modes: CTR Counter (CTR) zi=E(nonce | i , K), Ci=ziMi, Mi=ziCi, Sender: Encryption Empfänger: Decryption nonce | i Mi nonce | i Ci E k E k Ci Mi Nachrichten kürzer als Blockgröße sind möglich. Dr. Wolf Müller
Blockchiffre Algorithmen: DES 3DES AES Dr. Wolf Müller
DES: Historie Data Encryption Standard (kurz: DES) DES Geschichte: Entwickelt durch IBM 1974 publiziert 1977 Anerkennung von DES als Standard durch ‘National Bureau of Standards’, heute NIST 1981 Anerkennung von DES als Standard durch ‘American National Standards Institute’ (ANSI X3.92) Dr. Wolf Müller
DES Symmetrischer Algorithmus Blockchiffre: Message blocks von 64 Bits. Verschlüsselung in Chiffreblocks von 64 Bits. Schlüssel von 64 Bits. Signifikante Schlüssellänge 56 Bits, mit 8 Paritätsbits |K|=256 64 bits Mi 64 bits Mi DES Key K 64(56) bits DES-1 Encryption Decryption 64 bits Ci 64 bits Ci Dr. Wolf Müller
DES: Blockchiffre Seine Entstehungsgeschichte gab wegen der Beteiligung der NSA am Design des Algorithmus immer wieder Anlass zu Spekulationen über seine Sicherheit. Verschlüsselungstechniken: Bitpermutationen (Transpositionen) Substitutionen bitweise Addition modulo 2 Schlüssellänge für heutigen Stand der Technik unzureichend, durch AES abgelöst. Jedoch noch in viele kommerzielle Produkte integriert. Dr. Wolf Müller
Blockchiffre: Triple DES (3DES) DES Algorithmus ist kryptografisch stark, Wunsch, Schlüssellänge zu erhöhen. Lösung: Mehrfachverschlüsselung des Klartexts mit verschiedenen Schlüsseln DES-Verschlüsselungen bilden keine Gruppe, Verwendung verschiedener Schlüssel kann auf Vergrößerung des Schlüsselraumes führen. Aber: Zweifach Verschlüsselung liefert nicht Schlüsselraum von 2112. Mit Meet-in-the-middle Angriff werden nur 257 Ciffrier- und Dechiffriervorgänge gebraucht, um Schlüssel zu brechen. Fortschritte durch Triple-DES (3 Schlüssel K1, K2, K3): Verschlüsselung: DES (DES-1(DES (X,K1), K2), K3) Entschlüsselung: DES-1(DES (DES-1 (X,K3), K2), K1) Effektive Schlüssellänge anstelle von 168 Bit nur 108 Bit, Schlüsselraum 2108, länger, aber auf lange Sicht nicht ausreichend! 3fache Verschlüsselung recht ineffizient Dr. Wolf Müller
AES-Wettbewerb Januar 1997: Wettbewerb für neue Verschlüsselungstechnik durch Nationales Institut für Standards und Technologie der USA (NIST) ausgerufen AES soll ein Federal Information Processing Standard (FIPS) werden Evaluierung von Sicherheit und Effizienz nicht durch NIST selbst, sondern offen. Anforderungen: symmetrischer Blockchiffre Blockgröße:128 Bit Schlüssellängen: 128, 192 und 256 Bit Resistenz gegen alle Methoden der Kryptoanalyse sehr effizient in Software und Hardware (auch auf 8 Bit-Prozessoren (Chipcards)) einfach implementierbar
AES-Wettbewerb: Finalisten MARS Sehr langsam in HW, für einfache Chipkarten ungeeignet. RC6 Langsam in HW, für billige Chipkarten ungeeignet. Serpent Schnell in HW, langsam in SW Twofish Relativ schnell in HW. Schnell in SW. Rijndael Schnell in HW & SW Einfaches, elegantes Design. Dr. Wolf Müller
AES: The Winner is? Rijndael Oktober 2002 : Rijndael Autoren: Joan Daemen, Vincent Rijmen (Belgien) Algorithmus hat sehr gute Performance in Hardware und Software Algorithmus ist sehr einfach Rijndael verschlüsselt mit 8 und 32 Bit Operationen 8 Bit = 1 Byte und 32 Bit = 4 Byte = 1 Wort Blockgröße nicht zwingend 128 Bit (AES), sondern jedes Vielfache von 32 zwischen 128 und 256 Bit möglich. * 1970 * 1965 In puncto Sicherheit gab es auch einige Kandidaten, welche Rijndael gleichwertig waren
Rijndael GF(2) |8 Byte b7…b0 als Koeffizienten eines Polynoms darstellbar: b(x) = b7x7 + b6x6+ … + b2x2 + b1x + b0 Beispiel: 01010011 x6 + x4 + x + 1 b(x) repräsentiert Elemente des endlichen Körpers GF(2)|8 Alle möglichen Bytes sind genau die Elemente von GF(2)|8 Endlicher Körper <F, Å, Ä >: <F, Å> und <F\{0}, Ä> sind abelsche Gruppen Å und Ä sind distributiv Å ist Addition der Komponenten modulo 2, auf Byte-Ebene entspricht Å der Operation XOR Ä ist Multiplikation von Bytes modulo m(x)= x8 + x4 + x3 + x + 1 (irreduzibles Polynom, 8ten Grades) Multiplikation von Worten: wie mit Bytes, mit irreduziblem Polynom m(x) = x4 +1
AES Verschlüsselungs-Runde Datablock di-1: 128 Bits/16 Bytes AES Key: 128/192/256 Bit Transformationen basierend auf Byte-Operationen - Substitution - Permutation - Intermix Rundenschlüssel abgeleitet vom AES Key 10/12/14 mal, abhängig von Schlüsselgröße Data block di: 128 bits/16 bytes Keine Transformationsbox in Anfangsrunde Kein Intermix in letzter Runde Dr. Wolf Müller
AES Verschlüsselungs-Runde (2) Transformationen: Substitution Jedes Byte durch sein multiplikativ-inversen Wert ersetzt. Bytes werden verwendet, um Polynome von einem Grad kleiner 8 darzustellen, wegen der Reduktion auf irreduzible Polynome modulo 8 Bytes werden als Elemente eines endlichen Körpers interpretiert. Addition und Multiplikation sind definiert, unterscheiden sich aber von der von normalen Zahlen. Permutation Positionstausch der Bytes Intermix Matrix Multiplikation der Bytes in dem „internen Zustand“ Dr. Wolf Müller
AES Verschlüsselungs-Runde (3) Schlüsselableitung: Mit Schlüssellänge 128 Bit, jede Runde erfordert 128 Bit. Schlüssel wird in 4 Worte zu je Byte aufgeteilt. wi=wi-1 XOR wi-4 Wenn i mod 4=0, wird Schlüsseltransformation (KT) angewendet. KT beinhaltet Byte- Verschiebungen, Substitutionen und die Addition einer „Runden- konstanten“, Quadrierung im Raum der irreduziblen Polynome in GF(28). KT w0 w1 w2 w3 w4 w5 w6 w7 … AES Key =Schlüssel für Runde 0 Schlüssel für Runde 1 Dr. Wolf Müller
Rijndael: Kryptoanalyse & Verwendung resistent gegen lineare und differenzielle Kryptoanalyse saturation attack chosen-plaintext + Ausnutzung der byte-orientierten Struktur (bisher) nur für rundenreduzierte (7 Runden) Version möglich Angriffe auf Implementierung: timing attack power analysis Verwendung: WPA2, Truecrypt, SSH, IPsec Skype, 7-Zip,PGP Implementation attacks: man muss den Verschlüsselungsvorgang des verschlüsselnden Rechners analysieren Timing attack: von Ausführungszeit können Rückschlüsse auf Schlüssel gezogen werden Power analysis: Ressourcenverbrauch während der Verschlüsselung wird analysiert
Demo in Crypttool http://www.cryptool.de/ Dr. Wolf Müller
Stromchiffren Initialwert Initialwert Schlüssel- zeichen Sicherer Austausch Initialwert Initialwert Schlüssel- zeichen Klartext Chiffretext Schlüssel- zeichen Chiffretext Klartext Pseudozufalls- zahlengenerator Pseudozufalls- zahlengenerator unsicherer Kanal Empfänger Sender Dr. Wolf Müller
(Pseudo) Zufallsgeneratoren Nichtdeterministisch Physikalisch (thermisches Rauschen, radioaktiver Zerfall …) Wichtig: äußere Einflussnahme ausschließen Ggf. Nutzung spezieller Hardware Quasizufällige Ereignisse (/dev/random) Pseudozufallsgeneratoren: (PRNG) Deterministisch Startwert / Initialisierung Dann abgeleitet über deterministischen Algorithmus aus innerem Zustand Periodisch, wenn endlicher Zustand! Sqrt(n) ist i.A. nicht periodisch, Zustand des Rechners aber endlich. Hybrid möglich: Startwert von echtem RNG, dann PRNG periodisch (wenn keine Neuinitialisierung) Dr. Wolf Müller
PRNG Besondere Anforderungen an kryptografische PRNG Statistische Verteilung sehr ähnlich zu „echtem Zufall“ Gleichverteilung für einzelne Ausgaben Normalverteilung für Mehrfachausgaben … Tests BSI-TR-02102 „Kryptografische Verfahren: Empfehlungen und Schlüssellängen“ (siehe Zufallszahlengeneratoren) Praktisch unmöglich, zu bekannter Zufallszahlenfolge Vorgänger oder Nachfolger dieser Teilfolge oder inneren Zustand zu berechnen. Praktisch unmöglich, aus Kenntnis eines inneren Zustandes Vorgänger der Teilfolge oder Vorgängerzustände zu berechnen. Entropie des Seed mindestens 100 Bit Dr. Wolf Müller
RC4 1987 von Ronald L. Rivest für RSA Data Security Inc. entwickelt. Anfänglich (7 Jahre) geheim. RC4 (Ronald's Code 4) Variable Schlüssellänge bis 2048 Bit 1 Byte pro Schritt generiert/verschlüsselt S-Box, Permutation, Substitution Sehr effizient, einfach zu Implementieren Schwächen: Initialisierung der S-Box (in praktischer Umsetzung) Bei zufällig gewählter S-Box, auch gegenwertig kaum zu knacken Dr. Wolf Müller
S RC4 i k S[i]+S[k] 254 255 1 2 i k S[i] S[k] K S[i]+S[k] i := 0 1 2 i k S[i] S[k] K S[i]+S[k] i := 0 k := 0 while GeneratingOutput: i := (i + 1) mod 256 k := (k + S[i]) mod 256 swap values of S[i] and S[k] K := S[(S[i] + S[k]) mod 256] output K endwhile Dr. Wolf Müller
RC4: Schlüsselinitialisierung for i from 0 to 255 S[i] := i endfor j := 0 j := (j + S[i] + key[i mod keylength]) mod 256 swap values of S[i] and S[j] Dr. Wolf Müller
Stromchiffren: Bemerkungen RC4 braucht gute Initialisierung. Gute Blockchiffren können in entsprechenden Modi (OFB, CTR) wie Stromchiffren genutzt werden. eSTREAM: the ECRYPT Stream Cipher Project Starke schnelle Stromchiffren gesucht: http://www.ecrypt.eu.org/stream/ Dr. Wolf Müller
Testfragen: Unterschied zwischen: Kodierung und Verschlüsselung? Symmetrischer und asymmetrischer Verschlüsselung? Stromchiffre und Blockchiffre? ECB, CBC, und CTR-Modus? Stromchiffre und „one time pad“? RNG und PRNG? Dr. Wolf Müller