{"id":727,"date":"2008-09-24T16:15:42","date_gmt":"2008-09-24T15:15:42","guid":{"rendered":"http:\/\/www.mitternachtshacking.de\/blog\/727-snake-oil-alarm-chiasmus-im-gstool"},"modified":"2025-04-06T16:56:19","modified_gmt":"2025-04-06T14:56:19","slug":"snake-oil-alarm-chiasmus-im-gstool","status":"publish","type":"post","link":"https:\/\/www.mitternachtshacking.de\/blog\/727-snake-oil-alarm-chiasmus-im-gstool","title":{"rendered":"Snake Oil Alarm? Chiasmus im GSTOOL"},"content":{"rendered":"<p>Ich frage mich ja schon seit einiger Zeit, was sich das BSI mit &#8222;<a href=\"http:\/\/www.bsi.de\/produkte\/chiasmus\/index.htm\">Chiasmus<\/a>&#8220; da so als Verschl\u00fcsselungsalgorithmus ausgedacht hat.<\/p>\n<p>Das BSI selbst schreibt \u00fcber Chiasmus: &#8222;Kern des Programms ist der BSI-eigene symmetrische Blockchiffrieralgorithmus Chiasmus. [&#8230;] Chiasmus verschl\u00fcsselt 64-Bit-Bl\u00f6cke in Abh\u00e4ngigkeit eines 160-Bit-Schl\u00fcssels in 64-Bit-Bl\u00f6cke. Chiasmus f\u00fcr Windows verwendet Chiasmus im <a href=\"http:\/\/de.wikipedia.org\/wiki\/Cipher_Block_Chaining_Mode\">CBC-Modus<\/a> (Cipher block chaining). Die effektive Schl\u00fcssell\u00e4nge betr\u00e4gt 128 Bit, die restlichen 32 Bit bilden eine Checksumme.&#8220;<\/p>\n<p>Leider ist der Algorithmus anscheinend geheim und da bei mir recht offensichtlich zur Zeit kein \u00f6ffentliches 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\u00fcsseln und vielleicht gibt das ja schon mal ein paar Hinweise auf die Art und Weise der Verschl\u00fcsselung oder zumindest der Implementierung.<\/p>\n<p>Das GSTOOL erlaubt es, eine Datenbankdatei mit einem vorhandenen Schl\u00fcsselfile zu verschl\u00fcsseln, die Erzeugung von Schl\u00fcsseldateien selbst ebenfalls m\u00f6glich. Zudem verr\u00e4t die Software, dass Chiasmus-Schl\u00fcsseldateien auf &#8222;ckf&#8220; enden, vermutlich f\u00fcr &#8222;Chiasmus Key File&#8220;. Ich habe deshalb einfach mal eine Datei chiasmus.ckf mit dem Inhalt &#8222;aaaaaaaaaaaaaaaaaaaa&#8220; erzeugt, denn 20 Zeichen je 8 Bit ergeben genau 160 Bit.<\/p>\n<p>Als n\u00e4chstes habe ich eine definierte Datei zur Verschl\u00fcsselung erzeugt. Eine echte MDB-Datei zu verschl\u00fcsseln ist einfach nicht aussagekr\u00e4ftig. Die Datei dazu ist einfach ein Textfile mit der Endung .mdb und dem Inhalt &#8222;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#8220;, also 40 mal der Buchstabe &#8222;a&#8220;. Der folgende Screenshot zeigt, wie sich das im GSTOOL darstellt:<\/p>\n<p><img src=\"\/blog\/wp-content\/uploads\/2008\/09\/gstool-chiasmus.gif\" alt=\"Chiasmus im GSTOOL\"><\/p>\n<p>Interessanterweise lie\u00df sich meine Datei verschl\u00fcsseln. Das Ergebnis ist eine Datei mit diesem Inhalt: &#8222;GSTOOL 3.0 &#8211; Chiasmus Encrypted File &#8211; OriginalFileSize:0000000000000040P2-V\u00df\u00cfQKP2-V\u00df\u00cfQKP2-V\u00df\u00cfQKP2-V\u00df\u00cfQKP2-V\u00df\u00cfQK<br \/>\n*\u00f0\u00cd\u00dd\u017e&#8220;<\/p>\n<p>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:<\/p>\n<p>1. Die Schl\u00fcsseldatei mit 20 x a kann niemals eine Schl\u00fcsseldatei sein die aus einem 128 Bit Schl\u00fcssel und 32 Bit g\u00fcltiger Pr\u00fcfsumme besteht. Wenn Chiasmus tats\u00e4chlich eine solche Pr\u00fcfsumme verwendet und nur der Schl\u00fcssel in der Datei steht, dann ignoriert die im GSTOOL verwendete Implementierung diese Pr\u00fcfsumme einfach. Es gab bei der Verwendung des Schl\u00fcssels auch keine Warnung oder Fehlermeldung. Im Zweifelsfall w\u00e4re einfach mit einem korrupten Keyfile verschl\u00fcsselt worden. Das alleine finde ich schon mal nicht nett. Denkbar ist nat\u00fcrlich auch, dass eine Datei die keinen korrekten Schl\u00fcssel mit Pr\u00fcfsumme enth\u00e4lt als Passwort-Datei interpretiert wird. Eine Verschl\u00fcsselung mit einem Keyfile, das nur ein &#8222;a&#8220; enth\u00e4lt funktioniert n\u00e4mlich auch und die vom GSTOOL erzeugten Schl\u00fcsselfiles sind mit 104 Byte deutlich l\u00e4nger als 160 Bit. Aber selbst dann h\u00e4tte ich zumindest gerne eine Warnung.<\/p>\n<p>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. &#8222;P2-V\u00df\u00cfQK&#8220; ist der erste verschl\u00fcsselte Datenblock, 8 Zeichen, also verwendet Chiasmus tats\u00e4chlich 64-Bit Datenbl\u00f6cke bei der Verschl\u00fcsselung. Dieser Block wiederholt sich identisch f\u00fcnf mal. Danach kommt ein Newline und vermutlich eine Pr\u00fcfsumme \u00fcber die Datei (die bei der Entschl\u00fcsselung mit dem GSTOOL nicht \u00fcberpr\u00fcft wird). Bei Cipher Block Chaining sollte jedoch jeder Datenblock mittels XOR mit dem verschl\u00fcsselten vorherigen Datenblock verkn\u00fcpft werden, damit eben gerade zwei identische Datenbl\u00f6cke nicht den gleichen Cryptotext ergeben. Implementiert ist offensichtlich statt dessen der <a href=\"http:\/\/de.wikipedia.org\/wiki\/Electronic_Code_Book_Mode\">Electronic Code Book Mode<\/a>.<\/p>\n<p>Das wirft ein paar Probleme auf. Zum einen besteht bei einer fehlerhaften Implementierung von Chiasmus im GSTOOL die Gefahr, dass Mitarbeiter von Beh\u00f6rden die mit dem GSTOOL arbeiten, sich auf die Sicherheit der Datenverschl\u00fcsselung verlassen. Die ist jedoch mangels Cipher Block Chaining deutlich schw\u00e4cher als erwartet. Zum anderen besteht die Gefahr, dass sich mit dem GSTOOL verschl\u00fcsselte Daten nicht mehr mit anderen Chiasmus-Implementierungen entschl\u00fcsseln lassen, die den Algorithmus korrekt implementieren.<\/p>\n<p>Ich habe ja inzwischen den ernsthaften Verdacht, dass die im GSTOOL enthaltene Chiasmus-Implementierung mit der ebenfalls vom BSI angebotenen Software &#8222;<a href=\"http:\/\/www.bsi.de\/produkte\/chiasmus\/index.htm\">Chiasmus f\u00fcr Windows 1.7<\/a>&#8220; \u00fcberhaupt nichts zu tun hat. Beispielsweise enthalten verschl\u00fcsselte Chiasmus f\u00fcr Windows Dateien den Anfang &#8222;XIA1&#8220;. Aber gerade darum ist der Etikettenschwindel auch im Hinblick auf legitime Gr\u00fcnde zur Geheimhaltung von Daten in Beh\u00f6rden nicht gerade klug. Anwender die ihre Grundschutzdaten sicher mit Chiasmus verschl\u00fcsselt glauben, werden \u00fcber die tats\u00e4chliche Sicherheit get\u00e4uscht.<\/p>\n<p>Snake Oil?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich frage mich ja schon seit einiger Zeit, was sich das BSI mit &#8222;Chiasmus&#8220; da so als Verschl\u00fcsselungsalgorithmus ausgedacht hat. Das BSI selbst schreibt \u00fcber Chiasmus: &#8222;Kern des Programms ist der BSI-eigene symmetrische Blockchiffrieralgorithmus Chiasmus. [&#8230;] Chiasmus verschl\u00fcsselt 64-Bit-Bl\u00f6cke in Abh\u00e4ngigkeit eines 160-Bit-Schl\u00fcssels in 64-Bit-Bl\u00f6cke. Chiasmus f\u00fcr Windows verwendet Chiasmus im CBC-Modus (Cipher block chaining). [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[8,5],"tags":[],"_links":{"self":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts\/727"}],"collection":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/comments?post=727"}],"version-history":[{"count":0,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts\/727\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/media?parent=727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/categories?post=727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/tags?post=727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}