1

我已经开始学习 GPG,我对我找到的信息有点困惑。GnuPG文档

使用签名者的私钥创建签名

但是在Apache 的网站上,他们说:

签名文件是由公钥签名的原始文件的摘要......

同一个站点的另一个部分中,他们说以下内容:

数字签名是使用私钥从原始文档创建的。

现在我认为签名的过程涉及使用持有者的私钥而不是像 Apache 在我发布的第二个链接中所说的公共密钥对发布的哈希进行签名,还是我错了?否则,如果他/她没有持有者的私钥,他/她怎么能解密用公钥签名的发布的哈希?

那么,有人可以简单地解释一下签名和验证签名的过程包括哪些内容以及段落是什么,例如对于像Apache Maven这样的软件版本?

4

1 回答 1

1

TL;DR:文档中有一个错误,您对签名的理解是正确的。

签名文件是由公共 [原文如此,这应该是私有] 密钥签名的原始文件的摘要......

签署文件通常是通过计算文件的哈希和来执行的(对于大量数据,非对称加密非常慢),最终使用私钥加密,因此任何人都可以使用公钥解密它。如果解密过程产生的哈希和与从原始文档计算的哈希值相同,则它必须已使用私钥加密 - 只有签名者知道;因此作者身份得到验证。

加密(撇开像 OpenPGP 这样的混合密码系统的方面,但一般概念保持不变)以相反的方式工作;公钥用于加密,所以只有私钥可以用来解密信息。

为文档问题添加了一个错误报告(自 2015 年 7 月 29 日起关闭/修复)。

那么,有人可以简单地解释一下签名和验证签名的过程包括哪些内容以及段落是什么?例如对于像Apache Maven这样的软件版本-> https://maven.apache.org/download.cgi?Preferred= ftp://apache.mirrors.tds.net/pub/apache.org/

  1. 您需要获取用于签署软件的公钥(通常,您将使用gpg --recv-key [key-id].
  2. 验证密钥的完整性,例如通过与开发人员交谈、您的信任网络、产品 HTTPS 加密网站(取决于您在验证作者身份时的偏执程度)。
  3. 如果尚未通过您的信任网络验证密钥,则发出签名以验证密钥,如果您不想创建公共签名,则还有永远不会传输到密钥服务器网络的本地签名。
  4. 最后,用于gpg --verify检查签名确实是由产品维护者的密钥签发的。
于 2015-07-23T21:40:52.460 回答