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