密码学可能是一门很难理解的学科。它充满了数学证明。但是,除非您实际上正在开发密码系统,否则大部分的复杂性对于理解高层次上发生的事情都是不必要的。
如果您打开这篇文章希望创建下一个 HTTPS 协议,很抱歉,用鸽子来说明是不充分的。好吧,现在开始冲泡咖啡并欣赏这篇文章。
爱丽丝、鲍勃和……鸽子?
您在 Internet 上进行的任何活动(阅读本文、在亚马逊上购买东西、上传猫图片)都归结为向服务器发送消息和从服务器接收消息。
这可能有点抽象,所以让我们假设这些信息是由信鸽传递的。我知道这可能看起来很武断,但请相信我 HTTPS 的工作方式相同,尽管速度要快得多。
此外,我们将讨论 Alice、Bob 和 Mallory,而不是谈论服务器、客户端和黑客。如果这不是您第一次尝试理解密码学概念,您会认出这些名称,因为它们在技术文献中被广泛使用。
第一次幼稚的交流
如果Alice要给Bob发消息,她就把消息附在信鸽的腿上,发给Bob。Bob 收到消息,阅读它,一切都很好。
但是,如果Mallory在飞行中拦截了Alice的鸽子并更改了消息怎么办?Bob 无法知道 Alice 发送的消息在传输过程中被修改了。
这就是HTTP 的工作原理。很可怕吧?我不会通过 HTTP 发送我的银行凭证,你也不应该。
一个密码
现在,如果爱丽丝和鲍勃非常狡猾怎么办。他们同意他们将使用密码编写消息。他们会将每个字母在字母表中移动 3 个位置。例如 D → A,E → B,F → C。纯文本消息“秘密消息”将是“pbzobq jbppxdb”。
现在,如果 Mallory 拦截了这只鸽子,她将无法将信息更改为有意义的内容,也无法理解它的内容,因为她不知道代码。但是 Bob 可以简单地反向应用代码并解密 A → D,B → E,C → F 的消息。密文“pbzobq jbppxdb”将被解密回“secret message”。
成功!
这称为对称密钥密码术,因为如果您知道如何加密消息,您也就知道如何解密它。
我上面描述的代码通常被称为凯撒密码。在现实生活中,我们使用更高级、更复杂的代码,但主要思想是相同的。
我们如何确定密钥?
如果除了发送方和接收方之外没有人知道使用的是什么密钥,则对称密钥密码术是非常安全的。在凯撒密码中,密钥是我们将每个字母移动多少个字母的偏移量。在我们的示例中,我们使用了偏移量 3,但也可以使用 4 或 12。
问题是,如果 Alice 和 Bob 在开始用鸽子发送消息之前没有见面,他们将无法安全地建立密钥。如果他们在消息本身中发送密钥,Mallory 将拦截消息并发现密钥。这将允许 Mallory 在 Alice 和 Bob 开始加密他们的消息之前和之后按照她的意愿阅读或更改消息。
这是中间人攻击的典型例子,避免它的唯一方法是一起更改加密系统。
携带箱子的鸽子
所以Alice和Bob 想出了一个更好的系统。当 Bob 想给 Alice 发送消息时,她将遵循以下过程:
Bob 在没有任何消息的情况下向 Alice 发送了一只鸽子。
Alice将鸽子送回,鸽子带着一个锁打开的盒子,Alice保留了钥匙。
Bob 将消息放入盒子中,锁上锁并将盒子发送给 Alice。
Alice收到盒子,用保留的钥匙打开它并阅读信息。
这样 Mallory 就无法通过拦截鸽子来更改消息,因为她没有密钥。当 Alice 想给 Bob 发送消息时,遵循相同的过程。
Alice 和 Bob 只是使用了通常所说的非对称密钥密码术。之所以称为非对称,是因为即使您可以加密一条消息(锁上盒子),您也无法解密它(打开一个关闭的盒子)。在技术术语中,盒子被称为公钥,打开它的钥匙被称为私钥。
我如何信任盒子?
如果你注意的话,你可能已经注意到我们仍然有问题。当 Bob 收到那个打开的盒子时,他如何确定它来自 Alice 以及 Mallory 没有拦截鸽子并将盒子换成她有钥匙的盒子?
Alice 决定她将在盒子上签名,这样当 Bob 收到盒子时,他检查签名并知道是 Alice 发送了盒子。
你们中的一些人可能会想,鲍勃首先会如何识别爱丽丝的签名?好问题。Alice 和 Bob 也遇到了这个问题,所以他们决定由 Ted 代替 Alice 在盒子上签名。
泰德是谁?泰德是一个非常有名、广为人知且值得信赖的人。Ted 将他的签名交给了每个人,每个人都相信他只会为合法的人在盒子上签名。
只有当 Ted 确定要求签名的人是 Alice 时,他才会在 Alice 的盒子上签名。因此,Mallory 无法获得由 Ted 代表她签名的 Alice 盒子,因为 Bob 会知道该盒子是欺诈的,因为 Ted 仅在验证其身份后才为人们签名。
Ted 在技术术语中通常被称为证书颁发机构,您正在阅读本文的浏览器附带了各种证书颁发机构的签名。
所以当你第一次连接到一个网站时,你信任它的盒子,因为你信任 Ted,而 Ted 告诉你这个盒子是合法的。
箱子很重
爱丽丝和鲍勃现在有了可靠的通信系统,但他们意识到携带箱子的鸽子比只携带信息的鸽子慢。
他们决定他们将使用盒子方法(非对称加密)来选择一个密钥来使用对称加密(还记得凯撒密码吗?)来加密消息。
这样他们就能两全其美。非对称密码的可靠性和对称密码的效率。
在现实世界中没有慢鸽子,但是使用非对称密码加密消息仍然比使用对称密码慢,所以我们只用它来交换加密密钥。
现在您知道了HTTPS 的工作原理,您的咖啡也应该准备好了。去喝你应得的吧😉
原文地址 HTTPS explained with carrier pigeons