在网络上的任何活动均可以归结为服务器以前的收发消息。咱们能够将这些消息的收发,想象成由鸽子实现的。这很荒谬,但确实如此。安全
有一天爱丽丝经过鸽子发送一条“我爱你”的消息给鲍勃。可是爱丽丝的情敌马洛里,半路拦截了鸽子,并将消息修改成了“我不爱你”。可是鲍勃没法知道,消息被篡改了。这就是Http的工做方式,很是的不可靠。服务器
爱丽丝和鲍勃,准备对消息进行加密。好比将字母偏移3位,好比“A”使用“D”表示,“B”使用“E”表示。马洛里即便拦截了鸽子,也没法进行修改,由于他不清楚加密的方式,没法理解消息的内容。可是鲍勃却能够轻松将消息进行解密。网络
这被称为symmetric key cryptography(对称密钥加密),你知道如何加密也知道如何解密。现实的生产中,会使用更复杂的加密方式,可是主体思路是相同的。加密
若是爱丽丝和鲍勃在发送消息前不见面,他们没法创建安全的密钥。若是在消息自己之中,携带密钥。马洛里就会知道消息的内容,对其解密后进行篡改。设计
这就是典型的MITM(中间人攻击),避免中间人攻击咱们必须更改加密系统。code
爱丽丝和鲍勃设计出了一个更好的加密系统,下面是操做步骤ip
爱丽丝和鲍勃之间的通信使用了asymmetric key cryptography(非对称密钥加密)。你能够加密消息(把消息放进盒子),可是你没办法解密(你没有钥匙)get
盒子也能够称为“公钥”,盒子的钥匙被称为“私钥”。it
目前还有一个问题。若是马洛里拦截了鸽子,将盒子换成了本身的盒子,怎么办?io
爱丽丝能够在盒子上,添加上本身的签名,鲍勃就会知道这个盒子是否来自爱丽丝。那么鲍勃一开始该如何识别签名呢?
爱丽丝和鲍勃决定让泰德代替爱丽丝在盒子上签名。泰德是一个很是有名的,而且值得信赖的人。泰德只有肯定是爱丽丝的盒子的状况下,才会在盒子上签名。而马洛里不会获得泰德的签名。
而泰德就是Certification Authority(证书颁发机构)
带有盒子的鸽子,飞的比不带盒子的鸽子飞的慢,这该怎么办?
使用非对称加密比使用对称加密要慢。爱丽丝鲍勃决定,只使用盒子(非对称加密)交换加密的密钥。而后使用密钥对消息进行对称加密。
这就是Https的原理。