我试图弄清楚应该如何安全地使用PGP,但是令人惊讶的是,很难找到关于该主题的连贯和有用的信息。
因此,SKS密钥服务器将提供其HKPS证书以及以下信息:
79:1B:27:A3:8E:66:7F:80:27:81:4D:4E:68:E7:C4:78:A4:5D:5A:17
E4 C3 2A 09 14 67 D8 4D 52 12 4E 93 3C 13 E8 A0 8D DA B6 F3
我所能拥有的只是gpg (GnuPG) 2.2.10
互联网接入。
我的问题是:
首先,请注意,您可以完全跳过整个过程,因为SKS池CA证书与最新的GnuPG发行版捆绑在一起-通常位于/usr/share/gnupg/sks-keyservers.netCA.pem
。
其次,请注意,使用HKPS不会对池中保存的数据进行身份验证。这只是一种隐私措施(以防止您的整个钥匙圈被--refresh-keys泄露)。但是从密钥服务器中检索到的实际PGP密钥块仍必须像往常一样进行验证。也就是说,您仍然必须验证每个导入密钥的指纹,或者依赖于Web-of-Trust或GnuPG的tofu.db。
所以说到:
我如何确定应该从密钥服务器单独下载谁的公共密钥(这样我就不会单独信任他们的网站)?
如果有人破坏了该网站以上传伪造的CA.pem,那么他们也可以在其旁边上传伪造的CA.pem.asc签名。而且,如果有人可以在网站中插入伪造的公共密钥,那么他们可以将相同的密钥上传到密钥服务器。
换句话说,从密钥服务器单独下载某人的密钥不会提供任何额外的安全性。密钥服务器不会阻止任何人上传具有相同名称和电子邮件的伪造密钥。一切仍然归结为验证密钥的指纹或Web信任验证。如果您没有指纹可以进行验证,则可以通过询问所有者获得一个指纹。
(要知道是什么人管理着SKS池,我想说技术手段还不够。我的方法是从各种来源收集信息,例如询问其他人或检查web.archive.org或在GnuPG IRC上询问频道(如果您信任IRC上的随机数)。如果您到处都看到相同的“ Kristian Fiskerstrand”人,那可能是正确的。)
如果您与网站所有者之间没有任何形式的预先存在的联系,则唯一的选择就是相信该网站正在为您提供合法信息。(幸运的是,与它的连接已通过HTTPS和WebPKI进行了身份验证,因此,您可以排除大多数MITM攻击-仅使服务器受到损害。)
您也许可以在web.archive.org上及时查看网站的各种快照(以查看过去几个月或几年中是否已使用相同的密钥)。
应该如何使用每条信息?
证书的指纹和/或SPKI哈希实际上与网站在下载时提供纯SHA1哈希的目的相同。(实际上,指纹只是证书的SHA1哈希减去其Base64编码。)如果您信任该网站,则可以使用它们……但是,由于您从同一网站获得了CA证书本身,因此它几乎是多余的。但这可以防止一些意外错误。
要查看证书的指纹(SHA1):
openssl x509 -in $file -noout -fingerprint -sha1
certtool --fingerprint < $file
cat $file | sed "/^-/d" | base64 -d | sha1sum
查看X.509v3主题密钥标识符需要注意自己计算SPKI哈希(如“其他信息”所示)与仅查看X.509扩展中嵌入的密钥(如“扩展”中所示)之间的区别:
certtool -i < $file | grep -C3 "Public Key ID"
GnuPG的dirmngr使用CRL(证书吊销列表)来确保受损的密钥服务器证书在到期之前不能重复使用。CRL由CA签署,我认为dirmngr会自动下载并刷新它,因此您不必这样做。
签名是由网站的所有者进行的,如果您已经具有用于所有者的PGP密钥的其他验证方法,则该签名可用于验证CA.pem文件。仅从同一网站下载它并不会增加太多。
验证签名:
gpg --verify sks-keyservers.netCA.pem.asc
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句