Ich frage mich ja schon seit einiger Zeit, was sich das BSI mit „Chiasmus“ da so als Verschlüsselungsalgorithmus ausgedacht hat.
Das BSI selbst schreibt über Chiasmus: „Kern des Programms ist der BSI-eigene symmetrische Blockchiffrieralgorithmus Chiasmus. […] Chiasmus verschlüsselt 64-Bit-Blöcke in Abhängigkeit eines 160-Bit-Schlüssels in 64-Bit-Blöcke. Chiasmus für Windows verwendet Chiasmus im CBC-Modus (Cipher block chaining). Die effektive Schlüssellänge beträgt 128 Bit, die restlichen 32 Bit bilden eine Checksumme.“
Leider ist der Algorithmus anscheinend geheim und da bei mir recht offensichtlich zur Zeit kein öffentliches Interesse an der Nutzung besteht, habe ich keinen direkten Zugriff auf die Chiasmus-Software. Aber es gibt ja das BSI GSTOOL, das es ebenfalls erlaubt mit Chiasmus Daten zu ver- und entschlüsseln und vielleicht gibt das ja schon mal ein paar Hinweise auf die Art und Weise der Verschlüsselung oder zumindest der Implementierung.
Das GSTOOL erlaubt es, eine Datenbankdatei mit einem vorhandenen Schlüsselfile zu verschlüsseln, die Erzeugung von Schlüsseldateien selbst ebenfalls möglich. Zudem verrät die Software, dass Chiasmus-Schlüsseldateien auf „ckf“ enden, vermutlich für „Chiasmus Key File“. Ich habe deshalb einfach mal eine Datei chiasmus.ckf mit dem Inhalt „aaaaaaaaaaaaaaaaaaaa“ erzeugt, denn 20 Zeichen je 8 Bit ergeben genau 160 Bit.
Als nächstes habe ich eine definierte Datei zur Verschlüsselung erzeugt. Eine echte MDB-Datei zu verschlüsseln ist einfach nicht aussagekräftig. Die Datei dazu ist einfach ein Textfile mit der Endung .mdb und dem Inhalt „aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa“, also 40 mal der Buchstabe „a“. Der folgende Screenshot zeigt, wie sich das im GSTOOL darstellt:
Interessanterweise ließ sich meine Datei verschlüsseln. Das Ergebnis ist eine Datei mit diesem Inhalt: „GSTOOL 3.0 – Chiasmus Encrypted File – OriginalFileSize:0000000000000040P2–VßÏQKP2–VßÏQKP2–VßÏQKP2–VßÏQKP2–VßÏQK
*€ðþ“
Die von mir verwendete GSTOOL-Version war 4.5, die aktuell von der Webseite des BSI zum Download angeboten wird. Das ist aber eigentlich egal. Interessant ist die im GSTOOL verwendete Chiasmus-Implementierung:
1. Die Schlüsseldatei mit 20 x a kann niemals eine Schlüsseldatei sein die aus einem 128 Bit Schlüssel und 32 Bit gültiger Prüfsumme besteht. Wenn Chiasmus tatsächlich eine solche Prüfsumme verwendet und nur der Schlüssel in der Datei steht, dann ignoriert die im GSTOOL verwendete Implementierung diese Prüfsumme einfach. Es gab bei der Verwendung des Schlüssels auch keine Warnung oder Fehlermeldung. Im Zweifelsfall wäre einfach mit einem korrupten Keyfile verschlüsselt worden. Das alleine finde ich schon mal nicht nett. Denkbar ist natürlich auch, dass eine Datei die keinen korrekten Schlüssel mit Prüfsumme enthält als Passwort-Datei interpretiert wird. Eine Verschlüsselung mit einem Keyfile, das nur ein „a“ enthält funktioniert nämlich auch und die vom GSTOOL erzeugten Schlüsselfiles sind mit 104 Byte deutlich länger als 160 Bit. Aber selbst dann hätte ich zumindest gerne eine Warnung.
2. Von Cipher Block Chaining kann auch nicht die Rede sein. Man sieht den Chiasmus-Header der nach der Ziffer 0000000000000040 endet denn die Originaldatei war 40 Zeichen lang. „P2–VßÏQK“ ist der erste verschlüsselte Datenblock, 8 Zeichen, also verwendet Chiasmus tatsächlich 64-Bit Datenblöcke bei der Verschlüsselung. Dieser Block wiederholt sich identisch fünf mal. Danach kommt ein Newline und vermutlich eine Prüfsumme über die Datei (die bei der Entschlüsselung mit dem GSTOOL nicht überprüft wird). Bei Cipher Block Chaining sollte jedoch jeder Datenblock mittels XOR mit dem verschlüsselten vorherigen Datenblock verknüpft werden, damit eben gerade zwei identische Datenblöcke nicht den gleichen Cryptotext ergeben. Implementiert ist offensichtlich statt dessen der Electronic Code Book Mode.
Das wirft ein paar Probleme auf. Zum einen besteht bei einer fehlerhaften Implementierung von Chiasmus im GSTOOL die Gefahr, dass Mitarbeiter von Behörden die mit dem GSTOOL arbeiten, sich auf die Sicherheit der Datenverschlüsselung verlassen. Die ist jedoch mangels Cipher Block Chaining deutlich schwächer als erwartet. Zum anderen besteht die Gefahr, dass sich mit dem GSTOOL verschlüsselte Daten nicht mehr mit anderen Chiasmus-Implementierungen entschlüsseln lassen, die den Algorithmus korrekt implementieren.
Ich habe ja inzwischen den ernsthaften Verdacht, dass die im GSTOOL enthaltene Chiasmus-Implementierung mit der ebenfalls vom BSI angebotenen Software „Chiasmus für Windows 1.7“ überhaupt nichts zu tun hat. Beispielsweise enthalten verschlüsselte Chiasmus für Windows Dateien den Anfang „XIA1“. Aber gerade darum ist der Etikettenschwindel auch im Hinblick auf legitime Gründe zur Geheimhaltung von Daten in Behörden nicht gerade klug. Anwender die ihre Grundschutzdaten sicher mit Chiasmus verschlüsselt glauben, werden über die tatsächliche Sicherheit getäuscht.
Snake Oil?