Verschlüsselung
Ein besonderes in unserer Firma in der Programmiersprache C entwickeltes Software-Produkt ist das Verschlüsselungsprogramm KRYPTO-ABSOLUT.
Diese kryptographische Software kann jede Datei-Art (Text, Bild, Zahlen etc.) beliebiger Länge und auch jedes Programm wie Betriebssysteme, Compiler oder sonstige Programme sowie den gesamten Bestand einer Datenbank ver- und entschlüsseln.
Der in unserer Firma kreierte Verschlüsselungsalgorithmus ist stärker als der der gängigen und häufig benutzten Programme wie z.B. der öffentliche in den USA zugelassene Chiffrierstandard AES (Advanced Encryption Standard). Diesen Sachverhalt bestätigen zwei von staatlich autorisierter Stelle über KRYPTO-ABSOLUT ausgestellte Gutachten. Der Vorsitzende der zuständigen Prüfungsstelle fungierte als Beauftragter einer Landesregierung der Bundesrepublik Deutschland. In beiden Gutachten wird die absolute Sicherheit unserer Software aus theoretisch-mathematischen Gründen bestätigt. Und was die Praxis betrifft, würde selbst die "absolute Sicherheit" allerdings unter der Bedingung relativ, dass Unbefugten für ihr "exhausted"-Ausprobieren wahlloser Codewörter unendlich viel Zeit zur Verfügung stünde.
Die zweite Version unseres Verschlüsselungsprogramms haben wir daher KRYPTO-ABSOLUT PLUS genannt, trotz des in dieser Bezeichnung enthaltenen Widerspruchs. Denn erstens ist die Bedienung unserer Software in dieser Version komfortabler geworden, und zweitens ist auch der Schlüsselraum nochmals größer geworden. Damit ist die absolute Sicherheit in der Praxis um weitere Milliarden Jahre in die Zukunft verschoben worden, wie im Folgenden näher erläutert wird.
Die erste Version von KRYPTO-ABSOLUT ver- und entschlüsselte eine Datei mittels Passwort. Bereits das erste Gutachten über diese neu entwickelte Software bescheinigte einen Schlüsselraum (Anzahl der Schlüssel, die zum Knacken der chiffrierten Datei notwendig wären) von 10200. Hierbei müsste die Schlüssellänge zwischen 25 und 128 Byte liegen.
Nach sieben weiteren Entwicklungsjahren konnte KRYPTO-ABSOLUT nicht nur eine Datei, sondern auch eine Gruppe von Dateien aus verschiedenen Verzeichnissen automatisch und in einem Zug ver- bzw. entschlüsseln. Unsere Software war inzwischen auch in der Lage, anstatt eines Passwortes eine Datei als Codewort zu verwenden. So kann einerseits das Codewort komfortabler gestaltet werden, und andererseits ist die Verschlüsselungssicherheit nochmals um ein Mehrfaches gestiegen. Denn die Software entnimmt der Codedatei 512 Zeichen und vermischt diese intern mit einigen weiteren Bytes, so dass sich das Passwort jedes Mal unter Umständen automatisch ändert, selbst wenn man immer wieder dieselbe Datei als Codedatei verwendet.
Diese neue Version 3.10 unserer Verschlüsselungssoftware wurde unter dem Namen KRYPTO-ABSOLUT PLUS nochmals zur Begutachtung vorgelegt. Der Gutachter bezifferte nun den Schlüsselraum dieser neuen Version mit "weit größer als 101000". Zum Vergleich ist zu beachten, dass der Schlüsselraum bei AES 2256 beträgt!
AES ist der zurzeit wichtigste in den USA zugelassene Verschlüsselungsalgorithmus, wodurch Regierungsdokumente der höchsten Geheimhaltungsstufe chiffriert werden. Dieser gehört, wie KRYPTO-ABSOLUT auch, zur Kategorie "symmetrische" Verschlüsselungssoftware, d. h. das Programm chiffriert und dechiffriert mit demselben Codewort. Bei AES beträgt die Schlüssellänge höchstens 256 Bit, damit ein Schlüsselraum von 2256 entstehen kann. Bei KRYPTO-ABSOLUT hingegen beträgt die Schlüssellänge mindestens 4096 Bit! Denn, wie bereits weiter oben erwähnt, nimmt KRYPTO-ABSOLUT 512 Byte aus der Codedatei als Passwort und fügt intern noch einige Bytes hinzu. Somit entspricht der höchst-erreichte Schlüsselraum von 2256 durch AES der folgenden Anzahl von Schlüsseln:
115.792.089.237.316.195.423.570 . 985.008.687.907.853.269.984.665.640 . 564.039.457.584.007.913.129.639.936
Diese Zahl bedeutet, dass, wenn AES mit der höchsten Schlüssellänge von 256 Bit eine Datei verschlüsselt, man durch einen "Brute-Force-Angriff" dieser Zahl entsprechend oft verschiedene Schlüssel ausprobieren muss, bis man auf das richtige Codewort stößt.
Wie hoch ist nun dieser Schlüsselraum bei KRYPTO-ABSOLUT, wenn man auch hier ein Codewort mit einer Schlüssellänge von 256 Bit, wie bei AES, nimmt? Das erste Gutachten bestätigt, dass in dem Fall die Anzahl der Schlüssel unserer Software bei 10200 liegen wird. Dieser Vergleich zeigt, dass bei gleicher Schlüssellänge von 256 Bit die kodierte Datei mit AES erst geknackt werden kann, wenn man so oft wie oben angegeben (eine Zahl mit 78 Ziffern) verschiedene Codewörter ausprobieren muss. Bei KRYPTO-ABSOLUT jedoch besteht diese Zahl 10200 aus 1 mit 200 Nullen (also aus 201 Ziffern).
Somit wird klar, dass nicht nur die Schlüssellänge (in diesem Fall 256 Bit), sondern auch das theoretische Konzept eines Algorithmus zu mehr Sicherheit führt. Wir haben aber, wie bereits erwähnt, in der Version 3.10 auch die Schlüssellänge über eine Codedatei auf mindestens 4096 Bit erhöht, so dass laut Gutachten der Schlüsselraum inzwischen 101000 beträgt (also eine Zahl mit 1001 Ziffern).
Nun taucht die Frage auf, warum nicht auch andere Verschlüsselungsprogramme ihre Schlüssellänge erhöhen, um einen höheren Sicherheitsgrad zu erreichen. Hier wird der Programmierer mit dem Problem der Chiffriergeschwindigkeit konfrontiert. Denn oft erlebt man, dass mit jedem zusätzlichen Bit an Schlüssellänge die Kodierzeit fast verdoppelt wird. Ein simpler und schwacher Algorithmus kann hier wiederum keine effektive Hilfe leisten. Unsere Software hingegen zeigt bei einer Sicherheitsstufe von 101000 und einer Schlüssellänge von mindestens 4096 Bit eine enorm hohe Verschlüsselungsgeschwindigkeit. Denn mit KRYPTO-ABSOLUT PLUS können bei einem normal schnellen PC (Prozessor: Intel Pentium, Dual-Core, CPU: E5200, 2.50 GHz) innerhalb von einer Sekunde 20 MB Daten verschlüsselt werden. Das entspricht dem Textinhalt von 30 Büchern à 200 Seiten. Diese Effizienz der Funktion, nämlich a) durch eine außerordentlich hohe Geschwindigkeit der Chiffrierung, da die Verschlüsselung durch einmaliges Lesen der Quelldatei sowie 1:1-Kodierung sehr schnell läuft, und b) durch die gleichzeitige absolute Sicherheit bei einem Schlüsselraum von 101000, wegen überlangen Schlüssels (mindestens 4096 Bit), wird noch erstaunlicher, wenn man einen dritten Vorteil von KRYPTO-ABSOLUT berücksichtigt, nämlich c) der geringe Bedarf an Speicherkapazität beim Verschlüsselungsprozess – eine Tradition in unserem Haus, rationell zu programmieren, also komplexe Themen einfach und sauber zu lösen (wie bei Sortierung, Registerfunktion oder auch bei Speicherung des Datumsfeldes, s. Kap. Datenbank!).
Durch einen schwachen Algorithmus kommt es zu Mehrfach-Verschlüsselungen, wie z.B. bei Triple-DES. Dies führt erstens zu einer starken Belastung der CPUs von Servern, zweitens zu einer Reduzierung der effektiven Schlüssellänge und damit zur Verringerung der Sicherheit. Außerdem besteht hier eher die Möglichkeit eines Meet-in-Middle-Angriffs, wodurch der Anzahl der Schlüssel entsprechend oft Klartexte hergestellt und mit dem Zwischenergebnis der dreistufigen Ver- und Entschlüsselung verglichen werden, um den Code zu knacken.
Warum KRYPTO-ABSOLUT als zusätzliches Verschlüsselungsprogramm sinnvoll ist
Dass weltweit jede Software Fehler hat, gehört zum Wesen der Programmierung. Erstaunlich wäre es vielmehr im Gegenteil, wenn eine Software gänzlich fehlerfrei wäre. Aber gefährlich wird es gerade bei geheimen Dokumenten und verschlüsselter Korrespondenz, wenn ein Fehler wie im Code von OpenSSL zwei Jahre lang unbemerkt vor sich hin schlummert, obwohl hierdurch vermutlich viele Passwörter und Geheimdaten gelesen werden konnten. Eine Sicherheitslücke von solcher Dauer kommt einem Super-Gau gleich, weil die Grundfunktion der Verschlüsselung ausgehebelt und ad absurdum geführt wird.
Noch problematischer und dramatischer wird es, wenn man bedenkt, dass so ein Fehler nicht zum ersten Mal aufgetaucht ist. Denn bereits zuvor im Mai 2008 gab das Debian-Projekt bekannt, dass das Verschlüsselungsprotokoll OpenSSL seit September 2006 eine Sicherheitslücke enthielt. Also schon einmal gab es fast zwei Jahre lang ein Loch im Gewebe, ohne dass es jemandem aufgefallen war.
Fazit: Der Fehler selbst ist etwas Normales und nichts Weltbewegendes, aber die Dauer, wie lange so ein gravierender Fehler verhüllt und verborgen bleiben kann, ist bei sensiblen Daten sehr besorgniserregend.
Daher ist es generell für alle Behörden, Institutionen und großen Unternehmungen, die eigene Programmierer beschäftigen, empfehlenswert, eine zusätzliche, absolut nicht dechiffrierbare Krypto-Software zu benutzen, wenn es darum geht, Dokumente der höchsten Geheimhaltungsstufe auf eigenem Computer zu archivieren, auf den Server oder andere Clients zu übertragen oder online (z. B. auf Clouds) zu speichern. Denn neben der Tatsache, dass die offiziell zugelassenen Verschlüsselungsstandards selbst viele Sicherheitslücken aufweisen, sind auch die Zertifizierungsstellen nicht mehr so vertrauenswürdig. Diese sehen sich nämlich selbst permanent massiven Hacker-Attacken ausgesetzt. So hatten sich Angreifer bei der niederländischen Zertifizierungsstelle "DigiNotar", die in Holland für die staatliche Public-Key-Infrastructure benutzt wird, unbefugt Zertifikate für diverse Domains ausgestellt. Deswegen wird seit einigen Jahren die Sicherheit von SSL/TLS grundsätzlich angezweifelt, weil es neben bestehenden Sicherheitslücken bei einigen Zertifizierungsstellen auch an Vertrauenswürdigkeit mangelt.
In diesem digitalen Kampf gegen Datenangreifer ist es jedem Großanwender freigestellt, eine beliebige, sichere und unangreifbare Verschlüsselungssoftware zu benutzen und seine sensiblen Nachrichten vorkodiert, also extra verschlüsselt zu versenden. Dies ist in der gegenwärtigen Übertragungsarchitektur durchaus möglich. Denn jeder Client kann bei TLS sein eigenes Protokoll definieren. Die Records verschiedener Protokolle dürfen zwar nicht zusammengefasst werden, die TLS-Implementierungen können aber mehrere Nachrichten eines Protokolls in einem Record zusammenfassen. Einige dieser Nachrichten sollten die streng geheimen durch KRYPTO-ABSOLUT chiffrierten Dokumente sein. Durch den zwischen Client und Server ausgehandelten Schlüssel werden diese dann nochmals symmetrisch chiffriert, und als Ende-zu-Ende-Verschlüsselung gleich beim Empfänger dechiffriert. Nur der programmierte Angreifer, der als "The man in the middle" zwischen Ihnen und dem Server sitzt und Ihnen janusköpfig vorgaukelt: "Ich bin der Server" und dem Server erklärt: "Ich bin der Client", kann durch eine Sicherheitslücke (z. B. "heart bleed" bei SSL/TLS) unter Umständen zum Passwort des Übertragungssystems gelangen und Ihre Daten entschlüsseln. Danach wird er aber in diesem Fall erneut mit chiffrierten Daten konfrontiert, weil Sie Ihre Daten mit einer getrennten Software wie KRYPTO-ABSOLUT intern vorverschlüsselt haben, die er gar nicht kennt.
Nun taucht die alte Frage auf: Wie soll der "echte" Empfänger meine Codedatei erhalten, mit der ich symmetrisch – ohne public key - vorverschlüsselt habe?
Zunächst muss nochmals betont werden, dass wir KRYPTO-ABSOLUT als eine zusätzliche Verschlüsselungssoftware anbieten und nicht als Allgemeinlösung. Daher sollte der Anwender für seine durch KRYPTO-ABSOLUT vollzogenen Extra-Verschlüsselungen einige bereits vorhandene und bewährte Verfahren zur Übermittlung des Codewortes bzw. der Codedatei benutzen. Hierzu gehören v. a. die kryptologischen Hash-Funktionen, die zur Verschleierung von Codedateien eingesetzt werden. Hinzu kommt, dass man bei KRYPTO-ABSOLUT eine verschlüsselte Datei als Code-Datei benutzen kann. Dadurch werden die Daten auch vor "Wörterbuch-Angriffen" geschützt. Außerdem kann man auch den Namen der Codedatei mit einem einfachen Codewort verschlüsseln, das bei persönlichen Begegnungen, aber auch durch verklausulierte Nachrichten – als Hash-Code – dem Partner mitgeteilt werden kann.
Neben der Nutzung unserer kryptographischen Software als freie Lizenz ist es ebenfalls möglich, die Lizenz durch Großanwender auch als Objektcode zwecks Implementierung ins eigene Programm oder als Quellcode für eventuelle Modifizierungen und Anpassung auf das eigene Betriebssystem zu erwerben.
Vorteile von KRYPTO-ABSOLUT auf einen Blick
- Der größte Vorteil unserer ultimativen Chiffrier-Software ist ihre Unbekanntheit in der Fachwelt. Während an bekannten Algorithmen wie AES bereits Milliarden von Brute-Force-Attacken ausgeübt worden sind, müssen die Krypto-Analytiker bei KRYPTO-ABSOLUT den endlosen Weg des "Ausprobierens" erst beginnen.
- Unsere Software hat einen starken Algorithmus mit einem unwiderlegbaren theoretisch-mathematischen Konzept.
- Der Schlüssel ist überlang.
- Nicht nur durch die Schlüssellänge, sondern auch durch den Algorithmus ist der Schlüsselraum so groß, dass die Verschlüsselung in der Praxis absolut sicher ist.
- Effizienz der Funktion. - Mit anderen Worten: Die Geschwindigkeit leidet nicht unter der Überlänge des Schlüssels und der hohen Sicherheit (6000 Textseiten innerhalb von einer Sekunde auf einem normal schnellem PC). Dennoch kommt die Verschlüsselung mit einem geringen Speicherbedarf aus. Dieser Vorteil wird dann geschätzt, wenn auf Handys, smart-Phones, iPads, Tablets, Digital-Kameras oder Druckern mit schriftlichen Telekommunikationsmöglichkeiten oder auch auf Routern chiffriert werden soll, die durchweg als preisgünstige Massenware keine übermäßigen Speicherkapazitäten anbieten können.
- Totale Gleichverteilung von Buchstaben, Ziffern und Sonderzeichen, also sämtlicher ASCII-Zeichen in der verschlüsselten Zieldatei
- Absolute Zufälligkeit der entstandenen Zeichen in der kodierten Datei, selbst wenn die Quelldatei aus millionenfacher Wiederholung eines einzigen Buchstaben besteht
- Bestätigung der absoluten Chiffriersicherheit durch zwei staatlich anerkannte Gutachten
- Möglichkeit der Anwendung einer Codedatei statt eines Passwortes, und zwar einer Datei, die selbst auch verschlüsselt sein kann, um einem "Wörterbuch-Angriff" zuvorzukommen. Denn oft werden die Passwörter nicht wegen theoretischer Schwäche der Software geknackt, sondern menschlicher Nachlässigkeit wegen, weil das Codewort sich häufig an der sprachlichen Umgebung orientiert, wie Vorname des Kindes oder Geburtsdatum der Ehefrau, oder weil das Passwort auf dem Schreibtisch liegen bleibt, von wo es der/die Angestellte einer Büroreinigungsfirma abends entwendet, usw. Deshalb ist eine Code-Datei als Passwort sehr wichtig.
Es sei noch erwähnt, dass es äußerster intellektueller Präzisionsarbeit seitens des Programmierers bedarf, um eine tatsächlich sichere Krypto-Software in C zu schreiben, da diese Programmiersprache durch Befehle wie "malloc()" eine dynamische Speicherreservierung bzw. Speicherallokation ermöglicht. Daher sind die Programmierer geneigt, in ihren Anwendungsprogrammen eine simple Speicherverwaltung aufzubauen. Dies führt aber unter Umständen zu riesigen Sicherheitslücken wie "heart bleed" bei OpenSSL. Aufgrund der Vorteile dieser Programmiersprache sind die Programmierer jedoch gezwungen, ihre Software in C zu entwickeln. Denn C ist sehr verbreitet und die einzige hohe Sprache, mit der man nah an der Hardware und am Betriebssystem programmieren kann, als hätte man in Assembler oder in Maschinensprache programmiert. Daher sind auch die meisten Betriebssysteme sowie bedeutende Basisbibliotheken in C geschrieben und u. a. aus diesem Grund besser auf verschiedene Systeme übertragbar. Diese Vorteile haben auch uns motiviert, KRYPTO-ABSOLUT in C zu schreiben. Wenn aber trotz der oben geschilderten Schwächen dieser Sprache bezüglich der Sicherheitslücken zwei staatlich anerkannte Gutachten dennoch die absolute Sicherheit unserer kryptographischen Software bestätigen, so möchten wir betonen, dass bei diesem Programm von einer enorm hohen theoretischen Qualität auszugehen ist.
Gutachten I (Auszüge)
"Nach eingehender Erläuterung des Programms KRYPTO-ABSOLUT wurde festgestellt, dass bei der Textverschlüsselung durch dieses Programm sämtliche Struktureigenschaften des Quelltextes verloren gehen und eine Zufallsfolge von Zeichen entsteht, die keinerlei Anhaltspunkte über den ursprünglichen Text bietet. Daher ist es ausgeschlossen, aus diesem verschlüsselten Text ohne Kenntnis des Codewortes methodisch auf den Quelltext zu schließen, und zwar auch dann nicht, wenn der zugrunde gelegte Algorithmus dem "Codebrecher" bekannt wäre. Theoretisch bleibt also einem Unbefugten nur noch der Ausweg übrig, alle möglichen Codewörter durchzuprobieren.
Die Anzahl der möglichen Verschlüsselungen ist von derselben Größenordnung wie die der möglichen Codewörter. Die Anzahl der in KRYPTO-ABSOLUT möglichen Codewörter mit der Länge von 25 bis 128 Zeichen übersteigt jedoch weit die Zahl 10 hoch 200.
Durch diese enorme Zahl wird jede reale Möglichkeit ausgeschlossen, den Quelltext durch Ausprobieren von verschiedenen Variationen zu rekonstruieren."
Gutachten II (Auszüge)
"KRYPTO-ABSOLUT PLUS basiert auf der Generierung einer Zufallsfolge durch ein Codewort, die dann kombiniert mit dem Klartext den Chiffretext bildet. Es ist bereits mathematisch bewiesen, dass dieses Verfahren die vollkommene Geheimhaltung gewährleistet, falls a) die angewandte Zufallsfolge nur einmal benutzt wird und b) diese rein zufällig ist. Es dürfen also keine Wiederholungen in der Zufallsfolge vorkommen und sie darf keine Struktur besitzen, die durch irgendeine mathematische Funktion definiert ist.
Diese Forderungen sind im Programm KRYPTO-ABSOLUT PLUS vollständig erfüllt. Die Sicherheit der Verschlüsselung bleibt hier gänzlich unabhängig von der Textlänge, da die Zufallsfolge wesentlich durch den Klartext mitbestimmt wird und sich mit demselben Codewort bei jedem neuen Klartext auch eine völlig neue Zufallsfolge ergibt. Daher ist es aus streng mathematischen Gründen unmöglich, ohne Kenntnis des Codeworts die mit KRYPTO-ABSOLUT PLUS verschlüsselten Texte und Dateien zu entschlüsseln, und zwar auch dann nicht, wenn der Algorithmus offen gelegt wird.
Der Schlüsselraum von KRYPTO-ABSOLUT PLUS ist weit größer als 10 hoch 1000. Somit ist es völlig ausgeschlossen, durch praktische Versuche eine Dechiffrierung zu erreichen.
Daher ist KRYPTO-ABSOLUT PLUS sowohl in der Praxis als auch rein theoretisch als ein absolut sicheres Tool zu begutachten, um gespeicherte Daten und deren Transfer vor fremdem Zugriff zu schützen."