小朋友都能懂的计算机安全 - 网络劫持

AirPython

共 2355字,需浏览 5分钟

 ·

2021-01-11 18:43

1 张三被勒索

张三去某地旅游,在一个小酒店入住。酒店很便宜,一天只要80元,但看着有点像黑店啊!

不过张三是谁,闯荡江湖这么多年,who怕who啊!

晚上百无聊赖,他连上酒店的wifi,先上银行网站给爸妈转了1000块钱,这是这个月的生活费。张三是个孝顺儿子!

然后他鬼使神差的打开了一个小电影网站,欣赏了几个动作片,放松一下。

第二天结账的时候,账单吓了张三一跳:1800!

什么?明明是80啊!老板不紧不慢的说:其中1720是保密费。你是不是上了一些不该上的网站?然后老板展示了几张图片,正是张三看过的动作片中的截图。

张三很火,但是也很担心:勒索1800块钱是小事,我昨天还做了银行转账,不会把我的账号密码拿去,把我的钱都给转走了吧?里面还有今年辛辛苦苦赚来的2万多块钱!

打工人不容易啊!

他赶紧拿出手机,关掉wifi连接,用流量查了一下余额。还好,钱还在!

为什么老板因为小电影勒索他,而不窃取他的银行卡密码呢?

原因是:张三上的银行网站使用了HTTPS加密:

而小电影网站没有用HTTPS,所以可以被酒店的WIFI捕获所有发送的信息。

没有使用HTTPS的网站类似这样:

我也很震惊,这个china.com竟然没有HTTPS。实际上很多正规的小电影网站都是HTTPS的,不信你去看看。

这样的真实事情,每天都发生在世界的各地!

你永远不知道你会不会成为下一个目标。所以认真读完这篇文章,你就不会成为受害者。

2 中间人劫持

张三正是遭受常见的网络陷阱:中间人劫持。大致过程是这样的:

张三通过酒店WIFI上网的过程是这样的:

  1. 浏览器发送消息给酒店WIFI
  2. 酒店WIFI发送消息给网站。
  3. 网站把内容发送给WIFI。
  4. WIFI把网站内容发给浏览器。

在这个过程中WIFI就是中间人。实际上浏览器和网站中间还有很多中间人,比如运行商。

网站如果没有HTTPS网站,发送的信息都明文的,类似这样的文字:

传了什么消息,中间人看的一清二楚。一旦遭受中间人劫持,中间人可以做很多事情:

  • 监控你的行为,然后勒索你,就像张三这样的情况
  • 篡改你的发送信息:
    • 你本来要给李四转账1000
    • 中间人修改成给他自己转账10万。
  • 记录你的银行卡密码,朋友聊天记录等

请大家注意,这里要害你的不是网站,而是中间人。中间人不光害你,他们也害网站。所以你和网站都是受害者

如果你上了黑心网站,诈骗你的钱财,那是网站的问题,不是中间人的问题,那是另外一套诈骗方式了。

为了解决中间人劫持的问题,网站可以使用HTTPS,强迫浏览器和网站的通信加密。这个过程变成了这样:

虽然信息发送还是要经过酒店WIFI,但发送的都是密文,酒店WIFI看不懂,只能简单的帮你转发,什么事情都做不了。

如果你是冲着小电影来的吃瓜群众,就记住下面的结论:

  1. 使用公共WIFI的时候尽量不要上非HTTPS的网站,地址栏带小锁的网站才是安全的。
  2. 如果你必须得上,不要传敏感的信息。假设WIFI的老板知道你的一切网络活动。
  3. 在家是不是就可以不用在意HTTPS?还是要注意!虽然WIFI是你的,但你和网站中间仍然有很多中间人,比如运行商。

这真的很重要,请转发给需要的人,让社会少一分伤害!

技术原理

大致的原理前面已经讲清楚了,简单来说就是加密。但这里还有很多细节。

1. 用同一套密码做加密 - 对称加密

浏览器和服务器拥有同一套秘钥来加密和解密。浏览器发送消息之前先加密,服务器收到密文后用同一套秘钥解密。

但这里的问题是:

  • 浏览器怎么知道秘钥是什么?
  • 如果浏览器可以从网站获取秘钥,那中间人也可以轻松获取秘钥!

所以为了加密要先解决秘钥的交换问题。

2. 用非对称加密方式协商密码 - 公钥加密

还好有数学家研究出了一个加密算法,叫做公钥加密。公钥加密有两把钥匙:

  • 一把是公开的,所有人都可以获取
  • 一把是私有的,只有网站自己知道

这两把钥匙的神奇之处在于:

  • 用公开钥匙加密,只有私有钥匙才能解密
  • 用私有钥匙加密,只有公开钥匙才能解密

这样就可以协商密码了:

  1. 浏览器从网站获得网站的公钥
  2. 浏览器自己生成一个密码,用公钥加密,发送出去
  3. 密文传到WIFI上的时候,WIFI没有私钥,无法解开
  4. WIFI只能乖乖的把密文原封不动的传给网站
  5. 网站有私钥,可以解开,这样浏览器和网站就成功交换了密码
  6. 从此,它们用这个密码加密数据,中间人无计可施

当然实际的密码交换过程比这个要复杂一些,但核心原理就是这样的。

3. 数字证书和CA认证机构

但这事还没完!中间人可以最开始就冒充网站,把它自己的公钥给浏览器:

  1. 浏览器试图获取某小电影网站的公钥
  2. 经过WIFI的时候,WIFI直接把自己的公钥给了浏览器。
  3. 浏览器用WIFI的公钥加密,发送密码。
  4. WIFI用自己的私钥解密,获得了密码。从此浏览器发送的消息,WIFI都知道了。
  5. WIFI把篡改后的信息,再用网站的公钥加密和网站沟通。

为了解决这个问题:

  1. 公钥必须得监管!不能随便谁的公钥都可以。

  2. 生成了公钥后,要先找监管机构盖个章,生成一个数字证书,这些机构被称为CA机构。世界上被认可的CA机构是有限的。他们签发证书一般都是收费的。

  3. 当浏览器获得一个公钥时,看看这个公钥是谁签发的。如果是它不认识的机构签发的,就提醒用户:这个证书是无效的。

  4. 这样中间人发来的公钥是无效的,浏览器一下就识别出来了。

所有电脑上都维护了自己信任的CA机构:

我们也可以手工修改添加自己信任的机构:比如把自己的公司加入到信任列表中去。这样自己公司可以签发证书。

如此,基本上就彻底避免了中间人攻击。

这真的很重要,请转发给需要的人,让社会少一分伤害!

浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报