
Я зашифровал файл, используя симметричное шифрование, вот так:
gpg --symmetric myfile
в результате чего получается файл myfile.gpg
.
Хорошо. Теперь давайте снова расшифруем файл:
gpg -o myfile --decrypt myfile.gpg
Меня просят ввести пароль, который я установил, а затем я вижу
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected
Я не уверен насчет первой и последней строки.
- Что такое шифр CAST5 и безопасен ли он? Я знаю 3DES и AES, и я знаю, что они безопасны.
- Почему не обеспечивается целостность данных?
- И еще, как это исправить?
решение1
Фон
КАСТ-5— это старый алгоритм шифрования, используемый GnuPG, поскольку во время первоначального создания GnuPG AES еще не существовал.источник. Он не используется широко (за исключением GnuPG из соображений совместимости).
Это WARNING: message was not integrity protected
потому, что эта функция не включена по умолчанию во время шифрования. Если бы она была включена, GnuPG мог бы определить, был ли файл изменен при передаче.
Обновление: современные версии GnuPG, поставляемые с Ubuntu/Debian, теперь имеют MDCвключено по умолчаниюи вы больше никогда не увидите это сообщение для чего-либо, подписанного этими новыми версиями.
Решения
Чтобы использовать более сильный алгоритм AES-256, вам необходимо указать его либо в командной строке, либо в файле конфигурации.
Командная строка: добавьте
--cipher-algo AES256
опцию, чтобы полная строка для шифрования сталаgpg -o myfile.gpg --cipher-algo AES256 --symmetric myfile
Файл конфигурации (рекомендуется): добавьте следующую строку в
~/.gnupg/gpg.conf
файл конфигурации.cipher-algo AES256
Я рекомендую этот подход, поскольку он будет использоваться для всех будущих операций GPG с этой учетной записью пользователя.
Пользователю не нужно ничего менять, чтобы расшифровать файл — GnuPG обнаружит это автоматически.
Обратите внимание, что при использовании шифра AES-256 сообщение автоматически защищается на предмет целостности. Чтобы вручную включить защиту целостности для других шифров, для которых это не включено (например, CAST-5), добавьте опцию --force-mdc
при шифровании.
А еще лучше: подпишите!
Еще лучшим подходом было бы подписывать файлы с помощью вашей пары ключей (если она у вас есть). Просто добавьте опцию --sign
в команду шифрования, например:
gpg -o myfile.gpg --cipher-algo AES256 --sign --symmetric myfile
Это не только подтвердит целостность файла, но и позволит получателю файла проверить его источник. Любые изменения в файле приведут к тому, что проверка подписи не будет пройдена.