Übung 05 - CDC - Technische Universität Darmstadt
Übung 05 - CDC - Technische Universität Darmstadt
Übung 05 - CDC - Technische Universität Darmstadt
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
TECHNISCHE UNIVERSITÄT DARMSTADT<br />
FACHGEBIET THEORETISCHE INFORMATIK<br />
PROF. JOHANNES BUCHMANN<br />
FATEME SHIRAZI<br />
Einführung in die<br />
Kryptographie<br />
WS 2012/2013<br />
5. <strong>Übung</strong>sblatt — 16.11.2012<br />
P1 Multiplikation im AES-Körper<br />
Sei 2 = /2 der endliche Körper mit 2 Elementen. Das AES-Polynom ist p(x) = x 8 + x 4 + x 3 + x +1 und der AES-Körper<br />
ist = 2 [x]/p(x) 2 [x]. Gegeben seien weiterhin die folgenden Polynome:<br />
a(x) = x 3 + x 2 + 1, b(x) = x 5 + x 2 + x, c(x) = x 7 + x 4 + x 3 + x 2 + x + 1<br />
d(x) = x 6 + x + 1, e(x) = x 4 + x 2 + 1<br />
(a) Berechnen Sie für 8 ≤ k ≤ 12 den jeweiligen Repräsentanten von x k minimalen Grades in .<br />
(b) Bestimmen Sie für folgende Produkte den Repräsentanten mit minimalem Grad. Benutzen Sie dafür die in (a) erhaltenen<br />
Ergebnisse.<br />
i) a(x) · b(x)<br />
ii) c(x) · e(x)<br />
iii) d(x) · e(x)<br />
P2 Inversion im AES-Körper<br />
Sei 2 = /2 der endliche Körper mit 2 Elementen. Das AES-Polynom ist p(x) = x 8 + x 4 + x 3 + x +1 und der AES-Körper<br />
ist = 2 [x]/p(x) 2 [x].<br />
Berechnen Sie in das Inverse für die angegebenen Polynome:<br />
(a) a 1 (x) = x + 1<br />
(b) a 2 (x) = x 4 + x + 1<br />
Hinweis: Benutzen Sie den erweiterten Euklidischen Algorithmus, um mittels gcd(a i (x), p(x)) = 1 das Inverse zu finden.<br />
Verwenden Sie außerdem die Ergebnisse aus Aufgabe P1, wenn möglich.<br />
P3 ShiftRows und MixColumns in AES<br />
Sei der AES-Körper. Wir identifizieren die Elemente von mit einer zweistelligen Hexadezimalzahl: Sei s(x) ∈ , dann<br />
schreiben wir den Koeffizientenvektor des Repräsentanten von s(x) mit minimalem Grad als achtstellige Binärzahl und<br />
diese entspricht wiederum einer zweistelligen Hexadezimalzahl.<br />
s(x) ≡ (x 7 + x 3 + x + 1) ˆ= (10001011) ˆ= 8B<br />
Der Klartextraum von AES sind Byte-Tupel der Länge 16. Wir identifizieren die Tupel mit (4 × 4)-Matrizen S über dem<br />
AES-Körper . Die Reihenfolge der Bytes in der Matrix ist dabei wie folgt:<br />
⎛<br />
⎞<br />
s 0,0 s 0,1 s 0,2 s 0,3<br />
s<br />
(s 0,0 , s 1,0 , s 2,0 , s 3,0 , s 0,1 , s 1,1 , s 2,1 , s 3,1 , s 0,2 , s 1,2 , s 2,2 , s 3,2 , s 0,3 , s 1,3 , s 2,3 , s 3,3 ) ˆ= ⎜ 1,0 s 1,1 s 1,2 s 1,3<br />
⎟<br />
⎝s 2,0 s 2,1 s 2,2 s 2,3 ⎠ .<br />
s 3,0 s 3,1 s 3,2 s 3,3<br />
1
Die ShiftRows-Transformation ist<br />
⎛<br />
⎞ ⎛<br />
⎞<br />
s 0,0 s 0,1 s 0,2 s 0,3 s 0,0 s 0,1 s 0,2 s 0,3<br />
s<br />
ShiftRows: −→ : ⎜ 1,0 s 1,1 s 1,2 s 1,3<br />
⎟<br />
⎝s 2,0 s 2,1 s 2,2 s 2,3 ⎠ −→ s<br />
⎜ 1,1 s 1,2 s 1,3 s 1,0<br />
⎟<br />
⎝s 2,2 s 2,3 s 2,0 s 2,1 ⎠ .<br />
s 3,0 s 3,1 s 3,2 s 3,3 s 3,3 s 3,0 s 3,1 s 3,2<br />
Die MixColumns-Transformation wird beschrieben durch<br />
⎛<br />
⎞<br />
{02} {03} {01} {01}<br />
{01} {02} {03} {01}<br />
MixColumns: −→ : S −→ ⎜<br />
⎟ · S =: M · S,<br />
⎝{01} {01} {02} {03} ⎠<br />
{03} {01} {01} {02}<br />
wobei S die Statusmatrix ist und die Matrix M hexadezimale Einträge besitzt.<br />
(a) Finden Sie für (11000011), DF und x 5 +x 3 +x alle Darstellungen, also jeweils Polynom, Binär- und Hexadezimalzahl.<br />
(b) Berechnen Sie<br />
ShiftRows(D8 56 F2 BA E0 41 BB F1 C7 A4 69 E7 1E 24 D3 AC).<br />
(c) Geben Sie die Umkehrfunktion von ShiftRows an und berechnen Sie<br />
ShiftRows −1 (B5 14 D8 75 AD 21 8C 27 E3 DF 5A B4 91 F F 37 <strong>05</strong>).<br />
(d) Sei s = (D8, 41, 69, AC) T die erste Spalte der Statusmatrix S nach der ShiftRows-Transformation (in hexadezimaler<br />
Notation). Berechnen Sie MixColumns(s), d.h. den nächsten Schritt von AES, der auf der Spalte s durchgefürt werden<br />
würde.<br />
(e) ∗ Sei S die Statusmatrix nach der ShiftRows-Transformation von Aufgabenteil (b). Berechnen Sie MixColumns(S).<br />
Dieser Aufgabenteil ist freiwillig!<br />
H1 Polynominversion in einem anderen Körper<br />
Sei 7 = /7 der endliche Körper mit 7 Elementen. Wir definieren das Polynom p(x) = x 4 + 1 und den Körper<br />
= 7 [x]/p(x) 7 [x].<br />
Berechnen Sie das Inverse für das Polynom f (x) = x 2 + x + 2 in .<br />
Hinweis: Benutzen Sie den erweiterten Euklidischen Algorithmus, um mittels gcd(f (x), p(x)) = g das Inverse zu finden.<br />
Solange g ∈ 7 \ {0} ist, können Sie aus g das Inverse zu p(x) berechnen. (Warum geht das?)<br />
H2 S-Box in AES (SubBytes)<br />
Sei der AES-Körper. Seien weiter<br />
⎛<br />
⎞<br />
1 1 1 1 1 0 0 0<br />
0 1 1 1 1 1 0 0<br />
0 0 1 1 1 1 1 0<br />
A =<br />
0 0 0 1 1 1 1 1<br />
1 0 0 0 1 1 1 1<br />
⎜<br />
1 1 0 0 0 1 1 1<br />
⎟<br />
⎝1 1 1 0 0 0 1 1⎠<br />
1 1 1 1 0 0 0 1<br />
⎛ ⎞<br />
0<br />
1<br />
1<br />
und c =<br />
0<br />
0<br />
,<br />
⎜<br />
0<br />
⎟<br />
⎝1⎠<br />
1<br />
dann entspricht die in AES verwendete S-Box der Funktion<br />
S : \ {0} −→ \ {0} : s −→ A · s −1 + c.<br />
Dabei identifizieren wir Vektoren mit Polynomen. Zum Beispiel ist (10010011) T ˆ= x 7 + x 4 + x +1 (vgl. auch Aufgabe P3).<br />
Berechnen Sie S(x 4 + x + 1) und S(x + 1). Geben Sie die Ein- und Ausgaben als Polynome, Binärzahlen und Hexadezimalzahlen<br />
an.<br />
2