AES Flashcards
AES Design Entscheidungen
1.128 Blocksize
2.Schlüssellängen von 128, 192 und 256 Bit
3.Sicher
4.Software und Hardwareeffizent
AES Runden-Ablauf:
Jede AES Runde besteht aus 3 Layern:
1. Key Addition: Der Rundenschlüssel wird auf die 128 Bit XORd
2. Byte Substitution jedes Element wird nichtlinear transformiert(Konfusion)
3. Diffusionslayer:
ShiftRows permutiert Daten auf Bytelevel
Mix-Columns kombiniert Blöcke von 4 Bytes.
Galoisfelder
Gruppe F mit Eigenschaften:
1. Alle Elemente bilden mit additive Gruppe mit neutralem Element 0
2. Alle Elemente außer 0 bilden multiplikative Gruppe mit neutralem Element 1
3. Wenn Gruppenoperationen kombiniert werden sind sie Distributiv.
ErweiterungsFelder Addition
A(x) - B(x) = Summe(c_i * x^i), c_i = a_i + b_i mod 2
ErweiterungsFelder Multiplikation
A(x) und B(x) werden mit Hilfe eines irreduzierbaren Polynomes mit A(x) * B(x) mod P(x) multipliziert.
Dabei muss jedes x^i mit i>=m als mod P(x) dargestellt werden.
Bsp: P(x) = x^4 + x => x^4 = 1 P(x) + x => x4 = x mod P(x)
Erweiterungsfelder Inversieren
Gegeben dem Erweiterungsfeld GF(2^m) und einem irreduzierbarem Polynom P(x) kann für ein Polynom A(x), A^(-1)(x) ermittelt werden. Diese sind in AES oft in Lookup Tables gespeichert.
Ablauf AES-Runde:
- Aufteilen in 16 Byte
- Anwenden von Byte Substitution (S-Box) auf jedes Byte
- ShiftRows
- Mixcolumns
- XOR mit Key
Ablauf Byte-Substitution
Bijektive Abbildung mit Eingabe von 8 Bits und Ausgabe von 8 Bits. Dies wird oft in Lookup-Tables gespeichert. Diese werden erzeugt indem die 8-Bit zunächst in GF(2^8) invertiert werden. Anschließend findet eine affine Transformations statt. Diese soll die algebraische Struktur der GF brechen um die Angriffe über die Inversion nicht möglich zu machen.
ShiftRows Sublayer
In jeder Reihe der AES Matrix sollen nun hintereinander jedes 4 Byte stehen. Also B_0 , B_4, B_8, B_12 in der ersten Reihe. Diese sollen nun Byteweise rechtsverschoben werden.
1: keine Versch
2: 3 positionen
3: 2
4:1
Mix Columns
Nachdem die ShiftRows angewendet wurde wird nun jede Spalte als Vektor mit einer Matrix multipliziert. Jede diese Multiplikationen wird in einem Galoisfeld vollzogen.
Key Schedule
Aus dem 128-256 Bit langen Key wird ein 128 Bit Langer Subschlüssel generiert. Für 128: 10 + 1 Runde, 192: 12 + 1, 256: 14+1.
Der erste Schlüssel besteht aus den ersten 128 Bits des Schlüssel. Neue Keybits werden generiert indem W[4i] = W[4(i-1)] + g(W[4i-1]) berechnet wird. Für die nächsten W[j] = W[j-1] + W[j-4] berechnet.
Für 192 Bits wird g nur für alle 6 32-Bit Schlüsselteile benötigt.
Bei 256 Bits wird nach 4 Teilen eine h funktion angewendet, welche weder Bytes tauscht noch eine RC aufaddiert.
Entschlüsselung
Da AES kein Feistelstruktur hat muss jedes Layer invertiert werden.
MixColumn: Inverse Matrix
ShiftRows: LeftShift statt RightShift
ByteSubstitution: Inverser LookupTable da bijektiv
KeySchedule: Selbe Berechnung, inverse Anwendung