Criptografia / descriptografia não funciona bem entre duas versões diferentes do openssl

Eu baixei e compilei o openssl-1.1.0 .

Eu posso criptografar e descriptografar usando o mesmo exe de openssl (como está aqui )

 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 usa: libcrypto.so.1.1, libssl.so.1.1

Quando eu tento descriptografar com o openssl instalado no meu Ubuntu, que usa: /lib/x86_64-linux-gnu/libssl.so.1.0.0, /lib/x86_64-linux-gnu/libcrypto.so.1.0.0

Eu recebo um erro:

 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: 

O que pode causar isso? obrigado

   

O resumo padrão foi alterado de MD5 para SHA256 em Openss 1.1

Tente 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! 

Os detalhes feios:

A senha digitada não é usada como está por aes (ou outra criptografia), mas o comando deduz implicitamente uma chave dela. A derivação de chave usa o resumo da mensagem que foi alterado no openssl 1.1 Use SHA256 não MD5 como resumo padrão.

Caso você queira manter a senha simples, e não começar a mexer com o keying marcial (-K, -iv) apenas force o mesmo resumo com -md

Eu testei a criptografia e descriptografia AES com a versão 1.1.0a (baixada do openssl.org) e a versão 1.0.2g-fips (do meu Ubuntu 16.04)

Ao usar a opção -p com 2 versões diferentes do openssl , o IV e a chave são 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: 

Eu suspeito de uma derivação diferente de chave e IV com base no sal com as duas versões.

Se você quiser se livrar deste erro de descriptografia, você pode remover a opção -salt e usar as opções -K para a chave e -iv em seu comando openssl.

Esse problema também pode ocorrer entre o OpenSSL 1.1 e o LibreSSL. Nesse caso, e em outros casos em que mais digests de mensagens seguras estão disponíveis, você deve evitar o uso de -md md5 para criptografar novos arquivos, pois o algoritmo MD5 possui vulnerabilidades extensas.

Em vez disso, você deve usar -md sha256 ou algum outro resumo de mensagem mais seguro suportado por todas as versões. -md md5 só deve ser usado para descriptografar arquivos antigos, e eles devem idealmente ser criptografados novamente usando o sha256. Isso também é mencionado no FAQ do OpenSSL .


Para verificar quais resumos de mensagens são suportados pelas diferentes versões que você tem em jogo, execute a openssl help :

LibreSSL 2.2.7 (incluído no 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 …