13.07.2015 Aufrufe

Handouts - Prof. Dr. Christoph Karg - Hochschule Aalen

Handouts - Prof. Dr. Christoph Karg - Hochschule Aalen

Handouts - Prof. Dr. Christoph Karg - Hochschule Aalen

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.

Kryptografische AlgorithmenLerneinheit 4: Advanced Encryption Standard (AES)<strong>Prof</strong>. <strong>Dr</strong>. <strong>Christoph</strong> <strong>Karg</strong>Studiengang Informatik<strong>Hochschule</strong> <strong>Aalen</strong>Wintersemester 2013/201415.11.2013Einleitung• Bei der Standardisierung von DES wurde vorgeschrieben,daß DES alle 5 Jahre bezüglich seiner Sicherheit evaluiertwird. Ende der 1990er Jahre ergab die Überprüfung, daßDES nicht mehr als sicher einzustufen ist.• Um einen neuen Standard für symmetrischeVerschlüsselung zu schaffen, schrieb das NIST im Jahre1997 einen Wettbewerb zur Bestimmung des AdvancedEncryption Standard (AES) aus.• Anforderungen an den Kryptoalgorithmus waren:⊲ Erfüllung aller heutigen Sicherheitsanforderungen⊲ Öffentlich zugängliche Dokumentation derSpezifikation und Designkriterien⊲ Weltweite kostenlose Nutzung<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 2/40


Die 15 AES KandidatenName Entwickler TypCAST-256 Entrust (CA) IndustrieCrypton Future Systems (KR) IndustrieDEAL Outbridge, Knudsen (USA/DK) ForschungDFC ENS-CNRS (FR) ForschungE2 NTT (JP) IndustrieFrog TecApro (CR) IndustrieHPC Schroeppel (USA) ForschungLOKI97 Brown et al. (AU) ForschungMagenta Deutsche Telekom (DE) IndustrieMars IBM (USA) IndustrieRC6 RSA (USA) IndustrieRijndael Daemen and Rijmen (BE) ForschungSAFER++ Cyling (USA) IndustrieSerpent Anderson, Bihan, Knudson (UK/IL/DK) ForschungTwofish Counterpane (USA) Industrie<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 3/40AuswahlkriterienBei der Auswahl des Standards wurden folgende Kriterienangewandt:Sicherheit: Dies ist das wichtigste aber auch das amschwierigsten zu bewertende Kriterium.Kosten: Man unterscheidet zwei Arten von Kosten:• Geistiges Eigentum: Freie Verfügbarkeit des Algorithmus,aber auch Verzicht auf Patentansprüche auf Ideen inVorschlägen der Konkurrenten• Resourcenverbrauch: Rechenzeit, Speicherplatzbedarf,Größe des Programms, etc.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 4/40


Auswahlkriterien (Forts.)Implementierungsaspekte: Folgende Punkte wurden beurteilt:• Flexibilität: Ist der Algorithmus vielseitig einsetzbar?• Schlüsselagilität: Wie effizient ist die Schlüsselkonfiguration?• Einfachheit: Wie hoch ist der Aufwand zurImplementierung des Algorithmus?Man beachte, daß diese Punkte schwer quantifizierbar sind.In einem ersten Auswahlverfahren wurden aus denKandidanten folgende fünf Finalisten ausgewählt: RC6,Rijndael, Twofish, MARS und Crypton.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 5/40Und der Sieger ist . . . RijndaelDie fünf Finalisten wurden nochmals genau untersucht. Am2. Oktober 2000 gab die NIST bekannt, daß Rijndael derGewinner des Wettbewerbs und somit der zukünftige AES ist.Die Gründe für diese Entscheidung sind:• Sicherheit: Rijndael erfüllt alle Sicherheitsanforderungen.• Geschwindigkeit: Die Implementierung von Rijndael wardie schnellste aller Kandidaten mit gleichmässig gutenPerformanz auf allen betrachteten Plattformen.• Speicherbedarf: Rijndael benötigt wenig RAM- undROM-Speicher.• Implementierung in Hardware: Rijndael liefert die bestePerformanz in Hardware-Implementierung.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 6/40


