HTTPS的加密过程

HTTPS是一种安全的HTTP协议,通过引入加密技术确保数据传输的隐私性。加密主要分为对称加密和非对称加密。对称加密使用同一密钥进行加密和解密,而非对称加密则使用公钥和私钥配对,公钥加密,私钥解密。在HTTPS中,服务器通过证书提供公钥,客户端验证证书后,使用公钥加密对称密钥发送给服务器,后续通信使用此对称密钥加密,提高效率并保证安全。

什么是HTTPS

HTTPS与HTTP一样都是应用层协议,与HTTP不同的是:HTTP的协议内容都是按照文本方式进行明文传输的,这导致在传输过程第三方者能够轻易获取传输的内容,而HTTPS在HTTP协议基础上引入一个加密以防止传输内容泄露或被篡改。

什么是‘加密’

加密就是指将明文(要传输的信息)按照指定的方式进行变换,生成密文。
解密就是指将密文按照指定的方式进行变换,还原成为明文。
在加密和解密的过程中,一般需要一种或者多个中间转换的数据,来辅助这过程的正常进行,这种数据被叫做密钥。
其作用就是为了防止他人获取其中的明文,造成隐患。

加密的方式有哪些

加密的方式有很多,但是在整体上分为两大类:对称加密和非对称加密。

对称加密

对称加密:指的是明文在加密和暗文在解密过程中都使用同一个密钥。
比如:一个简单的对称加密, 按位异或
明文a=1314,密钥key=1314,
那么密文为a^1314 =b,在解密密文过程中也使用异或运算b^1314就获得了原来的明文1314
当明文引入对称加密后,即使黑客入侵网络设备,让数据被截获,但不知道密钥是什么,也无法进行准确的解密。
如图:
在这里插入图片描述
但是:服务器在同一时刻会给不止一位的客户端提供服务,这些客户端与服务器的密文必须不一样否则就容易被黑客获取,因此一般的方法就是客户端在与服务器建立连接的时候就应该协商这次的密钥是什么。
如图:
在这里插入图片描述
注意:如果客户端直接将密钥进行明文传输给服务器,那么黑客也能获得密钥,那么后续的加密操作就没有任何用处了。因此,客户端在传输密钥的时候必须要给密钥进行加密。
为了能够让密钥也能进行加密,那么我们就要引入非对称加密。

非对称加密

非对称加密:一般使用两个密钥,一个是称为‘公钥’,另一个叫做‘私钥’。
公钥和私钥是配对的,其最大的缺点就是运算速度慢,比对称加密慢许多。
私钥就可以对密文解密也可以对明文进行加密,公钥也一样。一般情况来说客户端可以获得公钥,而服务器一般使用私钥。

当客户端拥有公钥时,向服务器发送密钥时步骤如下:

  • 客户端中先用公钥将密钥进行加密形成密文,再将密文发送给服务器
  • 服务器接收到密文后,通过私钥对密文进行解密从而获取客户端给的密钥
  • 再将收到密钥的信息发给客户端,让客户端知道自己已经收到密钥了
  • 之后客户端就使用自己生成的密文进行对称加密来传递明文

步骤如图:
在这里插入图片描述
注意:对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密, 后续的传输仍然使用对称加密.
不过这种方法也有一定问题:如果客户端获取的公钥是黑客伪造的,那么其后续的加密就没有用了。
步骤如下:
1.当客户端请求公钥时,黑客趁机将自己生成的公钥发给客户端,客户端以为是服务器的公钥,就用该公钥对自己的密钥进行加密发送出去。
2.当黑客获取该客户发送的密文是用自己生成的私钥进行解密从而获得密钥
3.然后黑客获取服务器的公钥后将获取的密钥进行用服务器公钥进行加密后发给服务器
4.服务器获得该密钥后,用私钥解密从而获得客户端的密钥。
5.之后客户端用该密文进行加密已经没有任何用处了,黑客已经拥有了密钥。
如图:
在这里插入图片描述
在这里插入图片描述
为了解决这一问题:通常,在客户端和服务器建立的时候,服务器给客户端返回一个证书,该证书里面就包含公钥,也包含了网站的信息。
如图:
在这里插入图片描述

总结HTTPS传输过程

  • 客户端先从服务器获取到证书,证书中包含公钥
  • 客户端将证书进行校验
  • 客户端生成一个对称密钥,用证书中的公钥进行加密,发送给服务器
  • 服务器得到这个请求后用私钥进行解密,得到该密钥
  • 客户端以后发出后续的请求,都使用这个对称密钥进行加密。
  • 服务器收到这个密文也用这个密钥进行解密。
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 协议的多层安全保障机制,实现了在网络上传输敏感信息时的高度安全性与可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值