Dateien mit openssl verschlüsseln
Da Verschlüsselung eine immer größere Rolle beim “offenen” Datenversand über Internet spielt, möchte ich in diesem Beispiel eine kostenfreie Möglichkeit aufzeigen, Daten beliebiger Art mit einem guten Maß an Sicherheit zu verschlüsseln und am Zielort natürlich auch wieder zu entschlüsseln.
Nötig ist dazu die frei erhältliche Software openssl, welche sowohl für UNIX/LINUX, als auch als Binary für Windows-Plattformen erhältlich ist.
Der Aufruf zum Verschlüsseln der Daten lautet sodann wie folgt:
openssl des3 -in file.clear -out file.crypt -e -salt An die Stelle von “file.clear” wird die unverschlüsselte Datei, an die Stelle von “file.crypt” der Name der verschlüsselten Datei gesetzt. Das abschließende “-e” steht für “encrypt”.
Nach Aufruf der Kommando-Zeile wird die Eingabe eines Passwortes verlangt, welches abermals bestätigt werden muss.
Zum Entschlüsseln der Daten lautet der Aufruf:
openssl des3 -in file.crypt -out file.clear -d -salt
Hier muss dasselbe Passwort wie beim Verschlüsseln angegeben werden, um die Daten wieder im Klartext zu erhalten. Die hierbei angewandte Verschlüsselungsmethode ist Triple DES, eine verbesserte Variante der bekannten DES-Verschlüsselung.
Es können aber auch andere Verschlüsselungsmethoden angegeben werden, beispielsweise “bf” Blowfish oder “idea”.
Besonders erwähnenswert ist auch die problemlose Funktionalität über die Grenzen von Betriebssystemen hinweg, d. h. dass Dateien, welche z. B. auf Linux verschlüsselt wurden, auf Windows entschlüsselt werden können und umgekehrt.
Verschlüsseltes Dateisystem unter Linux
Speziell angewandt lässt sich mit openssl sogar eine Art verschlüsseltes Dateisystem erstellen. Folgende Arbeitsschritte sind dazu notwendig:Als erster Schritt muss die gewünschte endgültige Größe des Dateisystems festgelegt werden. Dieser Parameter wird dann bei der Erstellung der “Behälter-Datei” mittels “dd” angegeben:
dd if=/dev/zero of=fs.cl bs=1M count=64 Im gezeigten Falle beträgt die Blockgrösse einen Megabyte, mit dem Zähler wird folglich eine Datei von 64 Megabyte erzeugt.
Sobald die “Behälter-Datei” erzeugt ist, wird diese in ein “Dateisystem” umgewandelt:
mkfs -t ext3 fs.cl Die hierbei unter Umständen auftretende Warnung, dass die angegebene Datei kein “echtes, blockorientiertes Gerät” ist, kann mit “y” bedenkenlos übersprungen werden.
Nun folgt die Verschlüsselung der Datei fs.cl:
openssl bf -in fs.cl -out fs.cr -e Nachdem die “Behälter-Datei” nun verschlüsselt vorliegt, kann die Datei “fs.cl” gelöscht werden.
rm -rf fs.cl Für die in Zukunft immer notwendigen Vorgänge können zwei Dateien als Skripte angelegt werden; zuvor muss allerdings noch ein Verzeichnis, welches als “Mount-Point” verwendet wird erzeugt werden:
mkdir secret Die zwei Script-Dateien:
:::::::::::::: mose :::::::::::::: nice --18 openssl bf -in fs.cr -out fs.cl -d && mount ./fs.cl ./secret/ -o loop && rm ./fs.cr :::::::::::::: umose :::::::::::::: umount ./secret && nice —18 openssl bf -in fs.cl -out fs.cr -e && rm -f ./fs.cl
Mit den oben beschriebenen Script-Dateien kann nun die Datei in einem Schritt entschlüsselt, gemounted, sowie im Anschluss geunmounted und wieder verschlüsselt werden. Um die auszuführenden Aktionen noch etwas zu beschleunigen, wird openssl mit einer erhöhten Priorität gestartet.
Hinweis:
Einen möglichen Schwachpunkt in dieser Vorgehensweise stellt das gewöhnliche Löschen der Kontainer-Datei fs.cl dar. Diese enthält nämlich alle Daten im Klartext und kann unter Umständen - selbst wenn gelöscht wieder hergestellt werden.
Um dem Vorzubeugen kann die Datei fs.cl beispielsweise mit dem Tool shred gelöscht werden. Allerdings hat shred auf Log-strukturierten oder sog. journaled Dateisystemen nicht die gewünschte Wirkung.
^ Seitenanfang


