Як виправити "ПОПЕРЕДЖЕННЯ: повідомлення не було захищено цілісністю" під час використання симетричного шифрування GPG?


45

Я зашифрував файл, використовуючи симетричне шифрування, як це:

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 і знаю, що вони захищені.
  • Чому він не захищений цілісністю?
  • І більше того, як це можна виправити?

До речі, ви можете просто gpg -c myfileзашифрувати і gpg myfile.gpgрозшифрувати, вихід буде розшифрований myfileза замовчуванням.
CpRn

1
@CyprianGuerra gpg myfile.gpgпризведе до розшифрованого виводу, відправленого до stdout в моїй системі ...
gertvdijk

Цікаво. Я маю це за замовчуванням ...
cprn

Я завантажив GUI звідси і розшифрував файл, використовуючи його. Це спрацювало! pgptool.github.io
Іфтіхар Ахмад Дар

Відповіді:


69

Фон

CAST-5 - це старший алгоритм шифрування, використовуваний GnuPG, оскільки AES ще не існував у часі, коли GnuPG був створений початковим джерелом . Він не використовується широко (крім 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

Це не тільки підтвердить цілісність файлу, але й дасть можливість одержувачу файлу перевірити походження. Будь-які зміни у файлі мали б не перевірити підпис.


Чи не потрібен мені сертифікат для підписання?
balal fazlani

@bilalfazlani для підписання вам знадобиться клавіша GnuPG, так. Не потрібно оприлюднювати, якщо цього не хочеться. Просто поділіться відкритим ключем з колегами, з якими ви ділитесь зашифрованими файлами, і вони повинні підтвердити відбиток ключа з вами.
gertvdijk

Дякую за детальну відповідь. Чи можете ви пояснити більше про те, як користуватися клавіатурою?
ben-Nabiy Derush

"повідомлення не було захищено цілісністю" трапляється на стороні одержувача, і ви розповідаєте, як це виправити на стороні відправника. Питання полягає в тому, як ігнорувати проблему на стороні, що приймає, щоб мати можливість розшифровувати старіші повідомлення (
загадкою

@ ben-NabiyDerush Ці дві статті можуть прояснити ваші запитання про те, як (і навіщо) використовувати державний та приватний ключ. Криптографія з відкритим ключем . Web of Trust
jpaugh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.