Wiederholung: Endliche KörperEin Körper ist eine algebraische Struktur (A, ⊕, ⊙) mitfolgenden Eigenschaften:• (A, ⊕) und (A \ {0}, ⊙) sind kommutative Gruppen.• Es gilt das Distributivgesetz, d.h., für alle a, b, c gilt:(a ⊕ b) ⊙ c = a ⊙ c ⊕ b ⊙ cc ⊙ (a ⊕ b) = c ⊙ a ⊕ c ⊙ bFalls ‖A‖ < ∞, dann nennt man (A, ⊕, ⊙) einen endlichenKörper oder auch Galois-Feld.Fakt: Es gibt einen endlichen Körper mit ‖A‖ = n genau dann,wenn n eine Primzahlpotenz ist, d.h., n = p k für eine Primzahlp.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 7/40Rechnen mit endlichen KörpernUm über einem endlichen Körper GF (p k ) rechnen zu können,muß zunächst die Addition und Multiplikation definiert werden.Idee: Man stellt die Elemente als k-Tupel über Z p dar undinterpretiert diese als Polynome mit Grad k − 1 mitKoeffizienten in Z p . Das Element (a k−1 , . . . , a 1 , , a 0 ) ∈ (Z p ) ksteht für das Polynoma k−1 x k−1 + a k−2 x k−2 + . . . + a 1 x + a 0Beispiel: Das Element (4, 0, 3, 2) aus GF (5 4 ) steht für dasPolynom 4x 3 + 3x + 2.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 8/40


Die Addition über GF (p k )Die Addition über GF (p k ) ist die Polynomaddition. Fürunda(x) = a k−1 x k−1 + a k−2 x k−2 + . . . + a 1 x + a 0b(x) = b k−1 x k−1 + b k−2 x k−2 + . . . + b 1 x + b 0ist a(x) ⊕ b(x) = c(x) wobeic(x) = c k−1 x k−1 + c k−2 x k−2 + . . . + c 1 x + c 0und c i = (a i + b i ) mod p.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 9/40Die Multiplikation über GF (p k )Will man die Multiplikation über GF (p k ) auf analoge Weise,sprich als Polynommultiplikation, realisieren, dann trifft manauf das folgende . . .Problem: Das Produkt zweier Polynome mit Grad k − 1 ist einPolynom vom Grad 2(k − 1) und somit kein Element vonGF (p k ).Lösung: Man reduziert das Ergebnis der Multiplikation indemman modulo einem irreduziblem Polynom mit Grad k rechnet.Man setzt hierzu die Polynomdivision mit Rest ein.Ein Polynom ist irreduzibel, falls es nur durch 1 und sich selbstohne Rest teilbar ist.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 10/40


Beispiel GF (2 3 ) (Teil 1)Die Elemente in GF (2 3 ) sind:Tupel Polynom Zahl(0, 0, 0) 0 0(0, 0, 1) 1 1(0, 1, 0) x 2(0, 1, 1) x + 1 3(1, 0, 0) x 2 4(1, 0, 1) x 2 + 1 5(1, 1, 0) x 2 + x 6(1, 1, 1) x 2 + x + 1 7<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 11/40Beispiel GF (2 3 ) (Teil 2)Die Addition von x 2 + x + 1 und x 2 + 1 liefert das Ergebnis2x 2 + x + 2 = x.Um obige Werte zu multiplizieren, berechnet man zunächst(x 2 + x + 1)(x 2 + 1) = x 4 + x 3 + 2x 2 + x + 1= x 4 + x 3 + x + 1Anschließend dividiert man das Ergebnis mit dem irreduziblenPolynom m(x) = x 3 + x + 1.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 12/40


