Вопрос или проблема
При попытке настроить отдельный подсекрет на моем ключе GPG для подписывания (вместо использования самого первичного ключа), я был удивлен тем, что gnupg автоматически добавил дополнительный флаг использования “R” на новом подсекрете:
~: gpg --expert --edit-key AAAAAAAAAAAAA
sec rsa4096/AAAAAAAAAAAAA
created: 2017-01-01 expires: 2025-01-01 usage: SC
trust: ultimate validity: ultimate
ssb rsa4096/BBBBBBBBBBBBB
created: 2017-01-01 expires: 2025-01-01 usage: E
[ultimate] (1). <SNIP>
gpg> addkey
Пожалуйста, выберите, какой ключ вы хотите:
(3) DSA (только подпись)
(4) RSA (только подпись)
(5) Elgamal (только шифрование)
(6) RSA (только шифрование)
(7) DSA (настройте свои возможности)
(8) RSA (настройте свои возможности)
(10) ECC (только подпись)
(11) ECC (настройте свои возможности)
(12) ECC (только шифрование)
(13) Существующий ключ
(14) Существующий ключ с карты
Ваш выбор? 8
Возможные действия для этого RSA ключа: Подписать Зашифровать Аутентифицировать
Текущие разрешенные действия: Подписать Зашифровать
(S) Переключить возможность подписи
(E) Переключить возможность шифрования
(A) Переключить возможность аутентификации
(Q) Завершить
Ваш выбор? e
Возможные действия для этого RSA ключа: Подписать Зашифровать Аутентифицировать
Текущие разрешенные действия: Подписать
(S) Переключить возможность подписи
(E) Переключить возможность шифрования
(A) Переключить возможность аутентификации
(Q) Завершить
Ваш выбор? q
<SNIP>
sec rsa4096/AAAAAAAAAAAAA
created: 2017-01-01 expires: 2025-01-01 usage: SC
trust: ultimate validity: ultimate
ssb rsa4096/BBBBBBBBBBBBB
created: 2017-01-01 expires: 2025-01-01 usage: E
ssb rsa4096/CCCCCCCCCCCCC
created: 2024-11-06 expires: 2026-01-01 usage: SR
[ultimate] (1). <SNIP>
(<SNIP>
— это вывод, который я убрал для краткости)
Я посмотрел как в мануале, так и в texinfo gnupg, но не смог найти, что означает этот R
флаг. change-usage
тоже не показывает дополнительное использование.
Наши дружелюбные поисковые системы тоже не помогают с этой проблемой (они не хорошо работают с односимвольными ключевыми словами).
Так что же это за флаг? Как я могу создать подсекрет без него?
Флаг R
означает ограниченное шифрование, что означает, что ключ является дополнительным ключом для расшифровки (ADSK). ADSK предназначены для резервных ключей для конкретного ключа шифрования: когда отправитель шифрует данные с помощью подсекрета и использует актуальную версию GPG, данные автоматически шифруются также с помощью ADSK, чтобы оба соответствующих частных ключа могли их расшифровать. Это может быть полезно, если, например, вы хотите, чтобы кто-то другой прочитал ваши полученные данные, но не имел доступа к вашему частному ключу.
Я могу воспроизвести проблему в GPG 2.4.5, если я использую экспертный режим, а затем выбираю опцию “настройте свои возможности” в меню addkey
. По какой-то причине это всегда добавляет использование R
. Так как ADSK только для подписей не имеет смысла, это может быть ошибкой. Как обходное решение, выберите возможность непосредственно из меню или введите строку =S
(или любые другие возможности, которые вы хотите) при настройке своих возможностей.
Редактировать: Это действительно известная ошибка, исправленная в GnuPG 2.4.6.
Ответ или решение
Флаг "R" в GPG обозначает "restricted encryption", что переводится как "ограниченное шифрование". Этот флаг указывает на то, что создаваемый вами подписьной ключ является Дополнительным Ключом Дешифрования (ADSK – Additional Decryption Subkey). ADSK предназначен для резервного копирования определенного ключа шифрования: когда отправитель шифрует данные с использованием этого под-ключа и использует актуальную версию GPG, данные автоматически шифруются также с использованием ADSK, что позволяет использовать оба соответствующих закрытых ключа для дешифрования.
Контекст использования флага "R"
В вашем случае флаг "R" добавляется автоматически, когда вы используете опцию "установить свои собственные возможности" в меню addkey
в режиме эксперта. Это поведение может показаться нелогичным, особенно для подписи. Фактически создание подписьного ADSK не имеет смысла, так как он не предназначен для применения в таких ситуациях. Это может быть ошибкой в реализации, а подтверждения этому можно найти в документации и упоминаниях об этой проблеме в сообществе GnuPG.
Решение проблемы
Чтобы избежать добавления флага "R" при создании и использовании новых подписьных ключей, вы можете следовать нескольким рекомендациям:
-
Выбор возможностей непосредственно из меню: Вместо выбора "установить свои собственные возможности", выберите нужный тип ключа и его возможности прямо из предложенного списка. Это гарантирует, что не будет добавлен флаг "R".
-
Ввод возможности вручную: Вводите необходимые возможности, используя строку, например,
=S
, что позволит избежать использования неверных значений по умолчанию, включая флаг "R".
Заключение
Если вы столкнулись с этой проблемой и являетесь пользователем версии GnuPG 2.4.5, имейте в виду, что это — известный баг, который был исправлен в версии GnuPG 2.4.6. Обновление вашей версии GnuPG даст вам возможность избежать автоматически добавляемого флага "R" при создании новых подписьных ключей. Таким образом, соблюдая описанные рекомендации и обновляя программное обеспечение, вы сможете управлять своими ключами более эффективно и без неожиданных флагов.