OpenSSL fehlerhafte Entschlüsselung zwischen 0.9.8o und 1.1.0f

OpenSSL fehlerhafte Entschlüsselung zwischen 0.9.8o und 1.1.0f

Ich verwende OpenSSL, um Klartext zu verschlüsseln und ihn auf mehreren Remote-Servern zu dekodieren. Beim Testen meiner Skripte auf Kompatibilität mit Debian 9 Stretch habe ich einen Fehler festgestellt.

So teste ich: Debian 6, OpenSSL 0.9.8o, Kodierung einer Zeichenfolge:

# echo "Hi guys" | openssl des3 -salt -a -k "testkey"
U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=

Dekodierung auf demselben Server:

# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
Hi guys

Debian 9, OpenSSL 1.1.0f, Dekodierung der Zeichenfolge:

# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
bad decrypt
140259873273088:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:535:
z���AR�

Während der Dekodierung wird Folgendes ausgeführt:

Debian 7, OpenSSL 1.0.1t:

$ echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
Hi guys

Debian 8, OpenSSL 1.0.1t

# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
Hi guys

Ich habe also die Kodierung auf dem Debian 9, OpenSSL 1.1.0f-Testserver getestet:

# echo "Hi guys" | openssl des3 -salt -a -k "testkey"
U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=

Und die Dekodierung auf demselben Server funktioniert:

# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
Hi guys

Aber die Dekodierung funktioniert nicht auf den 3 anderen Servern: Debian 6, OpenSSL 0.9.8o:

# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
bad decrypt
12605:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:330:
��Rv��

Debian 7, OpenSSL 1.0.1t:

$ echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
bad decrypt
139771367589544:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:516:
▒▒Rv▒▒

Debian 8, OpenSSL 1.0.1t:

# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
bad decrypt
139719827605136:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:516:
▒▒Rv▒▒

Ich habe die OpenSSL-Abhängigkeiten überprüft und jede Version auf mehreren Servern getestet.

Antwort1

Tut mir leid, Leute, ein paar Minuten später habe ich die Antwort im Debian-Bugtracker von Sebastian Andrzej Siewior gefunden:

Debian-Fehlerbericht #843064

bah. Sie haben den Standard-Digest von md5 auf sha256 geändert, um den Schlüssel zu erstellen. Wenn Sie '-md md5' zu Ihrem 1.1. openssl hinzufügen, funktioniert es. Umgekehrt benötigen Sie '-md sha256', damit 1.0 funktioniert.

Durch Hinzufügen von „-md md5“ unter Debian 9 funktioniert es mit älteren OpenSSL-codierten Zeichenfolgen:

# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -md md5 -a -d -k "testkey"
Hi guys

Und durch Hinzufügen von „-md sha256“ auf älteren Debian-Versionen funktioniert auch die neuere OpenSSL-codierte Zeichenfolge:

# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -md sha256 -salt -a -d -k "testkey"
Hi guys

Ich behalte den Thread bei, um anderen Leuten Zeit zu sparen :)

verwandte Informationen