Verteilte AES-Analyse

Demo, die AES mit verteiltem Rechnen angreift

Einleitung

Hier können Sie AES allein auf Ihrem Rechner knacken, oder verteilt als Team vieler Clients, die ad-hoc über das Internet ihre Browser miteinander verbinden (vorausgesetzt, ein Teil des Schlüssels ist bekannt).

AES ist das verbreitetste und beste der modernen symmetrischen Verschlüsselungsverfahren. Es ist als NIST-Standard lizenzfrei verfügbar1. AES hat eine feste Blocklänge für die Nachricht (128 Bit) und eine variable Schlüssellänge (einen der drei Werte: 128, 192 oder 256 Bit).

Sie können sofort mit dem im Feld "Geheimtext" angezeigten Beispiel-Chiffrat starten, weil alle Felder und Einstellungen entsprechend voreingestellt sind. Natürlich können Sie auch einen anderen Geheimtext eingeben, die Parameter ändern oder eine der beiden anderen Varianten (Tab 2 und 3 innerhalb des Plugins) wählen: Mit Tab 2 können Sie einen Job definieren, so dass sich auch andere daran beteiligen können. Mit Tab 3 können Sie die Ressourcen Ihres Rechners für einen von jemand anderen definierten Job zur Verfügung stellen. Die Funktionsweise von AES können Sie ausführlich unter Highlights > AES (Schritt-für-Schritt) ersehen.



Starten

  1. Den Geheimtext als vollständige 128-Bit-Blöcke im Hex-Format in das Textfeld eingeben
    (der voreingestellte Geheimtext besteht aus 640 Hexzeichen = 2560 Bit = 20 ganze AES-Blöcke).
  2. Die Schlüssellänge wählen: 128, 192 oder 256 Bit.
  3. Den Schlüssel im Hex-Format eingeben:
    • Bekannte Stellen als Hex-Zeichen (A-F, 0-9) eingeben.
    • Unbekannte Stellen durch einen Stern (*) kennzeichnen.
    • Eine Stelle entspricht 4 Bit. 128 Bit ergeben damit 32 Stellen.
  4. Je mehr * angegeben werden, desto länger dauert die Analyse.
    • 4 Sterne stellen einen Suchraum von 16 Bit = 216 = 65536 dar (5 Sterne = 20 Bit = 1.048.576).
    • Beispiel: Für einen Suchraum von 16 Bit brauchten (während der Testphase Anfang 2017) 15 Worker-Threads auf einem modernen Laptop 1:48 min und schafften damit einen Durchsatz von 605 Schlüsseln / sec. Auf einer Workstation mit 31 Workern wurde derselbe Suchraum in 0:34 min durchsucht (Durchsatz 1915 Schlüssel / sec).
  5. Weitere Hinweise erhalten Sie per Overlay-Fenster, wenn Sie auf das Symbol i (hinter dem Schlüssel-Eingabefeld) gehen.


3 Varianten: Auswahl per Tab (Reiter)

Im Folgenden werden die 3 Möglichkeiten dargestellt, wie Sie die verteilte AES-Analyse angehen können. Das Plugin hat dafür oben 3 Tabs.

1. Den ganzen Job selbst lokal ausführen (Tab 1)

  1. Entweder gleich den Button „Lokalen Angriff starten“ drücken, oder Einstellungen verändern.
  2. Optionen/Einstellungen:
    1. Modus wählen (ECB oder CBC)
    2. Anzahl an Geheimtext-Bytes, die pro untersuchtem Schlüssel entschlüsselt werden
    3. Anzahl der parallel laufenden lokalen Threads (Workers) einstellen
  3. Nach der Durchführung des lokalen Angriffs wird das beste Ergebnis in einem Overlay-Fenster eingeblendet. Die besten ca. 20 Ergebnisse können Sie sich im unteren Fensterteil nach Klick auf "Ergebnisliste anzeigen" ansehen.

2. Einen Job definieren (und ausführen) (Tab 2)

  1. Einen Jobnamen vergebenB (mindestens 4 Stellen lang)
  2. Mit Gruppe verknüpfenB
    1. Es kommt sofort eine Verbindungsnachricht.
    2. Der Button „Erstelle Job“ wird aktiviert.
  3. Auf „Erstelle Job“ klicken
    1. Es kommt eine Server-Nachricht über den neu erstellten Job.
    2. Die Server-Nachricht geht an alle verbundenen Clients.
    3. Der Button "Angriff mit verbundenen Clients starten" wird aktiviert.
  4. Auf "Angriff mit verbundenen Clients starten" klicken
    1. Die Berechnung wird gestartet
      • Falls keine weiteren Clients verbunden sind, muss der Auftragersteller den Job alleine durchführen.
      • Unter "Lokaler Job" wird die Anzahl der analysierten Schlüssel hochgezählt.
    2. Sie können auch noch warten, bis sich weitere Clients verbinden (siehe Anzeige „Anzahl der verbundenen Clients“) (der Ersteller des Jobs zählt schon als 1 verbundener Client)
  5. Die Ergebnisse werden mit und zwischen den Clients ausgetauscht.A
  6. Nach der Durchführung des gesamten Angriffs wird das beste Ergebnis in einem Overlay-Fenster eingeblendet. Die besten ca. 20 Ergebnisse können Sie sich im unteren Fensterteil nach Klick auf "Ergebnisliste anzeigen" ansehen.

