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

时间:2010-01-21 13:54:41

标签: security networking ssl certificate

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

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

1)客户

  • 发送支持的加密算法
  • 发送客户端现时

2)服务器

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

3)客户

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

4)客户端和服务器

  • 从PMS和nonces计算主分泌(MS)
  • PMS切片以生成两个加密&两个mac键

5)客户

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

6)服务器

  • 发送所有握手的mac

问题

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

我认为证书是以某种方式加密的。

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

3 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:4)

证书由某些受信任的机构签署,例如Verisign

这些根权限的证书在您下载时会内置到浏览器中。您可以在Firefox中查看根证书,例如,转到 tools - > options - > advanced - > encryption - > view certificates - > authorities

但是,如果这些根证书颁发机构中的任何一个遭到入侵,您就可以伪造证书,从而使中间人攻击成为可能。

答案 2 :(得分:2)

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

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

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