OpenSSL сообщает о «плохой расшифровке», хотя был создан правильный открытый текст

OpenSSL сообщает о «плохой расшифровке», хотя был создан правильный открытый текст

Я использую 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.

Связанный контент