GnuPG — свободная реализация стандарта OpenPGP, которая даёт две разные возможности: шифрование и цифровую подпись. В почте они обычно работают вместе. Отправитель подписывает письмо своим закрытым ключом, чтобы получатель убедился в авторстве и целостности, а шифрует открытым ключом получателя, чтобы содержимое прочитал только он. Почтовый сервер при этом видит конверт, но не текст. Ниже — создание ключа, обмен и проверка, командная строка и настройка Thunderbird.

Как работает шифрование письма

GnuPG не шифрует весь текст асимметричным ключом напрямую: это медленно. Создаётся случайный сеансовый ключ, им шифруется сообщение, а сам сеансовый ключ шифруется открытым ключом получателя. Такая гибридная схема описана в OpenPGP и используется всеми совместимыми клиентами.

Из этого следуют практические выводы. Закрытый ключ не покидает вашу машину, открытый можно публиковать. Подпись подтверждает автора и целостность, но не скрывает текст. Шифрование скрывает содержимое, но не метаданные: адреса, время и часто тема письма остаются видимыми. Поэтому не пишите секреты в теме письма.

Создание ключевой пары

Для личной переписки достаточно одного ключа со сроком действия в год или два. Алгоритм ed25519/cv25519 экономен по ресурсам и поддерживается современными клиентами; RSA 3072 или 4096 подойдёт для совместимости со старым корпоративным окружением.

gpg --full-generate-key
gpg --list-secret-keys --keyid-format=long
gpg --fingerprint --keyid-format=long
gpg --export-options backup --output backup.pgp --export-secret-keys

Указывайте настоящее имя и тот адрес, с которого будете писать: клиенты сопоставляют ключ с идентификатором отправителя. Парольную фразу храните в менеджере паролей, а не рядом с копией ключа. Сразу после создания сделайте резервные копии: закрытый ключ, подключа, сертификат отзыва.

Сертификат отзыва GnuPG создаёт автоматически в каталоге openpgp-revocs.d; сохраните его отдельно и не публикуйте заранее.

Публикация ключа и проверка отпечатка

Открытый ключ экспортируется в текстовом виде и передаётся коллеге любым каналом. Импорт не означает доверия: после импорта обязательно сверьте отпечаток по независимому каналу — голосом, на встрече, через подписанное сообщение.

gpg --armor --export you@example.com > you.asc
gpg --import colleague.asc
gpg --locate-keys colleague@example.com
gpg --fingerprint colleague@example.com

Команда --locate-keys ищет ключ через Web Key Directory домена и настроенные источники ключей. Публичные серверы удобны, но не гарантируют личность: ключ с нужным адресом мог загрузить кто угодно. После проверки подпишите ключ, чтобы зафиксировать доверие:

gpg --sign-key colleague@example.com
gpg --check-sigs colleague@example.com
gpg --list-keys --with-colons | grep '^pub'

Шифрование и подпись в терминале

Для файлов и скриптов удобнее командная строка. Порядок «сначала подписать, потом зашифровать» даёт получателю и авторство, и конфиденциальность. Ключ отправителя добавляют вторым получателем, иначе отправленную копию нельзя будет прочитать.

gpg --encrypt --sign --armor --recipient colleague@example.com letter.txt
gpg --decrypt letter.txt.asc
gpg --detach-sign --armor document.pdf
gpg --verify document.pdf.asc document.pdf

Флаг --armor превращает двоичный результат в текст, который переживёт пересылку через почту. Для больших файлов текстовый формат не обязателен: подпись хранят отдельным файлом, а данные шифруют потоком. Проверка подписи возвращает код 0 только при успехе; в скриптах ориентируйтесь на код.

Почтовый клиент: Thunderbird

В Thunderbird OpenPGP встроен, отдельное расширение Enigmail больше не требуется. В настройках учётной записи откройте раздел сквозного шифрования, импортируйте свой закрытый ключ или создайте новый, затем привяжите ключ к идентификатору.

gpg --export --armor you@example.com > public.asc
gpg --export-secret-keys --armor you@example.com > secret.asc
gpg --list-packets secret.asc | head

В окне ключей отметьте ключ как используемый по умолчанию, включите подпись исходящих и, при необходимости, шифрование. Отправьте тестовое письмо себе и проверьте, что подпись отображается как действительная, а расшифровка работает после перезапуска клиента.

Тема письма по умолчанию не шифруется. В Thunderbird есть защита темы через protected headers, но она работает только при поддержке получателя. Если тема конфиденциальна, либо не используйте её для секретов, либо заранее договоритесь о совместимом клиенте.

Доверие, срок действия и отзыв

Модель доверия OpenPGP строится на подписях: вы подписываете проверенные ключи, а ваш клиент показывает степень доверия к цепочке. Для небольшой команды достаточно вручную подписать ключи коллег и периодически проверять список.

Срок действия продлевают без пересоздания ключа — через --quick-set-expire или интерактивно:

gpg --quick-set-expire FINGERPRINT 2y
gpg --edit-key you@example.com
gpg --output revoke.asc --gen-revoke you@example.com

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

Аппаратный ключ и резервные копии

Закрытый ключ можно перенести на смарт-карту или USB-токен с поддержкой OpenPGP. Тогда сам ключ не лежит на диске компьютера, а операции выполняет устройство после ввода PIN.

gpg --card-edit
gpg --card-status
gpg --edit-key you@example.com

Внутри --card-edit включают административный режим, задают PIN и переносят подключи командой keytocard. Перед переносом обязательна резервная копия: после keytocard на диске остаются заглушки, и восстановить ключ можно только из копии.

Типичные ошибки

  • Inappropriate ioctl for device — агенту не передан терминал; добавьте export GPG_TTY=$(tty) в профиль оболочки.
  • decryption failed: No secret key — не импортирован закрытый ключ или письмо зашифровано другому адресату.
  • Агент завис после обновления — перезапустите его командой gpgconf --kill gpg-agent.
  • Подпись недействительна после рассылки — список рассылки изменил письмо; проверяйте подпись в исходном сообщении.
  • Клиент не видит ключ — проверьте привязку ключа к идентификатору учётной записи.
  • Слишком открытые права на каталог — исправьте их, иначе GnuPG предупредит об опасности.
export GPG_TTY=$(tty)
gpgconf --kill gpg-agent
gpg --check-sigs
stat -c '%a %n' ~/.gnupg

Чек-лист

  • Ключ создан с разумным сроком действия и парольной фразой.
  • Резервные копии закрытого ключа и сертификата отзыва лежат отдельно.
  • Отпечаток ключа коллеги сверен по независимому каналу.
  • Тестовое письмо подписано и расшифровано на другой машине.
  • Тема письма не содержит конфиденциальных сведений.
  • Клиент обновлён, агент работает, права на ~/.gnupg корректны.

Итог

GnuPG даёт почте две независимые гарантии: подтверждение автора и защиту содержимого. Начните с одного ключа, проверьте отпечатки лично, настройте Thunderbird и прогоните тестовое письмо. Храните резервные копии и сертификат отзыва отдельно, не полагайтесь на публичный сервер как на удостоверение личности. Тогда шифрованная переписка останется простой в работе и устойчивой к ошибкам.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте