El resumen predeterminado se cambió de MD5 a SHA256 en Openssl 1.1
Intenta usar -md md5
[email protected]:~$ echo "it-works!" > file.txt
[email protected]:~$ LD_LIBRARY_PATH=~/openssl-1.1.0/ openssl-1.1.0/apps/openssl aes-256-cbc -a -salt -in ~/file.txt -out ~/file.txt.enc -md md5
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
[email protected]:~$ LD_LIBRARY_PATH=~/openssl-1.0.1f/ openssl-1.0.1f/apps/openssl aes-256-cbc -a -in ~/file.txt.enc -d
enter aes-256-cbc decryption password:
it-works!
Los detalles feos:
La contraseña ingresada no se usa tal cual por aes (u otro cifrado), pero el comando deriva implícitamente una clave de ella. La derivación de clave usa el resumen del mensaje que se cambió en openssl 1.1 Use SHA256 no MD5 como resumen predeterminado.
En caso de que desee mantener una contraseña simple y no comenzar a jugar con la clave marcial (-K,-iv), simplemente fuerce el mismo resumen con -md
Probé el cifrado y descifrado AES con la versión 1.1.0a (descargada de openssl.org) y la versión 1.0.2g-fips (de mi ubuntu 16.04)
Al usar el -p
opción activada con 2 versiones diferentes de openssl
, el IV y la clave son diferentes:
$ LD_LIBRARY_PATH=~/openssl-1.1.0a/ ~/openssl-1.1.0a/apps/openssl aes-256-cbc -a -p -salt -in file -out file.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
salt=6A80B2A3B4CFE048
key=637E17094DF7892A7AFC14957EAA13991DFFD3273A2459EDA613F3AD8A406C38
iv =6AC7CE5C9AADC6C46C633BF5124DAFBF
$ openssl aes-256-cbc -a -d -p -in file.enc -out file.dec
enter aes-256-cbc decryption password:
salt=6A80B2A3B4CFE048
key=6220AF2E25CB0B5D9994A0A1B05503D82AC5B0B4C9015E241CACBF8BF62DAC77
iv =2DC04EF29AA57478EBE606DF87277EA6
bad decrypt
140557073118872:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:592:
Sospecho una derivación diferente de key e IV basada en la sal con las 2 versiones.
Si desea deshacerse de este error de descifrado, puede eliminar el -salt
y usa las opciones -K
para la clave y -iv
en su comando openssl.
Este problema también puede ocurrir entre OpenSSL 1.1 y LibreSSL. En este caso, y en otros casos donde hay resúmenes de mensajes más seguros disponibles, debe evitar usar -md md5
para cifrar nuevos archivos ya que el algoritmo MD5 tiene amplias vulnerabilidades.
En su lugar, debe usar -md sha256
o algún otro resumen de mensajes más seguro compatible con todas las versiones. -md md5
solo debe usarse para descifrar archivos antiguos, y lo ideal es que se vuelvan a cifrar con sha256. Esto también se menciona en las preguntas frecuentes de OpenSSL:
Se utiliza un resumen de mensaje para crear la clave de cifrado/descifrado a partir de una frase de contraseña ingresada por una persona. En OpenSSL 1.1.0 cambiamos de MD5 a SHA-256. Hicimos esto como parte de un cambio general para alejarnos del algoritmo MD5 ahora inseguro y roto. Si tiene archivos antiguos, use el indicador "-md md5" para descifrarlos.
Para verificar qué resúmenes de mensajes son compatibles con las diferentes versiones que tiene en juego, ejecute openssl help
:
LibreSSL 2.2.7 (incluido con macOS 10.13 High Sierra):
$ openssl help
…
Message Digest commands (see the `dgst' command for more details)
gost-mac md4 md5 md_gost94
ripemd160 sha sha1 sha224
sha256 sha384 sha512 streebog256
streebog512 whirlpool
…
OpenSSL 1.1f:
$ openssl help
…
Message Digest commands (see the `dgst' command for more details)
blake2b512 blake2s256 gost md4
md5 rmd160 sha1 sha224
sha256 sha384 sha512
…