问题 SSL:在中间攻击中如何保护证书免受人员攻击?


我的问题是关于ssl中的证书,但我认为这些问题应该适用于所有证书。为了清楚起见,我已经包含了SSL程序。

在SSL中,这是我理解的程序:

1)客户端

  • 发送支持的加密算法
  • 发送客户端随机数

2)服务器

  • 选择(和发送)a
    • 对称算法
    • 公钥算法
    • MAC算法
  • 发送它的证书 
  • 发送服务器nonce

3)客户

  • 验证证书
    • 提取公钥
  • 生成预主密钥(pms)
  • 用服务器公钥加密并发送

4)客户端和服务器

  • 从PMS和nonce计算主分泌(MS)
  • PMS切片生成两个加密和两个mac密钥

5)客户

  • 发送所有握手的mac(以确保它们以前不是修改)

6)服务器

  • 发送所有握手的mac

是什么阻止了中间人的攻击发生在第二步?为什么中间的人不能说trudy,捕获服务器发送的证书并更改其中的公钥(具有私钥的东西)。

我假设证书以某种方式加密。

但是,服务器无法加密证书,因为客户端尚未拥有公钥。当服务器从权限(如veri-sign)获取密钥时,密钥是否会使用verisign的公钥预先包含?我认为这应该有效,因为所有Web浏览器都应该拥有大多数权限的公钥。


5086
2018-01-21 13:54


起源

深入描述ssl(或TLS)如何适用于任何感兴趣的人: moserware.com/2009/06/first-few-milliseconds-of-https.html - sixtyfootersdude


答案:


不,证书未加密。但它由证书颁发机构(CA)签署。由于这些检查证书中包含的信息(特别是证书所属的URL),因此不应该有给定URL的第二个有效证书。

根据信任存储(例如在您的浏览器中)检查CA的证书。如果此信任库被泄露,或者您信任无效证书,则在中间攻击中无法防范人员


10
2018-01-21 14:12



那么是什么阻止了Tudy(一个maninmiddle)更改证书中的信息但保留相同的签名?签名在某种程度上是证书中信息的哈希值吗?签名如何确保证书安全? - sixtyfootersdude
@sixtyfootersdude你是完全正确的。证书基本上是一段内容(某人的公钥,它所属的网址......)+用CA的私钥加密的内容的哈希值。所以每个人都可以解密哈希并将其与实际哈希进行比较。但是,更改内容的人无法重新创建加密的哈希。 - Jens Schauder
获取证书的哈希值。然后使用CA的私钥加密此哈希。为了验证,验证者计算相同的散列,并且使用CA的公钥解密签名并比较两个散列。 - Vatine
@sixtyfooter:是的,这就是它的本质。签名通常是哈希(或哈希哈希),然后使用权限进行加密 私人的 键。然后,任何人都可以使用权威机构解密它 上市 键和验证哈希,但没有人可以在不知道私钥的情况下伪造它。 - BlueRaja - Danny Pflughoeft


证书由一些受信任的机构签署,例如 威瑞信

这些证书 根权威 在下载时会内置到浏览器中。您可以在Firefox中查看根证书,例如,转到 工具 - >选项 - >高级 - >加密 - >查看证书 - >权限

但是,如果这些根证书颁发机构中的任何一个被泄露,那么您可以伪造证书,从而使中间人攻击成为可能。


4
2018-01-21 14:10



只是详细说明一下这个过程:如果你想要一个由Verisign签名的证书,你必须向他们证明你有相关的私钥(通过为他们签名),并且你拥有相关的域。通常,这只涉及响应该域中的电子邮件,但确实如此 许多 更多参与(要求您亲自前往他们的建筑并提供多种形式的身份证明)以获得EV证书(en.wikipedia.org/wiki/Extended_Validation_Certificate) - BlueRaja - Danny Pflughoeft
......这就是为什么CACert有这么糟糕的时间,不幸的是。 - Boldewyn


你实际上指出了PKI的弱点。

说Trudy在你和你的银行(bank.com)的中间。 Trudy可以在步骤2中随意更改公钥,但证书的签名将无效。所以Trudy必须找到一种再次生成签名的方法。可以肯定地说,受信任的CA不会为他做这件事。因此,他必须使用虚假CA进行签名,该CA不受您的浏览器信任。理论上这仍然是安全的。

然而,根据一些测试,大多数浏览器(尤其是IE 6)显示模糊的安全警告,大多数人不理解,只是忽略。


2
2018-01-21 14:33



嗯,看起来像一个有趣的骗局。我敢打赌,大多数事情都没有人注意那些模糊(和技术)的警告。但我怀疑,对于银行业而言,人们会更加谨慎。我想知道是否有可能有更明确的警告.. - sixtyfootersdude
经验表明唯一的解决方案是禁止连接。无论警告多么清晰,用户都会点击。我记得一个搞笑的例子,弹出一个消息框,标题为“病毒警告”,盒子的内容是“这是一种病毒,你想继续吗”,有两个方框,每个方框都显示“是”。 - James K Polk
>“可以肯定地说,值得信赖的CA不会为他做这件事。”呃没有。有数百个可信任的CA,您只需要让其中任何一个为您发出一个假证书来进行静默MITM。一些CA因广泛滥用而被撤销,我们可以认为NSA自200X年末以来一直这样做,并且其他犯罪组织购买或发放假证书没有问题。要及时查看Facebook,Google和其他人的这种情况,请安装Firefox Certificate Patrol扩展程序。 - martinwguy