TLS整理(上):咱们为啥须要TLS

网上说TLS的文章不少,要学习TLS技术有不少不错的选择。本文并非一个权威的教程,只是我我的学习TLS后基于本身理解的一个总结而已。若是有读者经过阅读此文后加深了对TLS的理解,不胜荣幸。web

要聊TLS,还得从HTTP提及,HTTP能够说是做为目前最流行的一个网络协议,能够说是网络的基石之一。通常来讲能够理解为从浏览器看到的全部东西,都是构建于HTTP之上的。算法

早期HTTP协议被设计成在一个可信网络环境中运行,其设计理念以简单为主——经过一个通用格式的明文请求就可以获取到各类文档、样式、脚本、富媒体内容等。浏览器

HTTP协议的简洁安全

因为其简洁性,各类互联网应用都得以在其之上进行充分的扩展,从最先的一个HTML文档就是一个网页,到现在打开一个淘宝首页就有百八十个HTTP请求。各类类型的HTTP请求相互配合,组成了现在咱们所看到的缤纷多彩的互联网世界。服务器

然而,现在的互联网环境纷繁复杂,HTTP的简单也面临两个大的问题网络

  • 安全性没法保证
  • 单次请求获取一个文档的方式,不知足现在流式传输体验所要求的性能

本文主要着眼于安全性方面,第二点后续有机会再议。ssh

致使安全问题的一个重要缘由是经过HTTP的请求及返回都是明文的,下面经过两个例子说明。工具

其一是网络运营商劫持问题。主要是指咱们的网络运营商(电信、联通、移动等)经过在咱们看的网页中添加广告,来谋取广告费的问题。下面来看看他们是怎么作的。性能

咱们所谓的『上网』大致分为两步,首先给咱们要上的网的服务器发送一个请求,而后接收到服务器返回的内容,浏览器将这些内容展现出来就是咱们看到的网页了。咱们的请求并非直接发送给目标网站的服务器的,中间通过了层层的转发。学习

服务商劫持

如上图所示,整个互联网实际上是一个拓扑结构,咱们的请求往返于服务器之间,实际上是通过了不少个节点的(这里只是简单YY了一个三层的结构,实际网络拓扑要复杂不少)。图中橙色的节点就是咱们网络运营商的节点了。按说运营商收了咱们的网费,好好的作好传送数据的事情就行了。然而一些黑心运营商(干这事的通常为三四线城市的小运营商)在收了网费的同时还很差好干活,在服务器的返回内容中插入他们本身的广告,以此来多谋得一份广告收入。

这里随便网上找了两个被插入广告的例子。

劫持1

劫持2

从第二个图能够看到,运营商经过解析HTTP请求返回的HTML内容,在其中插入一个iframe区块,完成广告的展示。这个事情自己没难度(分析网络请求的具体内容,有个专业术语叫『深度包检测』),作不作就是运营商的节操问题了。

因为这种现象仍是比较影响体验的,所以一些网站踏上了全站HTTPS改造之路,不惜巨大改形成本和性能压力,旨在避免运营商的流氓行径,这里先按下不表。

上述这种问题咱们总结下,属于『可信(相对)』人员占着『有利位置』,经过篡改请求来『某点小利』。这里之因此说这些黑心运营商是『可信』,是由于他们虽然有能力作任何事,但毕竟本职是负责传输,除了打打小广告以外,通常仍是可以保证传输内容的安全的。所以当你碰到这种状况时没必要过于紧张,打个电话投诉下也就完事了。

为何强调『可信』这个概念,是相对于下面这个case来讲的。『可信』的运营商在『有利位置』,这是没办法改变的。但要是咱们不当心把『不可信』的不法分子也放到『有利位置』,那恐怕就不是被打打广告这个简单了。所谓的『不可信』就是下图这种状况。

公共wifi

以前的图中红色节点是咱们家里本身的wifi,那是能够保证安全的。但若是你是出门在外,使用的是餐厅、咖啡馆、酒店、机场的wifi,那还能保证安全吗?固然不能!虽然通常公共场所提供wifi也就是个便民服务,没啥心机。但假设你不幸链接到的是不法分子故意开放的wifi,那危害就很大了。

公共wifi问题

