我想了解SSL的工作原理。我的理解是,在您第一次到达服务器(比如https://www.google.com)后,服务器会向您发送其公钥。然后,您的浏览器会检查以确保此公钥有效(未过期等)且合法;后者通过检查根CA来完成,以确保公钥的签名与CA在记录上的匹配。如果全部检出,那么您的浏览器将使用该公钥加密所有内容,并且只有服务器可以对其进行解密(因为只有服务器具有私钥)。
现在,想想一个精心设计的中间人攻击:每次我的浏览器尝试检查CA时,中间服务器都会将我的请求重新路由到CA,而不是另一台服务器。该服务器验证任何签名!这样,即使我得到错误的证书,我的浏览器也不会知道。例如,这意味着我的ISP可以向我发送假证书并窃听我的连接。
对此的安全防范(如果我错了,请纠正我)是要通过CA检查证书,浏览器建立与CA的SSL连接,但这次它不需要验证公众密钥来自CA;它知道所有CA的正确公钥。
但我怎么知道是否有人没有在我的电脑上为假CA安装假证书?我怎么知道每次升级我的浏览器时,都没有安装恶意软件?
答案 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安装假证书?我怎么知道每次升级我的浏览器时,都没有安装恶意软件?
你没有。