Структура хранения ключей
1. База данных и структура хранения GnuPG на компьютере
GnuPG не использует единую базу данных в традиционном понимании (как SQLite или MySQL). Вместо этого он использует набор файлов в специальном каталоге (обычно ~/.gnupg/
в Linux/macOS или %APPDATA%\gnupg
в Windows). Это портативная и простая в резервном копировании структура.
Вот ключевые файлы и их назначение:
Файл / Каталог | Назначение и описание |
---|---|
~/.gnupg/ |
Домашний каталог GnuPG. Основное место хранения всех данных. Его местоположение можно изменить через переменную окружения GNUPGHOME или опцию --homedir . |
pubring.kbx |
Основной файл с открытыми ключами (публичными). Это ключевой файл в современном формате “keybox” (KBX), который используется по умолчанию в версиях GnuPG 2.1 и новее. Хранит импортированные открытые ключи. |
trustdb.gpg |
База данных доверия (Trust DB). Это самая близкая к “базе данных” часть. Она не содержит самих ключей, а хранит информацию о уровне доверия, который вы назначили владельцам ключей (например, “полное”, “ограниченное”, “недоверенное”), и вычисленные на основе этой информации валидности ключей (ultimate, full, marginal, expired, revoked и т.д.). |
private-keys-v1.d/ |
Каталог с секретными ключами. Это очень важный каталог. В современных версиях каждый секретный ключ (закрытый) хранится в отдельном файле с расширением .key . Файлы зашифрованы с использованием вашей парольной фразы. Это то, что нужно бэкопировать в первую очередь и максимально защищать! |
openpgp-revocs.d/ |
Каталог с предварительно сгенерированными отзывными сертификатами. Когда вы создаете новый ключ, GnuPG автоматически генерирует сертификат для его отзыва (чтобы вы могли объявить ключ недействительным, если забыли пароль или потеряли доступ к нему). Имена файлов соответствуют отпечаткам ключей. |
gpg.conf |
Главный файл конфигурации для команды gpg . Сюда можно прописать все часто используемые опции (например, используемый keyserver, алгоритмы по умолчанию и т.д.). |
dirmngr.conf |
Файл конфигурации для dirmngr — демона, отвечающего за взаимодействие с keyserver-ами и проверку сертификатов OCSP. |
gpg-agent.conf |
Файл конфигурации для gpg-agent — демона, который управляет секретными ключами, кэширует парольные фразы и обеспечивает безопасность их использования. |
Устаревшие файлы (встречаются в старых системах или после обновления):
pubring.gpg
,secring.gpg
: Публичные и секретные ключи в старом формате. Современные версии GnuPG (>2.1) используютpubring.kbx
и каталогprivate-keys-v1.d/
вместоsecring.gpg
.
Как это работает вместе?
- Когда вы выполняете
gpg --list-keys
, программа читает список открытых ключей изpubring.kbx
. - Когда вы проверяете подпись,
gpg
сверяется сtrustdb.gpg
, чтобы узнать, насколько ключ, которым подписан файл, валиден с точки зрения вашей сети доверия. - Когда вы подписываете или расшифровываете что-либо,
gpg
обращается кgpg-agent
. gpg-agent
находит нужный секретный ключ в каталогеprivate-keys-v1.d/
, запрашивает у вас пароль для его расшифровки (если он еще не закэширован) и выполняет криптографическую операцию.
2. Что устанавливается при установке GnuPG
При установке GnuPG (пакет gnupg
, gnupg2
или установщик для Windows) устанавливается не одна программа, а целый набор взаимосвязанных компонентов:
Компонент | Назначение |
---|---|
gpg / gpg2 |
Основная программа (бинарник). Это командная утилита, с которой взаимодействует пользователь. Именно она вызывает все остальные компоненты для выполнения задач. В версиях 2.x основной бинарник называется gpg2 , но часто существует символьная ссылка gpg на него для совместимости. |
gpg-agent |
Агент управления ключами. Это фоновый процесс (демон), который: • Управляет секретными ключами. • Кэширует введенные парольные фразы в течение заданного времени (чтобы не вводить пароль каждый раз). • Перенаправляет запросы на ввод пароля на правильный PIN-entry. Это ключевой компонент для безопасности и удобства. |
gpg-connect-agent |
Утилита для отладки и отправки команд gpg-agent у напрямую. |
gpgconf |
Утилита для управления конфигурацией runtime-процессов GnuPG (например, для перезагрузки агента или просмотра используемых опций). |
dirmngr |
Менеджер каталогов. Еще один фоновый процесс, который отвечает за: • Связь с keyserver-ами (получение ключей, отправка ключей, поиск). • Проверку отозванных сертификатов (CRL/OCSP) для технологии S/MIME (используется в gpgsm ). |
gpgsm |
Утилита для работы с сертификатами S/MIME (стандарт, часто используемый в почтовых клиентах). Работает с X.509 сертификатами, а не с OpenPGP ключами. |
gpgparsemail , gpgscm и др. |
Вспомогательные скрипты и утилиты для обработки почты и тестирования. |
pinentry-* |
Набор программ для ввода пароля. Это отдельные пакеты (например, pinentry-gtk2 , pinentry-qt , pinentry-curses , pinentry-tty ), которые должны быть установлены вместе с GnuPG. Агент gpg-agent вызывает pinentry , чтобы показать графический или текстовый диалог ввода пароля. Это сделано для изоляции и безопасности — сам gpg-agent не имеет доступа к дисплею. |
Итог:
Установка GnuPG — это установка целой экосистемы (gpg
, gpg-agent
, dirmngr
), которая работает вместе, чтобы предоставить полнофункциональную криптографическую инфраструктуру. Данные хранятся в виде набора файлов в домашнем каталоге, а не в единой монолитной базе, что упрощает резервное копирование и перенос.