Beispiel GF (2 3 ) (Teil 3)Polynomdivision:(x 4 + x 3 + x + 1) : (x 3 + x + 1) = x + 1x 4 + x 2 + xx 3 + x 2 + 1x 3 + x + 1x 2 + x ⇐ RestDas Ergebnis des Produkts (x 2 + x + 1) ⊙ (x 2 + 1) ist alsox 2 + x.Somit ist (1, 1, 1) ⊙ (1, 0, 1) = (1, 1, 0).<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 13/40Algorithmen für PolynomarithmetikUm endliche Körper in der Praxis einsetzen zu können,benötigt man effiziente Algorithmen zur Berechnung derPolynomarithmetik.• Die Addition ist einfach zu implementieren. Sie ist diekomponentenweise Addition modulo der Primzahlbasis p.• Die Multiplikation ist mittels Polynommultiplikation undPolynomdivision berechenbar. Der Aufwand istquadratisch im Grad der Polynome.• Eine weitere wichtige Operation ist die Bestimmung vonmultiplikativen Inversen. Sie kann mittels des ExtendedEuklid Algorithmus berechnet werden.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 14/40


Verbesserung der EffizienzIst bei einer Anwendung der endliche Körper GF (m) festgewählt, dann läßt sich die Multiplikation undInversenberechnung deutlich effizienter gestalten.Bekanntlich ist (GF (m) \ {0}, ⊙) eine Gruppe und besitztsomit ein erzeugendes Element g. D.h., für jedesa ∈ GF (p n ) \ {0} existiert eine Zahl i so daß g i = a.Um das Produkt a ⊙ b berechnen, verwendet man denGenerator g. Falls a = g i und b = g j , dann ista ⊙ b = g i ⊙ g j i+j mod (m−1)= gDas Inverse von a = g i ist a −1 = g m−1−i .<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 15/40Verbesserung der Effizienz (Forts.)Die Berechnung der Multiplikation wurde also reduziert auf dieKombination der Funktion exp(i) = g i und deren inversenFunktion log g (x).Liegen diese Funktionen in tabellarischer Form vor, dannbeschränkt sich die Berechnung auf ganzzahlige Arithmetikund Suche von Tabelleneinträgen.Berechnung der Multiplikation a ⊙ b:1. Finde in der log g -Tabelle die Indizes i und j so daßg i = a und g j = b2. Berechne l = i + j mod (m − 1)3. a ⊙ b ist der l-te Eintrag in der exp g -Tabelle.Analog: Berechnung von multiplikativen Inversen.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 16/40


Beispiel GF (2 3 )Das Element (0, 1, 0) = x ist ein erzeugendes Element derGruppe GF (2 3 ) \ {0}.exp g -Tabellei x i a0 1 (0, 0, 1)1 x (0, 1, 0)2 x 2 (1, 0, 0)3 x + 1 (0, 1, 1)4 x 2 + x (1, 1, 0)5 x 2 + x + 1 (1, 1, 1)6 x 2 + 1 (1, 0, 1)log g -Tabellea Polynom i(0, 0, 1) 1 0(0, 1, 1) x + 1 3(0, 1, 0) x 1(1, 0, 0) x 2 2(1, 1, 0) x 2 + x 4(1, 0, 1) x 2 + 1 6(1, 1, 1) x 2 + x + 1 5<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 17/40Beispiel GF (2 3 ) (Forts.)Zur Berechnung von(1, 1, 1) ⊙ (1, 0, 1) = (x 2 + x + 1)(x 2 + 1) bestimmt mani = log x [(1, 1, 1)] = 5 undj = log x [(1, 0, 1)] = 6.Somit ist l = (5 + 6) mod 7 = 4 und obiges Produkt gleichexp x [4] = (1, 1, 0) = x 2 + x.Um (0, 1, 1) −1 bestimmen, setze i = log x [(0, 1, 1)] = 3 undberechne l = 7 − 3 = 4. (0, 1, 1) −1 ist gleichexp x [4] = (1, 1, 0).<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 18/40


