Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Matrizenmultiplikation im Galois Körper

Matrizenmultiplikation im Galois Körper

Universität / Fachhochschule

Körper

Polynome

Kryptologie

Tags: AES, Körper, Kryptologie, polynom, Rijndael

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
cable

cable aktiv_icon

08:38 Uhr, 26.04.2012

Antworten
Hallo,

ich beschäftige mich gerade mit dem AES oder eher Rijndael. In dem Algorithmus finden in einer Funktion namens mixColumns() Matrizenmultiplikationen statt. Also immer ein 4 er Spaltenvektor multipliziert mit einer 4x4 Matrix. Die Multiplikation findet jedoch auf dem Galois-Körper GF (28) statt. Nun ist meine Frage wie diese Multiplikation im Galois Körper definiert ist. Ich versteh die Beispiele im Internet nicht.

folgendes Beispiel

(b84111f1)(2113321113211132)=(48f8d37a)

kann mir hier jemand erklären wie man auf das Ergebnis kommt? Ich weiß, dass die Werte in den Vektoren bzw. in der Matrix Hex-Werte sind und jeder Wert ein Byte darstellt. Man kann also mit einem Byte ein Polynom 7ter Ordnung aus dem GF (28) darstellen.

Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen."
Hierzu passend bei OnlineMathe:

Online-Übungen (Übungsaufgaben) bei unterricht.de:
 
Online-Nachhilfe in Mathematik
Antwort
hagman

hagman aktiv_icon

17:03 Uhr, 26.04.2012

Antworten
Da GF(28) ein 8-dimensionaler GF(2) -Vektorraum ist, kann man bezüglich einer geeigneten Basis 8 bit als Darstellung wählen.
Die Addition im Körper ist dann auch die Addition im Vektorraum, also XOR
Die Multiplikation hängt von der Basis ab.
Konstruiert man den Körper als Quotientenkörper des Polynomringes
GF(8)=GF(2)[X]/(f)
mit einem irreduziblen Polynom f(X)=X8+c7X7+... +c1X+c0,
bietet es sich an, die offensichlich linear unabhängigen Elemente 1,X,X2,+...,X7 (genauer: deren Restklassen) als Basis zu wählen.
Das Produkt von 2 Bytes
a=(a0,...,a7) entsprechend a0+a1X+... +a7X7
und
b=(b0,...,b7) entsprechend b0+b1X+... +b7X7
liefert zunächst einmal ein Polynom u0+u1X+.. +u14X14, also einen 15-Bit-Wert (indem einige um 0 bis 7 Stellen geshiftete Kopien von a per XOR addiert werden)
Die höherwertigen Bits sind modulo f(X) zu gewissen vorberechenbaren Polynomen vom Grad <8 kongruent, die (wenn das jeweilige hohe Bit gesetzt ist) zum "lower Byte" geXORt werden.
cable

cable aktiv_icon

21:27 Uhr, 26.04.2012

Antworten
Vielen Dank für Deine ausführliche Erklärung. Ich hab jetzt nur noch ne Verständnisfrage zweck der Modulo Operation. Wenn ich jetzt durch die Multiplikation mein Polynom bekomme.

zum Beispiel x8+x7+x5+x3 dann muss ich das mod dem irreduziblen Polynom rechnen.
Das ist x8+x4+x3+x+1. Also

(x8+x7+x5+x3)mod(x8+x4+x3+x+1)

nun habe ich auf Wikipedia gesehen, dass wenn die Polynome in binärer Schreibweise angegeben sind, die Modulo Operation ersetzt wird mit der Addition.

also 110101000+100011011

Diesen Schritt versteh ich nicht. Ich weiß, dass die Addition, im GF(28), als XOR ausgeführt wird, so wie Du es ja am Ende auch beschreibst. Das ist alles einleuchtend, jedoch nicht das Ersetzen von mod mit einer Addition.
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.