AES Attacke (auf 6 Runden AES)?
-
Bei solchen Themen besteht immer die Gefahr sich zu blamieren ich würde hier trotzdem gerne meine Überlegungen schildern. Wie in einem anderen Post schon erwähnt bin ich kein Profi und es sind lediglich theoretische Überlegungen von jemandem der was Mathematik angeht Anfänger bzw. höchstens leicht fortgeschritten ist.
Ich habe für eine Runde AES für einen einzelnen 8bit block (wenn man einen einzelnen 8 bit Block angreift) eine Komplexität von 32 bit errechnet.
Wenn wir davon ausgehen, dann haben drei Runden m.E. ein Komplexität von 96 bit was unter der Komplexität des Schlüssels von 128 bit ist.
Versuche ich einen Meet-in-the-middle Angriff so habe ich, wenn ich richtig liege eine Komplexität von 2x96 bit also 97 bit plus den Abgleich der jeweils 256 Möglichkeiten (8 bit) jeder Seite was weitere 8 bit Komplexität bedeutet wenn ich mich nicht täusche.
Somit kommen wir auf 106 bit Komplexität was 22 bit unter der Komplexität des Schlüssels bedeutet.
Ich kann also mit 2^106 Operationen einen Teilschlüssel der ersten 6 Runden generieren. Mach ich das mit jedem der 16 8-bit Blöcke so habe ich (2^106)x16 was 2^110 bit Komplexität entspricht.
Ich könnte also mit 2^110 Operationen bei 6 Runden den Schlüssel errechnen.
Liege ich damit richtig oder zumindest nahe?
Die Idee des Ganzen liegt um es kurz zu beschreiben einzelne byte Blocks anzugreifen und das kombiniert mit einem meet-in-the-middle Angriff.
Liebe Grüsse
-
Ich habe mich leider bei der Berechnung vertan, werde es möglicherweise neu berechnen und neu posten. Dennoch glaube ich, dass in dieser Form von Attacke eine Chance liegt, da die Komplexität der Berechnungen unter der des Schlüssels liegen. Ihr könnt ja generell eure Meinung zur Attacke posten. Liebe Grüsse
-
Zeig doch mal. wie du das berechnet hast.
-
@Moba:
Der AES hat aber eine Blockgröße von mindestens 128 Bit und nicht 8 Bit.Du nimmst 128 Bit an Daten, 128 Bit an Schlüssel, jagst diese durch die AES Verschlüsselungsfunktion und erhälst 128 Bit an verschlüsselten Daten. Aufgrund des Avalanche Effekts werden die anderen 120 Bit dir ordentlich den Tag versauen, wenn du dich nur auf 8 Bit beschränken willst.
Ich könnte also mit 2^110 Operationen bei 6 Runden den Schlüssel errechnen.
2^110 Operationen sind aber eine Menge Holz.
Schaue mal hier:
https://www.researchgate.net/publication/221005701_The_Boomerang_Attack_on_5_and_6-Round_Reduced_AES
-
Hallo Bitte ein Bit,
danke für deine Antwort.
Der Eingangsblock bei AES hat zwar 128 bit, verarbeitet wird er aber teilweise byteweise, (ausser bei den Mixcolumns) bzw. kann man den Weg jedes byteblocks nachvollziehen. Alle Operationen die auf diesem byteblock ausgeführt werden bzw. deren Komplexität kann man errechnen. Ist die Komplexität bei einer gewissen Zahl an Runden kleiner als die des Schlüssels, kann man alle möglichen Möglichkeiten ausprobieren oder einen Meet-in-the-middle Angriff probieren. Generell sind alle Blockchiffren (wenn auch nicht bytewise) davon betroffen müssen also um diesem Effekt oder dieser Gefahr entgegenzuwirken eine gewisse Rundenzahl haben.
Liebe Grüsse
-
Diese Attacke kann man übrigens auch auf die keyshedule von AES ausführen und so für ein byte bzw. bytewise alle möglichen Rundenschlüsselteile die auf dieses byte angewendet werden vorberechnen oder ebenfalls eine meet-in-the-middle Attacke ausführen wenn ich mich nicht täusche.
Liebe Grüsse
-
Ich verstehe deine Attacke nicht.
AES arbeitet auf Bytes bzw. auf einer 4×4 Byte Matrix. Nun besteht eine Runde unter anderem aus der ShiftRow und der MixColumn Funktion. Die eine Funktion rotiert die Zeilen der Matrix während die andere Funktion jede Spalte der Matrix durchmischt. Dadurch besteht nach ein paar Runden jedes chiffierte Byte aus allen Eingabebytes.
Und das dürfte auch dazu führen, dass sobald ich ein Bit im Eingabeblock kippe, potenzielle alle Bytes des Ausgabestroms sich ändern. Wie will man nun da die Spur eines einzelnen Bytes verfolgen?