您当前的位置:首页 > 计算机 > 服务器 > 网络服务

一张图就把HTTPS工作原理讲明白了!

时间:10-17来源:作者:点击数:

HTTPS(Hypertext Transfer Protocol Secure)是HTTP(Hypertext Transfer Protocol)的扩展版。它利用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议对数据进行加密,确保数据在客户端和服务器之间传输的过程中不被窃取或篡改。

HTTPS的主要目的是确保数据在客户端(如浏览器)和服务器之间传输时的机密性、完整性和真实性。这种保护机制极大地提高了数据传输的安全性,防止了信息被窃取和篡改。HTTPS常用于需要保护敏感信息的场景,如网上银行、电子商务网站、电子邮件服务和社交媒体平台等。

图片

HTTP vs HTTPS

HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)都是用于在客户端(如浏览器)和服务器之间传输数据的协议。它们的主要区别在于HTTPS在HTTP的基础上增加了SSL/TLS协议,从而提供了数据加密和身份验证功能。

  • HTTP:HTTP是一种无状态的、明文的通信协议,这意味着数据在传输过程中不进行加密。尽管HTTP可以有效地传输网页内容,但由于数据以明文形式传输,容易被截取和篡改。
  • HTTPS:HTTPS通过引入SSL/TLS协议,为数据传输提供加密和身份验证功能。SSL/TLS协议确保数据在传输过程中不会被窃听或篡改,并通过数字证书验证服务器的身份。HTTPS在浏览器地址栏中通常显示一个锁形图标,表明连接是安全的。
图片

SSL/TLS概述

SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是为互联网通信提供安全保障的加密协议。TLS是SSL的升级版本,具有更高的安全性和性能。

SSL/TLS的主要功能

  1. 加密:使用对称加密算法和非对称加密算法对数据进行加密,确保数据在传输过程中保持机密性。
  2. 身份验证:通过数字证书验证服务器和客户端的身份,防止中间人攻击。
  3. 数据完整性:使用消息验证码(MAC)和散列函数确保数据在传输过程中没有被篡改。

公钥和私钥

公钥和私钥是实现加密和解密的核心。它们构成了一对密钥,其中公钥用于加密数据,私钥用于解密数据。

  • 公钥(Public Key):公钥是公开的,可以分发给任何人。它用于加密数据或验证数字签名。
  • 私钥(Private Key):私钥是保密的,只能由拥有者自己使用。它用于解密数据或生成数字签名。

在HTTPS通信中,服务器会将公钥包含在数字证书中发送给客户端,客户端使用公钥加密数据,服务器使用私钥解密数据。这种机制确保了即使数据被截获,也无法解密。

数字证书

数字证书是由可信的证书颁发机构(CA,Certificate Authority)签发的,用于验证服务器身份的电子文件。

数字证书包含以下主要信息:

  1. 服务器的公钥:用于加密数据和验证服务器的身份。
  2. 服务器信息:包括服务器的域名和公司名称等信息。
  3. 证书颁发机构信息:包括CA的名称和数字签名。
  4. 有效期:证书的生效日期和过期日期。

数字证书的工作原理

  1. 生成密钥对:服务器生成一对密钥,即公钥和私钥。
  2. 申请证书:服务器将公钥和相关信息提交给CA,申请数字证书。
  3. 颁发证书:CA验证服务器的身份后,使用CA的私钥对服务器的公钥和相关信息进行签名,生成数字证书。
  4. 安装证书:服务器安装CA签发的数字证书,并将其发送给客户端。
  5. 验证证书:客户端收到证书后,使用CA的公钥验证证书的有效性和完整性。

数字证书确保了客户端与服务器之间的通信是安全的,并且服务器的身份是可信的。

HTTPS通信流程

HTTPS通信过程涉及客户端(通常是浏览器)和服务器之间的多个交互步骤,通过这些步骤建立一个安全的通信通道。

图片

