HTTP和HTTPS数据加密的过程
目录速览:
在讲http数据加密的过程之前,我们先来了解一下http与https ,和加密的概念
HTTP与HTTPS的基本概念
HTTP: 是互联网上应用最为广泛的一种网络协议,是一个客户端与服务端请求和应答的标准(TCP), 用于WWW服务器传输超文本到本地浏览器的传输协议。
HTTPS: 还是HTTP的传输格式,就是在HTTP下加入了SSL层,HTTPS的安全基础是SSL(加密技术)。
HTTPS协议的主要作用有:
- 建立一个信息安全通道,来保证数据传输的安全
- 确认网站的真实性
HTTP与HTTPS的区别:
- HTTPS本质上还是HTTP格式,只是在HTTPS协议的基础上进行了一层SSL加密(SSL:加密技术)
- HTTP默认使用的是80端口,HTTPS默认使用的是443端口
数据的加密方式:
- 对称加密 :加密和解密都是同样的“钥匙”
- 非对称加密:加密和解密用的是不同的“钥匙“ (加密与解密不是参照同一种方法)
但是在通信中也存在很多的安全隐患和问题
- 如何确定通信对端的身份问题? (权威机构进行认证,颁发证书【后面会讲解】)
- 中间的认证证书被劫持
- 加密–SSL非对称加密算法(密钥:公钥和私钥)服务端生成私钥,服务端根据私钥而生成公钥, 私钥加密,公钥解密, 过程很慢
HTTP数据加密过程(也就是HTTP加密传输逐步完善的原因)
最开始的加密传输
图中过程的详细流程:
采用SSL非对称加密算法,服务端先生成密钥(公钥和私钥),再将公钥传输给客户端,客户端对数据进行公钥加密,在传输给服务端之后,服务端在进行私钥解密。 这一个过程要不断的进行着计算,不断的进行着取模运算,效率太低了。
^^总结:非对称加密速度非常的慢,所以并不直接全部使用非对称的加密算法。
接下来又出现了:
图中过程的详细流程:
- 服务端先生成密钥,服务端三次握手建立连接,先将公钥发送给对方客户端,
- 客户端拿到公钥,接下来传输给服务端的是经过公钥加密的 对称的加密算法和随机数。
- 服务端接收到数据之后, 进行私钥解密。解密完成之后,也发送一个随机数给客户端。
- 双方根据两个随机数计算得到一种对称加密算法。
- 接下来服务端和客户端就进行效率更加高的对称加密数据通信。
但是值得注意的是:
与直接采用对称加密算法不同的是: 通过两个随机数和加密算法进行计算得到新的对称加密算法。 不容易被破解
^^总结:我们知道如果是使用非对称加密算法进行通信的话,效率就非常低,传输的安全性虽然得到保证,但是必然会带来性能的损失。所以在这里, 我们只是使用了非对称加密算法进行选择之后的客户端与服务端进行通信的对称加密算法 通过两个随机数计算得到对称的加密算法, 以后客户端和服务端就可以使用这种高效的对称加密算法进行传输,性能更加的高效。 因为是由非对称加密算法加密的对称加密算法的选择过程,所以之后的对称加密通信也不容易被破解。更加安全。 既安全又高效。
但是还是存在一个问题:
使用公钥有可能会被劫持,所以这时候又产生了签名认证的概念
签名认证
服务端拿着生成的公钥,去权威机构生成一个证书。 证书包含有 公司信息,权威机构信息,公钥信息。所以服务端给客户端传递的时候传的不是公钥,传的是签名证书。(如下图)
图中过程的详细流程:
- 服务端先进行签名认证,生成一个【签名证书】,签名证书中包含 公司信息,权威机构信息,公钥信息
- 服务端开始想客户端传输签名证书,客户端接收到签名证书之后,获得签名证书上面公司的信息,权威机构的信息,还有公钥。紧接着去权威机构进行身份认证。
- 身份认证成功后,传输给服务端 【使用公钥加密支持的加密算法】还有【随机数】。
- 服务端接收到使用公【钥加密支持的加密算法和随机数】之后,也向客户端发送一个【随机数】。
- 双方根据两个【随机数】,共同计算得到一种对称加密算法进行通信
^^总结:
- 对称加密通信,怎么加密就怎么解密,性能比较高的。
- 非加密通信,得不断地计算,不断的取模运算,效率低,解密慢了,整个通信就慢了。
- 非对称加密只是在过程中加密了加密算法的协商
- 通过两个随机数和加密算法进行计算得到新的对称加密算法。 不容易被破解
- 签名证书保证了双发的身份认证,防止我们的信息被劫持
加密传输的详细过程概述(重点掌握)
- 加密分为对称加密和非对称加密
- 对称加密(一直使用同一种加密方式)很容易被破解
- 可以动态协商非对称加密算法(但是被劫持后会被获悉加密算法)
- 因此可以采用非对称加密(公钥加密数据,使用私钥才能进行解密,通信时服务端先将公钥传递给客户端,客户端使用公钥进行加密发送给服务端)
- 但是非对称加密效率比较低
- 因此使用非对称加密的算法给对方来协商加密算法,这样就不会被破解了
- 但是中间依然会被劫持,中间黑客劫持接收服务端的公钥,然后将自己的公钥发送给客户端,这样可以实现中间代理的角色获悉加密后的数据
- 因此要对公钥传输进行保护,引入签名证书的概念。(服务端拿着公钥到权威机构去生成证书(证书中包含公钥,机构信息,认证机构信息))
- 通信时先将证书发送给客户端,客户端拿到证书进行解析,获取到机构信息以及权威机构信息和公钥,接下来去权威机构进行机构认证是否身份正确
这样以后就可以实现先使用非对称加密进行进行加密对称加密算法,协商完毕后再使用对称加密算法对数据进行加密进行传输。这样就能保证既安全又高效的传输了。 但是虽然使用了通过两个随机数和加密算法进行计算得到新的对称加密算法, 但是肯定还是会有被破解的风险,只是看破解所用的成本了。
加密的传输过程( 红色字体显示的)是很值得用自己的语言总结表达出来的, 当然也是面试中面试官最常问的问题。 如果哪里有问题解答的不对或者不清楚的地方,可以评论下来, 我们一起互帮互助,一起进步 ~~