30.12.2013 Aufrufe

Übung 05 - CDC - Technische Universität Darmstadt

Übung 05 - CDC - Technische Universität Darmstadt

Übung 05 - CDC - Technische Universität Darmstadt

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!