Stand: 9..25 Vorlesung Grundlagen und Methoden der Kryptographie Dietzfelbinger Dieser Abschnitt lehnt sich an die Beschreibung im Buch Kryptographische Systeme von Baumann, Franz und Ptzmann an. 6 Der Advanced Encryption Standard (AES) Es handelt sich um ein im Jahr 2 vom National Institute of Standards and Technology (NIST) als Standard festgelegtes symmetrisches Verschlüsselungsverfahren. Der Algorithmus heiÿt Rijndael (nach seinen Erndern Vincent Rijmen und Joan Daemen). Beschrieben (mit allen Designüberlegungen) ist es im Buch Rijndael der beiden Autoren. Klartextblocklänge: n b = 28 Bit. Kryptotextblocklänge: n b = 28 Bit. Schlüssellänge n k ist 28, 92 oder 256 Bit. Der Algorithmus arbeitet in r =, 2 oder 4 Runden (entsprechend der Schlüssellänge). Die Ausgabe einer Runde ist die Eingabe der nächsten, am Anfang gibt es eine Vorbereitung, die letzte Runde ist leicht modiziert und liefert den Kryptotext. Aus dem Schlüssel k {, } n k werden r + Teilschlüssel k (für die Vorbereitung), und k,..., k r (ein Rundenschlüssel für jede Runde) erzeugt. Die Länge eines Teilschlüssels ist gleich der Blocklänge n b = 28 Bit. Vorbereitung. Vor Einstieg in die erste Runde wird der Klartext x mittels bitweisem XOR mit dem Teilschlüssel k verknüpft: z = x k. Dieser Wert z ist die Eingabe für die erste Runde. Wir beschreiben nun eine Runde (die letzte Runde r ist leicht verändert). Der Input der Runde ist ein Wort x = x x... x 5 aus 6 Bytes (28 Bit).
Zustandsmatrix. Die 6 Bytes von x werden spaltenweise von links nach rechts in eine Matrix S = (s i,j ) i,j<4 (die Zustandsmatrix) eingetragen, also: s, s, s,2 s,3 x x 4 x 8 x 2 S = s, s, s,2 s,3 s 2, s 2, s 2,2 s 2,3 = x x 5 x 9 x 3 x 2 x 6 x x 4 s 3, s 3, s 3,2 s 3,3 x 3 x 7 x x 5 Byteweise Substitution, S-Box. Zuerst werden die Bytes s i,j einzeln und unabhängig voneinander durch neue Werte π(s i,j ) ersetzt. Wie, ist durch eine Substitutionsfunktion π : GF(2 8 ) GF(2 8 ) angegeben. Dabei wird ein Element a + a x + a 2 x 2 + + a 7 x 7 von GF(2 8 ) als a 7 a 6... a geschrieben (umgekehrt zur Reihenfolge in Abschnitt 5). Es ist π = π 2 π (erst π anwenden, dann π 2 ), für die beiden im Folgenden beschriebenen Funktionen π und π 2. Als irreduzibles Polynom wird +x+x 3 +x 4 +x 8 benutzt. Damit ist genau festgelegt, wie die Körpermultiplikation auf zwei Bytes wirkt, daher ist auch das Inverse a zu a GF(2 8 ) festgelegt. Wir denieren: π (a) := { a, falls a,, falls a =. Für die zweite Abbildung π 2 wird a = a 7 a 6... a als Spaltenvektor aufgefasst, und es wird eine ane Abbildung über Z 2 angewendet: π 2 : GF(2 8 ) a 7 a 6... a b 7 b 6... b GF(2 8 ), mit b 7 b 6 b 5 b 4 b 3 = b 2 b b a 7 a 6 a 5 a 4 a 3 a 2 a a + Die Rechnung erfolgt (natürlich) in Z 2. Die Matrix ist invertierbar, daher ist π 2 bijektiv. 2
Die resultierende Matrix heiÿt wieder S. Üblicherweise wird die Transformation π in tabellarischer Form angegeben, und zwar als 6 6-Matrix. Die Zeilen und Spalten dieser Matrix sind mit Hexadezimalziern von bis F durchnummeriert, im Eintrag in Zeile a 7 a 6 a 5 a 4 und Spalte a 3 a 2 a a steht das Byte π(a 7 a 6 a 5 a 4 a 3 a 2 a a ). Auch für die Implementierung ist eine solche Matrixdarstellung günstig. Rotation der Zeilen. Nachdem die Einträge in S ersetzt worden sind, werden die Zeilen zyklisch nach links rotiert, und zwar die Zeile mit Index i um i Positionen. Das heiÿt, wenn vorher die Matrix s, s, s,2 s,3 S = s, s, s,2 s,3 s 2, s 2, s 2,2 s 2,3 s 3, s 3, s 3,2 s 3,3 vorlag, ist das Ergebnis S = s, s, s,2 s,3 s, s,2 s,3 s, s 2,2 s 2,3 s 2, s 2, s 3,3 s 3, s 3, s 3,2 Transformation der Spalten. Es folgt ein weiterer Schritt, der jede Spalte der Matrix S in eine neue Spalte transformiert, und zwar durch eine lineare Abbildung (Automorphismus: linear und bijektiv) µ des GF(2 8 )-Vektorraums GF(2 8 ) 4. Diese ist wie folgt deniert: α β α µ: α α 2 β β 2 = α α 2 α 3 β 3 α 3 Dabei stehen α,..., α 3, β,..., β 3 für Elemente von GF(2 8 ). Die Matrix ist natürlich wieder invertierbar. 3
(Schreibt man Bytes in Hexadezimalnotation, ergibt sich die Form 2 3 2 3 2 3, 3 2 die man in der Literatur ndet.) Das Ergebnis heiÿt wieder S. Anmerkung: Dieser Spaltentransformationsschritt wird in der letzten Runde r nicht durchgeführt. Anwendung des Schlüssels. Nunmehr werden die Einträge der Matrix S spaltenweise wieder ausgelesen, um ein Wort y = y y... y 5 aus 6 Bytes oder 256 Bits zu erhalten. Das Ergebnis von Runde i Runde ist z = y k i (bitweises XOR), wobei k i der 256 Bit lange Rundenschlüssel ist. Wenn i < r, ist z auch die Eingabe x für Runde i +. Wenn i = r, ist z der Chiretext. Berechnung der Rundenschlüssel. Es bliebe zu erklären, wie aus dem Schlüssel k die r + Rundenschlüssel gewonnen werden. Hierauf verzichten wir, da hier keine besonders interessante Struktur vorliegt. Entschlüsselung. Sämtliche Einzeloperationen sind umkehrbar. Zur Entschlüsselung müssen also nur die Runden in umgekehrter Reihenfolge abgearbeitet werden, unter Verwendung dieser inversen Operationen, in umgekehrter Reihenfolge. Dabei stellt sich heraus, dass die Operationen innerhalb einer Runde (mit Ausnahme der Anwendung des Schlüssels) kommutieren, das heiÿt, dass es auf die Reihenfolge der Operationen nicht ankommt. Dass heiÿt, dass man bei der Entschlüsselung in einer Runde die Operationen in der Reihenfolge Schlüsselanwendung 4
Inverse der byteweisen Substitution Inverse der Zeilenrotation Inverse der Spaltentransformation ausführen kann. Die Rundenschlüssel müssen natürlich ebenfalls in umgekehrter Reihenfolge vorliegen. Interessanter Link: http://www.iaik.tugraz.at/content/research/krypto/aes 5