Como devo alterar a criptografia de acordo com *** AVISO: derivação de chave obsoleta usada

15

Ao criptografar ou descriptografar um arquivo, recebo *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better.

Não entendo o que isso significa, como devo alterar os meus procedimentos. Você poderia me ajudar? Eu criptografar openssl des3 <input >output.des3e descriptografar com openssl des3 -d <input.des3 >output

Sobre o meio ambiente

Ubuntu 18.10

~$ openssl version OpenSSL 1.1.1 11 Sep 2018

Tommy Pollák
fonte
1
O 3DES como método de criptografia está sendo aposentado. O aviso está apenas sugerindo que você use outro método, talvez consulte crypto.stackexchange.com/questions/51629/… para obter mais detalhes.
guiverc
1
Esse erro ocorre para qualquer tipo de cifra. Você precisa adicionar -pbkdf2 aos comandos de criptografia e descriptografia.
Daniele Dellafiore
Desculpe, mas você poderia dar um exemplo de como adicionar -pbkdf2 aos comandos? Não entendo como deve ser adicionado.
Tommy Pollák 01/01/19
1
No seu exemplo, você só precisa fazer openssl des3 -e -pbkdf2 < input > output.des3e openssl des3 -d -pbkdf2 < input.des3 > output. Por acaso, também concordo com o primeiro comentário de que você deve usar uma cifra de bloco diferente em vez do 3DES (DES é de 1977), uma maneira fácil de fazer isso é apenas trocar de aes256onde você tem atualmente des3esses comandos, usar o AES ( AES de 256 bits atende aos padrões de segurança atuais).
Joelhardi
Obrigado! Agora ele funciona e sem avisos usando o aes256. Então a pergunta é respondida.
Tommy Pollák 4/01/19

Respostas:

12

Comparando as Sinopse das duas versões principais e recentes do OpenSSL, deixe-me citar as páginas de manual.

OpenSSL 1.1.0

openssl enc -ciphername [-help] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id]

OpenSSL 1.1.1

openssl enc -cipher [-help] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a] [-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-iter count] [-pbkdf2] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-rand file...] [-writerand file] [-engine id]

Obviamente, existem algumas diferenças maiores, ou seja, considerando esta questão, existem essas duas opções 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:

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in InputFilePath -out OutputFilePath

Onde essas opções:

  • -aes-256-cbcé o que você deve usar para obter proteção máxima ou a versão de 128 bits, o 3DES (Triple DES) foi abandonado há algum tempo; veja Triple DES foi reprovado pelo NIST em 2017 , enquanto o AES é acelerado por todas as CPUs modernas; você pode simplesmente verificar se sua CPU possui a instrução AES-NI definida, por exemplo, usando grep aes /proc/cpuinfo; vencer, vencer

  • -md sha512 é a variante mais rápida da família de funções SHA-2 em comparação com o SHA-256, embora possa ser um pouco mais seguro; vencer, vencer

  • -pbkdf2: use PBKDF2 algoritmo (função de derivação de chave com base em senha 2)

  • -iter 100000 está substituindo a contagem padrão de iterações para a senha, citando a página de manual:

    Use um número determinado de iterações na senha para derivar a chave de criptografia. Valores altos aumentam o tempo necessário para forçar com força o arquivo resultante. Esta opção permite o uso do algoritmo PBKDF2 para derivar a chave.

LinuxSecurityFreak
fonte
1
Então, como decifrá-lo quando o uso openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -in InputFilePath -out OutputFilePath.
l Mingzhi
1
Simplesmente adicionando -dao comando:openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -d -in InputFilePath
Eduard Itrich 26/09/19
1
Tenho certeza de que existem alguns problemas com essa sugestão. Conforme en.wikipedia.org/wiki/Key_derivation_function, você deseja a variante mais lenta do algoritmo de derivação de chave. Em outras palavras, não use sha512 Como por en.wikipedia.org/wiki/PBKDF2 in the year 2000 the recommended minimum number of iterations was 1000, but the parameter is intended to be increased over time as CPU speeds increase - por isso eu recomendo algum lugar entre 10.000 e 100.000 iterações em vez de 1000.
oskarpearson
@oskarpearson É verdade, eu li isso agora. Atualizando resposta.
LinuxSecurityFreak