G Unsicherheit

Vielleicht habt Ihr ein wenig gestutzt als Ihr diesen Menüpunkt gesehen habt : „Unsicherheit“. Auf den Seiten dieses Kapitels werdet Ihr Beispiele für unsichere Kryptographie-Verfahren finden bzw. darauf hingewiesen werden, bestimmte Verfahren nicht als das „Non Plus Ultra“ zu betrachten.

Zuerst werde ich Euch den berühmten „ECB Pinguin“ zeigen – dieses Beispiel zeigt Euch die Grenzen der Verschlüsselung auf: obwohl das Bild mit dem AES-Algorithmus verschlüsselt wurde, kann der Betrachter dennoch erkennen, das es sich bei dem Bild um einen Pinguin handelt. Damit ist der Sinn der Verschlüsselung dahin, wenn doch erkennbar ist, was hier verschlüsselt werden sollte.

Ebenso solltet Ihr Euch nicht auf die Verschlüsselung verlassen – genauso wichtig ist auch die Sicherung der Unversehrtheit der Übertragung. Ich werde Euch zeigen, wie ein Hacker die Originalnachricht verändern kann und damit – trotz Verschlüsselung – einen Schaden anrichten kann (hier reden wir von einer XOR-Verfälschung). Der Artikel ist unter dem Namen G02 AES CBC-Tampering online.

In einem weiteren Beispiel werde ich Euch zeigen, das ein im Grunde sehr sicheres Verschlüsselungsverfahren (AES im Modus CBC mit einem 256 Bit langen Schlüssel) bei schlechter Implementierung (oder vielleicht auch gut gemeinter Auskunftsfreudigkeit des Rechners) auf einmal in wenigen Sekunden geknackt werden kann – ohne den genutzten Schlüssel zu kennen oder herauszufinden (das Verfahren wird auch als Padding Oracle bezeichnet). Der Basisartikel ist hier abrufbar: G03 Padding Oracle.

Eine sehr schnelle Implementierung eines „Padding Oracle“ mit einem begleitenden Blog-Artikel habe ich in G04 DES Padding Oracle vorgenommen – wer das Programm ausführt wird erschreckt sein von der schnellen Entschlüsselung eines geheimen Textes.

Das Padding Oracle ist aber nicht auf das DES-Verfahren beschränkt, sondern kann auch beim ansonsten sicheren AES-Verfahren für einen kompletten Bruch der Verschlüsselung sorgen – das zeige ich Euch im Beispiel G05 AES Padding Oracle.

Auch die beliebte Steganographie (also die Einbettung von geheimen Nachrichten z.B. in ein Bild) solltet Ihr nicht als optimales Verfahren betrachten, denn es ist teilweise sehr einfach möglich, zumindest die Tatsache der Einbettung von verborgenen Informationen zu erkennen. Dieses zeige ich Euch eindrucksvoll mit der G06 Steganographie Analyse.

Das auch Hashwerte nicht immer eindeutig sind zeige ich an 2 Beispielen für den MD5-Algorithmus – G07 MD5-Hash Kollisionen. Das ebenfalls beliebte SHA-1 Hashverfahren ist leider auch nicht mehr sicher und sollte gemieden werden – schaut Euch das Beispiel G08 SHA1-Hash Kollision an.

Bleibt also meiner Seite treu und schaut immer mal wieder hinein – es lohnt sich.

Alle Quellcodes zur Sicherheit oder Unsicherheit findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht:
https://github.com/java-crypto/G-Unsicherheit.

Letzte Aktualisierung: 09.12.2019