这些不法分子能够窥探你全部的请求以及服务器的返回,那简直就是想干啥就干啥了。如下为YY场景。

  • 假设正好你上的某个小众网站技术水平不高,你的用户名密码都是以明文或可逆的加解密算法传递的话,不法分子就能拿到你的用户名密码了。固然不法分子可能对你的小众网站并不感兴趣,看了一眼就关了。可是他转念一想,因为记忆困难,通常人对不一样网站用同一个密码的可能性很大。所以他会拿着你的用户名密码去qq、淘宝、支付宝等大网站尝试。一旦你真的用了一样的密码,那就中招了。再想得邪恶点,假设你看的那个简陋的小众网站,自己就在收集用户名密码呢?😂 所以对于通常人来讲,建议至少可以实行简单的密码分级,重要的大网站搞一个复杂的密码,平时随便看看的小众网站就搞个简单密码吧。
  • 你访问的是正规网站,技术水平OK,密码都是经过加盐MD5传输的,那你就很安全?NO!在web应用中,每当用户登陆时,服务器都会为其生成一个『令牌』。在后续用户的各类操做时,用户都须要将这个『令牌』带在请求中,以此来告诉服务器用户的合法身份。不法分子彻底能够经过分析web应用的请求,找到其中的令牌字段。一旦拿到这个令牌,那不法分子就拥有和用户同样的权限了。这个问题比上一个问题好一些的地方在于,令牌是有时效性的。好比今天一个用户的令牌在访问某网站时被人获取了,那不法分子就能够用这个令牌和真正的用户一块儿访问该网站了。但若是真正的用户退出登陆了,那不法分子这边也就再也不能访问了。同时拿了网站A的令牌只能访问网站A,不法分子没办法去sh试网站BCD。
  • 上两个场景都须要不法分子提早对用户访问的网站进行分析,这样才能知道哪一个字段才是密码或令牌。虽然有时不法分子水平通常,不能从请求中找到密码或令牌。但至少用户访问的网站及内容是一目了然的。用户发的微博、看的新闻、上传的照片、心情日记等等隐私全都被暴露了,也难怪网上常常会爆出『XX门』了。

上述两次例子中,运营商和公共wifi提供者要么是窃听了用户的请求,要么是往服务器的返回中加点料。无论具体方法是啥,问题的本质在于<u>HTTP请求和返回都是明文的</u>。致使一路上这么多节点,每一个节点均可以拿点它须要的信息,或者往里再加点料~

除此以外,HTTP的另外一个问题是<u>无法校验返回给你内容的服务器是不是目标服务器</u>。这说的有些拗口,也无法找到真实的应用层实例,那咱们来看下相似的一个例子吧。

TCP RST

如图所示是防火墙设备阻止用户访问特定网站的一种技术,有些公司会禁止员工访问游戏、股票等网络服务,就会用到这种技术(国家有时候也能够看作一个公司😂)。HTTP基于TCP/IP协议之上,借助DNS协议的配合,帮助用户只须要记住一个好记的单词(域名或叫网址),就能访问到特定的网络服务。这个路由的原理不在本文范围以内,但TCP/IP + DNS + HTTP这套机制可以work的缘由一样基于一个假设——网络环境是可信的,网络中的每一个节点都会按照协议要求有序运做。上图中的橙色节点在用户访问百度时正常工做,但在访问youtube时则没有把请求往上传递,而是直接回复用户不能响应请求。(TCP RST为断开TCP链接)还有一种状况下请求仍是往上传递到目标服务器了,但中间节点却提早回复了一个TCP RST。用户端浏览器收到一个TCP RST后并不知道真相,觉得是要访问的服务拒绝了咱们的请求,所以就关闭了请求。而实际上服务器是无辜的,有节点假装了它。

上述例子仍是咱们『可信』的运营商或者防火墙提供商进行网络管理的一种手段,其结果也就是用户上不了某些网站而已,影响不是太大。和明文问题同样,要是碰到的是一个『不可信』的节点,那问题就大得多。

钓鱼网站

钓鱼网站的问题你们如今都很注意了。不法分子将假网站作的和真网站如出一辙,经过聊天工具或短信骗用户点击访问,企图利用假网站骗取用户的用户名密码。这种作法可以被大多数人注意的缘由是其网址和真网站不一样,但若是把钓鱼网站这个方式往上面的例子套,那就彻底能以假乱真了。这种问题对于HTTP请求来讲几乎没有分辨的办法。

钓鱼网站流程

上述两个例子都是用户没有访问到真正的目标服务器,而是由某个恶意节点<u>假装成目标服务器</u>给用户返回了内容。这种方式在通常的上网过程当中是几乎没法分辨的,只有技术人员刻意进行分析时,才能发现这种假装HTTP服务器的状况。

至此本文一共聊了四个例子,说明了HTTP存在的两个安全问题

  • 明文
  • 没法验证服务器的真实性

为了解决这两个问题,咱们引入TLS(传输层安全)协议。运行在TLS协议之上的HTTP协议称做HTTPS,简而言之你们平常上网时尽可能使用HTTPS网址来代替HTTP网址,就能够大大提到安全性了~

上篇结束,下篇会介绍下TLS的大体原理,解释其为啥可以保证安全。

做者:jimsshom 连接:https://www.jianshu.com/p/398c9ab538b7 來源:简书 著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

相关文章
相关标签/搜索