G01 ECB Pinguin

Das erste Beispiel in der Rubrik zeigt Euch bildhaft auf, dass eine Verschlüsselung nicht immer bewirkt, das die Daten für Unbefugte verborgen bleiben. Nehmen wir einmal an, Ihr hättet ein bislang unbekanntes Tier entdeckt und verschickt nun ein Foto an einen Kollegen. Natürlich verschlüsselt Ihr das Bild vor dem Versand und nutzt den AES ECB-Modus.

Nachstehend seht Ihr drei Bilder: Das linke (erste) Bild ist Euer Originalbild, das mittlere (zweite) Bild ist im ECB-Modus verschlüsselt und das rechte (dritte) Bild ist im CBC-Modus verschlüsselt. Upps… beim ECB-Bild kann ich zumindest die Umrisse des Tieres erkennen und erahnen, was für ein Tier Du entdeckt hast.

Originalbild

ECB-Bild

CBC-Bild

Das Originalbild ist der Linux Pinguin und er stammt von Larry  Ewing. Attribution: lewing@isc.tamu.edu Larry Ewing (mailto:lewing@isc.tamu.edu) and The GIMP.

Wenn Ihr Euch den Quellcode anschaut werdet Ihr erst ein wenig stutzen und vielleicht auch meckern „Der verschlüsselt ja gar nicht die komplette Bilddatei“. Da liegt Ihr völlig richtig, denn damit die BMP-Datei von Eurem Bildprogramm angezeigt werden kann benötigt sie einen „richtigen“ Header. Dieser Header würde bei der kompletten Dateiverschlüsselung natürlich „zerstört“ und damit wäre die einfache optische Betrachtung nicht mehr möglich.

Als Originalbild könnt Ihr jede Bitmap-Datei (Dateiendung .bmp) verwenden, den verwendeten Linux-Pinguin könnt Ihr bei mir herunterladen.

Ich greife daher zu dem Kunstgriff, nur die Bilddaten innerhalb der BMP-Datei zu verschlüsseln, um den gewünschten Effekt zu erzielen. Das Fazit aber bleibt: der ECB-Modus ist unsicher und sollte niemals verwendet werden.

Bitte die nachfolgende Routine nicht für den Echteinsatz nutzen, da sie aus kryptographischer Sicht sehr angreifbar ist !

Die Konsolenausgabe dient nur der Bestätigung der Verschlüsselung – schaut Euch besser die beiden erzeugten (verschlüsselten) Dateien an:

Wünscht Ihr noch ein Beispiel ? Ladet Euch meine geheime Botschaft in diesem Bild herunter und lasst Sie verschlüsseln – hier das traurige Ergebnis:

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: 15.11.2018