Dies ist eine alte Version des Dokuments!
OpenSSL-Verschlüsselung mit Passwort
- siehe auch:
Leider musste ich Anfang des Jahres 2024 (mit FreeBSD 14.0) feststellen, dass OpenSSL 3 die hier genannten Beispiele mit BlowFish (bf/bf-cbc) nicht mehr ausführt (das ging nur mit OpenSSL 1.1.1). Um diese Kommandos weiterhin ausführen zu können, muß man stattdessen den schwächeren AES (aes-256-cbc) verwenden.
Alle Cipher, die von dem Kommando openssl list -cipher-commands ausgegeben werden, können für die hier genannten Beispiel verwendet werden.
Bei symetrischer Verschlüsselung (z.B. nur mit Passwort), sollte immer die Option -salt verwendet werden!
Mit OpenSSL eine Zeichenkette base64-kodieren:
> echo 'Hallo' | openssl enc -a -e SGFsbG8K > echo 'SGFsbG8K' | openssl enc -a -d Hallo
Leider kann OpenSSL kein Serpent und kein Twofish, deshalb müssen wir BlowFish verwenden.
Das sind alles Synonyme für BlowFish:
- blowfish
- bf
- bf-cbc
- BF-CBC
ein kurzes Beispiel für eine symetrische Datenverschlüsselung (mit dem Parameter -k kann man das Passwort an der CLI direkt mit übergeben, muß das aber nicht tun):
> echo 'Hallo' | openssl enc -salt -pbkdf2 -bf -a -e -k geheim U2FsdGVkX18ouNc6jFzkBRSQ9T28w9pW > echo 'U2FsdGVkX18ouNc6jFzkBRSQ9T28w9pW' | openssl enc -salt -pbkdf2 -bf -a -d -k geheim Hallo
nutzbare Verschlüsselungsalgorithmen anzeigen lassen:
Linux und FreeBSD 14.0:
> openssl enc -list > openssl list -cipher-commands > openssl list -cipher-algorithms
mit AES256 (OpenSSL 3.0.12) ver- und entschlüsseln:
> echo "Hallo Welt!" | openssl enc -salt -pbkdf2 -aes-256-cbc -a -e -k geheim U2FsdGVkX1+IQzl442cG6a0/3e4wpCH2BqZ+8WoXYbQ= > echo 'U2FsdGVkX1+IQzl442cG6a0/3e4wpCH2BqZ+8WoXYbQ=' | openssl enc -salt -pbkdf2 -aes-256-cbc -a -d -k geheim Hallo Welt!
ältere FreeBSD:
> openssl enc -ciphers > openssl list -cipher-commands > openssl list -cipher-algorithms
mit Blowfish (OpenSSL 1.1.1) ver- und entschlüsseln:
> echo "Hallo Welt!" | openssl enc -salt -pbkdf2 -bf-cbc -a -e -k geheim U2FsdGVkX1+aDaO1UN6wTrpmTHwQnMRlGhUPlbYPDC8= > echo 'U2FsdGVkX1+aDaO1UN6wTrpmTHwQnMRlGhUPlbYPDC8=' | openssl enc -salt -pbkdf2 -bf-cbc -a -d -k geheim Hallo Welt!
The -salt option should ALWAYS be used if the key is being derived from a password.
Das Passwort in einer Datei speichern, um automatisiert zu verschlüsseln:
> touch passwortdatei.txt > chmod 0600 passwortdatei.txt > echo "geheim" > passwortdatei.txt > echo 'Hallo' | openssl enc -salt -pbkdf2 -iter 4567890 -bf-cbc -a -e -pass file:passwortdatei.txt U2FsdGVkX1+8DaWoHh1YJFtX6qlnkBjL
das Geheimnis von der CLI verschlüsseln:
> echo "Hallo" | openssl enc -salt -pbkdf2 -iter 1234567 -bf-cbc -a -e enter bf-cbc encryption password: Verifying - enter bf-cbc encryption password: U2FsdGVkX1/RdDv9u2fRJtSGwATuvHEu > echo "U2FsdGVkX1/RdDv9u2fRJtSGwATuvHEu" | openssl enc -salt -pbkdf2 -iter 1234567 -bf-cbc -a -d enter bf-cbc decryption password: Hallo
Das Passwort direkt an der CLI übergeben, um automatisiert zu verschlüsseln:
> export MYPW="geheim" > echo 'Hallo' | openssl enc -salt -pbkdf2 -iter 4567890 -bf-cbc -a -e -pass env:MYPW U2FsdGVkX1+G87gXFRuojo9Nt6Z0Wfne > echo 'Hallo' | openssl enc -salt -pbkdf2 -iter 4567890 -bf-cbc -a -e -pass pass:geheim U2FsdGVkX1+G87gXFRuojo9Nt6Z0Wfne > echo 'Hallo' | openssl enc -salt -pbkdf2 -iter 4567890 -bf-cbc -a -e -k geheim U2FsdGVkX1+G87gXFRuojo9Nt6Z0Wfne
