Estou usando OpenSSL 1.0.1e-fips no RHEL 6.9.
Eu criptografei um arquivo com este comando:
openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
Em seguida, descriptografo o arquivo criptografado com este comando:
openssl enc -aes-256-gcm -a -d -in ciphertext
Este comando produz esta saída:
test text
bad decrypt
O arquivo foi descriptografado corretamente (ou seja, o conteúdo do arquivo era de fato "texto de teste"), mas o OpenSSL está relatando "descriptografia incorreta". Isso acontece mesmo se eu especificar explicitamente uma função hash para usar (por exemplo-md sha512).
Por que estou recebendo a mensagem "descriptografia incorreta"?
Responder1
Nenhuma versão do OpenSSL suporta qualquer modo AEAD (que inclui GCM) em conjunto com o aplicativo de linha de comando “enc”. Todas as versões atualmente suportadas do OpenSSL exibirão uma mensagem de erro se você tentar criptografar/descriptografar usando este modo:
$ openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
enc: AEAD ciphers not supported
OpenSSL 1.0.1 é uma versão muito antiga do OpenSSL e atualmente não é suportada pelo projeto (embora possa ser suportada pela Red Hat). Versões muito antigas do OpenSSL não tinham a verificação AEAD que produz o aviso acima e tentaram criptografar/descriptografar de qualquer maneira - mas incorretamente. Mais significativamente, o comando "enc" não sabe como lidar com a "tag" de um modo AEAD (daí a mensagem "descriptografia incorreta" que você vê). A tag é crítica para a segurança, pois verifica a integridade do texto cifrado.
O comando pode parecer que funcionou - mas não funcionou. Basicamente não use o modo GCM com o comando enc.