HTTPS 协议
HTTPS的过程
- 服务器端的公钥和私钥,用来进行非对称加密。
- 客户端生成的随机密钥,用来进行对称加密。
-
【浏览器】向服务器发起HTTPS请求,连接到服务器的443端口。(或者浏览器不知道服务器仅支持 https 请求,使用http协议发送到80端口,服务器一般会使用 302 进行重定向处理)
-
【服务器】将自己的经CA认证的公钥证书发送给客户端。
-
【浏览器】验证证书真伪,并从证书中取出公钥,然后生成随机的数X,并使用公钥加密。
-
【服务器】使用私钥对浏览器发过来的随机数进行解密,并使用该随机数作为盐,通过算法得到对称加密的密钥
key
-
【浏览器】和【服务器】随后开始使用对称加密的密钥进行通信。
加密算法
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 颁发的私钥
过程
对称加密和非对称加密协商的过程
-
C->S :支持的 SSL 版本,非对称加密算法,随机数1
-
S->C : 选定使用的版本,对称加密算法, 随机数2 证书
-
C: 认证证书的合法性,如果认证通过,那么就进行第四步
-
C-> S: 随机数3 。
has(随机数1,随机数2)=xx
-
S-> :验证 xx==hash(随机数1,随机数2),验证hash值通过了,那么
客户端就是真的,而不是假冒的
然后通过某种特定的算法f(随机数1,随机数2,随机数3)=k
K 就是对称加密的 k -
S->C :
hash(随机数1,随机数2,随机数3)
将结果发送给客户端 -
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