Cryptography Reference
In-Depth Information
im Folgenden weggelassen. Die Folge der Bytes wird als Matrix mit 4 Zeilen und 4 Spalten
dargestellt. Die 4 ersten Bytes d
0
, d
1
, d
2
, d
3
stehen in der ersten Spalte, d.h. die Matrix wird von
oben links nach unten rechts belegt. In der Matrix werden die Bytes als „States“ bezeichnet
und durch [Zeilennummer, Spaltennummer] bzw. [r=row, c=column] indiziert, Tab. 2-6. (Der
Index r wird in diesem Abschnitt als Index für die Zeilennummern benutzt.)
Die Byte-Operationen in dem Transformationsblock sind Substitution, Permutation und Inter-
mix.
Für die
Substitution
bildet eine Funktion SubByte() ein Eingangs-Byte s
r,c
auf ein Ausgangs-
Byte s'
r,c
in der gleichen Matrixposition ab. Die Substitution umfasst 2 Schritte.
In
Schritt 1
wird s
r,c
durch sein multiplikativ inverses Element s
1
r,c
ersetzt. Die Arithmetik
wird dabei durch einen Galois-Körper GF(2
8
) bezüglich des irreduziblen Modularpolynoms
M(x)=x
8
+x
4
+x
3
+x+1={100011011} definiert, vgl. Kap. 2.5. (zur Erinnerung: Dabei werden
die 8 Binärstellen eines Bytes als Koeffizienten eines Polynoms vom Grad kleiner 8 aufgefasst
und die Operationen für Polynome modulo 2 und modulo M(x) durchgeführt. Jedes Element
0 besitzt ein multiplikativ inverses Element.) Als eine Festlegung wird das Null-Element
(Byte besteht aus 8 Nullen) durch sich selbst substituiert.
In
Schritt 2
werden alle Binärstellen eines Bytes linear transformiert, d.h. der Vektor der 8
Binärstellen eines Bytes wird mit einer festen 8x8-Matrix mod 2 multipliziert und ergibt als
Ergebnisvektor mit 8 Binärstellen ein Ergebnis-Byte. Die Matrix ist so gewählt, dass die linea-
re Transformation invertierbar ist. Anschließend wird noch eine Konstante aus GF(2
8
) addiert.
Für die Resistenz von AES gegen eine Kryptoanalyse ist der Schritt 1 mit der nichtlinearen
multiplikativ inversen Ersetzung sehr wesentlich. Sie ist die einzige nichtlineare Transformati-
on innerhalb von AES.
Für alle 2
8
=256 Werte eines Bytes s
r,c
kann die multiplikative Ersetzung und anschließende
Transformation berechnet und als s'
r,c
gespeichert werden. Die Substitution kann dann durch
eine Ersetzungs-Tabelle von 256 Bytes implementiert werden.
Für die
Permutation
werden die States s
r,0
s
r,1
s
r,2
s
r,3
innerhalb einer Zeile r der 4x4-Matrix
von Tab. 2-6 permutiert. Die Permutation besteht aus zyklischen Links-Shifts um r Byte-
Positionen, d.h. um 0, 1, 2 oder 3 Bytes. Die Permutation ist natürlich invertierbar.
Für den
Intermix
bildet eine Funktion MixColumns() eine Eingangs-Spalte (s
0,c
s
1,c
s
2,c
s
3,c
)
der Matrix von Tab. 2-6 auf eine Ergebnis-Spalte (s'
0,c
s'
1,c
s'
2,c
s'
3,c
) in gleicher Position c ab.
Dazu wird der Eingangsvektor (s
0,c
s
1,c
s
2,c
s
3,c
) mit einer festen 4x4-Matrix multipliziert und
ergibt den Ausgangsvektor (s'
0,c
s'
1,c
s'
2,c
s'
3,c
). Dabei handelt es sich um eine lineare Trans-
formation. Die Elemente der Vektoren und der 4x4-Matrix sind Bytes und werden für die
Transformation als Elemente des Galois-Körpers GF(2
8
) bezüglich des irreduziblen Modular-
polynoms M(x)=x
8
+x
4
+x
3
+x+1={100011011} behandelt. Es ist also die Arithmetik des GF(2
8
)
anzuwenden.
Die 4x4-Transformationsmatrix ist so gewählt, dass sie in GF(2
8
) invertierbar ist. Damit kann
bei der Entschlüsselung in umgekehrter Weise aus dem Ausgangsvektor (s'
0,c
s'
1,c
s'
2,c
s'
3,c
) der
Eingangsvektor (s
0,c
s
1,c
s
2,c
s
3,c
) berechnet werden.