AES-Verschlüsselung

Zu beginn der Stunde haben wir das Ende des Youtube-Videos gesehen. Das Video findet ihr hier. Danach haben wir gemeinsam versucht uns die AES-Verschlüsselung verständlich zu machen.

Erklärung:

Die AES-Verschlüsselung ist ein sehr populäres Verschlüsselungssystem. Zudem ist es ein Symmetrisches Verschlüsselungsverfahren, dass heißt der verwendete Schlüssel zum Ver-/und Entschlüsseln ist gleich. Zum Verschlüsseln benutzt man das sogenannte Blockchiffre (Blockverschlüsselung), hierbei wird der Klartext je nach länge in einen Block gleicher länge einsortiert (zum Beispiel: 16 Buchstaben entsprechen einem 16er Block). Bei einem großen Text werden auch mehrere Blöcke gebildet und alle einzeln Verschlüsselt.

Die Einteilung von den Buchstaben ins Blockchiffre erfolgt durch Umwandlung in Hexadezimal. Jeder Buchstabe bekommt nun seinen eigen Block in der Hexadezimalschreibweise (z.B. „g“ wäre „67“). Jeder Einzelblock besteht aus 1 Byte. Daraus lässt Schlussfolgern, dass ein 16er Block aus 16 Bytes, also 128-Bit besteht. Der nun gebildete Block nennt man „Zustandsmatrix“. Diese gemeinsam mit dem vorher bestimmten Schlüssel kommen gemeinsam in das AES-System und werden dort Verschlüsselt.

Verschlüsselung im AES-System:

Dieser Vorgang besteht aus drei Teil-Komplexen. Beginnend mit der Anfangsrunde(initial round). Hierbei wird unser Ausgangstext mit unserem Schlüssel verrechnet. Darauf folgen die Hauptrunden, bestehend aus 9 Einzelrunden, die wiederum aus 4 Einzelverfahren bestehen. Zuletzt kommt die Endrunde, wobei unser Text ein letztes mal Verschlüsselt wird, womit wir 10 gesamt Verschlüsselungsrunden unseres Ausgangstextes haben. In den Hauptrunden wird unser verrechneter Text aus der Anfangsrunde (im Blockchiffre) durch 4 Einzelverschlüsselungsverfahren geleitet. „SubBytes“, „ShiftRows“, „MixColumns“ und „AddRundKey“. Beginnend mit „SubBytes“, hierbei werden die Einzelblöcke, in Hexadezimal, mit Hilfe einer festgelegten Tabelle verschlüsselt. benutzt werden dafür x und y der Hexadezimaldarstellung. (z.B. „2d“ wäre x = 2 und y = d). Wenn das für alle Einzelblöcke erledigt ist kommt der Gesamtblock zu „ShiftRows“. Hierbei wird unser Block ähnlich wie bei einem Zauberwürfel unterschiedlich durchrotiert. Zum Beispiel verschiebt man Einzelblock 5 (erster in der 2. Reihe) um 1 Byte nach rechts und andere um 2 oder 3 Byte. Bei „MIxColumns“ wird unser erster Teil des Blocks (also Reihe 1 senkrecht nicht waagrecht) mit einem von den Entwicklern vorgegeben Feld multipliziert. Die neu erhaltende Reihe wird durch die alte ersetzt. Das letzte Verfahren „AddRoundKey“ taucht im gesamten Verfahren 3x auf uns greift auf die Anfangsrunde zurück. Bei diesem Verfahren wird unser, durch die ersten 3 Verfahren verschlüsselte Gesamtblock, mit einem „RoundKey“ verrechnet. Dieser „RoundKey“ ist ein neuer Schlüssel speziell für diesen einen von 9 Durchläufen erstellter. Die Einzelblöcke werden mit ihrem Gegenüber“ beim „RoundKey“ addiert. Nach dieser Runde folgen 8 weitere, die immer das gleiche ausführen und somit den Text immer komplexer machen.

Erstellung des „RoundKeys“:

Hierbei nehmen wir die letzte Spalte unseres „Ursprungskeys“ setzen den obersten Block nach unten und legen, mit Hilfe der Tabelle aus dem „SubBytes“-Verfahrens, neue Werte fest. Diese neu erstellte Spalten wird nun ,mit den Übrigen unter Berücksichtigung einer neuen Tabelle von den Entwicklern, verrechnet. Daraus entsteht der erste „RoundKey“. Dieses Verfahren erstellt jede Runde einen neuen Key.

Schreibe einen Kommentar