3. Eigene Ressourcen für (fremde) Jobs bereitstellen / Helfen (Tab 3)

  1. Entweder gezielt einen Job anhand seines Namens auswählen oder generell alle Jobs in einer Gruppe.
    Auf dem Server sind die 9 Gruppen /crypt1 bis /crypt9 definiert. Wählt man hier eine Gruppe aus, bedeutet das, dass man alle Jobs unterstützt, die zu einer bestimmten Gruppe gehören und noch nicht ausgeführt sind.
  2. Optional kann die Anzahl der zur Verfügung gestellten, parallel laufenden lokalen Threads (Workers) geändert werden.
  3. Als Helfer-Client kann man nun nur warten, bis der Job-Ersteller das Startsignal gibt.
  4. Ergebnisse werden mit dem Job-Ersteller ausgetauscht.A
  5. Wenn Sie das Browser-Fenster oder Browser-Tab schließen oder neu laden, werden Sie automatisch abgemeldet.

Einstellungen

  • „Modus“: Electronic-Code-Book (ECB)2 oder Cipher-Block-Chaining (CBC)3
  • „Bytes zur Entschlüsselung pro Schlüssel“: Pro Schlüssel werden vom gegebenen Chiffrat (vom Anfang her) die gewählte Anzahl Bytes entschlüsselt. Bei 64 Bytes sind das 128 Hex-Stellen.
  • „Anzahl der Worker (lokale Threads)“: Es werden x leichtgewichtige parallel laufende Prozesse (Worker) für die Analyse erzeugt. Auf diese Worker wird die Analyse lokal aufgeteilt.N
    Das "x" errechnet sich auf folgende Weise:
    • Für selbst erzeugte Jobs werden standardmäßig bei n vorhandenen Cores 2*n - 1 Workers gestartet, also alle, die möglich sind, bis auf einen.
    • Für fremde Jobs, an deren Lösung Sie sich beteiligen wollen, werden standardmäßig die Hälfte der möglichen Workers gestartet (bei n Cores also n Workers).


Anzeige der Ergebnisse

Bei allen drei Varianten wird nach der Analyse das bestplatzierte Resultat in einem Overlay-Fenster angezeigt.

Zusätzlich wid im unteren Teil des Fensters nach Abschluss der Analyse der Button „Ergebnisliste anzeigen“ aktiviert, mit dem die maximal 20 besten Ergebnisse in einer Liste angezeigt werden können. Außerdem können die Ergebnisse durch Wörter oder bspw. mit einem Leerzeichen gefiltert werden. Mehrere Wörter sind typischerweise mit einem Leerzeichen zu trennen. Wenn Sie danach auf den Button "Ergebnisliste verbergen" klicken, wird die Ergebnisliste wieder eingeklappt.



Informationen zum voreingestellten Beispiel

  1. Der entschlüsselte Beispieltext lautet:
    "CrypTool-Online is the online version of the free e-learning program CrypTool. While CrypTool-Online is primarily intended for studying the fundamentals of classic ciphers, the download version of CrypTool is also suitable for working with longer texts and conducting high performance analyses on encrypted messages.øé"
  2. Davon wird in der Ergebnisliste bei 96 zu entschlüsselnden Bytes folgender Teil angezeigt:
    "CrypTool-Online is the online version of the free e-learning program CrypTool. While CrypTool-On"
  3. Im richtigen Schlüssel wären die ersten beiden "*" durch "BB", die nächsten beiden durch "AA" zu ersetzen.
  4. Such-/Filterbegriffe für die Eingabemaske wären zum Beispiel: „is of program hile“.
  5. Zu jedem Eintrag in der Ergebnisliste wird eine Bewertungszahl ausgegeben. In unserem Beispiel hat das beste Ergebnis den Wert 188.619; das 17. Ergebnis hat den Wert 24.265. Die Berechnung ist an die Entropie4 angelehnt: Statt der relativen Buchstabenhäufigkeit wird die absolute Buchstabenhäufigkeit betrachtet, was einen höheren Wert verursacht und größere Differenzen zwischen den Ergebnissen erzeugen kann.


Bitte beachten

  • Als Chiffrat (Geheimtext) werden nur Hexadezimalzeichen verarbeitet.
    Andere Formate werden keinen sinnvollen Klartext ausgeben.
  • Es wird kein Padding durchgeführt, so dass Sie immer vollständige AES-Datenblöcke eingeben müssen.
  • Es muss ein korrektes und vollständiges Chiffrat (beliebig viele, aber jeweils komplette Blöcke) eingegeben werden.
    Sie können sich ein Chiffrat auch selbst erzeugen: bspw. mit dem Plugin Highlights > AES (Schritt-für-Schritt).

  • Sie können sich die Anwendung des AES-Algorithmus visuell anschauen: Highlights > AES-Animation.

  • A Automatische Aktualisierung: Durch unterschiedliche Geräte und unterschiedliche Anzahl der Worker kann der Austausch verzögert stattfinden.
  • B Benötigte Angaben sind in der Maske mit einem * (Stern) markiert.
  • N Kann während einer Analyse nicht geändert werden.
  • Dieses Plugin wurde im Zuge einer Bachelorarbeit im Fachgebiet Informatik der Universität Siegen entwickelt.5

Quellen

1 AES, https://de.wikipedia.org/wiki/Advanced_Encryption_Standard
2 Electronic Code Book Mode, https://de.wikipedia.org/wiki/Electronic_Code_Book_Mode
3 Cipher Block Chaining Mode, https://de.wikipedia.org/wiki/Cipher_Block_Chaining_Mode
4 Entropie (Informationstheorie), https://de.wikipedia.org/wiki/Entropie_(Informationstheorie)
5 Bachelorarbeit David Kuche: "Kryptologie im Browser – Anwendungen am Beispiel CrypTool-Online", April 2017, Universität Siegen