Übersicht
Verschlüsselte Containerdateien
Eingebaute Verschlüsselung
Eingebaute Komprimierung
Mehrere Passwort-Slots
wxWidgets
Kommandozeilen-Interface
Ein verschlüsselter Container hat die Dateiendung .ect. Er kann mehrere Text- oder Binär-Subdateien enthalten. Die Containerdateien sind mit einem starker Verschlüsselungsalgorithmus geschützt und für andere Programm außer CryptoTE nicht lesbar.
Mehreren Subdateien können zur besseren Verwaltung Ihrer Daten verwendet werden. Etwa mit ,,WebSeitenPasswörter.txt" und ,,EMailKonten.txt".
Das Containerformat unterstützt eingebaute Verschlüsselung and transparente Komprimierung. Weiterhin werden mehrere Master-Kennwörter für verschiedene Benutzer unterstützt.
CryptoTE integriert starke Verschlüsselung mit einem einfachen Texteditor. Es enthält eine angepasste Version der Botan Algorithmenbibliothek.
Beim Design von CryptoTE habe ich mich entschieden den Benutzer (das sind Sie) nicht mit einer langen Auswahl an Verschlüsselungsalgorithmen zu belasten. Stattdessen habe ich für Sie einen ausgewählt, den zur Zeit sichersten und stärksten frei verfügbaren: Serpent (Schlange auf englisch).
Warum Serpent? Serpent war einer der AES Finalisten und unterstützt 256 Bits Blockverschlüsselung, soweit die minimalen Anforderungen. Der Gewinner des AES Wettbewerbs war Rijndael, wahrscheinlich weil er um ein paar Prozent schneller ist. Serpent ist ein wenig langsamer, aber vermutlich sicherer. Für den Einsatz in CryptoTE ist die geringere Geschwindigkeit nicht ausschlaggebend: Es werden nur relativ kleine Text oder Binärdateien verschlüsselt. Statt Rijndael wurde Serpent ausgewählt, da falls jemals eine Methode gefunden wird AES/Rijndael zu knacken, dann wird (hoffentlich) Serpent noch eine kurze Zeit sicher sein. Beide basieren zwar auf denselben kryptographischen Mechanismen, aber es wird definitiv mehr Kryptoanalyse (d.h. Versuche zu knacken) bei Rijndael/AES betrieben.
Sichere Verschlüsselung ist jedoch nicht mit Auswahl eines Verschlüsselungsalgorithmus getan. Dies ist erst der Anfang: Das Schlüsselmaterial muss sicher gespeichert werden, die enthalten Schüsselhashwerte dürfen nicht reversibel sein.
Ein kleiner Fehler im Design des Containerformats kann die gesamte Verschlüsselungskette unsicherer oder sogar knackbar machen. Beachten Sie, dass es recht einfach ist einen solchen Programmierfehler zu machen, und mit Sicherheit enthalten viele andere ,,Passwortschutz"-Programme solche Fehler.
Es ist auch sehr einfach einen Container zu entwerfen, der eine Hintertüre (,,backdoor") enthält, und so ohne das Passwort entschlüsselt werden kann. CryptoTE enthält keine solche Hintertüre, es gibt keine gangbare Methode die Daten ohne Passwort auszulesen. Mit Sicherheit enthalten viele andere ,,Passwortschutz"-Programme solche Hintertüren (auf Grund von Gesetzen oder anderem).
Jede Subdatei des Containers ist einzeln mit Serpent/CBC und verschiedenen zufällig generierten Schüsseln und IV (Initialvektor) geschützt. Die Schlüssel und IV sind in einer globalen Dateitabelle gespeichert, die wiederum durch einen Masterschlüssel mit Serpent/CBC verschlüsselt ist. Dieser Masterschlüssel ist nicht als solcher ungeschützt in der Containerdatei gespeichert.
Stattdessen unterstützt der Container mehrere Entschlüsselungspasswörter: Mehrere Passwort-Slots. Jeder Slot enthält eine verschlüsselte Kopie des Masterschlüssels mit dem die Dateitabelle gelesen werden kann. Die zum Entschlüsseln der Kopien notwendigen Schlüssel und CBC-IV können nur mit dem vom Benutzer eingegeben Passwort bestimmt werden. Aus dem Benutzer-Passwort werden mittels PBKDF2, mit HMAC(SHA256) als Hashfunktion, und zwei verschiedenen, zufälligen ,,Salts" der Schlüssel und CBC-IV bestimmt.
Mehr Information zum Containerformat ist dem CryptoTE Quellcode in libenctain/format.html beigefügt.
Vor dem Entwurf von CryptoTE habe ich einen ausführlichen Geschwindigkeitvergleich verschiedener Kryptographischen Cipher und Bibliotheken durchgeführt: siehe http://idlebox.net für mehr Informationen.
Als Bonus enthält CryptoTE auch eine automatische, transparente Komprimierung der Subdateien. Hierzu muss nichts aktiviert werden: standardmäßig werden alle Dateien mit zlib komprimiert.
Der Kompressionsalgorithmus kann in dem Eigenschaften-Dialogfeld der Subdateien eingestellt werden.
CryptoTE enthält auch bzip2 als alternative Kompressionsmethode. Diese ist generell jedoch nur für wirklich große Textdateien besser, für kleine Texte ist zlib die richtige Wahl.
Ein Container kann so konfiguriert werden, dass er mit mehreren verschiedenen Passwörtern entschlüsselt werden kann. So können mehrere Benutzer auf einen Container zugreifen ohne gegenseitig ihre Passwörter auszutauschen. Diese ,,Slots" sind in CryptoTE über den Menüeintrag ,,Password-Liste" einstellbar.
Warum wxWidgets als Widgets-Bibliothek? Dafür gibt es viele Gründe:
Für Unix-User und andere fortgeschrittene Anwender enthält CryptoTE auch ein Kommandozeileninterface. Dies ist sehr nützlich, wenn keine graphische Oberfläche starten werden kann, z. B. falls man mit ssh eingeloggt ist oder X11 gerade nicht zur Verfügung hat.
Der einfachste Weg CryptoTE ohne graphische Oberfläche zu starten ist: cryptote -s file.ect.
Dies fragt zunächst das Containerpasswort ab und startet bei gelungener Entschlüsselung eine einfache Eingabeoberfläche. Mit ,,help" erhalten Sie dann eine Liste verfügbarer Befehle und weiterführende Informationen.
Beachten Sie, dass bei dem ,,edit" Kommando der Inhalt der Subdatei in eine externe temporäre Datei geschrieben wird. Diese Datei kann dann mit jedem Konsolen-Texteditor bearbeitet werden. Falls Sie einen eingebauten, sicheren Konsolen-Texteditor für CryptoTE beitragen wollen, kontaktieren Sie mich.