密钥证书截取

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

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

在没有中央authentication机构(如PGP / GnuPG)的系统中,第二个渠道应该是电话交谈或(甚至更好)面对面会议。 在谈话过程中,合格证持有人向您certificate自己的身份,同时也certificate您持有公钥证书的完整副本。 后者通常通过validation您所持有的证书的指纹 (密码学上强大的散列)与所有者证书的指纹(他/她将向您读取的)进行比较而得到证实。

由于这种严格的validation往往是繁重或不可行的,PGP也提供了一种称为信任networking的东西。 简而言之:人们签名他们强烈认为是真实的密钥(希望在亲自证实之后,如前所述),并将这些密钥分发到各个方面。 那么,如果我收到一个由我信任的人签名的密钥(即通过我信任的人),我可以确信密钥是真实的。

另一方面,如果我收到没有可信签名的钥匙证书,而且我很难或不可能亲自向所有者核实证书,那么我处于一个不确定的位置。 我应该相信这个钥匙吗? 答案将取决于多个因素,包括:我从哪里得到钥匙,以及我正在使用的钥匙。 这个决定可能不是一件容易的事情。 例如,我会怀疑任何提供签名和validation相同签名所需的证书的网站,因为这两个文件本可以放在那里。 如果我从两个独立的位置(分别来自网站和公钥服务器)获得签名和证书,我会稍微有信心。

在具有证书颁发机构 (CA)作为可信第三方的系统 (例如Web上用于validationSSL / TLS主机证书的系统)中,用于validation的独立第二个通道是在您的本地PC上存储CA公钥证书。 假设您的电脑的本地CA密钥存储区仅通过可信的方式进行初始化和更新,这样您就有了一个(希望的)高度的信任,那里的CA和密钥是真实的。 (请注意,您也相信您的密钥存储区中的所有CA 实际上都是值得信赖的,这种信心是否合理是另一天的讨论。)

当网站在SSL / TLS连接设置期间向浏览器显示其主机证书时,浏览器会检查证书是否由您的PC的本地CA商店中的CA签名。 [为了简单起见,我忽略了证书链,这并没有增加任何讨论。]对于一个MITM成功欺骗一个SSLauthentication的网站到您的浏览器,他将不得不让他的虚假的主机证书由您的CA之一签名本地CA商店。 有几种方法可能发生。 如果某些恶意软件干扰了本地CA商店,那么您的浏览器可能会被假CA所签名的假证书欺骗。 另外,如果一个合法的CA(如Verisign或Thawte)被欺骗签名伪造的证书,那么你的浏览器将会认为它是真实的,对此你没有太多的办法。 您可以尝试从您的CA商店中删除所有已知签名不合格证书的CA,但是您的浏览器将开始拒绝所有由这些CA签署的完全有效的证书。 不好。

总之,只有在密钥/证书validation过程被破坏的情况下,MITM才能成功。 不幸的是,要严格validation证书(在PGP / GnuPG的情况下)通常要么太困难,要么通过各种手段(在可信的第三方系统的情况下)中毒该过程。

这就是为什么Web浏览器对自签名SSL证书做出如此重大的规定。 浏览器包含(希望)受信任证书颁发机构的公钥,如果您接受的证书是由其中一个签名的,那么您可以合理地确定它不是伪造的。

对于PGP,没有这样的中央系统,但是有信任系统的networking 。 还有初始交换的问题,这就是为什么真正进入PGP的人对签名会议感到兴奋。 不过,你说得对,在威权主义国家这是很难的。