G05 AES Padding Oracle

Wenn Du auf der Seite G04 DES Padding Oracle gedacht haben solltest – „DES – das ist doch alter Kram, jetzt gibt es doch die sicheren AES-Verfahren“ dann ist diese Seite leider genau richtig für Dich. Ich werde Dir zeigen, das auch die modernere AES-Verschlüsselung im CBC-Modus die gleiche Schwachstelle hat wie das alte DES-Pendant. Hier werde ich jetzt nicht mehr auf die Grundlagen der Schwachstelle eingehen, mehr Informationen erhaltet Ihr auf der oben genannten Seite.

Dieses Beispiel soll realitätsnah zeigen, wie schnell ein (Internet-) Server ein verschlüsseltes Passwort preisgibt und der Hacker diese Information erhält, ohne die eigentliche Verschlüsselung zu knacken. Daher besteht mein Beispiel aus 2 Teilen – hier wird des Hacking-Tool beschrieben und auf der Seite G05 AES Padding Oracle Webserver der dazugehörige Webserver.

Das Erschreckende an diesem Beispiel ist: obwohl wir auf dem Rechner das HTTP-Protokoll nutzen und ein „externer“ Webserver eingeschaltet ist, wird das geheime Benutzerpasswort innerhalb weniger Sekunden ermittelt. Dieses Beispiel zeigt aber auch die Wichtigkeit, bei einem Login-Vorgang nach z.B. 2 Fehlversuchen eine stetig ansteigende Wartezeit für einen Neuversuch zu implementieren, um die Passwortsuche deutlich zu verlangsamen.

Für die Ausführung des Programms ist es notwendig, den Webserver vorab zu starten. Hier wird Deine (Windows-) Firewall anschlagen und um Zustimmung für die Kommunikation bitten – diese Zustimmung musst Du erteilen.

Hier ist der Quellcode des Programms:

Die Konsole zeigt in erschreckender Klarheit das entschlüsselte Passwort:

Alle Quellcodes zu den Unsicherheiten findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/G-Unsicherheit. Alle Programme sind sowohl unter Java 8 als auch unter Java 11 lauffähig.

Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.

Letzte Aktualisierung: 09.10.2019