使用鸽子理解HTTPS的原理

码农天地 -
使用鸽子理解HTTPS的原理
前言

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

Http

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

一个密码

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

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

如何确定密钥

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

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

一个盒子

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

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

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

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

是否是可靠的盒子?

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

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

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

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

盒子比较重

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

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

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

这就是Https的原理。

原文HTTPS explained with carrier pigeons参考Man-in-the-middle attackHow does HTTPS actually work?
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

加个好友,技术交流

1628738909466805.jpg