GNU/Linux >> Tutoriales Linux >  >> Linux

El cifrado/descifrado no funciona bien entre dos versiones de openssl diferentes

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
…

Linux
  1. ¿Qué tienen en común los diferentes Bsd?

  2. ¿Cómo hacer una tubería bidireccional entre dos programas?

  3. ¿Extraer texto entre dos líneas específicas?

  4. ¿Cómo usar dos versiones diferentes de Wine en la misma instalación?

  5. LD_LIBRARY_PATH no parece funcionar

Cómo cambiar entre diferentes versiones de comandos en Linux

Cifrado y descifrado de archivos simplificado con GPG

Cifrado y descifrado de archivos con ccrypt

REVISIÓN:Google Chrome no funciona en Kali Linux

yum install gcc-g++ ya no funciona en CentOs 6.4

¿Por qué el puente de Linux no funciona?