Im Gegensatz zur asymmetrischen Verschlüsselung, bei der Daten mit einem privaten und öffentlichen Schlüssel ver-, bzw. entschlüsselt werden, wird bei der symmetrischen Verschlüsselung dasselbe Passwort (Schlüssel) zum Ver- und Entschlüsseln verwendet.
GnuPG, oder kurz gpg, kann nicht nur für die asymmetrische Verschlüsselung verwendet werden, sondern auch zum symmetrischen Verschlüsseln von Daten. Um eine Datei mit gpg und AES256 zu verschlüsseln, kann folgendes Kommando verwendet werden:
gpg --symmetric --cipher-algo aes256 files.tar.gz
Dabei wird man zur Eingabe des Passworts aufgefordert. Die verschlüsselte Datei erhält die Endung “.gpg”.
Mit der Option --output <encrypted_data> kann zusätzlich eine Ausgabedatei angegeben werden.
Die Entschlüsselung erfolgt über
gpg --decrypt files.tar.gz.gpg > files.tar.gz
und der Eingabe des zuvor verwendeten Passworts zur Verschlüsselung.
Um die Größe der verschlüsselten Daten zu verkleinern, kann zusätzlich noch ein Kompressionsalgorithmus angegeben werden. Es gibt drei Optionen für die Art der Komprimierung: none, zip und zlib.
--compress-algo none oder --compress-algo 0--compress-algo zip oder --compress-algo 1--compress-algo zlib oder --compress-algo 2
Falls es sich um kaum oder nicht zu komprimierende Daten handelt wie beispielsweise Binärdaten (auch Bilder, Musik, …), ist die Option --compress-algo 0, also keine, empfehlenswert, da sie im Vergleich zu den beiden anderen Optionen etwa 50% schneller ist.
Sind die Daten stark komprimierbar wie beispielsweise reiner Text, dann ist die Verwendung einer Komprimierung empfehlenswert, da so kleinere Datenmengen verschlüsselt werden müssen, was wiederum zu Geschwindigkeitsvorteilen führt. Bei sehr stark komprimierbaren Daten kann die Verwendung von zip oder zlib einen Geschwindigkeitsvorteil von 20-50% geben und die Größe der Daten um bis zu einen Faktor 20 verkleinern.
Alternativ kann auch OpenSSL zum Verschlüsseln von Dateien verwendet werden, wobei GPG der OpenSSL-Variante vorzuziehen ist.
Zum Verschlüsseln mit openssl kann der folgende Befehl verwendet werden:
openssl enc -aes-256-cbc -in unencrypted_data -out encrypted_data
Die Entschlüsselung funktioniert mit
openssl enc -d -aes-256-cbc -in encrypted_data -out unencrypted_data