UNIXwork

Datei ver- und entschlüsseln mit openssl - kompatibel mit dav

05. Dezember 2017

Dateien auf der Kommandozeile kann man recht einfach mit openssl verschlüsseln.

openssl aes-256-cbc -in file.txt -out file.enc

Entschlüsseln geht mit:

openssl aes-256-cbc -d -in file.enc -out file.txt

Der Key wird dabei aus einem Passwort generiert, welches von openssl abgefragt wird.

Möchte man von dav verschlüsselte Dateien von Hand mit openssl entschlüsseln, wird es ein wenig komplizierter. Die Keys die von dav verwendet werden, werden binär in Dateien gespeichert. Ein AES256-Key ist dann einfach eine 32 bytes große Datei.

Datei entschlüsseln

Zuerst muss der Key in eine für das openssl-Tool kompatible Form gebracht werden, nämlich ein Hex-String ohne Space.

hexdump -ve '/1 "%02X"' < ~/.dav/keys/mykey > mykey.hex

Dann muss aus der verschlüsselte Datei (hier im Beispiel encfile) noch der Initialisierungsvektor extrahiert werden. Dieser wird von dav nämlich immer an den Anfang der Datei gepackt. Die restlichen Bytes sind dann die eigentlichen verschlüsselten Daten.

dd if=encfile of=iv.bin bs=16 count=1
dd if=encfile of=encdata bs=16 skip=1
hexdump -ve '/1 "%02X"' < iv.bin > iv.hex 

Jetzt haben wir den Key und den IV in passender Form und können die Datei mit openssl entschlüsseln:

openssl aes-256-cbc -d -K `cat mykey.hex` -iv `cat iv.hex` -in encdata -out file

Datei verschlüsseln

Um eine Datei zu verschlüsseln brauchen wir zunächst einen zufälligen Initialisierungsvektor.

dd if=/dev/random of=iv.bin bs=16 count=1
hexdump -ve '/1 "%02X"' < iv.bin > iv.hex

Dann können wir die Datei mit openssl verschlüsseln und anschließend mit cat den IV und die verschlüsselte Datei zusammenfügen:

openssl aes-256-cbc -K `cat mykey.hex` -iv `cat iv.hex` -in file.txt -out encdata
cat iv.bin encdata > file.enc
Autor: Olaf | 0 Kommentare | Tags: openssl, crypto, dav, shell