需要帮助导入新的公钥

需要帮助导入新的公钥

我是 GnuPG 的新用户。在阅读了《GNU 隐私手册》和几篇博客后,我对公钥和私钥以及信任网络的概念非常熟悉。但是,如果我刚开始使用空的密钥环和信任数据库,并且需要检查从互联网上下载的新文件,我不知道该怎么做。

例如,我想从源代码编译 Emacs。我从其网站下载了两个文件Gnu Emacsemacs-25.3.tar.gz.sigemacs-25.3.tar.gz。我检查了签名并得到了以下输出:

gpg: Signature made Mon 11 Sep 2017 20:52:45 BST
gpg:                using RSA key 28D3BED851FDF3AB57FEF93C233587A47C207910
gpg: Can't check signature: No public key

由于某种原因,我无法检索密钥“7C207910”,如 gpg 所述:

[fw@localhost~ ]$ gpg --recv-keys 7C207910
gpg: Note: signatures using the SHA1 algorithm are rejected
gpg: key 0x233587A47C207910: 19 signatures not checked due to missing keys
gpg: key 0x233587A47C207910: 10 bad signatures
gpg: key 0x233587A47C207910: no valid user IDs
gpg: this may be caused by a missing self-signature
gpg: Total number processed: 1
gpg:           w/o user IDs: 1

经过验证,我发现该密钥属于 Nicolas Petton,其密钥 ID 以 结尾7C207910。我猜如果我从密钥服务器收到密钥,我就会知道它的指纹。如果网站上的指纹和我新收到的密钥上的指纹都匹配,这足以确认密钥属于 Nicolas Petton 吗?这些信息足以确认密钥并将其信任设置为完全吗?

你的日常生活是怎样的?

谢谢

答案1

您或您的发行版已将该选项添加weak-digest SHA1到 GnuPG 配置 ( ~/.gnupg/gpg.conf),导致其拒绝使用 SHA-1 生成的签名,认为其“弱”。 (默认情况下,仅拒绝 MD5。SHA-1 仍然可以接受,但只是勉强可以接受。)

如果没有该选项,预期输出是:

$ gpg --recv-keys 28D3BED851FDF3AB57FEF93C233587A47C207910
gpg:密钥 233587A47C207910:公钥“Nicolas Petton <[电子邮件保护]>” 已导入
gpg:所需边际:3 所需完成:1 信任模型:pgp
gpg:深度:0 有效:2 签名:9 信任:0-,0q,0n,0m,0f,2u
gpg:深度:1 有效:9 签名:78 信任:3-,0q,0n,6m,0f,0u
gpg:深度:2 有效:68 签名:18 信任:31-,20q,2n,15m,0f,0u
gpg:深度:3 有效:2 签名:2 信任:1-,1q,0n,0m,0f,0u
gpg: 下次 trustdb 检查将于 2018-06-25 进行
gpg: 处理总数:1
gpg:已导入:1

我想如果我从密钥服务器收到密钥,我就会知道它的指纹

不一定。您还不知道您收到的是真正的密钥,还是恰好有相同密钥 ID 的其他密钥。“短”(8 位)密钥 ID 是非常很容易复制,而“长”(16 位)的密码的未来也不容乐观。如果你已经知道指纹后,应该直接将其与--recv-keys和其他命令一起使用。

无论如何,你都不应该获取指纹密钥服务器;这种做法完全违背了指纹验证的意义。

这些信息是否足以确认密钥并将其信任设置为完全?

是也不是。你可以确认密钥有效,但设置密钥的信任并不是一回事——它实际上让该密钥有助于验证其他密钥(这就是“信任网络”的构建方式)。

如果您不认识此人(或者特别是不知道他们的 PGP 实践),您不应该信任他们的密钥。只需将密钥标记为有效即可,--lsign-key <fingerprint>如果您希望仅将其保留在本地,则使用--sign-key;如果您希望发布“确认”,则使用。

相关内容