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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 需求 “人们最初设计互联网时,很少考虑到安全。这样的结果是,核心通信协议本质上是不安全的,只能依靠所有参与方的诚信...
    thinkq阅读 1,183评论 0 3
  • HTTPS介绍 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩...
    齐滇大圣阅读 9,300评论 8 96
  • 其实,我对https以前只有一个大概的了解,最近工作中遇到一个问题从而将https协议做了一个彻底的学习和认知,下...
    一条鱼的星辰大海阅读 3,562评论 0 1
  • 1 有目标的人在奔跑 ,没有目标的人在流浪。 在非洲的大草原上,你知道跑的最快的动物是什么吗? 是猎豹,它的时速最...
    钱眼观天下阅读 555评论 0 5
  • "铠甲永远不可能是别人给你的,我觉得永远是你以最赤诚的肉身面对每个人,当你遇见恶的时候,这个硬的东西会来刺伤你,让...
    我是文青阅读 893评论 0 1

友情链接更多精彩内容