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.
Search WWH ::




Custom Search