GPG: шифрование, подписи и работа с ключами | Глоссарий FREEHOSTING

GPG

GNU Privacy Guard
GPG — GPG (GNU Privacy Guard) — свободная реализация стандарта OpenPGP для шифрования файлов, писем и проверки цифровых подписей. Использует пары ключей RSA, DSA или EdDSA, поддерживает кольца ключей, web of trust и подписывает коммиты в Git и пакеты в Linux-дистрибутивах.

Определение простыми словами

GPG — это «швейцарский нож» для асимметричной криптографии в командной строке. С его помощью вы шифруете файл так, что прочитать его сможет только владелец конкретного открытого ключа, или подписываете архив, чтобы получатель убедился: бинарник пришёл именно от вас. На GPG держится вся система проверки пакетов в Debian, Ubuntu, Fedora и Arch — без подписи репозитория apt просто откажется устанавливать обновления.

Каждый ключ GPG имеет уникальный отпечаток (fingerprint) и user ID. Открытые ключи распространяются через keyserver-сети (keys.openpgp.org) или прикладываются к сайту проекта. Хранение закрытого ключа — критично: его обычно держат на отдельном носителе или в смарт-карте YubiKey, а на рабочей машине лежат только подключи (subkeys) для повседневной работы.

Сравнение операций

Операция Команда Что делает
Создать ключ gpg —full-gen-key Интерактивная генерация
Зашифровать gpg -e -r user@x Файл читает только адресат
Подписать gpg —sign file Прикрепляет подпись
Проверить gpg —verify file.sig Сверяет с открытым ключом
Импорт gpg —import key.asc Добавляет в локальное кольцо

Кейсы использования

  • Подписание Git-коммитов: GitHub отображает зелёную метку Verified.
  • Шифрование резервных копий перед загрузкой в S3 или другое облако.
  • Передача паролей и токенов команде через зашифрованные файлы.
  • Негативный сценарий: потеря закрытого ключа без revoke-сертификата — расшифровать архивы будет невозможно. Готовьте revoke и резервную копию ключа сразу после генерации.

Технические детали

gpg --full-gen-key
gpg --list-secret-keys --keyid-format=long
gpg --export --armor user@example.com > pub.asc
gpg --import colleague.asc
gpg --encrypt --armor -r user@example.com secrets.txt
gpg --decrypt secrets.txt.asc
git config --global commit.gpgsign true
git config --global user.signingkey ABCD1234EF567890

В стандарте OpenPGP (RFC 9580) появилась поддержка современных кривых Curve25519 и Ed25519 — это стоит учитывать при выпуске новых ключей. Смежные технологии — PGP, OpenSSL и ssh-keygen.

Частые вопросы

Чем GPG отличается от PGP?

PGP — коммерческий продукт компании Symantec. GPG — свободная реализация того же стандарта OpenPGP, доступная под лицензией GPL.

Можно ли восстановить забытый пароль ключа?

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

Зачем подписывать коммиты в Git?

Подпись доказывает, что коммит сделал владелец ключа, а не кто-то с украденным паролем GitHub. На крупных проектах это уже требование.