Hoje recebi este aviso emitido pelo OpenSSL no Cygwin após atualizar alguns pacotes, acredito que openssl
foi incluído:
*** AVISO: derivação de chave obsoleta usada.
Usando-iter
ou-pbkdf2
seria melhor.
A versão OpenSSL usada no Cygwin foi:
OpenSSL 1.1.1b 26 Feb 2019
Isso aconteceu ao descriptografar meu Backup em BluRay, que criei no Linux Mint 19.1 , onde a versão do OpenSSL é significativamente mais antiga :
OpenSSL 1.1.0g 2 Nov 2017
O comando usado para criptografar e descriptografar (basta adicionar -d
no final) foi:
$ openssl enc -aes-256-cbc -md sha256 -salt -in "${InputFilePath}" -out "${OutputFilePath}"
O que significa este aviso e posso fazer alguma coisa para evitá-lo em futuros backups?
Comparando a sinopse das duas versões principais e recentes do OpenSSL, deixe-me citar as páginas man.
OpenSSL 1.1.0
OpenSSL 1.1.1
Obviamente, existem algumas diferenças maiores, ou seja, considerando esta questão, existem esses dois switches ausentes no 1.1.0:
pbkdf2
iter
Você tem basicamente duas opções agora. Ignore o aviso ou ajuste seu comando de criptografia para algo como:
Onde esses interruptores:
-aes-256-cbc
é o que você deve usar para proteção máxima ou a versão de 128 bits, o 3DES (Triple DES) foi abandonado há algum tempo, veja Triple DES foi preterido pelo NIST em 2017 , enquanto o AES é muito acelerado por todas as CPUs modernas; você pode simplesmente verificar se sua CPU possui o conjunto de instruções AES-NI, por exemplo, usandogrep aes /proc/cpuinfo
; vencer, vencer-md sha512
é a variante mais rápida da família de funções SHA-2 em comparação com SHA-256 , embora possa ser um pouco mais segura; vencer, vencer-pbkdf2
: use o algoritmo PBKDF2 (Função de Derivação de Chave Baseada em Senha 2)-iter 100000
está substituindo a contagem padrão de iterações para a senha, citando a página man:Recentemente eu instalei a versão mais recente do cygwin. "openssl" começou a dar um aviso:
Então agora eu uso o seguinte para criptografar:
e o seguinte para descriptografar:
Parece que o OpenSSL está finalmente, depois de pelo menos 6 anos, reconhecendo que o
enc
comando tem algumas falhas bastante sérias (sua própria página de manual as chama de "bugs"). Talvez eles estejam sendo corrigidos agora, mas se seus dados são importantes, por que não usar uma ferramenta (relativamente) muito mais segura como o GnuPG ? Você também não precisa necessariamente usar criptografia de chave pública, o gpg também faz criptografia convencional (somente senha/arquivo-chave).Aqui está um trecho da minha outra resposta , destacando o básico:
Um dos comentários do primeiro post até menciona que esses problemas existem há quase 10 anos...
Aqui está um exemplo de criptografia simétrica com gpg .
Resumidamente:
e