Einsatz von endlichen Körpern in Rijndael• Viele der in Rijndael eingesetzten Transformationenbasieren auf arithmetischen Operationen über GF (2 8 ).Der Grund für die Wahl von GF (2 8 ) ist, daß man damitOperationen auf Byte-Ebene definieren kann.• Das irreduzible Polynom istm(x) = x 8 + x 4 + x 3 + x + 1.• Multiplikation und Berechnung der multiplikativenInversen werden mittels Exp- und Log-Tabellenimplementiert. Jede dieser Tabellen hat eine Größe von256 Byte.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 19/40Das Rijndael KryptosystemRijndael ist ein symmetrisches Kryptosystem mit folgendenParametern:• P = C = {0, 1} 32·n B , wobei nB = {4, 6, 8}• K = {0, 1} 32·n K , wobei nK ∈ {4, 6, 8}Sowohl die Block- als auch die Schlüssellänge ist demnachvariabel mit einer Länge von 128, 192 oder 256 Bit.Im AES Standard wurde die Blocklänge auf 128 Bit, d.h.n B = 4 festgelegt.Die Bezeichnung Rijndael wurde von den Namen seinerErfinder Vincent Rijmen und Joan Daemen abgeleitet.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 20/40


Der interne Zustand von RijndaelDer interne Zustand von Rijndael ist ein Bytefeld, dessenLänge mit der Blocklänge übereinstimmt.Das Feld wird entweder als Array der Länge 4n B oder alsMatrix der Dimension 4 × n B angesprochen.Die Konvertierung zwischen Arrayposition n und Matrixindex(i, j) erfolgt gemäß den folgenden Formeln:⌊ ni = n mod 4, j = , bzw. n = i + 4 · j.4⌋Der Schlüsselblock wird auf analoge Weise interpretiert.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 21/40Der VerschlüsselungsalgorithmusRijndael(x, k)Input: Klartext x (4 · n B Byte), Schlüssel k (4 · n K Byte)Output: Geheimtext y (4 · n B Byte)1 s := x;2 KeyExpansion(k, k R [0, n R ]);3 AddRoundKey(s, k R [0]);4 for i := 1 to n R − 1 do Round(i, s, k R [i]);5 FinalRound(n R , s, k R [n R ]);6 return s;<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 22/40


Anzahl der RundenDie Anzahl der Runden n R ist abhängig von der Blocklänge n Bund Schlüssellänge n K .n R n B = 4 n B = 6 n B = 8n K = 4 10 12 14n K = 6 12 12 14n K = 8 14 14 14Für n B = 4 und n K = 6 ist beispielsweise n R = 12.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 23/40Aufbau einer RundentransformationBei einer Verschlüsselsrunde von Rijndael kommen diefolgenden Funktionen zum Einsatz:• ByteSub(s): Diese Operation ist eine nicht-lineareSubstitution, die jedes Byte des Zustands unabhängig vonden anderen verändert.• ShiftRow(s): Bei dieser Operation wird zeilenweise eineLinksverschiebung durchgeführt.• MixColumns(s): Diese Operation bearbeitet denZustand spaltenweise.• AddRoundKey(s, k R ): Hier wird der Rundenschlüsselauf den Zustand bitweise addiert.Jede dieser Funktionen ist für sich invertierbar.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 24/40


Round() und FinalRound()Round(s, k R )Input: Zustand s, Rundenschlüssel k R (jeweils 4 · n B Byte)Output: Zustand s (4 · n B Byte)1 ByteSub(s);2 ShiftRow(s);3 MixColumn(s);4 AddRoundKey(s, k R );FinalRound(s, k R )Input: Zustand s, Rundenschlüssel k R (jeweils 4 · n B Byte)Output: Zustand s (4 · n B Byte)1 ByteSub(s);2 ShiftRow(s);3 AddRoundKey(s, k R );<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 25/40Die ByteSub TransformationS−Boxa i,jb i,jDie S-Box wird auf jedes Byte des Zustands angewandt. Sie isteine Komposition aus zwei biijektiven Abbildungen.1. Zuerst wird das zu berechnende Byte als Element vonGF (2 8 ) interpretiert und auf sein multiplikatives Inversesabgebildet. Das Element 0 wird auf sich selbst abgebildet.2. Der zweite Schritt besteht in der Berechnung einer affinenAbbildung, wobei über GF (2) gerechnet wird.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 26/40


