此文章只分析https
为何保证安全,从发展历程开始分析,希望读者在阅读本文章前先弄懂http
和https
的传输过程。
全文全文字,枯燥无味,但认真读完肯定受益匪浅
解决http
传输数据的安全问题,对数据进行加密
网络传输过程只是两个人之间说悄悄话吗?显然不是的,你要经过路由,运营商,把你要传输的数据进行好几手的传递,中间有任何一个有坏心思都可以读取并篡改你的数据。
解决上面的问题我们要弄懂签名,摘要,证书,对称加密,非对称加密是什么
根据加密和解密的算法是否相同来区别对称和非对称加密
对称加密:加密和解密是用同样的密钥
非对称加密:私钥加密公钥解密,公钥加密私钥解密,私钥只有一个,公钥想有几个有几个
摘要的作用是防篡改,举个例子,你有一篇文章《我的男朋友,彭于晏》
,然后呢有人给你改了,把内容改成了宋小宝
,这显然和题目不符合,意味着被篡改了,即摘要决定了内容是什么。
一段数据,通过摘要算法,拿出它的摘要,那么它的内容就定死了,不能再次修改,假设篡改的话,很大的几率上生成的摘要也会不同,两端数据摘要不同则代表被篡改。理解成hash即可。
过程:
一端发送 数据和这段数据的摘要,以及摘要密钥(因为对端要知道对方的摘要算法)。
另一端根据传递的密钥重新运算数据摘要,与另一端传递过来的摘要进行对比,相同则未篡改,不同则被篡改
此时还存在问题,假设有个大坏蛋把内容和摘要全改了怎么办?
解决此问题需要使用非对称加密+摘要的方式,即签名。
签名的作用是防伪。
过程:
一端的私钥对摘要进行加密,私钥只有一个,另一端用公钥进行解密,拿出摘要,再进行对比,防止中间人连皮带肉全部替换。
其为何安全?
场景:
客户端用私钥对一段摘要进行了加密,分析一下中间商具备的能力
1.能看吗
中间商有客户端私钥对应的公钥即可解密,能解密则意味着能看,那是否意味着能篡改呢,能看≠能改。
2.能改吗
两端进行传输的时候肯定商量好了用哪对私公钥,你中间商能有私钥吗,私钥只有一个,所以说你没有加密的能力,所以说能看不能改。
继续往下猜想,假设说在商量密钥的时候动了手脚,因为公钥也是在网络上传输的,本来客户端想给服务端自己的公钥,然后大坏蛋扣留这个公钥,然后用自己的私钥生成的公钥交给服务端呢,则伪装客户端成功。伪装服务端也是一样的道理,无非就是服务端下发公钥的时候扣留,然后给你一份假的公钥,这时候解决这个问题就引入了第三方机构。
先不想CA
第三方机构,如果让我们自己解决怎么解决这个问题呢,把密钥拷到U盘里不就稳稳当当了,中间商没有我的公钥,首先不能看,而且呢我们两端商量好就用这对公私钥,私底下商量好,不经过网络就能解决一切问题。
产生的问题是,只要需要两端通信则需要copy
u盘的密钥,限制太大了。
此时把上述u
盘行为委托给可信的第三方,第三方会给我们的操作系统内置根证书,服务器申请证书,然后服务端传递的数据先发送一个证书,里面有自己的公钥,签名算法,指纹,指纹算法,证书颁发机构,过期时间等等,客户端对证书内容进行验证,第三方的服务是需要收费。
那这样究竟安不安全呢,分析传输过程
1.客户端发送请求,浏览器输入地址
2.服务端接受请求,下发证书
3.客户端验证证书合法性
4.客户端生成对称加密密钥,并用证书里的公钥进行加密,传递给服务端
5.使用这个对称密钥进行数据传输
安全否在3个方面进行分析
1.能被监听吗
数据是对称加密的密钥来加密的,此密钥使用服务端的公钥来加密的,那么谁能解这个密钥呢,只有服务端的私钥可以解,因此中间人拿不到对称加密的密钥。
2.能被篡改吗
上述分析可得中间人拿不到对称加密的密钥,因为只有对称加密的密钥可以解码和编码数据。
3.能伪装吗
中间人伪装客户端和服务端能实现吗,第三机构的下发证书并不是随便下发的,一个组织首先提出申请,第三方机构对组织进行评审,审评通过还需付费才可使用。所以说中间人想要伪装服务端的成本非常高,伪装是相互的一个过程,伪装不了服务端就伪装不了客户端。
✨ 原 创 不 易 , 还 希 望 各 位 大 佬 支 持 一 下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下
点 赞 , 你 的 认 可 是 我 创 作 的 动 力 ! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!
⭐️ 收 藏 , 你 的 青 睐 是 我 努 力 的 方 向 ! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!
✏️ 评 论 , 你 的 意 见 是 我 进 步 的 财 富 ! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!