原文地址:https://medium.freecodecamp.o...浏览器
密码学是一门很难理解的学科。它充满了数学证实。可是对咱们来讲,其中大部分的复杂性,是没有必要去理解其在高层次到底发生了什么。安全
若是你点开这篇文章,但愿建立下一代HTTPS协议,那很是抱歉仅有鸽子是不够的。不过能够先煮杯咖啡,而后慢慢享受这篇文章。服务器
你经过网络作的任何事情(读该篇文章,在亚马逊上买东西,上传猫的照片)均可归结为发送信息给服务器并从服务器获取信息。网络
这可能有点抽象。让咱们想象一下这些信息是经过信鸽传递的。我知道这看起来可能有点随意,可是请相信我https就是用相同的方式工做的,虽然它在速度上快不少。并发
同理,咱们不讨论客户端,服务器和黑客。咱们将谈论Alice, Bob 和 Mallory.若是你不是第一次尝试理解密码学的概念,这几个名字你应该不陌生,由于它们常常出如今技术文献里。编码
若是Alice想给Bob发送一条消息,她把消息绑在信鸽的腿上而后发送给Bob。Bob收到消息,而后读消息,一切看起来都很好。加密
但若是Mallory在空中劫持了Alice的信鸽并换掉了消息会怎么样呢?Bob将没有办法知道Alice发送的消息在运送途中被更改了。spa
这就是http工做的方式。很是可怕是否是?我不会在HTTP上发送个人银行证书,你应该也不会这么作。翻译
如今若是Alice和Bob都很狡猾。他们赞成使用密码来写他们的消息。他们将每一个字符在字母表中的位置移动三个位置。如:D → A, E → B, F → C。明文信息“secret message”将变成“pbzobq jbppxdb”。code
如今若是Mallory劫持信鸽,她将不能把信息改为一些有意义的,也不能理解消息里说了些什么。由于她不知道密码是什么。可是Bob能够轻松地反向应用密码而后解密消息(A → D, B → E, C → F)。而后密文“pbzobq jbppxdb”可解密成“secret message”。
成功!
这就是所谓的对称密钥加密。由于若是你知道怎么加密信息你也就知道如何解密。
上面描述的编码一般称为凯撒密码。在现实生活中,咱们使用更加复杂的编码,可是主要的思想仍是同样的。
对称秘钥加密在除了发送方和接收方,没有其余人知道使用了什么秘钥时是安全的。在凯撒密码中,秘钥就是一个偏移量即每一个字母移动的偏移数。在咱们的例子中咱们使用的偏移量是3,但也能够是4或者12。
问题在于若是Alice和Bob在利用信鸽发送消息以前没有见过面,他们没有办法安全地创建一个秘钥。若是他们在消息中同时发送秘钥,那Mallory能够劫持消息并发现秘钥。这就容许Mallory读取或者修改消息。
这就是属于中间人攻击的一个经典例子。而且惟一的避免方式就是一块儿改变加密系统。
因此Alice和Bob想出了一个更好的系统。当Bob想给Alice发送一条消息时,他遵循如下的流程:
这种方式Mallory没法经过劫持信息篡改消息,由于她没有秘钥。相同的流程用一样应用于Alice给Bob发送消息。
Alice和Bob就是应用了俗称的非对称秘钥加密。它被叫作非对称是由于你能够加密消息(锁上盒子)可是不能解密消息(打开关上的盒子)。在技术文献中这个盒子被称为公钥,打开它的钥匙被称为私钥。
若是你仔细思考你可能会发现咱们还存在一个问题。当Bob接收到打开的盒子后如何肯定它是来自Alice的而且Mallory没有拦截鸽子并替换成Mallory本身有秘钥的盒子呢。
Alice决定,她将给盒子签名。经过这种方式,当Bob接受到盒子时,他检查签名而后知道它是Alice发送过来的盒子。
大家可能会想,Bob第一次怎么辨别Alice的签名呢?这是一个好问题。Alice和Bob也有这个问题,因此,他们决定让Ted给盒子签名,而不是Alice。
谁是Ted? Ted就是著名的,值得信耐的朋友。Ted将他的签名给每个人,每一个人也相信他将只会给合法的人签名盒子。
只要当Ted确认请求签名的人是Alice时,他才会对盒子签名Alice。所以Mallory没法从Ted那获取Alice的签名来假冒Alice,Bob也会知道那个信盒是假冒的。由于Ted只在鉴定完请求者的身份后才会给他们的信盒签名。
Ted在技术上常被称做为证书颁发中心,你正在阅读这篇文章的浏览器就附带了各式各样的证书颁发中心。
因此当你第一次访问一个站点,你信任它的盒子,由于你信任Ted而且Ted告诉你那个盒子时合法的。
Alice和Bob如今有一个可信耐的系统去通讯,可是他们发现携带盒子的鸽子比仅仅携带消息的鸽子更慢。
他们决定他们将仅使用盒子方法(非对称加密)选取一个秘钥,使用对称加密来加密消息(还记得凯撒密码吗)
这种方式结合了二者的优点。非对称加密的可靠性以及对称加密的效率。
在现实世界中没有慢的鸽子,可是不管如何使用对称加密老是比使用对称加密慢,所以咱们仅使用它用于交换秘钥。
如今你知道HTTPS是如何工做的,你的咖啡也应该好了,去享受咖啡吧。
翻译如有不正之处,欢迎指出!