深入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 颁发的。

此文到此结束!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值