![需要帮助导入新的公钥](https://linux22.com/image/1560815/%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9%E5%AF%BC%E5%85%A5%E6%96%B0%E7%9A%84%E5%85%AC%E9%92%A5.png)
我是 GnuPG 的新用户。在阅读了《GNU 隐私手册》和几篇博客后,我对公钥和私钥以及信任网络的概念非常熟悉。但是,如果我刚开始使用空的密钥环和信任数据库,并且需要检查从互联网上下载的新文件,我不知道该怎么做。
例如,我想从源代码编译 Emacs。我从其网站下载了两个文件Gnu Emacs:emacs-25.3.tar.gz.sig
和emacs-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
;如果您希望发布“确认”,则使用。