生动形象的告诉你为什么需要https以及非对称加密的作用!

1,505 阅读7分钟

小知识,大挑战!本文正在参与程序员必备小知识创作活动。

前言

最近在看《图解http》这本书,非常喜欢书中那种卡通风格的诠释,我自己也在想我可不可以把一些晦涩抽象的知识转化为一些简洁直观的例子,帮助新人快速理解一些知识点,于是便有了这篇文章。

这篇文章旨在帮助新人快速的理解https的功能和作用,更加细致的知识点可以自行查询。

http的缺点

首先咱们先讲讲http这个协议的缺点。之所以要使用https是因为http通信是使用明文的,容易被其他人窃听。且通信时不会验证对方的身份,跟谁都能聊了属于是~

而且更有甚者篡改内容,比如你给别人发表白信息,给别有用意的人篡改成了 "早点睡,晚安"

以上就是http的缺点,那么针对这些缺点,人们想出了很多的加密认证和完整性保护的措施,将http升级为https(不止iphone,协议升级也加个s)

对称加密

简介

对称加密,对称加密就是使用一个公开的加密算法,然后通过密钥来解密。密钥是保密的。由于咱们加密解密都是用这个密钥所以管它叫对称加密也称为共享密钥加密

举例

例如http中的数据是一堆黄金,例如我和你是一小一大两家银行,小银行和大银行需要进行一个黄金的互相流动,但是我的运送人员非常弱鸡,黄金遇到劫匪就会被抢走。我想要黄金运输时不被别人抢走就得用一些安全手段。

对称加密就是把我的黄金放到保险箱里,然后设置一个密码,这个密码可以用来给保险箱上锁和解锁。在大小银行相互运送黄金的时候将保险箱和一张写有密码的纸条一起传输

但是这时候问题来了,我的纸条要是给人偷了怎么办,那我这不就是脱裤子放屁。如果我能够安全的把写了密码纸条传输过去,那你何必用保险箱保存黄金,直接安全的把黄金运过去不就好了!这就是对称加密的弊端。

非对称加密

简介

非对称加密也成为公开密钥,公开密钥使用一对非对称的密钥,一把叫私钥,一把叫公钥。公钥用来加密,而私钥用来解密。

举例

具体的应用就是,咱们的装黄金的保险箱换了个机制,咱们可以用一串密码来上锁,然后咱们各自根据这个密码配一把钥匙,一串密码对应一把钥匙,这个钥匙只能用来解锁咱们约定好密码的保险箱。

大小银行在需要进行黄金运输的时候,我先叫一个小弟把你的密码纸条带回来,当我把保险箱给你的时候,我按照你的密码来上锁,再把写了我的密码的纸条和保险箱一起给你。

等你那边拿到保险箱了,就用你的钥匙解锁拿出黄金,如果你需要把黄金往我这边送就用我给你的这个纸条上的密码来加密,这样我拿到黄金就能用我的钥匙来开锁了。 而且咱们就不怕保险箱的密码给别人知道了,反正知道了也没钥匙解锁。

https采用混合加密机制

简介

https使用的是共享密钥加密和公共密钥加密两者并用的机制,也就是对称+非对称。为什么这么做呢。因为公共密钥加密虽然比较安全,但是处理速度慢。而共享密钥处理速度就就比较快。

举例

还是保险箱,虽然咱们可以设置一个密码和配一把对应的钥匙,但是咱们的钥匙有点生锈,要扭开保险箱把黄金拿出来速度比较慢,如果咱们每次运黄金都要去扭钥匙开锁,就很影响效率。

那如果说我第一次给你运黄金的时候,先用密码来加密保险箱,再把密码的纸条放进去,你那边拿到保险箱了用钥匙解开,拿出里面的黄金和写有密码的纸条。这时候密码咱们可以确定别人是不知道的,因为一直在保险箱里。

那么咱们改一下保险箱的机制,让它不仅可以用密码上锁,还可以用密码解锁,这样咱们只需要第一次用钥匙解锁以保障密码纸条的运输安全,之后都用密码来解锁,那咱们黄金流动的效率就高起来了,而且也可以保障安全。

证明公开密钥正确性的证书

公开密钥加密还是存在一些问题的,继续使用上面的例子,如果我想要给大银行运黄金,大银行得先告诉我他的密码是啥,不然我没法上锁,于是我派了一个小弟过去问,但是在问的路上给劫匪绑架了,他给了一个假的密码纸条给小弟,告诉他把这个密码纸条带回去。小弟把纸条带回来给我之后,我用了假的密码去上锁,那接下来劫匪只需要在我运输黄金的时候把我的保险箱抢走就可以直接用他的钥匙开锁拿走黄金了。

那么我们得想个办法判断小弟带回来的纸条是不是大银行的,这时候就出现了咱们的数字证书认证机构(ca),ca在咱们的设定里是一个第三方的认证组织,大家认可这个组织的诚信

这个组织如何帮助我们呢?首先,大银行向认证组织提交一串密码和一把钥匙,认证机构确定你是大银行之后,就给你一个上了锁的小保险箱(公钥证书),这个小保险箱也有一把钥匙和一串密码,钥匙在认证组织的手里用来上锁,密码用来开锁。把大银行密码纸条塞到小保险箱里。

当我的小弟第一次去拿大银行的密码纸条的时候,如果带回来了一个小保险箱还有一张密码小纸条。那么就用这个小纸条上的密码打开小保险箱,如果密码正确可以打开说明这个小保险箱就是认证组织的小保险箱,咱们就可以把里边装的大银行的密码小纸条拿出来,用来加密自己的保险箱。后面的流程就继续走下去!

浏览器内置公开密钥

那么这时候,咱们又能发现一个问题。要是认证机构的密码小纸条给抢了咋办!劫匪也可以自己制作一个小保险箱呀。不用担心,咱们的浏览器已经内置了常用认证机关的公开密钥。也就是咱们开小银行的每个人都提前拥有几个密码小纸条对应着几个认证组织的小保险箱,这样在第一次获取小保险箱的时候,就不需要把写着密码的小纸条运过来啦。直接用咱们现成的!

总结

以上内容是我自己在学习过程中一环一环脑补出来的例子,最初自己也很绕,希望大家看完上述内容在更加深入的学习时能够减少难度。如果有什么理解上的偏颇望大家能够在评论区指正。

这里是前端新人oil欧呦,最近在憋一个uniapp相关的一篇超级文总结,欢迎关注我,咱们共同成长!