签名的 git 标签有多安全?特别是因为 git 使用 SHA-1。周围有相互矛盾的信息。
git tag -v tagname
因此,如果一个人验证了一个 git 标签checksout
(git status
它是否仅与 SHA-1 一样安全?
让我们假设一个能够产生 SHA-1 冲突的对手。
Git 使用 SHA-1 不是为了安全
继续。
安全部件在别处
你能详细说明一下吗?安全部件在哪里?你能简要解释一下这些是如何工作的吗?我在哪里可以阅读更多关于此的信息?
尽管如此,如果没有 SHA-1 签名的提交和标签的第二个原像电阻,它们将不再保护存储库的状态,因为它们只对 Merkle 树的根进行签名。
这与 Linus Torvalds 所说的相矛盾。这对安全意味着什么?哪个论述是对的?
资料来源:
源代码控制管理系统 Git 使用 SHA-1 不是为了安全,而是为了确保数据不会因意外损坏而更改。Linus Torvalds 说过,“如果你有磁盘损坏,如果你有 DRAM 损坏,如果你有任何类型的问题,Git 会注意到它们。这不是是否的问题,而是保证。你可以让人们尝试是恶意的。他们不会成功。[...] 没有人能够破解 SHA-1,但关键是 SHA-1,就 Git 而言,甚至不是安全功能。纯粹的一致性检查。安全部分在其他地方,所以很多人认为由于 Git 使用 SHA-1 而 SHA-1 用于加密安全的东西,他们认为,好吧,这是一个巨大的安全功能。它什么都没有完全与安全有关,它' s 只是你能得到的最好的哈希值。[...] 我向你保证,如果你将数据放在 Git 中,你可以相信五年后,在它从你的硬盘转换为 DVD 到任何新技术并且你复制它之后,五年后您可以验证您取回的数据与您输入的数据完全相同。[...] 我关心内核的原因之一是,我们闯入了人们试图访问的 BitKeeper 站点之一损坏内核源代码存储库。”
更新:从Git Horror Story: Repository Integrity With Signed
Commits 的作者 Mike Gerwitz 那里得到了详细的回答:
https://forums.whonix.org/t/security-git-general-verification-verifying-whonix-submodules/513/12