1、客户端发起请求

  • 用户在浏览器中输入一个HTTPS URL(如https://www.example.com)。
  • 浏览器向服务器发起一个HTTPS连接请求。

2、服务器响应并发送证书

服务器收到请求后,将其数字证书发送给客户端。数字证书包含服务器的公钥和由可信的证书颁发机构(CA)签名的信息。

3、客户端验证证书

客户端收到服务器的证书后,会进行以下验证步骤:

  • 验证证书的完整性和签名:使用CA的公钥验证证书的签名,确保证书没有被篡改。
  • 检查证书的有效期:确认证书在有效期内。
  • 验证证书的颁发机构:确认CA是受信任的机构。
  • 检查证书吊销状态:通过证书吊销列表(CRL)或在线证书状态协议(OCSP)检查证书是否被吊销。

4、生成会话密钥

  • 如果证书验证通过,客户端会生成一个随机的对称密钥(也称为会话密钥),用于加密会话中的数据。
  • 客户端使用服务器的公钥加密这个会话密钥,并发送给服务器。

5、服务器解密会话密钥

  • 服务器使用其私钥解密会话密钥。
  • 此时,客户端和服务器都持有相同的对称密钥,用于加密和解密后续通信中的数据。

6、加密数据传输

  • 客户端和服务器使用生成的会话密钥对传输的数据进行加密和解密。
  • 所有传输的数据(如HTTP请求和响应)都通过加密通道进行,确保数据在传输过程中保持机密性和完整性。

SSL/TLS握手过程

SSL/TLS握手过程是HTTPS通信的核心,确保客户端和服务器之间建立一个安全的通信通道。

1、客户端Hello

在SSL/TLS握手的第一步,客户端向服务器发送一个ClientHello消息。这个消息包含了客户端支持的加密套件(cipher suites)、SSL/TLS版本、压缩方法以及一个随机数。具体内容如下:

  1. SSL/TLS版本:客户端支持的最高版本(如TLS 1.2或TLS 1.3)。
  2. 加密套件列表:客户端支持的加密算法组合(如AES、RSA等)。
  3. 压缩方法:客户端支持的数据压缩方法。
  4. 随机数:客户端生成的随机数,用于生成会话密钥。
  5. 扩展字段:包括服务器名称指示(SNI)、会话恢复信息等。

2、服务器Hello

服务器收到ClientHello消息后,发送一个ServerHello消息。这个消息包含了服务器选择的加密套件、SSL/TLS版本、压缩方法以及一个随机数。具体内容如下:

  1. SSL/TLS版本:服务器选择的SSL/TLS版本。
  2. 加密套件:服务器选择的加密算法组合。
  3. 压缩方法:服务器选择的数据压缩方法。
  4. 随机数:服务器生成的随机数,用于生成会话密钥。
  5. 扩展字段:包括服务器名称指示(SNI)、会话恢复信息等。

3、服务器证书和密钥交换

服务器向客户端发送其数字证书,证书中包含了服务器的公钥和由证书颁发机构(CA)签名的信息。客户端使用CA的公钥验证证书的真实性,确保服务器的身份是可信的。

在某些加密套件中,服务器还需要发送ServerKeyExchange消息,包含用于密钥交换的参数。例如,使用Diffie-Hellman密钥交换时,服务器会发送其Diffie-Hellman参数。

服务器发送ServerHelloDone消息,表示服务器Hello阶段完成。客户端收到该消息后,进入下一个阶段。

4、客户端密钥交换

客户端生成一个随机的会话密钥(对称密钥),并使用服务器的公钥对其进行加密。加密后的会话密钥通过ClientKeyExchange消息发送给服务器。服务器使用其私钥解密这个会话密钥。

5、会话密钥生成

客户端和服务器使用各自生成的随机数和共享的会话密钥材料,生成最终的会话密钥。这个会话密钥用于加密和解密后续通信中的数据。

6、握手完成

  1. 客户端Finished消息:客户端发送Finished消息,包含所有握手消息的摘要,用会话密钥加密。这确保了握手过程中没有被篡改。
  2. 服务器Finished消息:服务器也发送Finished消息,包含所有握手消息的摘要,用会话密钥加密。至此,握手完成,安全通道建立。

在握手完成后,客户端和服务器使用生成的会话密钥进行数据加密和解密。所有HTTP请求和响应都通过加密通道进行,确保数据在传输过程中保持机密性和完整性。

SSL/TLS版本

图片

TLS 1.0

TLS 1.0是SSL 3.0的继承者,解决了一些安全问题,但仍然存在许多漏洞,因此已经逐步淘汰。

TLS 1.1

TLS 1.1引入了对CBC(Cipher Block Chaining)模式的改进,解决了多次填充攻击问题。但由于安全性不够强,仍然被TLS 1.2和TLS 1.3取代。

TLS 1.2

TLS 1.2是目前广泛使用的版本,具有以下特性:

  1. 支持SHA-256哈希算法:提高了数据完整性验证的安全性。
  2. 支持GCM(Galois/Counter Mode):一种更安全的加密模式。
  3. 增强的握手协议:提供更强的身份验证和密钥交换。

TLS 1.3

TLS 1.3是最新的版本,进一步提高了安全性和性能:

  1. 减少握手步骤:简化握手过程,降低延迟。
  2. 移除不安全的加密算法:如RC4和CBC模式,确保更高的安全性。
  3. 前向安全性:通过Ephemeral Diffie-Hellman密钥交换,确保密钥泄露后,过去的通信仍然安全。

加密和解密

对称加密

对称加密使用相同的密钥进行数据的加密和解密。它具有速度快、效率高的特点,因此适合用于大量数据的传输。在HTTPS中,对称加密用于实际的数据传输。常见的对称加密算法包括AES、DES和3DES。

图片
  1. AES(Advanced Encryption Standard)
    • 加密过程:使用一个对称密钥对明文进行加密,生成密文。
    • 解密过程:使用相同的对称密钥对密文进行解密,还原出明文。
    • 密钥长度:AES支持128位、192位和256位密钥长度,密钥长度越长,安全性越高。
  2. 3DES(Triple Data Encryption Standard)
    • 加密过程:对数据进行三次DES加密,每次使用不同的密钥。
    • 解密过程:对数据进行三次DES解密,还原出明文。
    • 密钥长度:3DES使用三个56位的密钥,总共168位。

非对称加密

非对称加密使用一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。非对称加密的安全性高,但加密和解密速度较慢,通常用于加密对称密钥而非实际数据传输。

  1. RSA(Rivest-Shamir-Adleman)
    • 公钥加密:客户端生成会话密钥后,使用服务器的公钥对会话密钥进行加密,并发送给服务器。
    • 私钥解密:服务器使用其私钥解密会话密钥,确保只有服务器能够读取会话密钥。
    • 密钥长度:RSA的密钥长度通常为2048位或以上,长度越长,安全性越高。
  2. ECC(Elliptic Curve Cryptography)
    • 公钥加密:使用椭圆曲线数学算法生成公钥和私钥,进行加密和解密。
    • 私钥解密:相比于RSA,ECC提供更高的安全性和效率,适合资源受限的设备。

会话密钥

会话密钥是用于对称加密的临时密钥,仅在当前会话中有效。会话密钥通过非对称加密进行安全传输,一旦会话结束,密钥就会失效。这样既保证了数据传输的安全性,又提高了加密解密的效率。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