深入HTTPS系列四(中间人攻击)

该篇主要讲HTTPS中间人攻击。

假设有一个攻击者处于“浏览器”和“网站服务器”的通讯线路之间(比如公共WIFI),它的攻击过程如下:

  1. 服务器向客户端发送公钥。
  2. 攻击者截获公钥,保留在自己手上。
    然后攻击者自己生成一个【伪造的】公钥,发给客户端。
  3. 客户端收到伪造的公钥后,生成加密hash值发给服务器。
  4. 攻击者获得加密hash值,用自己的私钥解密获得真秘钥。
    同时生成假的加密hash值,发给服务器。
  5. 服务器用私钥解密获得假秘钥。

FIddler就是通过这种方式截获HTTPS信息。
  
上面问题的根源是因为“缺乏身份认证机制”,浏览器无法鉴别自己收到的密钥是不是真的来自于网站服务器。
假如具备某种【可靠的】身份认证机制?

★身份认证的几种方式

*基于共同的私密信息
  
有个人陌生人突然给你发了一封电子邮件,说他是你的老朋友,那么你怎么确保发邮件的人确实是你的老朋友捏。
  你可以用邮件向对方询问一些共同的私密事情。如果对方能够回答出来,那么他很有可能是你的老朋友。

*基于双方信任的公证人
  
比如有个客人来拜访你,但是你也不知道来的人是不是他,那就看他的身份证即可。这
就是国家公安部信用作为公证人,让陌生人建立某种程度信任关系。

★如何解决 SSL 的身份认证问题——CA 的引入
  
由于双方通常都是互不相识的,显然不可能采用第一种方式,而只能采用第二种公证人方式。
 
那么,谁来充当这个公证人?这时候,CA 就华丽地登场啦。

浏览器验证网站发过来的证书。如果发现其中有诈,浏览器会提示“CA 证书安全警告”。
由于有了这一步,就大大降低了(注意:是“大大降低”,而不是“彻底消除”)前面提到的“中间人攻击”的风险。

为啥浏览器能发现 CA 证书是否有问题?
因为正经的 CA 证书,都是来自某个权威的 CA。如果某个 CA 足够权威,那么主流的操作系统(或浏览器)会内置该 CA 的“根证书”。
(比如 Windows 中就内置了几十个权威 CA 的根证书)
因此,浏览器就可以利用系统内置的根证书,来判断网站发过来的 CA 证书是不是某个 CA 颁发的。

此文到此结束!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值