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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【10月更文挑战第31天】

你好,这里是网络技术联盟站,我是瑞哥。

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、客户端发起请求

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提供更高的安全性和效率,适合资源受限的设备。

会话密钥

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

目录
相关文章
|
25天前
|
安全 算法 网络安全
HTTPS原理
HTTPS 通过加密、数字证书、握手过程等多种手段,确保了网络通信的安全和可靠。它为用户提供了更高级别的隐私保护和数据安全,是现代互联网中重要的安全保障机制。随着网络安全威胁的不断增加,HTTPS 的应用也越来越广泛,成为保障网络安全的重要基石。
120 70
|
25天前
|
安全 算法 网络协议
网易面试:说说 HTTPS 原理?HTTPS 如何保证 数据安全?
45岁老架构师尼恩在其读者交流群中分享了关于HTTP与HTTPS的深入解析,特别针对近期面试中常问的HTTPS相关问题进行了详细解答。文章首先回顾了HTTP的工作原理,指出了HTTP明文传输带来的三大风险:窃听、篡改和冒充。随后介绍了HTTPS如何通过结合非对称加密和对称加密来解决这些问题,确保数据传输的安全性。尼恩还详细解释了HTTPS的握手过程,包括如何通过CA数字证书验证服务器身份,防止中间人攻击。最后,尼恩强调了掌握这些核心技术的重要性,并推荐了自己的技术资料,帮助读者更好地准备面试,提高技术水平。
|
3月前
|
安全 网络安全 数据安全/隐私保护
https的原理
https的原理
67 2
|
4月前
|
安全 算法 网络协议
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
54 2
|
5月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
106 10
|
4月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
416 0
|
6月前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
68 2
|
6月前
|
网络协议 前端开发 Java
网络原理 - HTTP / HTTPS(4)——构造http请求
网络原理 - HTTP / HTTPS(4)——构造http请求
65 1
|
6月前
|
存储 JSON 安全
网络原理 - HTTP / HTTPS(2)——http请求
网络原理 - HTTP / HTTPS(2)——http请求
66 1
|
7月前
|
安全 网络协议 算法
秒懂HTTPS接口(原理篇)
【4月更文挑战第24天】秒懂HTTPS接口(原理篇)
580 4
秒懂HTTPS接口(原理篇)