https为什么可以防止中间人攻击

https为什么可以防止中间人攻击

  • 证书的作用
  • 协商对称加密算法

关于http及https的原理,这里就不在多做介绍了,网上已经有很多优秀的文章,比如
一篇读懂HTTPS:加密原理、安全逻辑、数字证书等
即时通讯安全篇(七):如果这样来理解HTTPS,一篇就够了
这2篇文章都很好的解释了HTTPS加密原理及数字证书原理,但是却没有很好的解释为什么中间人不可以通过截获服务器证书然后替换成自己的证书进行攻击。
例如,访问百度,腾讯作为中间人,截获百度发给客户端的CA证书,然后将自己的CA证书发送给客户端,由于百度和腾讯的CA证书都是经过第三方认证机构认证颁发的,如果像《即时通讯安全篇(七):如果这样来理解HTTPS,一篇就够了》这篇文章中11,12部分描述的那样仅仅通过验证数字签名来验证证书没有问题肯定是不行的(这篇文章的评论部分也有人质疑),因为证书确实是真的证书,没有被篡改过,只是不是百度而是腾讯的。

证书的作用

首先要清楚证书的作用:

  • 保密性 - 只有收件人才能阅读信息。
  • 认证性 - 确认信息发送者的身份。
  • 完整性 - 信息在传递过程中不会被篡改。
  • 不可抵赖性 - 发送者不能否认已发送的信息。

其中有一个重要的作用——认证性,也就是说CA证书中包含了服务器身份认证的信息。申请证书的时候,你要证明你所提交的服务器域名就是你的,包括但不限于whois信息,管理邮箱验证,服务器地址等极具区分度的信息。通过证书就是能知道这个证书就是颁发给你的(否则证书的颁发就没有意义,是个证书就可以)。
有了这个功能,腾讯再替换百度的CA证书意义就不大了,客户端又不傻,我要访问百度,你甩给我腾讯的CA证书几个意思?

协商对称加密算法

上面已经介绍,中间人替换CA证书攻击是没有意义的,即使截获到客户端的信息,由于没有服务器私钥,也无法识别。
这还没完,虽然客户端安全获取到服务器的公钥,是可以使用公钥加密使用非对称加密算法进行和服务器通讯,但是非对称加密算法的性能大家也是知道的,所以https结合非对称加密算法和对称加密算法的特点,使用非对称加密算法来协商对称加密算法,这样即兼顾了性能,也保证了后续使用对称加密算法的安全性。
对称加密算法是在真正要通讯前客户端和服务器临时协商出来的,每个客户端都不同,这样即使中间人冒充客户端充其量也只是一个普通客户端。

你可能感兴趣的:(https)