HTTPS 协议

HTTPS的过程

  • 服务器端的公钥和私钥,用来进行非对称加密。
  • 客户端生成的随机密钥,用来进行对称加密。

  1. 【浏览器】向服务器发起HTTPS请求,连接到服务器的443端口。(或者浏览器不知道服务器仅支持 https 请求,使用http协议发送到80端口,服务器一般会使用 302 进行重定向处理)

  2. 【服务器】将自己的经CA认证的公钥证书发送给客户端。

  3. 【浏览器】验证证书真伪,并从证书中取出公钥,然后生成随机的数X,并使用公钥加密。

  4. 【服务器】使用私钥对浏览器发过来的随机数进行解密,并使用该随机数作为盐,通过算法得到对称加密的密钥 key

  5. 【浏览器】和【服务器】随后开始使用对称加密的密钥进行通信。

加密算法

 f1(k,data)=K
 f2(k,X)   =data

上面的 f1 f2 一对兄弟,用 f1 进行加密,使用 f2 进行解密。

使用这种加密算法存在的问题

非对称加密

//公钥加密,私钥解密
f(pk,data) = Y       // pk 是公钥
f(sk, Y )  = data    // sk 是私钥

//也可以私钥加密,公钥解密
f(sk,data) = Y       // sk 是私钥
f(pk, Y )  = data    // pk 是公钥

这种加密算法存在的问题

对称加密 + 非对称加密

服务器端和客户端,先用非对称加密,商量出来对称加密要是用的 key,然后使用 key 进行非对称加密。

CA + 对称加密 + 非对称加密

针对对称加密和非对称加密,不能防止中间人攻击的缺陷,科学家和数据家,以及密码安全学家,想出了使用 CA + 对称加密 + 非对称加密 进行加密的方法

中间人攻击的最主要原因

最主要的原因,就是因为,在用户请求密码的这一步,中间人就已经攻击了。所以我们不知道拿到的公钥是好是坏。

加密过程

下面的名词解释

  • Pk 公钥

  • SK 私钥

  • CPK CA 颁发的公钥

  • CSK CA 颁发的私钥

过程

对称加密和非对称加密协商的过程

  1. C->S :支持的 SSL 版本,非对称加密算法,随机数1

  2. S->C : 选定使用的版本,对称加密算法, 随机数2 证书

  3. C: 认证证书的合法性,如果认证通过,那么就进行第四步

  4. C-> S: 随机数3 。has(随机数1,随机数2)=xx

  5. S-> :验证 xx==hash(随机数1,随机数2),验证hash值通过了,那么客户端就是真的,而不是假冒的然后通过某种特定的算法 f(随机数1,随机数2,随机数3)=k K 就是对称加密的 k

  6. S->C : hash(随机数1,随机数2,随机数3)将结果发送给客户端

  7. C->S:客户端验证hash(随机数1,随机数2,随机数3 ),通过的话,那么说明服务器端是合法的。 然后也根据特定的算法, f(随机数1,随机数2,随机数3)=k 自己求出来 k

参考文献

[1]https://www.bilibili.com/video/BV1w4411m7GL?share_source=copy_web
[2]https://blog.csdn.net/weixin_54542209/article/details/123282258

posted @ 2021-07-20 15:26  沧海一声笑rush  阅读(386)  评论(0编辑  收藏  举报