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

16

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

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

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

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

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

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

Кшитиз Шарма
источник

Ответы:

14

Настройка отдельных парольных фраз для подразделов невозможна с 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, как указано выше.

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

Йенс Эрат
источник
1
Это не работает с GnuPG 2.2.4. Он не говорит «Нужен секретный ключ, чтобы сделать это». Очень грустно: '(
steinybot
Поэтому мне нужно использовать gpg-ключи без пароля для автоматической подписи репо?
SuperSandro2000
Нет, вы также можете предварительно кэшировать фразу-пароль, используя gpg-agent. Посмотрите на gpg-preset-passphrase.
Йенс Эрат
5

Очень устаревший (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 по этой важной теме вызывает разочарование.

Крейг Хикс
источник