Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:kryptographie:aes_detail:start [30.03.2022 13:35] – [Die Funktionsweise von ShiftRow] sbel | faecher:informatik:oberstufe:kryptographie:aes_detail:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== AES etwas genauer betrachtet ====== | ||
- | Um diesen Abschnitt bearbeiten zu können, solltest du mit den wesentlichen Begriffen der modernen symmetrischen Kryptoverfahren vertraut sein. | ||
- | |||
- | ===== Schlüssellänge und Rundenzahl ===== | ||
- | |||
- | Die **Blocklänge** des AES beträgt **128 Bit**. Die AES-Schlüssellänge kann wahlweise auf 128, 192 oder 256 Bit festgelegt werden, die Rundenzahl hängt von der gewählten Schlüssellänge ab: | ||
- | |||
- | ^Schlüssellänge ^ Rundenzahl ^ | ||
- | |128 Bit | 10 | | ||
- | |192 Bit | 12 | | ||
- | |256 Bit | 14 | | ||
- | |||
- | ===== Klartextblock als Matrix ===== | ||
- | |||
- | Alle Operationen werden auf einer 4x4 Byte Matrix ausgeführt, | ||
- | |||
- | {{ : | ||
- | |||
- | ===== Rundenaufbau ===== | ||
- | |||
- | Wir betrachten nur den AES mit 128Bit Schlüssellänge und 10 Runden. | ||
- | |||
- | Der AES verfügt über die folgenden Operationen, | ||
- | |||
- | * SubBytes | ||
- | * ShiftRow | ||
- | * MixColumn | ||
- | * AddRoundKey | ||
- | |||
- | Die mathematischen Details der Operationen beleuchten wir an dieser Stelle nicht. | ||
- | |||
- | Der Ablauf ist wie folgt: | ||
- | |||
- | {{ : | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A1) === | ||
- | |||
- | Wieviele Rundenschlüssel sind nötig? Wie viel (Bit/Byte) Schlüsselmaterial muss bei der Schlüsselaufbereitung erzeugt werden? Ein Rundenschlüssel ist 16Byte lang. | ||
- | |||
- | Beobachte die Schlüsselaufbereitung im [[https:// | ||
- | |||
- | Überprüfe, | ||
- | |||
- | {{ : | ||
- | |||
- | |||
- | ===== Was macht SubBytes? ===== | ||
- | |||
- | Die Rundenfunktion " | ||
- | |||
- | Bei der Ersetzung wird nun jedes Byte der 4x4 Matrix durch seine entsprechende Ersetzung ersetzt. Im [[https:// | ||
- | |||
- | {{ : | ||
- | |||
- | Dabei sind 2 Hexadezimale Stellen jeweils ein Byte und man zählt vom Beginn der S-Box an von 00 bis FF (von 0 bis 255), damit ergeben sich folgende Ersetzungen: | ||
- | |||
- | < | ||
- | 00 -> 63 | ||
- | 01 -> 7c | ||
- | 02 -> 77 | ||
- | ... | ||
- | fe -> bb | ||
- | ff -> 16 | ||
- | </ | ||
- | ---- | ||
- | {{: | ||
- | === (A2) === | ||
- | |||
- | Mache dir zunächst noch einmal klar, dass 2 hexadezimale Ziffern 8 Bit, also ein Byte repräsentieren. | ||
- | |||
- | ++++ Hilfestellung | | ||
- | {{ : | ||
- | ++++ | ||
- | |||
- | Arbeite im [[https:// | ||
- | |||
- | Das hat zur Folge, dass die erste Anwendung von **AddRoundKey** auf den Eingabetext - bevor die Runden beginnen - keine Auswirkung auf die Bitfolge hat, auf die die S-Box angewandt wird. | ||
- | |||
- | Mache dir klar, dass die Eingabe von 0 beginnend hoch zählt (12Bytes weit), beziehungsweise von 255 beginnend abwärts zählt (4Bytes weit). | ||
- | |||
- | **Tipp:** Wenn du im Cryptool die Bytes der Ergebnisse der Rundenoperationen anklickst, veranschaulicht Cryptool durch dünne Linien, wie der Byte-Wert zustandekommt. | ||
- | |||
- | ++++ Screenshot | | ||
- | {{ : | ||
- | ++++ | ||
- | |||
- | * Vollziehe die Funktionsweise der S-Box an diesem Beispiel nach, indem du die Ersetzungen der ersten 12 sowie der letzten 4 Bytes im Feld '' | ||
- | * Ändere den Eingabetext und beobachte die Auswirkungen. Findest du passende Ersetzungen? | ||
- | * Ändere den Schlüssel und beobachte die Auswirkungen: | ||
- | |||
- | Zusatzfrage: | ||
- | |||
- | ===== Die Funktionsweise von ShiftRow ==== | ||
- | |||
- | **ShiftRow** dient zur **kryptographischen Diffusion**. Im Cryptool wird " | ||
- | |||
- | Anschaulich rotiert ShiftRow die Bytes in den Zeilen der 4x4 Matrix des Byte-Blocks: | ||
- | |||
- | {{ : | ||
- | |||
- | Im Cryptool ist die Permutation durch eine entsprechende Bytefolge im Abschnitt Konfiguration festgelegt. Für den " | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A3) === | ||
- | |||
- | Vollziehe im Cryptool nach, dass die Bytes in den Zeilen tatsächlich so vertauscht werden, wie im Bild oben dargestellt. Schreibe die Bytes dazu als passende Matrix auf. | ||
- | |||
- | Wie gelangt man von der Darstellung im Cryptool (z.B.: '' | ||
- | |||
- | ===== MixColumn ===== | ||
- | |||
- | Die Funktion MixColumn trägt wie ShiftRow zur **Diffusion** bei. Im Vergleich zum sehr simplen ShiftRow ist MixColumn komplexer, es wird eine spezielle " | ||
- | |||
- | **Wichtig: |