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