Я использую OpenSSL 1.0.1e-fips под RHEL 6.9.
Я зашифровал файл с помощью этой команды:
openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
Затем я расшифровываю зашифрованный файл с помощью этой команды:
openssl enc -aes-256-gcm -a -d -in ciphertext
Эта команда выводит следующий результат:
test text
bad decrypt
Файл расшифровался правильно (т.е. содержимое файла действительно было "тестовым текстом"), но OpenSSL сообщает "плохое расшифровывание". Это происходит даже если я явно указываю хэш-функцию для использования (например,-md sha512).
Почему я получаю сообщение «неудачная расшифровка»?
решение1
Ни одна версия OpenSSL не поддерживает режим AEAD (включая GCM) в сочетании с приложением командной строки "enc". Все поддерживаемые в настоящее время версии OpenSSL выведут сообщение об ошибке, если вы попытаетесь выполнить шифрование/дешифрование с использованием такого режима:
$ openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
enc: AEAD ciphers not supported
OpenSSL 1.0.1 — очень старая версия OpenSSL, которая в настоящее время не поддерживается проектом (хотя может поддерживаться Red Hat). Очень старые версии OpenSSL не имели проверки AEAD, которая выдает указанное выше предупреждение, и пытались выполнить шифрование/дешифрование в любом случае, но неправильно. Самое главное, что команда "enc" не знает, как обрабатывать "тег" режима AEAD (отсюда и сообщение "bad decrypt", которое вы видите). Тег имеет решающее значение для безопасности, поскольку он проверяет целостность зашифрованного текста.
Команда может выглядеть работающей, но это не так. В общем, не используйте режим GCM с командой enc.