PGP Tool

Учиться · 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 для публикации. Получатели подбирают новый субключ.

Старые сообщения по-прежнему расшифровываются старым субключом. Новые автоматически используют новый.