para linux encryption openssl cryptography libssl

linux - para - openssl windows 10



El cifrado/descifrado no funciona bien entre dos versiones de OpenSL diferentes (3)

He descargado y compilado openssl-1.1.0 .

Puedo encriptar y desencriptar usando el mismo exe de openssl (como está here )

me@ubuntu:~/openssl-1.1.0$ LD_LIBRARY_PATH=. ./apps/openssl aes-256-cbc -a -salt -in file.txt -out file.txt.enc enter aes-256-cbc encryption password: 123 Verifying - enter aes-256-cbc encryption password: me@ubuntu:~/openssl-1.1.0$ LD_LIBRARY_PATH=. apps/openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec enter aes-256-cbc decryption password: 123

Este openssl utiliza: libcrypto.so.1.1, libssl.so.1.1

Cuando intento descifrar con el openssl instalado en mi ubuntu, que usa: /lib/x86_64-linux-gnu/libssl.so.1.0.0, /lib/x86_64-linux-gnu/libcrypto.so.1.0.0

Me sale un error:

me@ubuntu:~/openssl-1.1.0$ openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec2 enter aes-256-cbc decryption password: 123 bad decrypt 140456117421728:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:

¿Qué puede causar esto? Gracias


El resumen predeterminado se cambió de MD5 a SHA256 en Openssl 1.1

Intenta usar -md md5

cgs@ubuntu:~$ echo "it-works!" > file.txt cgs@ubuntu:~$ 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: cgs@ubuntu:~$ 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 como es por aes (u otro cifrado) pero el comando deriva implícitamente una clave de ella. La derivación de clave utiliza un resumen de 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


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 archivos nuevos ya que el algoritmo MD5 tiene vulnerabilidades extensas.

En su lugar, debe usar -md sha256 o algún otro resumen de mensaje 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 humanos. 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 la 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 …


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)

Cuando se usa la opción -p 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 clave y IV basada en la sal con las 2 versiones.

Si desea deshacerse de este error de descifrado, puede eliminar la opción -salt y usar las opciones -K para la clave y -iv en su comando openssl.