「网络」使用鸽子理解HTTPS的原理

时间:2020-7-27 作者:admin

前言

在网络上的任何活动都可以归结为服务器之前的收发消息。我们可以将这些消息的收发,想象成由鸽子实现的。这很荒谬,但确实如此。

Http

有一天爱丽丝通过鸽子发送一条“我爱你”的消息给鲍勃。但是爱丽丝的情敌马洛里,半路拦截了鸽子,并将消息修改为了“我不爱你”。但是鲍勃无法知道,消息被篡改了。这就是Http的工作方式,非常的不可靠。

一个密码

爱丽丝和鲍勃,准备对消息进行加密。比如将字母偏移3位,比如“A”使用“D”表示,“B”使用“E”表示。马洛里即使拦截了鸽子,也无法进行修改,因为他不清楚加密的方式,无法理解消息的内容。但是鲍勃却可以轻松将消息进行解密。

这被称为symmetric key cryptography(对称密钥加密),你知道如何加密也知道如何解密。现实的生产中,会使用更复杂的加密方式,但是主体思路是相同的。

如何确定密钥

如果爱丽丝和鲍勃在发送消息前不见面,他们无法建立安全的密钥。如果在消息本身之中,携带密钥。马洛里就会知道消息的内容,对其解密后进行篡改。

这就是典型的MITM(中间人攻击),避免中间人攻击我们必须更改加密系统。

一个盒子

爱丽丝和鲍勃设计出了一个更好的加密系统,下面是操作步骤

  1. 鲍勃向爱丽丝,发送了一只没有任何消息的鸽子
  2. 爱丽丝在鸽子腿上绑了一个带锁的盒子,盒子是开着的,但是盒子的钥匙爱丽丝留下了。鸽子又飞回到鲍勃哪里。
  3. 鲍勃写好消息,将消息放进盒子,并锁了起来。然后鸽子将消息带回给爱丽丝。
  4. 爱丽丝收到鸽子,使用钥匙打开了盒子,并读取了消息

爱丽丝和鲍勃之间的通讯使用了asymmetric key cryptography(非对称密钥加密)。你可以加密消息(把消息放进盒子),但是你没办法解密(你没有钥匙)

盒子也可以称为“公钥”,盒子的钥匙被称为“私钥”。

是否是可靠的盒子?

目前还有一个问题。如果马洛里拦截了鸽子,将盒子换成了自己的盒子,怎么办?

爱丽丝可以在盒子上,添加上自己的签名,鲍勃就会知道这个盒子是否来自爱丽丝。那么鲍勃一开始该如何识别签名呢?

爱丽丝和鲍勃决定让泰德代替爱丽丝在盒子上签名。泰德是一个非常有名的,并且值得信赖的人。泰德只有确定是爱丽丝的盒子的情况下,才会在盒子上签名。而马洛里不会得到泰德的签名。

而泰德就是Certification Authority(证书颁发机构)

盒子比较重

带有盒子的鸽子,飞的比不带盒子的鸽子飞的慢,这该怎么办?

使用非对称加密比使用对称加密要慢。爱丽丝鲍勃决定,只使用盒子(非对称加密)交换加密的密钥。然后使用密钥对消息进行对称加密。

  1. 鲍勃向爱丽丝发送一只什么都没有的鸽子
  2. 爱丽丝返回了一个带有盒子的鸽子
  3. 鲍勃本地生成了一个密钥(用于对称加密),然后把这个密钥放到盒子里,发送给爱丽丝
  4. 爱丽丝通过私钥对盒子解密,获取了鲍勃生成的密钥
  5. 之后发送消息,鲍勃只需要使用密钥进行对称加密即可(这样速度就很快了)

这就是Https的原理。

原文

参考

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。