Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : HTTPS工作原理是什么?它是如何实现数据加密的?
【简要回答】
- HTTPS 的工作原理:
- HTTPS 通过在 HTTP 协议和 TCP 协议之间加入 SSL/TLS 协议层来实现安全传输。它确保数据在客户端和服务器之间的传输过程中得到加密、身份验证和完整性保护,使得数据在传输过程中无法被窃听或篡改。HTTPS 默认使用
443端口。
- HTTPS 通过在 HTTP 协议和 TCP 协议之间加入 SSL/TLS 协议层来实现安全传输。它确保数据在客户端和服务器之间的传输过程中得到加密、身份验证和完整性保护,使得数据在传输过程中无法被窃听或篡改。HTTPS 默认使用
- HTTPS 实现数据加密的步骤:
- 建立 TCP 连接。
- 进行 SSL/TLS 握手,协商加密算法和密钥。TLS握手过程如下:
① Client Hello(客户端问候)
② Server Hello(服务器问候)
③ Certificate(证书)
④ Certificate Verification(证书验证)
⑤ Key Exchange(密钥交换)
⑥ Session Key Generation(会话密钥生成)
⑦ Change Cipher Spec(更改密码规范)
⑧ Finished(完成) - 客户端和服务器使用协商好的密钥进行加密通信。
【详细回答】
- HTTPS 的工作原理:
- HTTPS (Hypertext Transfer Protocol Secure):HTTPS 通过在 HTTP 协议和 TCP 协议之间加入 SSL/TLS 协议层来实现安全传输。它确保数据在客户端和服务器之间的传输过程中得到加密、身份验证和完整性保护,使得数据在传输过程中无法被窃听或篡改。HTTPS 默认使用
443端口。
- HTTPS (Hypertext Transfer Protocol Secure):HTTPS 通过在 HTTP 协议和 TCP 协议之间加入 SSL/TLS 协议层来实现安全传输。它确保数据在客户端和服务器之间的传输过程中得到加密、身份验证和完整性保护,使得数据在传输过程中无法被窃听或篡改。HTTPS 默认使用
- HTTPS 实现数据加密的步骤:
- 建立 TCP 连接: 客户端首先通过 TCP 三次握手与服务器建立连接,这是可靠传输的基础。
- SSL/TLS 握手: 建立 TCP 连接后,客户端和服务器开始进行 SSL/TLS 握手,协商加密算法和密钥。握手过程如下:
① Client Hello(客户端问候): 客户端发送 Client Hello 消息,包含客户端支持的 SSL/TLS 版本、加密算法套件列表、随机数等信息。
② Server Hello(服务器问候): 服务器从客户端提供的加密算法套件列表中选择一个,并返回服务器的 SSL/TLS 版本、选择的加密算法套件、随机数等信息。
③ Certificate(证书): 服务器将自己的数字证书发送给客户端。 证书包含了服务器的公钥、域名、有效期等信息。
④ Certificate Verification(证书验证): 客户端验证服务器的数字证书是否有效,包括:证书是否由受信任的 CA 机构颁发;证书是否过期;证书上的域名是否与服务器域名一致。
⑤ Key Exchange(密钥交换): 客户端生成一个预主密钥 (Pre-master secret) ,使用服务器证书中的公钥对其进行加密,然后发送给服务器 (注意:不同的密钥交换算法会进行不同的处理,例如 RSA, Diffie-Hellman 等) 。服务器接收到加密的预主密钥后,使用自己的私钥进行解密,获得明文的预主密钥(这一步是在服务器内部完成的,不会产生额外的网络消息)
⑥ Session Key Generation(会话密钥生成): 客户端和服务器分别使用客户端随机数、服务器随机数 和 预主密钥,通过相同的算法生成会话密钥(Session Key)。 会话密钥用于后续加密数据的对称加密算法。
⑦ Change Cipher Spec(更改密码规范): 客户端和服务器分别发送 Change Cipher Spec 消息,通知对方后续使用加密通信。
⑧ Finished(完成): 客户端和服务器分别发送 Finished 消息,验证握手过程是否成功。 - 加密通信: 握手完成后,客户端和服务器使用会话密钥对后续传输的数据进行加密和解密,保证数据传输的安全。
【知识拓展】
-
HTTPS工作原理示意图如下:
-
为什么建立 TLS(Transport Layer Security) 握手时采用非对称加密?
- TLS 握手阶段的首要目标是安全地协商出一个只有客户端和服务器知道的共享密钥(即会话密钥)。为了防止中间人攻击,需要使用非对称加密来保护密钥交换过程。
- 非对称加密的特点是:使用公钥加密的数据只能用对应的私钥解密,反之亦然。服务器的公钥可以公开,客户端可以使用公钥加密预主密钥,然后发送给服务器。由于只有服务器拥有私钥,因此只有服务器才能解密预主密钥,从而保证了密钥交换的安全性。
-
为什么建立 TLS 握手后,HTTPS 正常通信都采用对称加密?
- 虽然非对称加密可以保证密钥交换的安全性,但其加密和解密速度较慢,不适合加密大量数据。
- 对称加密的特点是:加密和解密使用同一个密钥,速度快,效率高。因此,在 TLS 握手完成后,客户端和服务器会使用协商好的会话密钥(Session Key)进行对称加密通信,以提高数据传输的效率。
- HTTPS 采用混合加密的方式,结合了非对称加密和对称加密的优点,既保证了安全性,又保证了效率。
-
对于 HTTP/3,HTTPS 实现数据加密的步骤为:
- 建立 QUIC 连接: 客户端和服务器首先建立 QUIC 连接。 QUIC 协议本身就包含了拥塞控制、可靠传输和安全传输等功能,因此不再需要 TCP 协议。
- 内置 TLS 1.3 握手: QUIC 协议强制使用 TLS 1.3 进行加密。 在建立 QUIC 连接的同时,QUIC 协议会自动进行 TLS 1.3 握手,协商加密算法和密钥。 相比于 TCP + TLS 的握手过程,QUIC 的握手过程更加高效,只需要 1-RTT (Round-Trip Time),甚至在某些情况下可以实现 0-RTT。
- 加密数据传输: 客户端和服务器使用 QUIC 协议提供的加密通道进行数据传输。 所有的数据都会被 QUIC 协议加密,保证数据传输的安全性和可靠性。