http与https的协议架构
HTTPS相对于HTTP,实际就是多了一层安全层。 所以实际 HTTPS = HTTP + SSL/TLS。
http在网络上是明文发送的,只要有点http基础的人就可以看懂,所以为了防止第三方进行偷看同时进行篡改的问题,便有了https。
对称加密
发生方和接收方用同样的规则为数据进行加密。 常见的算法有:RC4,DES,3DES,AES,ChaCha20 比较安全的是AES,ChaCha20,
缺点
这样只要有第三方知道加密的规则,这样就很容易破解了。 所以密钥泄漏就成了问题,而对于服务端来说,要安全的通信,所以与每个客户端的密钥肯定不能是相同的,对于成千上万的客户端,会有成千上万个密钥,所以密钥保存也就成了问题。
非对称加密
数据经过公钥加密就只能被私钥解密,数据经过私钥加密就只能被公钥解密
如果应用到客户端和服务端的话
服务端拥有成对的公钥和私钥。 客户端向服务端请求公钥,接着客户端给服务端发送信息时,先使用公钥进行加密,这样就只能使用服务端的私钥才能解密了。
常见的算法有:DH,DSA,RSA,ECC, 常用的是RAS和ECC
缺点
它的速度很慢,效率很低。
对称加密与非对称加密结合
客户端先向服务端请求公钥,接着把RandKey使用公钥进行加密,服务端使用私钥进行解密,得到了Randkey,接着服务端和客户端使用 先使用对称加密把Randkey发送过去,再使用对称加密发送信息。
下面是得到RandKey的详细过程
第一步 客户端先向服务端打招呼,并把支持的TLS版本,加密套件,以及生成的第一个随机数(称为第一个随
机数)发给服务端
第二步 服务端也向客户端打招呼,并把支持的TLS版本,加密套件,以及自己生成的一个随机数(称为第二个
随机数)发送给客户端
第三步 服务端把证书发送给客户端
第四步 服务端把公钥发送给客户端
第五步 服务端告诉客户端已经完成了
第六步 客户端再生成一个随机数(称为预主密钥),经过上面的的公钥加密,发送给服务端
第七步 服务端根据第一个随机数和第二个随机数再加上预主密钥生成会话密钥,客户端同样也根据第一个随
机数和第二个随机数再加上预主密钥生成会话密钥,接着双方使用会话密钥进行加密
第一步到第六步:为非对称加密。 当生成会话密钥后,双方的通信为对称式加密
缺点
中间人私发公钥
不过,这样第三方可以伪装成服务端,把自己的公钥给客户端发去,与客户端进行通信。
中间人伪装身份
同时,第三方也可以伪装成客户端 此时,为了解决下面问题,就有了CA证书
CA证书
使用第三方权威机构来颁发公钥和私钥。
服务端往往先向CA机构请求颁发CA证书,它里面包含公钥和私钥。然后它就使用证书里面的公钥和私钥作为它的公钥和私钥。 而作为客户端来说,它验证服务端公钥的合法性时,可以从CA机构那里拿到根证书,从而可以来验证对方公钥的合法性,从而可以判断是否是第三方冒充。
|