web

用鸽子解释 Https【译】

Posted by lamyoung on September 30, 2019

https ? 鸽了?

密码学可能是一个很难理解的学科,它充满了数学证明。很多复杂的高层次的东西可以不用理解,除非你实际正在开发加密系统。如果你打开这篇文章希望创建下一个HTTPS协议,我很抱歉地说,鸽子是不够的。让我们冲一杯咖啡,开始享受文章吧。

小白,小玉,小冰和鸽子?

在互联网上所做的任何活动(读这篇文章、在淘宝上购买东西、在公众号留言)归结为在服务器发送和接收消息。这可能是有点抽象的,所以让我们想象一下,这些消息是由信鸽传递的。我知道,这可能看起来非常武断,尽管HTTPS的速度要快得多,但工作原理是一样的。此外,我们将谈论小白、小玉和小冰,而不是谈论服务器、客户端和黑客。

第一次沟通

如果 小白 想向 小玉 发送消息,她将该消息绑到信鸽的腿上,并将其发送给 小玉。小玉 收到消息,并读取消息,一切都很好。

但是,如果 小冰 在飞行中拦截了 小白 的鸽子并改变了消息呢?小玉 无法知道 小白 发送的消息在传输过程中已被修改。

这就是 HTTP 的工作原理。很吓人吧?我们不会通过 HTTP 发送我的银行凭据。

加密

现在,如果 小白 和 小玉 很聪明呢?他们同意使用密码来写信息。他们将每个字母在字母表中移动 3 个位置。例如 D ➡️ A,E ➡️ B,F ➡️ C。纯文本消息”secret message”将是”pbzobq jbppxdb”。

现在,如果 小冰 拦截鸽子,她将无法改变信息到有意义的东西,也理解它说什么,因为她不知道的代码。但是 小玉 可以简单地反向应用代码,并解密 A ➡️ D、B ➡️ E、C ➡️ F 的消息。密码文本”pbzobq jbppxdb”将被解密回”secret message”。

成功!

这称为对称密钥加密(symmetric key cryptography),因为如果知道如何加密消息,也知道如何解密它。

我上面描述的加密方式通常被称为凯撒密码(Caesar cipher)。在现实生活中,我们使用更奇特和更复杂的代码,但主要思想是相同的。

我们如何决定密钥?

如果除了发送方和接收方之外没有人知道使用了什么密钥,则对称密钥加密是非常安全的。在凯撒密码中,关键是我们转移每个字母的字母数的偏移量。在我们的示例中,我们使用偏移量 3,但也可以使用 4 或 12。

问题是,如果 小白 和 小玉 在开始用鸽子发送消息之前没有见面,他们就没有办法安全地建立密钥。如果他们在消息本身中发送密钥, 小冰 将拦截该消息并发现密钥。这样的话,在 小白 加密之后和 小玉 解密之前, 小冰 阅读或更改消息。

这是中间人攻击(Man in the Middle Attack)的典型例子,避免它的唯一方法是一起更改加密系统。

携带箱子的鸽子

于是 小白 和 小玉 想出了一个更好的系统。当 小玉 想向 小白 发送消息时,她将按照以下步骤操作:

  • 小玉 给 小白 寄了一只鸽子,没有任何消息。
  • 小白 把鸽子送回去,手里拿着一个带打开锁的盒子,但把钥匙留着。
  • 小玉 把消息放在盒子里,关闭锁,把盒子发送给 小白 。
  • 小白 接收该盒子,用钥匙打开它并读取消息。

这样 小冰 不能通过拦截鸽子来改变信息,因为她没有钥匙。当 小白 想要向 小玉 发送消息时,将遵循相同的过程。

小白 和 小玉 刚刚使用了通常所说的非对称密钥加密(asymmetric key cryptography)。它被称为非对称,因为即使你可以加密消息(锁定的盒子),你也不能解密它(打开一个封闭的的盒子)。

在专业术语中,该的盒子称为公钥(public key),打开它的钥匙称为私钥(private key)。

如何信任这个盒子?

你可能已经注意到,我们仍然有问题。当 小玉 收到那个打开的盒子时,他怎么能确定它来自 小白, 小冰 也有可能拦截鸽子,用她有钥匙的盒子换了盒子呢?

小白 决定给盒子签名,这样当 小玉 收到盒子,他检查签名,并知道是 小白 送了盒子。

你们中有些人可能在想,小玉 一开始如何识别 小白 的签名?问得好。小白 和 小玉 也有这个问题,所以他们决定,而不是 小白 给盒子签名,而是 小无 给盒子签名。 谁是小无 ?小无 是一个非常有名,众所周知,值得信赖的人。小无 把签名给了每个人,每个人都相信,他只会为合法的人签名。

只有 小无 确定要求签名的那个是 小白,他才会在 小白 的盒子上签名。因此, 小冰 无法用由 小无 代表小白签名的盒子,因为 小玉 会知道该盒子是假的,因为 小无 仅在验证其身份后为人们签名。

技术术语 小无 通常称为证书颁发机构(Certification Authority),你阅读本文的浏览器附带了各种证书颁发机构的签名。

因此,当你第一次连接到网站时,你信任其盒子,因为你信任 小无 告诉你该盒子是合法的。

盒子很重

小白 和 小玉 现在有一个可靠的沟通系统,但他们意识到,携带箱子的鸽子比只携带信息的鸽子慢。

他们决定使用盒子的方法(非对称加密)传输一个对称加密的密钥,然后再用这个密钥进行对称加密信息传输。️ (这段是自己理解的,附上原文)

They decide that they will use the box method (asymmetric cryptography) only to choose a key to encrypt the message using symmetric cryptography with (remember the Caesar cipher?).

这样,他们得到最好的两个结果。非对称加密的可靠性和对称加密的效率。

在现实世界中,没有慢鸽子,但尽管如此,使用非对称加密加密对消息的加密速度比使用对称加密要慢,所以我们只用它来交换加密密钥。

现在,你应该知道 HTTPS 的工作原理,你的咖啡也应该准备就绪,可以去喝咖啡☕️了。


原文链接🔗