如何验证sks-keyservers HKPS证书?

CBlew

我试图弄清楚应该如何安全地使用PGP,但是令人惊讶的是,很难找到关于该主题的连贯和有用的信息。

因此,SKS密钥服务器将提供其HKPS证书以及以下信息:

  1. 证书下载链接
  2. OpenPGP签名下载链接
  3. CRL下载链接(证书吊销列表?)
  4. 证书的指纹: 79:1B:27:A3:8E:66:7F:80:27:81:4D:4E:68:E7:C4:78:A4:5D:5A:17
  5. X509v3主题密钥标识符: 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单个URL如何重定向到不同的网站/服务器?(例如:https://hkps.pool.sks-keyservers.net/)

来自分类Dev

GPG初学者:如何确定我是否信任sks-keyservers.net

来自分类Dev

如何验证SAML证书?

来自分类Dev

如何验证SAML证书?

来自分类Dev

SSL证书的验证方式如何?

来自分类Dev

如何验证 SSL Java 证书

来自分类Dev

如何使用Capybara跳过SSL证书验证

来自分类Dev

如何验证Pem证书的密码短语

来自分类Dev

如何使用openssl验证证书链

来自分类Dev

如何完全验证X509证书?

来自分类Dev

如何使用jmeter启用证书验证

来自分类Dev

如何使用openssl验证DER证书?

来自分类Dev

如何验证私钥是否与证书匹配?

来自分类Dev

如何实际处理吊销证书的验证?

来自分类Dev

如何在树莓派上验证 openssl 证书?

来自分类Dev

如何修复“SSL 错误:证书验证失败”

来自分类Dev

如何验证 x509 证书的签名?

来自分类Dev

如何使用mbedtls验证证书是否验证了密钥?

来自分类Dev

如何为基于证书的身份验证使用httr指定证书,密钥和根证书?

来自分类Dev

证书链验证

来自分类Dev

临时禁用证书验证

来自分类Dev

验证证书的指纹

来自分类Dev

角度证书验证

来自分类Dev

禁用errbot证书验证

来自分类Dev

iText 证书验证

来自分类Dev

如何使用R连接到远程PostgreSQL,需要证书验证

来自分类Dev

如何验证自签名证书的数字签名?

来自分类Dev

如何使用Ruby OpenSSL验证X.509证书?

来自分类Dev

如何在Android应用中绕过SSL证书验证?