我们如何确保浏览器实际检查CA的SSL证书?

时间:2016-01-29 00:24:17

标签: security ssl encryption https

我想了解SSL的工作原理。我的理解是,在您第一次到达服务器(比如https://www.google.com)后,服务器会向您发送其公钥。然后,您的浏览器会检查以确保此公钥有效(未过期等)且合法;后者通过检查根CA来完成,以确保公钥的签名与CA在记录上的匹配。如果全部检出,那么您的浏览器将使用该公钥加密所有内容,并且只有服务器可以对其进行解密(因为只有服务器具有私钥)。

现在,想想一个精心设计的中间人攻击:每次我的浏览器尝试检查CA时,中间服务器都会将我的请求重新路由到CA,而不是另一台服务器。该服务器验证任何签名!这样,即使我得到错误的证书,我的浏览器也不会知道。例如,这意味着我的ISP可以向我发送假证书并窃听我的连接。

对此的安全防范(如果我错了,请纠正我)是要通过CA检查证书,浏览器建立与CA的SSL连接,但这次它不需要验证公众密钥来自CA;它知道所有CA的正确公钥。

但我怎么知道是否有人没有在我的电脑上为假CA安装假证书?我怎么知道每次升级我的浏览器时,都没有安装恶意软件?

2 个答案:

答案 0 :(得分:4)

这不是证书验证的工作原理。

这是一个离线过程。未联系CA.相反,服务器证书包含CA的签名。此签名使用内置在浏览器(或操作系统)中的CA证书进行验证。

您可以在浏览器设置中查看受信任的根证书列表。

  

我如何知道某人是否在我的计算机上没有为伪造的CA安装假证书?

那么,这将是一个问题。事实上,这确实发生了。一些公司经常在他们向员工发放的机器上安装假根证书,以便允许他们拦截HTTPS连接。一些病毒扫描程序和防火墙产品也以这种方式工作。

如果您担心需要锁定系统。

  

我怎么知道每次升级浏览器时都会安装恶意软件?

同样的事情。您从Mozilla,Microsoft,Apple,Google或Opera下载软件,您必须信任它们。至少要确保你从官方渠道获得软件(不是你在街上找到的某些USB)。

答案 1 :(得分:3)

  

我的理解是,在您第一次到达服务器(比如https://www.google.com)后,服务器会向您发送其公钥。

没有。它会向您发送证书,并且每隔时间,忽略SSL会话恢复。

  

然后,您的浏览器会检查以确保此公钥有效(未过期等)且合法;

没有。它对证书这样做。仅公钥不具有到期日期,数字签名等,以便检查。

  

后者通过检查根CA完成,以确保公钥的签名与CA在记录上的匹配。

没有。通过检查证书的签名者(颁发者)是否已被本地安装的CA证书集信任来完成。没有与发行CA联系。

  

如果全部签出,那么您的浏览器将使用该公钥加密所有内容,并且只有服务器可以解密它(因为只有服务器具有私钥)。

没有。这是错误的信息,经常重复,总是错误的。 SSL使用通过密钥协商协议协商的对称会话密钥。如果你说的是真的,SSL只能在一个方向安全地通信,而且它会像潮湿的一周一样慢。

  

现在,想想一个精心设计的中间人攻击:每次我的浏览器尝试检查CA时,中间服务器都会将我的请求重新路由到CA,而不是另一台服务器。该服务器验证任何签名!这样,即使我得到错误的证书,我的浏览器也不会知道。例如,这意味着我的ISP可以向我发送假证书并窃听我的连接。

由于没有与CA的通信,因此没有此类攻击。

  

对此的安全防范(如果我错了,请纠正我)是要通过CA检查证书,浏览器建立与CA的SSL连接,但这次它不需要验证公众密钥来自CA;它知道所有CA的正确公钥。

没有。无需保护。见上文。

  

但我怎么知道是否有人没有在我的电脑上为假CA安装假证书?我怎么知道每次升级我的浏览器时,都没有安装恶意软件?

你没有。