该文档说质询响应身份验证证明了服务器的身份。但是如果客户端不验证域名,中间人攻击仍然可能吗?请帮助我理解这一点。
SSL 服务器如何证明其身份?
SSL 握手意味着使用证书;服务器具有客户端应验证的证书(关于其已知的信任锚,也称为“根 CA”)。该证书包含一个公共密钥和 SSL 中使用的加密算法,表明连接通过以下方式是安全的:
客户端知道它发送和接收的任何数据都只能由拥有与其接收到的公钥相关联的私钥的服务器(在证书内)使用。
证书向客户证明,所述私钥由证书中写入名称的某个实体拥有(控制);对于 SSL,该名称是 DNS 名称,例如“www.example.com”。
仍然由客户端来检查证书中的名称是否是客户端首先要联系的服务器的名称。
类比:你遇到一个告诉你他的名字是鲍勃的人。你让他给你看一张身份证。验证身份证是真身份证是不够的;您还必须检查身份证上的名字确实是“鲍勃”。否则,查理可以告诉你“我是鲍勃”,并给你看他的身份证,上面写着“查理”。
就目前而言,托马斯的回答很棒。我只是注意到系统中仍然存在漏洞,您应该密切关注。
最大的漏洞是,默认情况下,您可能拥有大量“受信任的”根证书,其中任何一个都可以证明任何 DNS 名称。我认为有理由不相信他们所有人。
例如,2009 年,Etisalat(阿拉伯联合酋长国政府拥有 60% 的股份)推出了一个看似无害的黑莓补丁,该补丁将间谍软件插入 RIM 设备,从而可以监控电子邮件,因此很难被认为是值得信赖的。但它在许多受信任的 CA 列表中: http: //arstechnica.com/business/news/2009/07/mobile-carrier-rolls-out-spyware-as-a-3g-update.ars
许多 CA 用于验证您是否拥有域名的机制容易受到各种攻击,因此人们可以获得他们不应该获得的凭据。
此外,人们可以窃取证书,就像 stuxnet 开发人员两次所做的那样。
公钥/私钥难题中与政策相关的部分确实比加密货币本身要难得多。
更新:另请参阅 Freedom to Tinker 上关于修复我们危险的 CA 基础设施的精彩帖子:构建更好的 CA 基础设施
服务器通过浏览器信任的根(或中间)证书颁发机构签名来证明其身份。
根 CA(例如 Verisign)将对站点的证书请求进行数字签名。数字签名是威瑞信证明原始网站身份的方式。威瑞信有一些方法可以防止像我这样的人为 ebay 生成证书,通常是通过亲自注册或使用身份证明的组合。
随着时间的推移,根 CA 的列表会更新和撤销,您可能会在 Windows 更新中注意到这一点。
话虽如此,如果有人可以物理访问机器,他们总是可以安装伪造的根证书......这使得中间人再次成为可能,没有警告。