Dies ist der (bisher) aufwändigste Eintrag.
Nachdem ich einen Interessanten Artikel [1] gelesen hatte, wusste ich direkt das es ein gutes Thema für den cryptblog ist. Und zwar geht es um Probleme beim Verschlüsseln von Bildern.
Zuerst jedoch noch eine wichtige Grundlage: bei Kryptosystemen gibt es verschiedene Betriebsmodi, die bekannteste ist der ECB-Mode (Electronic Code Book). Es ist ja in der Regel so, das nicht nur lediglich 128 Bit verschlüsselt werden sollen, sondern Gigabyte an Daten. Dafür wird dieser große Haufen bei Blockchiffren entsprechend aufgeteilt in kleinere. Ein Beispiel:
„Hallo, wie geht es dir “ wird (sofern 1 Zeichen = 16 Bit) in:
„Hallo, w“, „ie geht „, „es dir “
aufgeteilt. Wie man sieht wurde hier der letzte String aufgefüllt damit er ein Vielfaches von 8 entspricht. Dies ist auch in der Praxis üblich. Wir besitzen also am Ende eine große Liste von 128-Bit blöcken welche nacheinander ins Kryptosystem eingespeist und damit verschlüsselt werden. Heraus kommt z.B:
„mdjwbcxg“, „ötüeoejd“, „ndkrdkdp“.
Das Problem bei diesem Modus ist, das gleicher Klartext auch in den gleichen Chiffretext verschlüsselt wird. D.h. wenn ich „12345678“ an 2 unterschiedlichen Stellen im Text verschlüssele, würde auch jeweils die gleiche Verschlüsselung entstehen.
aus: „Hallo, wie geht es dir Hallo, wie geht es dir “ wird also:
„mdjwbcxgötüeoejdndkrdkdpmdjwbcxgötüeoejdndkrdkdp„.
Und das ist ein Problem bei Bildern, denn dort finden sich an vielen Stellen gleiche/ähnliche Werte. An dieser Stelle ein Beispiel mit zwei 2×2 Pixel Bildern:
Sei also links unser Klartext (das normale Bild) und rechts der Chiffretext (die Verschlüsselung). Aus dem schwarz und dem dunkelgrau werden jeweils gelb und grün. Jedoch diese zwei silbergrauen Flächen werden identisch verschlüsselt (blau). Dies wäre natürlich nur der Fall wenn die Chiffre nur eine 32 Bit Blockgröße hätte (Rot, Grün, Blau, Alpha), jedoch bleibt das Problem bei 128 Bit ebenso: gleiche Flächen werden gleich verschlüsselt und dies ist vorallem bei kontrastreichen und großen Bildern durch wiederholende Muster zu sehen.
Da mir das jedoch noch nicht genügte, habe ich ein Programm gebaut, welches die Bilder mit Blowfish (24 lässt grüßen) im ECB Modus verschlüsselt.
Oben zu sehen das Originalbild, unten jeweils die Verschlüsselungen mit zwei unterschiedlichen Passwörtern. Hier ist das Problem deutlich zu erkennen: im vertikalen Bereich sind die Farbcodes jeweils identisch. Die kleinen Ungenauigkeiten stammen wahrscheinlich aus der JPG Komprimierung.
Zuletzt das ganze auch mal mit einem richtigen Bild. An dieser Stelle danke ich Tobias Gräber für die Bereitstellung:
Besonders gut zu erkennen ist das Geländer an der rechten Seite. Auch einige Konturen finden sich in der verschlüsselten Version wieder.
Abschließend lässt sich also sagen, das eine Verschlüsselung alleine nicht immer genügt. Die Verschlüsselung und dessen Modus muss auch zum Einsatzzweck passen.
Quellen:
[1] http://www.turbocrypt.com/eng/content/TurboCrypt/Backup-Attack.html