HTTPS的加密过程

原来的http是明文传输的,可以随意截获或篡改,所以需要HTTPS加密
HTTPS为对称加密+非对称加密

HTTPS的非对称加密与对称加密

连接建立时的请求:使用非对称加密
1.客户端发起连接请求,同时计算出一个ClientRandom发送给客户端
2.服务器使用CA私钥将CA签名、签名算法、公钥加密,同时计算出一个ServerRandom一起发送给客户端
3.客户端使用系统中内置的CA公钥进行验证解密,得到签名算法,通过算法验证签名是否有效,验证通过后可以得到服务器公钥
4.客户端计算出一个随机数,称为预主密钥(Pre-Master Secret),通过服务器公钥将随机数加密,传输给服务器
5.双方使用ClientRandom、ServerRandom、预主密钥共同计算出2个会话密钥,这两个密钥存在客户端和服务器中,不会经过网络传输
连接建立后:使用对称加密
双方通过计算出的会话密钥进行传输数据和解密
连接断开后,共同销毁对称私钥

怎么保证公钥能正确的发送到客户端而防止被掉包?

1.需要第三方CA的密钥对公钥计算摘要、签名加密,生成一个密文,这段密文,只能由CA的公钥解密,而CA的公钥如果在网络中传输也一样被截获,所以直接内置到了客户端的操作系统中,
2.CA发来的密文,使用客户端中保存的CA公钥对其解密,获得摘要
3.由于客户端系统中已经保存有数字签名,那么就可以通过CA计算的摘要,被客户端使用同样的算法得出摘要,对比2个摘要是否一致,如果一致,那么就是服务器发来的正确的未经篡改的公钥
4.客户端得到服务器的公钥后,这时就可以进行数据的传输了

如果服务器发的公钥被截获,会发生什么?

1.假如公钥被第三方截获,那么第三方就可以通过他们自己的加密工具,生成一个假的公钥,再发回给客户端
2.客户端使用假的公钥加密数据传输给服务器
3.第三方截获由客户端假加密的数据,进行解密,这时就可以获取到客户端的数据了,然后进行篡改并发去服务器

有了证书是否就安全了?

答案是不一定安全的,第三方也可以向CA申请数字签名,当服务器发回给客户端公钥时,被第三方截获,此时第三方可以进行以下操作
1.将数字签名换为第三方的数字签名,并且将其返回给客户端
2.如果客户端安装了第三方的数字签名,那么在解密CA加密的密文时,会发现使用第三方的公钥可以进行解密
3.客户端使用第三方解密之后会发现客户端计算后的摘要与CA的摘要一致,则会认为这个证书是有效的
4.之后就拿到了由第三方的服务器发来的公钥,之后再发送的密文也会被第三方解密了
所以保证数据安全重点是不能允许其他不明的证书安装进系统

证书验证的过程,只会在握手建立连接的时候进行验证,连接完成后就不需要验证了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值