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.之后就拿到了由第三方的服务器发来的公钥,之后再发送的密文也会被第三方解密了
所以保证数据安全重点是不能允许其他不明的证书安装进系统

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

HTTPS协议的加密通信过程主要依赖于SSL/TLS协议,它通过结合**非对称加密**与**对称加密**的方式,确保数据在传输过程中的安全性与完整性。整个过程可以分为以下几个关键阶段: ### 1. 客户端发起连接请求 当用户在浏览器中输入一个 HTTPS 网址时,客户端(例如浏览器)会向服务器发送一个 `ClientHello` 消息,其中包含支持的 TLS 版本、加密套件(Cipher Suite)以及一个随机生成的客户端随机数(Client Random)[^3]。 ### 2. 服务器响应并提供证书 服务器收到请求后,会回应一个 `ServerHello` 消息,包括: - 选择使用的 TLS 版本和加密套件; - 一个由服务器生成的随机数(Server Random); - 服务器的数字证书(通常基于 X.509 标准),该证书包含服务器的公钥和由可信 CA(证书颁发机构)签名的信息,用于身份验证[^4]。 ### 3. 客户端验证证书并生成密钥 客户端接收到证书后,会执行以下操作: - 验证证书的有效性,包括检查是否由受信任的 CA 签发、是否过期、域名是否匹配等; - 如果证书有效,则客户端生成一个**预主密钥(Pre-Master Secret)**,并通过服务器的公钥进行加密,并将加密后的数据发送给服务器(即 `ClientKeyExchange` 消息)[^1]。 ### 4. 服务器解密并生成会话密钥 服务器使用自己的私钥解密出客户端发送的预主密钥,并结合之前交换的客户端随机数和服务器随机数,计算出**主密钥(Master Secret)**。随后,双方各自根据主密钥派生出多个**会话密钥(Session Keys)**,这些密钥用于后续的对称加密和消息认证码(MAC)生成[^2]。 ### 5. 双方确认加密通道建立 客户端和服务器分别发送 `ChangeCipherSpec` 消息以通知对方切换到加密模式,并发送 `Finished` 消息以验证之前的握手过程是否被篡改。此时,加密通信通道已经成功建立,接下来的数据传输都通过对称加密方式进行[^3]。 ### 6. 数据传输阶段 一旦安全通道建立完成,客户端与服务器之间传输的所有数据都会使用会话密钥进行加密和解密。通常采用的是 AES、ChaCha20 等对称加密算法,同时配合 HMAC 或 AEAD(如 AES-GCM)机制来确保数据完整性和防篡改。 ### 加密流程总结图示 ``` ClientHello ↓ ServerHello + 证书 ↓ ClientKeyExchange + ChangeCipherSpec + Finished ↓ ChangeCipherSpec + Finished ↓ 加密数据传输 ``` ### 关键技术点说明 - **非对称加密**:用于密钥交换阶段,保证预主密钥的安全传输,常用算法为 RSA 或 ECDHE。 - **对称加密**:用于实际数据传输阶段,具有更高的性能,常用算法包括 AES、ChaCha20。 - **数字证书与CA**:用于验证服务器身份,防止中间人攻击。 - **前向保密(Forward Secrecy)**:使用 ECDHE 等密钥交换算法可实现即使长期密钥泄露也不会影响过去的通信安全[^2]。 HTTPS加密过程通过 SSL/TLS 协议的多层安全保障机制,实现了在网络上传输敏感信息时的高度安全性与可靠性。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值