繁体   English   中英

当使用 GPG 对 git 提交进行签名时,究竟签署了什么?

[英]When using GPG to sign git commits, what exactly is being signed?

如果我使用 GPG 签署提交( https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work )然后检查我刚刚创建的提交 object 的内容:

git commit -a -S -m "This is a Signed commit"
git cat-file -p HEAD

我得到:

tree 1265193cc831c2bd47cedbb27f029e5d45fa0bb039d5bb5136f152a3e88c07b0
parent 16625976433ec56a26feb1478051b28b78684a3d68f475221afcfae2a7aaaa0d
author John Doe <john.doe@internet.www> 1612379624 +0100
committer John Doe <john.doe@internet.www> 1612379624 +0100
gpgsig-sha256 -----BEGIN PGP SIGNATURE-----

 iQGzBAABCAAdFiEELgGt+L8yg4keIDJDpyYj1XHdLa8FAmAa9egACgkQpyYj1XHd
 La+BogwA0VEoobCJPRLk2olHzW6iO9ioyxIrrW6uPAcLv6uernxrGDK6odYuywED
 XeVEu3L9/HLG8MYSqgAGKDWfiOphRi5Lw1fLnSA3MNC1uh18OqdmD/PjyP9hMnbC
 XayugJJ2dPkUHADxeDoQOGHg6wmfn+/4IsHit74YsAYXcDz1/QIHrEGMPCwROGCX
 Nb1srMw2/8e+NM9U5h5KSw5ZYmBtSynIWCsHBC2w8eqvuhKMmKxbGV3izV7eOTfl
 R8aC2FJSuSd/MhGprAki2sW1efiNr1EJNt/hvP2S9Eq/fkLUlVuWk5cyg/8tDJX5
 VQO5RqCTR/Yz5mleoKMOeBBARzWK/r1l0bVQZYoraO8I8zxuLt5gkxqvqTOrhOKy
 uTX58BdQHSlx1fU02UuPruimpbSZOBhwPFeVXl8Kj3zUWLNpTeQXZ/MSNZOiR1qF
 xMdqKbuzh53B3tqvd02Cy7jdIssT8DwLM5V3IjYfv/GG/iQOE7BHGxYbPgEkv4e6
 KvUBxEjj
 =8gBZ
 -----END PGP SIGNATURE-----

This is a Signed commit

正在签署的摘要到底是什么? 如果签名嵌入在提交 object 中,那么它几乎不可能是提交 hash 本身 - 那么它是树 hash 吗? 或者是其他东西? 这是否反过来意味着提交消息没有签名并且可能被篡改?

Note: I'm using a git repository here that was initialized with --object-type sha256 to use SHA-256 based hashes (by default git uses SHA-1), but my question applies to git repositories with SHA-1 hashes as好吧(如果 gpg 签名对 SHA-1 和 SHA-256 存储库的工作方式不同)

您要签名的数据是提交或标记 object 的全部内容,减去以gpgsig开头的任何多行标头的内容,以及在标记的情况下,尾随标记签名的内容。 因此,基本上 object 的内容减去签名部分本身。 这包括消息。

请注意,object 的 hash包含签名,因此除非您重写历史记录,否则无法删除或更改(或添加其他签名)签名。

Git 2.30 及之前的版本有一个错误,他们会错误地将具有多个签名的提交或标记标记为无效。 下一个版本中可能会包含一个补丁来解决这个问题。

如果您将没有签名部分的提交放入名为commit的文件中,并将签名部分(减去前导空格)放入名为commit.asc的文件中,则可以使用gpg --verify commit.asc验证签名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM