美文网首页iOS开发技术分享编程基础程序员
深入HTTPS系列四(中间人攻击)

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

作者: muice | 来源:发表于2016-12-04 18:09 被阅读1894次

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

    此文到此结束!
    请关注后续!

    相关文章

      网友评论

      本文标题:深入HTTPS系列四(中间人攻击)

      本文链接:https://www.haomeiwen.com/subject/wcxyettx.html