Учиться · 6 мин. чтения
Субключи OpenPGP — объяснение
Современные ключи OpenPGP — это первичный ключ плюс субключи. Вот что делает каждый и почему разделение важно.
Современный OpenPGP-«ключ» — это набор: один первичный ключ плюс субключи. Первичный подписывает и сертифицирует. Субключи выполняют ежедневные операции шифрования и подписи. Это разделение — одна из немногих однозначно хороших операционных практик в PGP.
Зачем нужны субключи
Первичный ключ несёт вашу идентичность — его отпечаток является тем, что другие проверяют, публикуют и подписывают на встречах по подписанию ключей. Ротация первичного ключа уничтожает всё накопленное доверие.
Ключи используются на устройствах, где они могут быть скомпрометированы. Если ежедневно используемые ключи — это первичный ключ, одно взломанное устройство уничтожает всё.
Субключи решают эту проблему. Первичный остаётся холодным (офлайн). Субключи идут на повседневные устройства. Если субключ скомпрометирован, отзывается только он; первичный подписывает замену; идентичность продолжается.
Три роли субключей
- Подписание (S) — подписи на сообщениях, файлах, коммитах, релизах.
- Шифрование (E) — получение зашифрованных сообщений.
- Аутентификация (A) — используется как SSH-ключ через gpg-agent. Необязательно.
Каждая роль может иметь несколько субключей, разные алгоритмы и независимые сроки действия.
Поведение по умолчанию
Большинство инструментов (GPG, OpenPGP.js, это приложение) автоматически создают первичный ключ + субключ шифрования + субключ подписи.
Для обычного пользователя настройка по умолчанию подходит. Для долгосрочной гигиены: холодный первичный (только Certify), онлайн-субключ для подписи, онлайн-субключ шифрования, необязательный субключ аутентификации.
Практический рабочий процесс с GPG
Паттерн с офлайн-первичным ключом:
gpg --quick-generate-key "Alice <[email protected]>" ed25519 cert never
gpg --edit-key [email protected]
> addkey # подписание
> addkey # шифрование
> addkey # аутентификация
> save
Экспортируйте первичный ключ на USB, храните офлайн, удалите из ежедневной связки ключей. Повседневные операции выполняются только с субключами.
Ротация субключа
- Подключите офлайн-первичный ключ.
- addkey для создания нового субключа.
- Опционально revkey старый.
- gpg --send-keys для публикации. Получатели подбирают новый субключ.
Старые сообщения по-прежнему расшифровываются старым субключом. Новые автоматически используют новый.