Die ByteSub Transformation (Forts.)Die affine Funktion f : {0, 1} 8 ↦→ {0, 1} 8 ist wie folgt definiert:⎛ ⎞ ⎛⎞ ⎛ ⎞ ⎛ ⎞y 0 1 0 0 0 1 1 1 1 x 0 1y 11 1 0 0 0 1 1 1x 11y 21 1 1 0 0 0 1 1x 20y 3y 4=1 1 1 1 0 0 0 1x 31 1 1 1 1 0 0 0x 4+00⎜y 5⎟ ⎜0 1 1 1 1 1 0 0⎟ ⎜x 5⎟ ⎜1⎟⎝y 6⎠ ⎝0 0 1 1 1 1 1 0⎠⎝x 6⎠ ⎝1⎠y 7 0 0 0 1 1 1 1 1 x 7 0Das zu transformierende Byte wird als Element in (Z 2 ) 8interpretiert.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 27/40Die ByteSub Transformation (Forts.)Die zu f inverse Abbildung f −1 : {0, 1} 8 ↦→ {0, 1} 8 ist ebenfallseine affine Funktion und wie folgt definiert:⎛ ⎞ ⎛⎞ ⎛ ⎞ ⎛ ⎞x 0 0 1 0 1 0 0 1 0 y 0 0x 10 0 1 0 1 0 0 1y 10x 21 0 0 1 0 1 0 0y 20x 3x 4=0 1 0 0 1 0 1 0y 30 0 1 0 0 1 0 1y 4+00⎜x 5⎟ ⎜1 0 0 1 0 0 1 0⎟ ⎜y 5⎟ ⎜1⎟⎝x 6⎠ ⎝0 1 0 0 1 0 0 1⎠⎝y 6⎠ ⎝0⎠x 7 1 0 1 0 0 1 0 0 y 7 1<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 28/40


Die ShiftRow TransformationKein Links-ShiftLinks-Shift um c 1 PositionenLinks-Shift um c 2 PositionenLinks-Shift um c 3 PositionenDie ShiftRow-Operation ist eine zeilenweiseLinks-Verschiebung. Die Offsetwerte der Verschiebung sindabhängig von der Blocklänge:n B c 1 c 2 c 34 1 2 36 1 2 38 1 3 4<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 29/40Die MixColumn Transformationa 0,j⊗ Mb 0,ja 1,ja 2,jb 1,jb 2,ja 3,jb 3,jDie MixColumn Transformation bearbeitet den Zustandspaltenweise. Eine Spalte wird als Vektor interpretiert und miteiner 4 × 4 Matrix multipliziert. Die Berechnungen erfolgenüber GF (2 8 ).<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 30/40


Die MixColumn Transformation (Forts.)⎛ ⎞ ⎛ ⎞ ⎛ ⎞b 0 2 3 1 1 a 0⎜b 1⎟⎝b 2⎠ = ⎜1 2 3 1⎟⎝1 1 2 3⎠ ·⎜a 1⎟⎝a 2⎠b 3 3 1 1 2 a 3Die hierzu inverse Transformation ist:⎛ ⎞ ⎛⎞ ⎛ ⎞a 0 14 11 13 9 b 0⎜a 1⎟⎝a 2⎠ = ⎜ 9 14 11 13⎟⎝13 9 14 11⎠ ·⎜b 1⎟⎝b 2⎠a 3 11 13 9 14 b 3Beachte: Man rechnet über dem Körper GF (2 8 ).<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 31/40AddRoundKey Transformationa i,jk i,jXORb i,jIn der AddRoundKey Transformation wird derRundenschlüssel auf den Zustand addiert. Hierzu wird jedesByte des Zustand mit dem entsprechenden Byte desRundenschlüssels via XOR verknüpft.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 32/40


EntschlüsselungsalgorithmusDa jede der Basisoperationen für sich invertierbar ist, bestehtdie Entschlüsselung in der Anwendung der inversenTransformationen in umgekehrter Reihenfolge.Die Umkehrung von Round() ist beispielsweise:InvRound(s, k R )Input: Zustand s, Rundenschlüssel k R (jeweils 4 · n B Byte)Output: Zustand s (4 · n B Byte)1 AddRoundKey(s, k R );2 InvMixColumn(s);3 InvShiftRow(s);4 InvByteSub(s);<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 33/40Erzeugen der Rundenschlüssel• Für eine komplette Ver- bzw. Entschlüsselung werdenn R + 1 Rundenschlüssel mit jeweils 4n B Byte benötigt.• Mit anderen Worten: Aus den 4n K Byte des Schlüsselsmüssen also 4n B (n R + 1) Byte für die Rundenschlüsselgenereriert werden.• Notation: K[i] und W [i] bezeichnen 4 × i-Matrizen überGF (2 8 ). Die Spalten der Matrizen werden als Vektoreninterpretiert.• Ziel: Berechne aus K[n K ] die Matrix W [n B (n R + 1)] undzerlege diese in die Rundenschlüssel.<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 34/40


