Гид по технологиям

Безопасная отправка зашифрованных писем на Linux с GnuPG

7 min read Безопасность Обновлено 22 Apr 2026
Зашифровать электронную почту на Linux с GnuPG
Зашифровать электронную почту на Linux с GnuPG

Отправка зашифрованного письма на Linux с помощью GnuPG

Кратко: с помощью GnuPG (gpg) вы создаёте пару ключей (публичный/приватный), экспортируете публичный ключ и используете его для шифрования сообщений и файлов. Получатель расшифровывает сообщение своим приватным ключом и паролем. Следуйте шагам ниже, используйте сильные ключи и храните резервную копию сертификата отзыва.

Установка gnupg

Если вы видели термин PGP, то GnuPG — это свободная реализация стандарта OpenPGP. На Linux обычно достаточно установить пакет gnupg (версия 2.x). Проверьте, установлен ли gpg командой:

gpg --version

Если команда возвращает версию (рекомендуется v2+), можно переходить дальше. Иначе установите пакет:

sudo apt-get update && sudo apt-get install gnupg2

После установки ещё раз проверьте версию:

gpg --version

Примечание: в некоторых дистрибутивах пакет называется gnupg, в других gnupg2. На серверных системах может потребоваться установить pinentry для ввода пароля в безопасном режиме:

sudo apt-get install pinentry-curses

Генерация PGP ключа

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

Совет: используйте современный набор алгоритмов. Рекомендуется либо RSA 4096, либо эллиптические ключи (Curve25519) для лучшей производительности и безопасности.

Сгенерировать ключ можно так:

gpg --full-generate-key

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

  • Тип: 1 — RSA and RSA (можно выбрать по подсказкам)
  • Размер: 4096 для RSA; для ECC выбирайте Curve25519 через меню
  • Срок действия: задайте разумный срок и создайте подпись-под-ключ (subkey) для операций подписи/шифрования

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

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

Экспорт публичного ключа

Публичный ключ можно экспортировать в ASCII-формате и отправить по почте или опубликовать на сервере ключей. Пример команды:

gpg -a --export 'myname@domain.com' > mykey.asc

Замените myname@domain.com на email, указанный при генерации ключа. Файл mykey.asc можно прикрепить к письму или поместить в репозиторий ключей.

Важно: не экспортируйте приватный ключ в публичный файл.

Импорт публичных ключей

Когда вы получите чей-то публичный ключ в файле key.asc, импортируйте его так:

gpg --import key.asc

Посмотреть список известных ключей:

gpg --list-keys

В выводе обратите внимание на uid (имя и email) и отпечаток ключа (fingerprint). Пример записи:

pub rsa4096/0xC1468CFE 2020-01-30 [SC] [expires: 2022-01-29]
uid  John Developer 

Для дополнительной безопасности сверяйте отпечаток ключа (fingerprint) по другому каналу связи (телефон, мессенджер с end-to-end или личная встреча).

Шифрование текста с помощью PGP

Подготовьте файл message.txt с вашим сообщением. Для шифрования используйте публичный ключ получателя:

gpg -e -a -r 'designer@domain.com' message.txt

Разбор ключей команды:

  • -e или –encrypt: шифрование
  • -a или –armor: ASCII-выход (читабельный текст) — удобно вставлять в тело письма
  • -r или –recipient: адрес получателя (email или идентификатор ключа)

Команда создаст message.txt.asc с зашифрованным блоком, начинающимся с —–BEGIN PGP MESSAGE—–. Этот файл можно прикрепить к письму или вставить как текст.

Пример зашифрованного блока в файле message.txt.asc:

-----BEGIN PGP MESSAGE-----

hQGMAzCBDnMltq9zAQv/ZHQ3tJq+feazdLa3thzQE2bhPx+7WaPZcX7SdkoyuKvw
9faS7h9OwBjQ4vUyDKespSq3ZNf1pRgNoXijjs3MGEi5IsYxDgNWo1ZJv2qQqp36
...
-----END PGP MESSAGE-----

Шифрование бинарных файлов

Для шифрования бинарных файлов (архивов, изображений и т.д.) используйте без опции -a, чтобы сохранить бинарный формат:

gpg -e -r 'designer@domain.com' images.zip

Результат: images.zip.gpg — зашифрованный файл, готовый к отправке вложением.

Расшифровка сообщений и файлов

Получив файл message.asc или message.txt.asc, сохраните его и выполните:

gpg -d message.asc > message.txt

После ввода вашей парольной фразы gpg создаст message.txt с расшифрованным текстом. Для бинарных файлов:

gpg -d images.zip.gpg > images.zip

Если gpg сообщает о проблемах с pinentry, убедитесь, что установлен подходящий pinentry и что переменная окружения GPG_TTY установлена в интерактивной сессии:

export GPG_TTY=$(tty)

Резервный сертификат отзыва и безопасность приватных ключей

Создайте сертификат отзыва сразу после генерации ключа. Он понадобится, если вы потеряете доступ к приватному ключу или он будет скомпрометирован:

gpg --output revoke.asc --gen-revoke yourkeyID

Секретные рекомендации:

  • Храните revoke.asc в безопасном месте (офлайн, на USB в зашифрованном контейнере).
  • Не передавайте приватный ключ по почте. Если нужно мобильное хранение, используйте аппаратные ключи (YubiKey, Nitrokey).
  • Регулярно обновляйте и минимизируйте срок действия ключей, чтобы ограничить окно влияния при компрометации.

Повышение безопасности и жёсткая настройка

