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

six*_*ude 12 security ssl networking certificate

我的问题是关于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浏览器都应该拥有大多数权限的公钥.

Jen*_*der 11

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

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

  • 获取证书的哈希值.然后使用CA的私钥加密此哈希.为了验证,验证者计算相同的散列,并使用CA的公钥解密签名,并比较两个散列. (3认同)
  • @sixtyfooter:是的,这就是它的本质.签名通常是哈希(或哈希哈希),然后使用权限的**私钥**加密.然后,任何人都可以使用权限的**public**密钥对其进行解密并验证散列,但没有人可以在不知道私钥的情况下伪造它. (3认同)
  • 那么是什么阻止了 Tudy(一个中间人)改变证书中的信息但留下相同的签名?签名是否以某种方式是证书中信息的散列?签名如何确保证书的安全? (2认同)
  • @sixtyfootersdude 你说得对。证书基本上是一些内容(某人的公钥,它所属的 url ...)+ 用 CA 的私钥加密的该内容的散列。所以每个人都可以解密散列并将其与实际散列进行比较。但是更改内容的人无法重新创建加密的哈希。 (2认同)