Ich verwende OpenSSL 1.0.1e-fips unter RHEL 6.9.
Ich habe eine Datei mit diesem Befehl verschlüsselt:
openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
Anschließend entschlüssele ich die verschlüsselte Datei mit diesem Befehl:
openssl enc -aes-256-gcm -a -d -in ciphertext
Dieser Befehl erzeugt diese Ausgabe:
test text
bad decrypt
Die Datei wurde ordnungsgemäß entschlüsselt (d. h. der Inhalt der Datei war tatsächlich "Testtext"), aber OpenSSL meldet "fehlerhafte Entschlüsselung". Dies geschieht auch, wenn ich explizit eine zu verwendende Hash-Funktion angebe (z. B.-md sha512).
Warum erhalte ich die Meldung „Fehlerhafte Entschlüsselung“?
Antwort1
Keine Version von OpenSSL unterstützt einen AEAD-Modus (einschließlich GCM) in Verbindung mit der Befehlszeilen-App „enc“. Alle derzeit unterstützten Versionen von OpenSSL zeigen eine Fehlermeldung an, wenn Sie versuchen, in einem solchen Modus zu verschlüsseln/entschlüsseln:
$ openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
enc: AEAD ciphers not supported
OpenSSL 1.0.1 ist eine sehr alte Version von OpenSSL und wird derzeit nicht vom Projekt unterstützt (obwohl es möglicherweise von Red Hat unterstützt wird). Sehr alte Versionen von OpenSSL hatten nicht die AEAD-Prüfung, die die obige Warnung erzeugt, und versuchten trotzdem zu verschlüsseln/entschlüsseln – aber falsch. Am wichtigsten ist, dass der Befehl „enc“ nicht weiß, wie er mit dem „Tag“ eines AEAD-Modus umgehen soll (daher die Meldung „Bad Decrypt“, die Sie sehen). Das Tag ist für die Sicherheit entscheidend, da es die Integrität des Chiffretexts überprüft.
Der Befehl sieht möglicherweise so aus, als ob er funktioniert, aber das hat er nicht. Verwenden Sie den GCM-Modus grundsätzlich nicht mit dem Befehl enc.