Prinzipieller Aufbau:

Die Funktion der einzelnen Blöcke muss bekannt sein. Der Algorithmus für die Schlüsselerzeugung muss nicht bekannt sein.
AddRoundKey führt die Operation XOR für die State-Matrix mit dem Rundenschlüssel durch.
SubBytes führt eine Substitution der Bytes der State-Matrix durch (monoalphabetische Chiffre). Wird meist nicht gerechnet, sondern aus Tabelle mit allen 256 möglichen Bytes ausgelesen.
ShiftRows verschiebt die Zeilen unterschiedlich weit nach links. Eselsbrücke: Zeilen mit 0 bis 3 durchnummerieren. Zeile 0 wird um 0 Stellen nach links verschoben, Zeile 1 um eine Stelle, Zeile 2 um zwei Stellen und Zeile 3 um drei Stellen.
Beispiel:

MixColumns fasst die 4 Bytes einer Spalte zusammen, um ein Byte zu berechnen. Dies funktioniert mit der Abbildung:

Die einzelnen Multiplikationen sind dabei Polynommultiplikationen. Beispiel:

Multiplikation mit 01 ändert nichts. Multiplikation mit 02 entspricht einer Verschiebung um eine Stelle nach links. Multiplikation mit 03 entspricht einer Verschiebung um eine Stelle nach links und einer anschließenden Addition des ursprünglichen Wertes.
3.1 SubBytes (Prüfung FT 2009, Aufgabe 3b)
Betrachtet wird der Advanced Encryption Standard (AES). Welche Ausgabe erzeugt die Funktion SubBytes für das Eingabe-Byte
?
Lösung 3.1
Wichtig: Das most significant Bit (MSB) steht ganz links! Wir erhalten:



Das weitere Vorgehen besteht nun im Invertieren mit dem euklidischem Algorithmus (Polynomdivision) und dem erweiterten euklidischer Algorithmus.
Invertieren modulo
mit euklidischem Algorithmus:




Um die einzelnen Polynome
und
zu bestimmen, müssen Polynomdivisionen durchgeführt werden:

Der Rest ist 1, daher wird der nächste Rest 0 sein, wir brechen den Algorithmus ab.
Erweiterter euklidischer Algorithmus:

![Rendered by QuickLaTeX.com 1 = \left( {{x^4}+{x^3}+{x^2}+x} \right)\left[ {m\left( x \right)+{x^3}\left( {{x^5}+x+1} \right)} \right]+\left( {{x^5}+x+1} \right)](http://me-lrt.de/wp-content/ql-cache/quicklatex.com-67e6a44dca9ab5dd39bc7afc492e3aa6_l3.png)


Modulo
:


Es muss nicht auswendig gelernt werden: Polynom
, affine Abbildung mit der Matrix.
Fehlerquelle in Klausur 2009: Einsetzen von
in affine Abbildung:

Leserichtung von
beachten!
3.2 Key-Whitening (Übung 5. 5)
Gegeben sei eine Blockchiffre
, mit Schlüssel
. Stellen Sie in einem Blockschaltbild dar, wie die Blockchiffre mittels „Key Whitening“ gegen vollständige Schlüsselsuche gehärtet werden kann.
Lösung 3.2

Key Whitening erhöht die Sicherheit iterierter Blockchiffren. Bei einer Verschlüsselung mit Whitening wird ein Klartextblock vor der ersten Runde mit Teilen des Schlüssels verknüpft (Pre-Whitening); zumeist wird hier XOR verwendet. Einige Chiffren verwenden Whitening zudem auch nach der letzten Runde (post-Whitening). Das Whitening dient vor allem bei Feistelchiffren dazu, Strukturen des Klartexts und der Eingabe der letzten Runde zu verschleiern und so die Komplexität eines Angriffs zu erhöhen.
Beispiele für Chiffren mit Whitening sind RC5, RC6, MARS, Twofish und Rijndael.
3.3 Subbytes 2 (Übung 5.6)
Betrachtet wird das AES-Kryptosystem. Berechnen Sie die Ausgabe der Funktion „SubBytes“ für das Byte
.
Lösung 3.3

Invertieren modulo
mit euklidischem Algorithmus:




Polynomdivision:

Erweiterter euklidischer Algorithmus:





Das + bei der Matrizenmultiplikation wird einfach durch
ersetzt.
3.4 SubBytes und Key-Whitening (Prüfung WT 2010, Aufgabe 4)
- Welche Ausgabe erzeugt die Funktion SubBytes für das Byte
? (4P) - Stellen Sie dar, wie die Anzahl der Schlüsselbits von AES-128 mittels Key-Whitening erhöht werden kann (2P)
Lösung 3.4
a)

Invertieren modulo
mit euklidischem Algorithmus:




Polynomdivision:












Erweiterter euklidischer Algorithmus:

![Rendered by QuickLaTeX.com \Rightarrow \quad 1 = \left( {{x^4}+x+1} \right)+x\left[ {\left( {{x^5}+{x^3}+{x^2}+x+1} \right)+x\left( {{x^4}+x+1} \right)} \right]](http://me-lrt.de/wp-content/ql-cache/quicklatex.com-e0259c83343a877434588fe8c84713d5_l3.png)

![Rendered by QuickLaTeX.com \Rightarrow \quad 1 = \left( {{x^2}+1} \right)\left[ {\left( {{x^6}+{x^3}+{x^2}+1} \right)+x\left( {{x^5}+{x^3}+{x^2}+x+1} \right)} \right]](http://me-lrt.de/wp-content/ql-cache/quicklatex.com-2e0d3cb3dd7d7f7727a2f7446bbe0934_l3.png)



![Rendered by QuickLaTeX.com +{x^3}\left[ {\left( {{x^8}+{x^4}+{x^3}+x+1} \right)+{x^2}\left( {{x^6}+{x^3}+{x^2}+1} \right)} \right]](http://me-lrt.de/wp-content/ql-cache/quicklatex.com-1c1cdbbdceaff5ab20b374453dfcb638_l3.png)






b)
Siehe 3.2
SubBytes-Tabelle zur Kontrolle:



