从传输安全性分析https工作原理

今天看到了一篇讲解https工作原理的文章,打破了之前的误区(还是学习计算机网络的时候没理解好),在这里整理一下我的思路。

对称加密和非对称加密

在回顾https工作原理之前,需要问自己三个问题:

1、什么是对称加密?
2、什么是非对称加密?
3、https为了保证数据传输的安全,使用的是对称加密还是非对称加密?

带着这三个问题,首先理解一下对称加密
对称加密是指客户端和服务端共用一个密钥,这个密钥用于加密也用于解密。优点是加计算量小、加解密效率高,但安全性方面存在一些问题,因为密钥放在客户端会有被窃取的风险。对称加密的代表算法有:DES、3DES、AES等等。
对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
由于对称加密存在着上述的不安全性,因此如何把密钥安全地传递到解密者手上就成了必须要解决的问题。

要解决这个问题,可以采用非对称加密
非对称加密将密钥分成了两种:公钥和私钥。公钥通常存放在客户端,私钥存放在服务器。使用公钥加密的数据必须通过私钥才能解密,反过来,私钥加密的数据也只有公钥能够解密。这样的优点是安全性更高,因此客户端发给服务器的加密信息只有服务端可以使用私钥解密,不必担心被人破解,但缺点也很明显,加解密效率比对称加密要差。非对称加密的代表算法有:RSA、ElGamal等。

###http为何面临淘汰
回顾传统的http方式在网络传输时的表现,传输信息时我们的信息都是明文的,因此容易被监听和窃取。
除此之外,传输的数据也会被别有用心的人篡改,导致浏览器与网站收发的内容不一致。
这样看来http是一种不安全的传输协议,安全性而言当然是要使用https了。那https相比http,是如何保证传输的安全的呢?

https的工作原理

只用对称加密是不够的

由于数据明文形式在网络上进行传输是不安全的,我们显然要对数据进行加密,那么加密方式又有两种,对称加密和非对称加密,该选哪种呢?就效率而言,我们当然是先选择对称加密了,毕竟快嘛!
但问题也随之而来:
尽管我们通过对称加密后,在网络上传输的是密文,不怕被监听者知悉原文。而且这段密文只要使用双方协商好的密钥进行解密即可。但这需要有个大前提:浏览器和网站怎么商定使用什么密钥呢?
既然这个密钥只能让这两者知晓,不能被监听者得到,那就没法通过通信过程来进行商定了,因为第一次的通信过程,必然是明文的。这也就意味着,不解决这首次通信的泄密问题,我们是无论如何是无法建立起安全的对称加密密钥的。

引入非对称加密帮助建立对称加密密钥

为了解决上述问题,我们可以引入非对称加密方式。
比如说:我们让浏览器随机生成一个对称加密密钥,但在传输前,我们使用网站提供的公钥先对其进行非对称加密。这样一来,传输时是一段密文,而不是密钥原文,监听者不知道加解密方式,也就无从得知我们的对称加密密钥。之后,网站收到这段密文,只需要使用私钥对其解密,就能获取到浏览器生成的对称加密密钥。
这样做的好处是什么呢?采用非对称加密方式,让浏览器和网站完成首次商定对称加密密钥的过程,等到网站收到了浏览器随机生成的密钥之后,浏览器和网站之间就可以愉快地用对称加密进行通信了,效率依然很高。

其实还有漏洞?网站公钥获取有风险?

上述的工作机制看似天衣无缝,绝对安全,其实不然。想一下,网站的公钥,浏览器应该怎么得到?虽然公钥是公开的数据,在网络上传输不怕被人监听,但是如果公钥被人篡改了,你不知情的情况下用这个来历不明的公钥进行加密,在传输过程中被监听到,你的数据就能被解密。
除非我们把所有的网站公钥都预置进操作系统,否则我们还是有可能从网络上获得一个不安全的公钥。这个时候,需要一个权威的机构来解决这个问题,它就是CA机构。

CA机构的作用

CA机构专门用于给各个网站签发数字证书,从而保证浏览器可以安全地获得各个网站的公钥。它是怎么做到的呢?
首先,网站管理员要向CA机构进行申请,将自己的公钥提交给CA机构。CA机构则会用网站的公钥,加上一系列信息,如网站域名、有效时长等等,来制作证书。证书制作完成,CA机构就会用自己的私钥对其加密,并把数据返回给我们,我们只需要用CA机构的公钥进行解密,就能得到这份CA机构颁发给网站的数字证书了,它包含了我们需要的网站公钥,还有网站域名等等。假如我们解密无法成功,说明这段加密数据并不是由一个合法的CA机构使用私钥加密而来的,可能是被人篡改了(也就是不安全的连接)。
这样一来,就能继续刚刚的流程了,通过CA机构的数字证书形式,保证我们得到安全的网站公钥,然后首次通信时使用非对称加密方式,与网站商定好一个不为人知的对称加密密钥,此后使用商定好的对称加密密钥进行安全且高效的通信。

CA机构的公钥从哪儿来?

不过,有了CA机构就真的安全了吗,我们的CA机构公钥又是从哪儿来的呢?
这就简单不过了,因为CA机构不像网站,它是有限的,任何正版操作系统都会将所有主流CA机构的公钥内置到操作系统当中,所以我们不需要额外去获取,解密时遍历一遍系统中内置的CA机构公钥,有其中一个公钥能进行正常解密,就说明送来的数据是合法CA机构用私钥加密得来的。

扫描二维码关注公众号,回复: 10493900 查看本文章

CA机构会不会被利用

还有一个问题,那就是CA机构为成千上万的网站签发证书,假如攻击者知道某个网站(比如说 张伟.com)用的是某家CA机构的证书,那么他可以为他的网站(比如说 贤哥.com)去向这家CA机构申请一个证书,然后对监听并截获到的加密证书数据进行替换,再返回给用户浏览器,试图让用户访问它的网站。
由于攻击者申请到的证书也是正规CA机构制作的,所以这段加密数据最后可以被成功解密。考虑到这个原因,CA机构制作的证书除了网站公钥外,还加入了其他辅助验证的信息,比如说网站域名。当用户浏览器收到证书并解密后,其中包含的域名(贤哥.com)和浏览器正在请求的域名(张伟.com)对不上,此时浏览器就会显示异常,攻击者也就无功而返。

小结

讲到这儿其实很明显了,http经过一步步完善,就变成了https,上面也就是https的工作原理了。
那么回顾开始的三个问题中的第三个问题,https为了保证数据传输的安全,使用的是对称加密还是非对称加密?
答案是:https使用的是对称加密与非对称加密相结合的方式。

回顾基础知识,每天进步一点点!

发布了5 篇原创文章 · 获赞 7 · 访问量 869

猜你喜欢

转载自blog.csdn.net/qq_40340478/article/details/105213590