Schlüsselexpansion (Idee)f 1 ⊕ ⊕ ⊕ f 2 ⊕ ⊕ ⊕ f 3 ⊕ ⊕ ⊕SchlüsselSchlüsselexpansionRundenschlüssel<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 35/40Hilfsfunktionen• Die Abbildung S : GF (2 8 ) ↦→ GF (2 8 ) ist identisch mit derS-Box der ByteSub-Transformation.• Die Funktion RC : GF (2 8 ) ↦→ GF (2 8 ) ist rekursivdefiniert:RC(0) = x 0 (= 1)RC(1) = x 1 (= 2)RC(i) = x i−1 für i ≥ 2⎛ ⎞ ⎛ ⎞ ⎛ ⎞x 0 y 0 x 0 ⊕ y 0• Vektoraddition: ⎜x 1⎟⎝x 2⎠ ⊕ ⎜y 1⎟⎝y 2⎠ = ⎜x 1 ⊕ y 1⎟⎝x 2 ⊕ y 2⎠x 3 y 3 x 3 ⊕ y 3<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 36/40


Hilfsfunktionen (Forts.)• Abbildung f :f (i,⃗x,⃗y) =⎛ ⎞ ⎛ ⎞ ⎛ ⎞x 0 S(y 1 ) RC(i)⎜x 1⎟⎝x 2⎠ ⊕ ⎜S(y 2 )⎟⎝S(y 3 ) ⎠ ⊕ ⎜ 0⎟⎝ 0 ⎠x 3 S(y 0 ) 0• Abbildung g:g(⃗x,⃗y) =⎛ ⎞ ⎛ ⎞x 0 S(y 0 )⎜x 1⎟⎝x 2⎠ ⊕ ⎜S(y 1 )⎟⎝S(y 2 ) ⎠x 3 S(y 3 )<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 37/40Schlüsselexpansion für n K ≤ 6KeyExpansion(K[n K ], W [n B (n R + 1)])Input: Schlüssel K (4n K Byte) wobei n K ≤ 6Output: Rundenschlüssel (4n B (n R + 1) Byte)1 for j := 0 to n K − 1 do2 W [j] := K[j];3 for (j := n K to n B (n R + 1) − 1) do4 if j mod n K = 0 then5 W [j] := f (j/n K , W [j − n K ], W [j − 1])6 else7 W [j] := W [j − n K ] ⊕ W [j − 1];<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 38/40


Schlüsselexpansion für n K > 6KeyExpansion(K[n K ], W [n B (n R + 1)])Input: Schlüssel K (4n K Byte) wobei n K > 6Output: Rundenschlüssel (4n B (n R + 1) Byte)1 for j := 0 to n K − 1 do2 W [j] := K[j];3 for j := n K to n B (n R + 1) − 1 do4 if (j mod n K = 0) then5 W [j] := f (j/n K , W [j − n K ], W [j − 1])6 elseif (j mod n K = 4) then7 W [j] := g(W [j − n K ], W [j − 1]);8 else9 W [j] := W [j − n K ] ⊕ W [j − 1];<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 39/40Abschließende Bemerkungen• Weitere Details zur Spezifikation und Implementierungvon Rijndael sowie Quellcode in C, C++ und Java findetman unterhttp://www.esat.kuleuven.ac.be/∼rijmen/rijndael/• Zusätzliche Informationen zum AES und denStandardisierungsprozess findet man bei der NIST:http://csrc.nist.gov/CryptoToolkit/aes/<strong>Prof</strong>. <strong>Dr</strong>. C. <strong>Karg</strong>: Kryptografische Algorithmen 40/40

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!