Как создать GPG-ключ: полное руководство
GPG (GnuPG, GNU Privacy Guard) — это свободная реализация стандарта OpenPGP. Он предоставляет асимметричное шифрование, цифровую подпись и средства для проверки подлинности сообщений. Ключ GPG — это пара ключей: публичный (для шифрования и проверки подписи) и приватный (для расшифровки и подписи). Ключи позволяют:
- зашифровать почту и файлы так, чтобы расшифровать мог только владелец приватного ключа;
- подписывать сообщения, чтобы доказать происхождение;
- строить «web of trust» — сеть доверия между пользователями.
Определение — GPG-ключ: пара криптографических ключей (публичный и приватный), связываемых с идентификатором пользователя (имя, email, комментарий).
Краткая история
GPG вырос из PGP — программы, созданной Филом Циммерманом (Phil Zimmermann) в начале 1990-х. PGP распространялся как исходники и привлёк внимание властей из‑за экспортных ограничений криптографии. Позже сообщество и Фонд свободного программного обеспечения развили GnuPG в соответствии со стандартом OpenPGP.
Важно понимать угрозную модель (кого вы защищаете и от кого). GPG хорошо подходит для:
- защиты электронной почты и файлов от пассивного перехвата;
- долгосрочного хранения зашифрованных архивов;
- ситуаций, где доверие можно установить через ключи.
Ограничения и случаи, когда GPG может не подойти:
- если вам нужна мгновенная синхронизация ключей и простота для неподготовленных пользователей — рассмотрите Signal или другие мессенджеры с end-to-end шифрованием;
- если вам нужен централизованный контроль ключей в организации — возможно, лучше S/MIME с корпоративными центрами сертификации;
- GPG сложнее настроить правильно для мобильных пользователей; в таких случаях используйте OpenKeychain и тщательно протестируйте сценарии.
Подходы к генерации ключей:
- графические клиенты: Kleopatra/Gpg4win (Windows), Kleopatra на Linux (KDE), Seahorse (GNOME);
- мобильные приложения: OpenKeychain (Android); на iOS доступны интеграции в почтовые клиенты или внешние утилиты;
- командная строка: gpg (универсально, подходит на серверах и рабочих станциях);
- аппаратные токены: YubiKey и другие USB/NFC-ключи для хранения приватных ключей.
Ниже — детальные инструкции и рекомендации, а также расширенные практики управления, ротации и инцидент-руководства.
Генерация GPG-ключа в Kleopatra (KDE / Gpg4win)
Kleopatra — удобный менеджер ключей, поставляемый в составе Gpg4win для Windows и доступный на Linux. Инструкция:
- Установите Kleopatra:
Для Debian/Ubuntu (APT):
sudo apt-get install kleopatraДля Red Hat/Fedora (RPM):
sudo yum install kleopatraНа Windows скачайте Gpg4win и установите его.
Запустите Kleopatra.
Файл → Новая пара ключей → Создать личную OpenPGP-пару ключей.
- Введите имя и email. Рекомендуется указывать реальные данные, если вы хотите, чтобы другие верили, что ключ принадлежит вам.
- В “Дополнительных настройках” увеличьте размер RSA до 4096 бит и при необходимости отметьте “Аутентификация” (если будете использовать ключ для SSH). Установите срок действия (рекомендуется 2–3 года для возможности ротации).
- Создайте сильную парольную фразу для защиты приватного ключа и дождитесь завершения генерации (процесс может занять несколько минут).
- Сделайте резервную копию приватного ключа и сгенерируйте сертификат отзыва (revocation certificate). При необходимости загрузите публичный ключ на сервер ключей или опубликуйте через WKD/HTTPS.
Важно: ключи, загруженные в публичные keyserver-сети, могут остаться там навсегда. Не публикуйте ключ, если не уверены в возможности отозвать его при потере приватного ключа.
Генерация GPG-ключа на Android с OpenKeychain
OpenKeychain — свободная программа для управления OpenPGP на Android.
- Установите OpenKeychain из F‑Droid или Google Play.
- Выберите “Create my key” (Создать ключ).
- Введите имя и email. При желании отметьте “Publish on keyservers” для публикации публичного ключа.
- Нажмите “Create key” и дождитесь завершения.
Командная строка даёт гибкость и прозрачность для серверов и опытных пользователей.
- Запуск стандартного мастера:
gpg --full-generate-key- Выберите тип ключа: обычно “RSA and RSA”.
- Установите размер ключа: введите “4096” для большей стойкости.
- Установите срок действия — срок важен для ротации. Рекомендуется 2–3 года.
- Введите имя и email, затем надежную парольную фразу.
После генерации получите идентификатор ключа (KEYID). Посмотреть ключи:
gpg --list-keysСписок секретных ключей с длинным форматом ID:
gpg --list-secret-keys --keyid-format LONGЭкспорт публичного ключа (ASCII-armored):
gpg --armor --export user@example.com > pubkey.ascЭкспорт приватного ключа (для резервного копирования — храните в защищённом месте):
gpg --armor --export-secret-keys KEYID > private.ascГенерация сертификата отзыва:
gpg --output revoke.asc --gen-revoke KEYIDЧтобы импортировать ключ на другом компьютере:
gpg --import pubkey.ascРекомендация: используйте мастер-ключ для подписи и управления и создайте отдельные под‑ключи для шифрования, подписи и аутентификации. Это позволяет периодически менять (роторить) под-ключи без изменения основного доверенного идентификатора.
Добавление под‑ключа (пример — через gpg –edit-key):
gpg --edit-key KEYID
addkey
# выбрать тип и размер, задать срок действия
saveАппаратные токены (например, YubiKey) позволяют хранить приватный ключ вне компьютера. Плюсы: приватный ключ никогда не покидает устройство, подписи/расшифровка происходят на токене. Минусы: стоимость, возможная потеря устройства, сложность бекапа.
- Используйте RSA 4096 или современный ECC (если вы понимаете совместимость). ECC (Curve25519, Ed25519) даёт более короткие ключи и хорошую производительность.
- Всегда создавайте revocation certificate и храните его отдельно (например, зашифрованный резерв на USB в сейфе).
- Бэкап приватного ключа в зашифрованном виде (например, LUKS/BitLocker/гпг‑зашифрованный файл).
- Установите срок действия ключа и регулярно обновляйте/ротуйте под‑ключи.
- Ограничьте публикацию публичного ключа до необходимых каналов: WKD (Web Key Directory) и корпоративные каталоги предпочтительнее старых SKS-сетей.
- В многопользовательской среде используйте централизованные способы распространения публичных ключей и политики отзыва.
Если приватный ключ скомпрометирован:
- Немедленно опубликуйте сертификат отзыва (revocation) на тех же каналах, где публиковали ключ.
- Проинформируйте контакты и службы, которые полагались на ключ.
- Отозвав ключ, создайте новый ключ и опубликуйте его.
Создание сертификата отзыва заранее — критичный шаг. Если вы потеряете приватный ключ и у вас нет revocation, ключ останется действительным до истечения.
- SKS keyserver-сеть устарела: данные там трудно удалить и возможны проблемы синхронизации.
- WKD (Web Key Directory) и HTTPS-публикация предпочтительнее для современных почтовых решений.
- Можете просто отправить публичный ключ по email или разместить на вашем веб‑сервере.
Важно помнить: публичный ключ — это не секрет, но публикация должна сопровождаться возможностью отзыва и хорошими метаданными (таскающая подпись или подтверждение).
Если GPG кажется вам слишком громоздким, рассмотрите:
- Signal или другие мессенджеры с end-to-end шифрованием — просты в использовании для общения;
- age — современный инструмент для шифрования файлов (простой и безопасный);
- S/MIME — интегрирован в корпоративные почтовые системы.
- Парольная фраза для приватного ключа должна быть длинной и уникальной (несколько слов, фраза 20+ символов).
- Используйте менеджер паролей для хранения сильных фраз.
- Никогда не храните приватный ключ в облаке в открытом виде.
Чтобы считать процесс генерации и настройки ключа успешным, проверьте:
- приватный ключ защищён и сохранён в безопасном бэкапе;
- создан и сохранён сертификат отзыва;
- публичный ключ экспортирован и, при необходимости, опубликован;
- можно подписать и расшифровать тестовое сообщение между устройствами;
- срок действия ключа установлен и понятен план ротации.
Пользователь (конечный пользователь):
- сгенерировать ключ RSA 4096 или ECC;
- создать revocation certificate и положить в сейф;
- экспортировать публичный ключ и отправить контакту;
- протестировать шифрование/подпись с коллегой.
Администратор (организация):
- настроить централизованный каталог ключей или WKD;
- утвердить политику сроков действия и ротации;
- обучить сотрудников процедурам восстановления и отзыву;
- обеспечить безопасное хранение резервов приватных ключей в HSM при необходимости.
flowchart TD
A[Нужно шифровать/подписывать?] -->|Да| B[Есть аппаратный токен?]
B -->|Да| C[Использовать YubiKey, хранить мастер-ключ оффлайн]
B -->|Нет| D[Использовать GPG: 4096 RSA или ECC]
D --> E{Будет ли публиковаться на keyserver?}
E -->|Да| F[Публикуйте через WKD или аккуратно на выбранный сервер]
E -->|Нет| G[Отправлять публичный ключ напрямую контактам]
A -->|Нет| H[Рассмотреть альтернативы: age, Signal]- Потеря приватного ключа: риск высокий — смягчение: revocation certificate, зашифрованные бэкапы.
- Кража приватного ключа: риск критический — смягчение: хранение на токене, сильная парольная фраза.
- Некорректная публикация: риск средний — смягчение: контролируемая публикация (WKD), уведомления.
- Генерация (CLI): gpg –full-generate-key
- Список ключей: gpg –list-keys
- Экспорт публичного: gpg –armor –export user@example.com > pubkey.asc
- Экспорт приватного: gpg –armor –export-secret-keys KEYID > private.asc
- Импорт: gpg –import pubkey.asc
- Генерация отзыва: gpg –output revoke.asc –gen-revoke KEYID
- публичный ключ — открытая часть пары ключей, используется для шифрования и проверки подписи;
- приватный ключ — секретная часть, используется для подписи и расшифровки;
- revocation certificate — файл, который отзывает ключ, если он скомпрометирован;
- WKD — Web Key Directory, способ публикации ключей через HTTPS;
- subkey (под‑ключ) — дополнительный ключ для отдельной роли (шифрование/подпись).
- При переходе с RSA на ECC проверьте поддержку в почтовых клиентах получателей.
- Для корпоративной миграции разработайте план ротации: синхронная публикация новых ключей, обновление MUA (mail user agent) и обучение пользователей.
- отсутствует revocation certificate — при потере приватного ключа вы не сможете отозвать публичный ключ;
- слабая парольная фраза — приватный ключ легко подбирается;
- публикация ключа без метаданных — пользователи не узнают, кому именно принадлежит ключ;
- использование неподдерживаемых алгоритмов — проблемы совместимости с другими клиентами.
GPG остаётся мощным инструментом для защиты почты и файлов. Для большинства пользователей достаточно сгенерировать ключ RSA 4096 бит, создать revocation certificate, экспортировать публичный ключ и протестировать шифрование. Для повышенной безопасности используйте аппаратные токены, разделяйте роли с под‑ключами и внедрите политику ротации.
Важные заметки:
- всегда храните revocation certificate в надёжном месте;
- продумывайте план ротации и бэкапов;
- выбирайте способ публикации публичного ключа с учётом приватности и управляемости.