Практические меры для повышения безопасности:

  • Используйте субключи (subkeys): один ключ для подписи, другой для шифрования, и отдельный — для аутентификации.
  • Ограничьте срок действия основных ключей и регулярно ротацируйте субключи.
  • Рассмотрите использование аппаратного токена (Smartcard, YubiKey) для хранения приватного ключа и защиты PIN-кодом.
  • Настройте gpg-agent и cache TTL для паролей, чтобы избежать долгого хранения в памяти.
  • При автоматизации, избегайте хранения паролей в репозиториях; используйте секретные хранилища.

Команды для просмотра ключевых деталей:

gpg --edit-key yourkeyID

Внутри режима edit можно добавлять субключи, менять срок действия и генерировать сертификат отзыва.

Совместимость и практические подсказки

  • Windows: используйте Gpg4win или пользовательские клиенты, которые поддерживают OpenPGP.
  • macOS: GPGTools предоставляет графические инструменты для macOS.
  • Веб: расширения вроде Mailvelope интегрируются с браузером и позволяют шифровать прямо в веб-интерфейсе почты.
  • Почтовые клиенты: Thunderbird имеет встроенную поддержку OpenPGP. Раньше использовался Enigmail, он теперь интегрирован.

Проверяйте совместимость ключей при переходе с GnuPG v1 на v2 и при импорте ключей, созданных в других клиентах.

Частые ошибки и устранение неполадок

  • gpg: decryption failed: bad session key — обычно означает, что используется неверный приватный ключ или повреждён файл.
  • gpg: no secret key — у вас нет приватного ключа, соответствующего этому зашифрованному сообщению.
  • Проблемы с pinentry — установите подходящий pinentry и экспортируйте GPG_TTY.

Отладочные команды:

gpg --list-secret-keys --keyid-format long
gpg --fingerprint 'user@example.com'
gpg --verify file.sig file

Когда шифрование не помогает

  • Если атакующий контролирует почтовый ящик получателя, он может получить расшифрованные сообщения на стороне получателя.
  • Если браузер или почтовый клиент компрометированы, приватный ключ может быть украден.
  • Метаданные (заголовки письма, время отправки, факты о том, кто с кем переписывается) остаются видимыми.

В таких случаях дополните PGP другими мерами: двуфакторная аутентификация, сквозное шифрование в мессенджерах и контроль доступа на стороне сервера.

Алтернативные подходы

  • Использовать защищённые каналы обмена (Signal, Wire) для одноразовой передачи очень чувствительной информации.
  • Защищённые файлообменники с end-to-end шифрованием для больших файлов.
  • TLS-соединения и S/MIME как корпоративная альтернатива, если инфраструктура управляется централизованно.

Рольные чек-листы при работе с PGP

Для обычного пользователя:

  • Создать ключ и сохранить revoke.asc офлайн
  • Экспортировать публичный ключ и отправить контактам
  • Никому не рассылать приватный ключ

Для администратора безопасности:

  • Настроить политику длины ключа и срока действия
  • Внедрить процедуру верификации отпечатков ключей
  • Настроить инвентаризацию ключей и процедуру отзыва

Для разработчика/операций:

  • Настроить безопасную автоматизацию (секретные хранилища)
  • Проверять подписи артефактов сборки
  • Интегрировать GPG проверку в CI с изолированными секретами

Мини-методология безопасной передачи (шаги)

  1. Сгенерировать ключ и создать revoke.asc
  2. Экспортировать публичный ключ и подтвердить отпечаток по альтернативному каналу
  3. Получать и импортировать публичные ключи контактов и сверять отпечатки
  4. Шифровать письма/файлы, использовать ASCII-armor для текстов
  5. Отправлять зашифрованные файлы/блоки и убедиться, что получатель может расшифровать
  6. По необходимости отзывать ключ и оповестить контакты

Быстрый факт-бокс

  • Рекомендуемая длина RSA: 3072–4096 бит
  • Популярная современная альтернатива: Curve25519 (ECC)
  • Формат вывода для вставки в письмо: ASCII-armor (-a)
  • Формат для вложений: бинарный (.gpg)

Однострочный глоссарий

  • PGP: Pretty Good Privacy, стандарт шифрования сообщений
  • GnuPG/gpg: реализация OpenPGP для командной строки
  • Public Key: открытый ключ для шифрования
  • Private Key: приватный ключ для расшифровки
  • Fingerprint: отпечаток ключа для проверки подлинности

Примеры тестов и критерии приёмки

  • Тест 1: получатель с импортированным публичным ключом должен расшифровать зашифрованный текст и получить идентичный исходному файл.
  • Тест 2: после отзыва ключа старые сообщения остаются расшифровываемыми, но новые операции должны использовать обновлённые ключи.
  • Критерии приёмки: зашифрованный файл создаётся без ошибок и успешно расшифровывается целевым приватным ключом.

Заключение

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

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

Короткое пожелание: счастливого шифрования и аккуратного обращения с ключами!

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Jamboard в Google Meet: пошаговое руководство
Совещания

Jamboard в Google Meet: пошаговое руководство

Octolapse — таймлапсы 3D-печати: настройка
3D-печать

Octolapse — таймлапсы 3D-печати: настройка

Как полностью удалить программы в Windows
Windows

Как полностью удалить программы в Windows

Массово повернуть фото на iPhone
Фото

Массово повернуть фото на iPhone

Как обновить Nintendo Switch
Гайды

Как обновить Nintendo Switch

Клонирование Windows 10: Macrium Reflect — руководство
Руководства

Клонирование Windows 10: Macrium Reflect — руководство