Как получить другую парольную фразу для подраздела gpg?

Мне нужно автоматизировать процесс развертывания, и инструмент автоматически подпишет артефакты выпуска. У моего кольца ключей есть первичный ключ, который я использую только для создания подразделов, и два подраздела. Один подключ для подписи и один для шифрования.

В настоящее время существует одна парольная фраза для всех ключей. Я не хочу указывать эту парольную фразу в файле конфигурации, так как это также может поставить под угрозу первичный ключ.

Поэтому я решил установить другую парольную фразу для подключа, выполнив:

$ gpg --edit-key [subkey-id]
gpg> passwd
gpg> save

Но это изменило парольную фразу и для других ключей.

Как я могу установить отдельную фразу-пароль для отдельных ключей?

2 ответа

Настройка отдельных парольных фраз для подразделов невозможна в GnuPG. Но есть обходной путь, который в этом случае выглядит даже как хорошая практика:

  1. Экспорт подключа по выбору (в этом примере подключ имеет идентификатор 0xDEADBEEF). Не забывайте восклицательный знак, он гарантирует, что GnuPG действительно работает с самим подразделом, а не с первичным ключом, которому он принадлежит!

    gpg --export-secret-subkeys 0xDEADBEEF! >subkeys.pgp
    

    К подключу будут подключены открытый первичный ключ и закрытый первичный "ключ-заглушка", но не сам закрытый первичный ключ.

  2. Импортируйте подраздел в другой домашний каталог GnuPG. В примере предполагается, что вы находитесь в корневом каталоге вашего проекта и у вас есть папка etc для таких вещей, как этот брелок там.

    gpg --homedir ./etc/gnupg --import subkeys.pgp
    
  3. Измените парольную фразу разделенного подраздела.

    gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
    
  4. Вместо использования вашего "обычного" набора ключей всегда обращайтесь к отдельному каталогу GnuPG, как указано выше.

В качестве альтернативы вы можете рассмотреть возможность создания ключа проекта, который вы подписываете своим собственным ключом. Это может иметь преимущество в том, что другие участники / пользователи также могут подписывать ключ (и, таким образом, удостоверять, что это действительно ключ, используемый для проекта), и передача проекта может быть проще в случае, если кто-то другой возьмет на себя обслуживание.

Очень устаревший (2013) почтовый архив gnupg.org объясняет неловкий обходной путь для создания отдельного пароля для подраздела.
Это подразумевает, что ограничение находится не в структуре данных набора ключей (т. Е. В группе основных подразделов), а только в программном интерфейсе для создания и изменения набора ключей.

Цитата из ссылки:

Привет,

возможно ли иметь главный ключ и несколько подключей, причем подключи имеют другую (например, более короткую) ключевую фразу, чем главный ключ?

Вероятно, вы ищете автономный основной ключ (см. --Export-secret- subkeys). Но ответ: да. gpg-agent не заботится о подключении ключей. Он запрашивает даже один и тот же пароль несколько раз (для разных компонентов одного и того же ключа).

Но GnuPG не поддерживает это напрямую.

1) Экспорт секретного ключа (--export-secret-keys без --armor)

2) изменить пароль

3) Экспорт снова (в другой файл, конечно)

4) Используйте gpgsplit для обоих файлов (в разных каталогах). Результат выглядит так:

000001-005.secret_key 000002-013.user_id 000003-002.sig 000004-007.secret_subkey 000005-002.sig

5) Теперь вы смешиваете компоненты двух групп: mkdir комбинированный mv a / 000001 * a / 000002 * a / 000003 * комбинированный / mv b / 000004 * b / 000005 * комбинированный / cd комбинированный / cat *> different_passphrases.gpg

6) Удалить ключ из секрета: --delete-secret-key

7) Импортируйте новый: gpg --import different_passphrases.gpg

Хауке Лагинг

Я лично не подтвердил эту операцию - просто сообщил, что я прочитал.

Отсутствие спецификации и обсуждения в документации GnuPG по этой важной теме вызывает разочарование.

Даже если этот вопрос довольно старый, я хочу поделиться решением этой проблемы, с которой я тоже столкнулся.

Проблема: я хотел иметь отдельную парольную фразу для первичного ключа, которую я использую только для сертификации / создания [C] других суб ключей и прикрепленных суб ключей [S,E,A].

В начале есть только одна фраза-пароль для всех ключей, т.е. первичный и дополнительный ключи.

Я сделал резервную копию главного ключа в другом месте, выполнив:

$ gpg --list-secret-keys --with-keygrip

который показал мне клавиатуру (имя файла ключа под ~/.gnupg/private-keys-v1.d/<your-keygrip>.key) мастер-ключа.

Затем я переместил этот ключевой файл (и соответствующий сертификат отзыва) в другое место для резервной копии и, наконец, удалил ключ из ~/.gnupg/private-keys-v1.d/<your-keygrip>.key.

(Сертификат отзыва находится под ~/.gnupg/openpgp-revocs.d/<your-keygrip>.rev)

После выпуска gpg --list-secret-keys я мог видеть sec# на первичном ключе, что указывает на то, что ключа больше нет:

sec#  rsa4096/0x123123123123123 2018-02-01 [C] [expires: 2019-02-01]
      Key fingerprint = 123 123 123 123 123  123 123 123 123 123

Я только что отредактировал этот ключ:

gpg --edit-key <your-key-id>
gpg> passwd
gpg> save

Это запросит парольную фразу для каждого подключа, а затем позволит вам изменить ее.

В конце концов, у меня есть (более простая) кодовая фраза для моих дополнительных ключей, в то время как мой первичный ключ хранится вне сайта, защищенный начальной (более сильной) кодовой фразой.

Изменить: имейте в виду, что это работает только с GnuPG 2.1 и новее! В более старых версиях GnuPG вам придется экспортировать все свои ключи (первичный + вторичный), удалить их, а затем повторно импортировать только дополнительные ключи. Только начиная с версии 2.1 можно удалить только первичный ключ!

Другие вопросы по тегам