Считается ли вредным помещение параметра конфигурации Git «user.signingKey» под контроль версий?

Я подписываю свои коммиты Git, поэтому мой .gitconfig выглядит так:

[commit]
    gpgsign = true
[user]
    name = myUser
    email = [email protected]
    signingkey = 0123456789012345
[credential "https://github.com"]
    username = myUser

Теперь мне интересно, считается ли небезопасным/проблемным размещение этого файла в моем репозитории dotfiles, думая об утечке чего-то секретного с помощью user.signingKey.

Идентификатор ключа уже является общедоступной информацией.

knittl 16.07.2024 14:09

@knittl, не могли бы вы рассказать, почему закрытый ключ, используемый для подписи коммита, уже является общедоступной информацией?

mu88 17.07.2024 09:02

Это не закрытый ключ, это всего лишь идентификатор пары ключей. Это тот же идентификатор, который вы бы использовали для поиска ключа на сервере ключей.

knittl 17.07.2024 09:39

Спасибо, если вы хотите оставить свой комментарий в качестве ответа, я буду рад проголосовать за него :)

mu88 17.07.2024 10:23

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

knittl 22.07.2024 12:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Значение конфигурации user.signingKey в любом случае является общедоступной информацией, ее нет необходимости защищать. Пара ключей имеет (публичный) идентификатор, и это то, что вы указываете здесь. Идентификатор ключа состоит из последних цифр отпечатка ключа.

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

$ cat pubkey.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----

mDMEZp4m9RYJKwYBBAHaRw8BAQdAc5jOgXWQzjPnItp5zcWU/n3WpTAz+S99pGRE
imywNrS0LlN0YWNrb3ZlcmZsb3cgdGVzdCA8c3RhY2tvdmVyZmxvd0BleGFtcGxl
LmNvbT6ImQQTFgoAQRYhBGTh7pBxpq8gEzm/V/f2YL5/m0PDBQJmnib1AhsDBQkF
o5qABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEPf2YL5/m0PDuyYBAIBV
NFxX1CsbfOgB24GWPAG3crJIdGTioF8FFQNgc4jDAP99tAO0ATb/VTO/YQAfNxmU
y4sqHrbfH8++5w3RSLKZCLg4BGaeJvUSCisGAQQBl1UBBQEBB0AbNLuD+F890q7Y
yGA/N6fflVjlhVJsDI35UhBQed28LwMBCAeIfgQYFgoAJhYhBGTh7pBxpq8gEzm/
V/f2YL5/m0PDBQJmnib1AhsMBQkFo5qAAAoJEPf2YL5/m0PDriEA/Aj6BQV6u1FR
ci+bu/o+l2Ln4J7ZzZgTa9vGOpFeixQKAP4o2/mOCsqbRYbxTuN3XDpfoY5S+Mp0
ljDuSZD1dL7FCQ==
=9D88
-----END PGP PUBLIC KEY BLOCK-----

Вы можете тривиально извлечь идентификатор ключа из открытого ключа с помощью gpg:

$ gpg --show-keys pubkey.asc 
pub   ed25519 2024-07-22 [SC] [expires: 2027-07-22]
      64E1EE9071A6AF201339BF57F7F660BE7F9B43C3
uid           Stackoverflow test <[email protected]>
sub   cv25519 2024-07-22 [E] [expires: 2027-07-22]
$ # or (unsecure, short ids):
$ gpg --list-packets < pubkey.asc | grep keyid:
    keyid: F7F660BE7F9B43C3
    keyid: 350EFC87BA3DB5D9

(один идентификатор ключа и один идентификатор ключа для дополнительного ключа)

Или посмотрев на необработанные данные:

$ < pubkey.asc sed -n '/^$/,/=/p' | base64 -d | xxd | head
00000000: 9833 0466 9e26 f516 092b 0601 0401 da47  .3.f.&...+.....G
00000010: 0f01 0107 4073 98ce 8175 90ce 33e7 22da  [email protected].".
00000020: 79cd c594 fe7d d6a5 3033 f92f 7da4 6444  y....}..03./}.dD
00000030: 8a6c b036 b4b4 2e53 7461 636b 6f76 6572  .l.6...Stackover
00000040: 666c 6f77 2074 6573 7420 3c73 7461 636b  flow test <stack
00000050: 6f76 6572 666c 6f77 4065 7861 6d70 6c65  overflow@example
00000060: 2e63 6f6d 3e88 9904 1316 0a00 4116 2104  .com>.......A.!.
00000070: 64e1 ee90 71a6 af20 1339 bf57 f7f6 60be  d...q.. .9.W..`.
00000080: 7f9b 43c3 0502 669e 26f5 021b 0305 0905  ..C...f.&.......
00000090: a39a 8005 0b09 0807 0202 2202 0615 0a09  ..........".....

Если вы посмотрите на смещение 0x70, вы снова узнаете отпечаток пальца/идентификатор ключа (64E1EE9071A6AF201339BF57F7F660BE7F9B43C3):

          vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00000070: 64e1 ee90 71a6 af20 1339 bf57 f7f6 60be  d...q.. .9.W..`.
00000080: 7f9b 43c3 0502 669e 26f5 021b 0305 0905  ..C...f.&.......
          ^^^^^^^^^

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