AES – Advanced Encryption Standard Seminar: Kryptographie und Sicherheit, Prof. Dr. Waldvogel Cordula Bauer
Thematik Wie entstand der AES? Wie funktioniert der Algorithmus der hinter AES steckt ? Welche Konzepte stehen hinter dem Design des Algorithmus? Wie sicher ist der AES?
Inhalt AES – Der Prozess Der Algorithmus: Rijndael Zusammenfassung Mathematische Grundlagen Spezifikation des Algorithmus Kryptoanalyse Zusammenfassung
AES – Der Prozess AES als Nachfolger von DES AES: Nachfolger des Data Encryption Standard (DES) von 1976 DES, Schlüssellänge von 56 Bit durch immer höhere Rechnerleistungen unsicher geworden triple-DES: dreifache Anwendung des DES sehr ineffizient
AES – Der Prozess AES als Wettbewerb Januar 1997: Nationales Institut für Standards und Technologie der USA (NIST) ruft zu öffentlichem Wettbewerb für neue Verschlüsselungstechnik auf AES soll ein Federal Information Processing Standard (FIPS) werden NIST evaluiert Sicherheit und Effizienz selbst nicht, das soll übernehmen wer Interesse daran hat
AES – Der Prozess Anforderungen an AES Formal: symmetrischer Blockchiffre Blockgröße:128 Bit Schlüssellängen: 128, 192 und 256 Bit Resistenz gegen alle Methoden der Kryptoanalyse überdurchschnittlich effizient in Software und Hardware (auch auf 8 Bit-Prozessoren) einfach zu implementieren
AES – Der Prozess Die Auswahl: Rijndael Im Oktober 2002 wird Gewinner bekannt gegeben: Rijndael Autoren: Joan Daemen, Vincent Rijmen (Belgien) Algorithmus zeichnet sich durch sehr gute Performance in Hardware und Software und seine Einfachheit aus. In puncto Sicherheit gab es auch einige Kandidaten, welche Rijndael gleichwertig waren
Rijndael - Mathematische Grundlagen Bits, Bytes und Wörter Rijndael verschlüsselt mit 8 und 32 Bit Operationen 8 Bit = 1 Byte | 32 Bit = 4 Byte = 1 Wort Beispiel: Blockgröße 128 Bit, bzw. 16 Byte, bzw. 4 Wörter Blockgröße bei Rijndael nicht nur 128 Bit (wie beim AES), sondern prinzipiell jedes Vielfache von 32 zwischen 128 und 256 Bit möglich.
Rijndael - Mathematische Grundlagen GF(2) |8 Byte b7b6b5b4b3b2b1b0 kann als Polynom dargestellt werden: b(x) = b7x7 + b6x6+ b5x5+ b4x4 + b3x3 + b2x2 + b1x + b0 Beispiel: 01010111 x6 + x4 + x2 + x + 1 b(x) repräsentiert die Elemente des endlichen Körpers GF(2)|8 Alle möglichen Bytes sind genau die Elemente von GF(2)|8
Rijndael - Mathematische Grundlagen endliche Körper Endlicher Körper <F, Å, Ä >: <F, Å> und <F\{0}, Ä> sind abelsche Gruppen Å und Ä sind distributiv abelsche Gruppe <G, +>: Abgeschlossenheit: "a,bÎG: a+bÎG Assoziativität: "a,bÎG: (a+b)+c = a+(b+c) Kommutativität: "a,bÎG: a+b = b+a neutrales Element: $0ÎG,"aÎG: a+0 = a inverses Element: "a,bÎG: a+b = 0
Rijndael - Mathematische Grundlagen Addition von Bytes <F, Å> Å ist Addition der Komponenten modulo 2 ( x6 + x2 + x + 1 ) + ( x7 + x + 1) = x7 + x6 + x2 01000111 + 10000011 = 11000100 Auf Byte-Ebene entspricht Å der Operation XOR
Rijndael - Mathematische Grundlagen Multiplikation <F\{0}, Ä> Ä ist Multiplikation modulo m(x) m(x) = x8 + x4 + x3 + x + 1 (irreduzibles Polynom, 8ten Grades) ( x6 + x4 + x2 + x + 1 ) * ( x7 + x + 1) = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 (x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1) modulo (x8 + x4 + x3 + x + 1 ) = x7 + x6 + 1 keine simple äquivalente Ausführung auf Byte-Ebene
Rijndael - Mathematische Grundlagen Addition von Wörtern Wort a3a2a1a0 kann als Polynom dargestellt werden: a(x) = a3x3 + a2x2 + a1x + a0 Addition: die Komponenten, also die einzelnen Bytes werden jeweils XOR verknüpft: (a3x3 + a2x2 + a1x +a0) Å (b3x3 + b2x2 + b1x +b0) = (a3Å b3) x3 + (a2Å b2) x2 + (a1Å b1)x + (a0Å b0)
Rijndael - Mathematische Grundlagen Multiplikation von Wörtern (1) Multiplikation: ähnlich wie mit Bytes, mit irreduziblem Polynom m(x) = x4 +1 d(x) = a(x) Ä b(x) (mod x4 +1) mit d(x) = d3x3 + d2x2 + d1x + d0 di: d0 = (a0 Ä b0) Å (a3 Ä b1) Å (a2 Ä b2) Å (a1 Ä b3) d1 = (a1 Ä b0) Å (a0 Ä b1) Å (a3 Ä b2) Å (a2 Ä b3) d2 = (a2 Ä b0) Å (a1 Ä b1) Å (a0 Ä b2) Å (a3 Ä b3) d3 = (a3 Ä b0) Å (a2 Ä b1) Å (a1 Ä b2) Å (a0 Ä b3)
Rijndael - Mathematische Grundlagen Multiplikation von Wörtern (2) a(x) Ä b(x) º d(x) (mod x4 +1) kann als Matrizzen-Multiplikation dargestellt werden:
Spezifikation des Algorithmus Rijndael ist ein schlüssel-iterierter Blockchiffre
Spezifikation des Algorithmus Blöcke und Runden Wort Layout eines Blocks: 4 Wörter, Nb = 4 128 bits Byte Schlüssel hat genau das gleiche Layout. Entscheidend für Rijndael ist nur Nb = 4, also die erste Spalte Anzahl der Runden:
Spezifikation des Algorithmus Pseudo-Code (1) Rijndael(State, CipherKey) { KeyExpansion(CipherKey, ExpandedKey); AddRoundKey(State, ExpandedKey[0]); for(i=1; i<Nr; i++) Round(State, ExpandedKey[i]); FinalRound(State, ExpandedKey[Nr]); }
Spezifikation des Algorithmus Pseudo-Code (2) Round(State, ExpandedKey[i]) { SubBytes(State); ShiftRows(State); MixColumns(State); AddRoundKey(State, ExpandedKey[i]); } FinalRound(State, ExpandedKey[Nr]) AddRoundKey(State, ExpandedKey[Nr]);
Spezifikation des Algorithmus SubBytes nicht-lineare Transformation (einzige) S-Box
Spezifikation des Algorithmus SubBytes – S-Box Konkatenation von zwei Funktionen g,f g(a) = a-1 (multiplikative Inverse aus GF(2)|8 ) f(a): Å f(a) entspricht einer polynomialen Multiplikation und anschließender XOR-Verknüpfung mit einer Konstanten
Spezifikation des Algorithmus SubBytes – Design Kriterien Nicht-Linearität Korrelation Input Output - so gering wie möglich difference propagation Wahrscheinlichkeit Algebraische Komplexität soll hoch sein
Spezifikation des Algorithmus ShiftRows Einzelne Reihen i werden um eine Anzahl Ci geshiftet Blockgröße 128: C0=0, C1=1, C2=2, C3=3 Design Kriterium für verschiedene Werte von Ci: optimale Diffusion
Spezifikation des Algorithmus MixColumns (1) Die Bytes der einzelnen Spalten (= Wörter) werden durcheinander gewürfelt Ä c(x)
Spezifikation des Algorithmus MixColumns (2) b(x) = a(x) Ä c(x) (mod x4 +1) (Multiplikation Wortebene) mit c(x) = 03 x3 + 01 x2 + 01 x + 02 Koeffizienten sind Bytes in Hexadezimal-Schreibweise
Spezifikation des Algorithmus MixColumns – Design Kriterien Effektivität: Linearität Diffusion Effizienz: Gute Performance auf 32 Bit Prozessoren auf 8 Bit Prozessoren
Spezifikation des Algorithmus AddRoundKey Länge des Rundenschlüssels = Blocklänge aktueller Zustand (state) wird mit Rundenschlüssel (round key) XOR verknüpft Å = state round key new state
Spezifikation des Algorithmus KeyExpansion (1) KeyExpansion: cipher key expanded key W [Nb(Nr+1)] Beispiel: cipher key Länge: 192 bit Nk = 6 Blocklänge: 128 bit Nb = 4 Nr = 12 Nek = 52 W [52]
Spezifikation des Algorithmus KeyExpansion (2) Wi: i kein Vielfaches von Nk: Wi = Wi - Nk Å Wi-1 Wi: i Vielfaches von Nk: Wi = Wi - Nk Å S(Wi-1) s
Spezifikation des Algorithmus KeyExpansion – Design Kriterien Effektivität: Eliminierung von Symmetrie Diffusion Nicht-Linearität Effizienz: Wenig Arbeitsspeicherverbrauch Gute Performance auf vielen Prozessoren Symmetrie: Rundenschlüssel um keine Symmetrie zwischen den einzelnen RUnden feststellen zu können Diffusion: von Rundenschüssel sollen keine Rückschlüsse auf den richtigen Schlüssel gezogen werden können Nicht-Linearität: ähnliche cipher keys sollen nicht auf ähnliche Rundenkeys abgebildet werden
Spezifikation des Algorithmus Dechriffrieren I_Rijndael(State,CipherKey) { I_KeyExpansion(CipherKey,I_ExpandedKey); AddRoundKey(State, I_ExpandedKey[Nr]); for( i=Nr-1; i>0; i- - ) I_Round(State, I_ExpandedKey[i]); I_FinalRound(State, I_ExpandedKey[0]); } I_Round(State,I_ExpandedKey[i]) InvSubBytes(State); InvShiftRows(State); InvMixColumns(State); AddRoundKey(State,I_ExpandedKey[i]);
Kryptoanalyse resistent gegen lineare und differentielle Kryptoanalyse saturation attack chosen-plaintext + Ausnutzung der byte-orientierten Struktur nur für rundenreduzierte (7 Runden) Version möglich implementation attacks timing attack power analysis 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
Zusammenfassung AES (Rijndael) ist symmetrischer Blockchiffre arbeitet mit simplen 8 und 32 Bit Operationen Schlüssel-Iteration & Rundentransformation hohe Sicherheit erreicht durch algebraische Komplexität Diffusion und Nicht-Linearität
Anwendungen die AES benutzen Wireless LAN WPA2 SSH IPsec Skype 7-Zip PGP
Vielen Dank für die Aufmerksamkeit. Ende Noch Fragen? Vielen Dank für die Aufmerksamkeit.