密钥证书拦截

密钥证书拦截

什么可以防止某人拦截我的大部分/所有通信并伪造证书?
即使我希望从密钥服务器获取证书,中间人也可以拦截我的请求并向我发送伪造的证书。
当我想从镜像下载软件映像并使用软件原始网站提供的密钥和签名对该软件进行身份验证时,我如何确定我正在下载网站提供的密钥和签名?也许有人拦截了这些下载并向我发送了伪造的签名和密钥。对于
生活在独裁国家的人来说,这是有问题的,因为他们的政府可以轻易做到这一点。

答案1

中间人(中间人) 攻击可能是破解公钥密码系统最可行的手段。您可以通过使用来自以下来源的信息验证证书来阻止 MITM独立的第二通道不幸的是,这种验证并不总是容易的,或万无一失的。

对于没有中央认证机构的系统(如 PGP/GnuPG),第二个渠道应该是电话交谈或(更好的)面对面会议。在交谈过程中,证书持有者向您证明其身份,并证明您持有其公钥证书的准确副本。后者通常通过验证指纹您持有的证书的指纹(强加密哈希值)与所有者证书的指纹(他/她会读给您听)相匹配。

由于这种严格的验证通常很繁重或不可行,PGP 还提供了一种称为信任网络简而言之:人们签署他们坚信是真实的密钥(希望在亲自验证之后,如前所述),并将这些密钥广泛分发。然后,如果我收到由我信任的人(即我的信任网中的某人)签署的密钥,我可以确信该密钥是真实的。

另一方面,如果我收到的密钥证书没有可信签名,而且我很难或不可能亲自向证书所有者验证该证书,那么我的处境就很不确定了。我应该信任这个密钥吗?答案取决于许多因素,包括:我从哪里获得密钥,以及我将密钥用于什么用途。这个决定可能并不容易。例如,我会对任何提供签名和验证该签名所需的证书的网站持怀疑态度,因为任何人都可以把这对文件放在那里。如果我从两个独立的位置(例如分别从网站和公钥服务器)获得签名和证书,我会对它们稍微有信心一些。

在系统中证书颁发机构(CA)担任受信任的第三方(就像网络上用于验证 SSL/TLS 主机证书的通道一样),用于验证的独立第二个通道是本地 PC 上的 CA 公钥证书存储。假定您的 PC 的本地 CA 密钥存储仅通过受信任的方式初始化和更新,因此您可以(希望)高度确信其中的 CA 和密钥是真实的。(请注意,您还相信密钥存储中的所有 CA 都是实际上值得信赖。这种信心是否有充分的理由留到以后再讨论。

当网站在 SSL/TLS 连接设置期间向您的浏览器提供其主机证书时,浏览器会检查该证书是否由您 PC 的本地 CA 存储中的 CA 签名。[为简单起见,我忽略了证书链,这对本讨论没有任何帮助。] MITM 要想成功地将 SSL 认证的网站欺骗到您的浏览器,他必须让本地 CA 存储中的一个 CA 为其伪造的主机证书签名。有几种方法可以实现这一点。如果某些恶意软件干扰了您的本地 CA 存储,那么您的浏览器可能会被伪造 CA 签名的伪造证书欺骗。或者,如果合法的 CA(如 Verisign 或 Thawte)被欺骗签署了伪造证书,那么您的浏览器将接受它作为真实的证书,您对此无能为力。您可以尝试从 CA 存储中删除所有已知已签署不良证书的 CA,但您的浏览器将开始拒绝由这些 CA 签名的所有完全有效的证书。这可不妙。

总之,只有密钥/证书验证过程被破坏,MITM 才能成功。不幸的是,严格验证证书通常太困难(就 PGP/GnuPG 而言),或者该过程可能被各种手段破坏(就受信任的第三方系统而言)。

答案2

这就是网络浏览器如此重视自签名 SSL 证书的原因。浏览器包含(但愿是)受信任证书颁发机构的公钥,如果您接受的证书是由其中一个颁发机构签名的,那么您可以合理地确定它不是伪造的。

对于 PGP 来说,没有这样的集中式系统,但是有信任网络系统。仍然存在初始交换的问题,这就是为什么真正喜欢 PGP 的人对密钥签名会话你说得对,在威权国家,这很困难。

相关内容