Я подписываю свои коммиты Git, поэтому мой .gitconfig
выглядит так:
[commit]
gpgsign = true
[user]
name = myUser
email = [email protected]
signingkey = 0123456789012345
[credential "https://github.com"]
username = myUser
Теперь мне интересно, считается ли небезопасным/проблемным размещение этого файла в моем репозитории dotfiles, думая об утечке чего-то секретного с помощью user.signingKey
.
@knittl, не могли бы вы рассказать, почему закрытый ключ, используемый для подписи коммита, уже является общедоступной информацией?
Это не закрытый ключ, это всего лишь идентификатор пары ключей. Это тот же идентификатор, который вы бы использовали для поиска ключа на сервере ключей.
Спасибо, если вы хотите оставить свой комментарий в качестве ответа, я буду рад проголосовать за него :)
Я добавил ответ с некоторыми доказательствами того, что идентификатор ключа действительно является общедоступной информацией.
Значение конфигурации 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.&.......
^^^^^^^^^
Идентификатор ключа уже является общедоступной информацией.