View
110
Download
0
Category
Preview:
Citation preview
AES – Advanced Encryption Standard
Seminar: Kryptographie und Sicherheit, Prof. Dr. Waldvogel
Cordula Bauer
2
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?
3
Inhalt
AES – Der Prozess
Der Algorithmus: Rijndael Mathematische Grundlagen Spezifikation des Algorithmus Kryptoanalyse
Zusammenfassung
4
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
5
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
6
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
7
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.
8
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.
9
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
10
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,bG: a+bG Assoziativität: a,bG: (a+b)+c = a+(b+c) Kommutativität: a,bG: a+b = b+a neutrales Element: 0G,aG: a+0 = a inverses Element: a,bG: a+b = 0
11
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
12
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
13
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)
14
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)
15
Rijndael - Mathematische Grundlagen
Multiplikation von Wörtern (2)
a(x) b(x) d(x) (mod x4 +1)kann als Matrizzen-Multiplikation dargestellt werden:
16
Spezifikation des Algorithmus
Rijndael ist ein schlüssel-iterierter Blockchiffre
17
Spezifikation des Algorithmus
Blöcke und Runden
Layout eines Blocks:
Byte
Wort
Anzahl der Runden:
4 Wörter, Nb = 4
128 bits
18
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]);
}
19
Spezifikation des Algorithmus
Pseudo-Code (2)
Round(State, ExpandedKey[i]){
SubBytes(State);ShiftRows(State);MixColumns(State);AddRoundKey(State, ExpandedKey[i]);
}
FinalRound(State, ExpandedKey[Nr]){
SubBytes(State);ShiftRows(State);
AddRoundKey(State, ExpandedKey[Nr]);}
20
Spezifikation des Algorithmus
SubBytes nicht-lineare Transformation (einzige)
S-Box
21
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
22
Spezifikation des Algorithmus
SubBytes – Design Kriterien
Nicht-Linearität Korrelation Input Output
- so gering wie möglich difference propagation Wahrscheinlichkeit
- so gering wie möglich
Algebraische Komplexität soll hoch sein
23
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
24
Spezifikation des Algorithmus
MixColumns (1)
Die Bytes der einzelnen Spalten (= Wörter) werden durcheinander gewürfelt
c(x)
25
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
26
Spezifikation des Algorithmus
MixColumns – Design Kriterien
Effektivität: Linearität Diffusion
Effizienz: Gute Performance auf
32 Bit Prozessoren auf 8 Bit Prozessoren
27
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
28
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]
29
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
30
Spezifikation des Algorithmus
KeyExpansion – Design Kriterien
Effektivität: Eliminierung von Symmetrie Diffusion Nicht-Linearität
Effizienz: Wenig Arbeitsspeicherverbrauch Gute Performance auf vielen Prozessoren
31
Spezifikation des Algorithmus
DechriffrierenI_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]);
}
32
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
33
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
34
Anwendungen die AES benutzen
Wireless LAN WPA2 SSH IPsec Skype 7-Zip PGP
35
Ende
Noch Fragen?
Vielen Dank für die Aufmerksamkeit.
Recommended