HTTPS的加密原理

devtools/2025/1/23 21:59:26/
http://www.w3.org/2000/svg" style="display: none;">

HTTPS(HyperText Transfer Protocol Secure)是一个安全的 HTTP 协议,结合了 SSL/TLS 协议来提供数据加密、身份验证和数据完整性保护。其核心加密原理可以分为以下几个步骤:
https>https://i-blog.csdnimg.cn/direct/40720348051d43cbac3a4f18c50615cd.png" alt="在这里插入图片描述" />

https>https://i-blog.csdnimg.cn/direct/e27ab8d67c754bd1ab0a45da533a5283.png" alt="在这里插入图片描述" />
https>https://i-blog.csdnimg.cn/direct/d72a19d99e544457a1fc8c930f31467a.png" alt="在这里插入图片描述" />

  1. 对称加密和非对称加密

HTTPS 使用了对称加密和非对称加密的组合,具体原理如下:
非对称加密(公钥加密)
● 非对称加密(Public Key Encryption)采用公钥和私钥对的形式。客户端和服务器在连接时,会通过公钥加密的方式交换一些信息,以确保在后续的通信中使用对称加密的密钥(称为“会话密钥”)来加密和解密数据。
● 公钥加密:服务器将公钥公开,客户端使用服务器的公钥加密信息,只有持有对应私钥的服务器才能解密。
● 私钥解密:只有服务器拥有私钥,才能解密客户端加密的数据。
对称加密(对称密钥加密)
● 一旦客户端和服务器通过非对称加密交换了会话密钥,就会使用 对称加密(如 AES)来加密会话中的数据传输。对称加密的优势是加密和解密速度较快,适用于大量数据的加密。
2. HTTPS 建立连接的过程(握手过程)
HTTPS 的连接过程通常通过 SSL/TLS 协议来完成,最常见的 SSL/TLS 协议版本为 TLS 1.2 和 TLS 1.3。建立 HTTPS 连接的过程包括以下几个步骤:

  1. 客户端发起请求(Client Hello)
    ● 客户端向服务器发送“客户端 Hello”消息,消息中包含客户端支持的 SSL/TLS 版本、加密套件(加密算法)、随机数等信息。
  2. 服务器响应(Server Hello)
    ● 服务器收到客户端的请求后,选择一个加密套件并返回“服务器 Hello”消息,消息中包含服务器选择的加密算法、服务器的数字证书、服务器生成的随机数等信息。
  3. 服务器证书验证
    ● 服务器将包含公钥的数字证书(通常由受信任的证书颁发机构 CA 签发)发送给客户端。客户端使用 CA 的公钥来验证服务器证书的合法性,确认服务器的身份。
    ● 如果证书无效,客户端将发出警告并终止连接。
  4. 客户端生成会话密钥
    ● 客户端根据接收到的服务器公钥(从服务器的数字证书中获得)加密一个生成的 预主密钥(Pre-Master Secret) 并将其发送给服务器。
    ● 只有服务器才能使用私钥解密预主密钥。
  5. 双方生成对称加密密钥
    ● 客户端和服务器通过预主密钥以及双方的随机数生成相同的 会话密钥(Session Key)。该会话密钥用于加密后续的通信数据。
    ● 这一过程称为密钥交换。
  6. 完成握手,开始加密通信
    ● 双方完成握手后,客户端和服务器都确认加密算法和会话密钥无误,接下来通过对称加密算法(如 AES)使用该会话密钥加密和解密后续的数据传输。
  7. 数据传输加密
    ● 一旦握手过程完成,客户端和服务器就可以使用对称加密进行数据传输。数据的发送和接收都通过加密通道进行,确保通信内容的保密性和完整性。
    ● 数据传输过程中还会使用 消息认证码(MAC) 来确保数据的完整性,防止数据在传输过程中被篡改。
  8. 会话结束(关闭连接)
    ● 一旦通信完成,双方会通过 TLS 关闭通知来安全地终止会话,确保没有数据丢失或篡改。
  9. 证书的作用
    ● 在 SSL/TLS 握手过程中,数字证书主要用于证明服务器的身份,防止中间人攻击(Man-in-the-Middle, MITM)。证书由受信任的证书颁发机构(CA)签发,包含了服务器的公钥和其他身份信息,客户端通过验证证书的有效性来确认通信对方的真实性。
    总结
    ● 非对称加密(公钥和私钥)主要用于密钥交换和身份验证。
    ● 对称加密(会话密钥)用于实际的数据加密传输,因为它加密和解密的速度远快于非对称加密。
    ● 证书提供服务器身份验证,防止中间人攻击。
    通过这种机制,HTTPS 确保了通信内容的机密性、完整性和认证性。

http://www.ppmy.cn/devtools/152971.html

相关文章

Java学习,List移动元素

Java实现List中元素的循环移动(即将列表中的元素向右或向左移动指定数量的位置),可以使用多种方法。 List元素移动指定位置: import java.util.ArrayList; import java.util.Collections; import java.util.List; public class…

Ardupilot开源无人机之Geek SDK进展2024-2025

Ardupilot开源无人机之Geek SDK进展2024-2025 1. 源由2. 状态3. TODO3.1 【进行中】跟踪目标框3.2 【暂停】onnxruntime版本3.3 【完成】CUDA 11.8版本3.4 【完成】pytorch v2.5.1版本 - Jetpack53.5 【未开始】Inference性能3.6 【未开始】特定目标集Training 4. Extra-Work4.…

Django学习笔记(启动项目)-03

Django学习笔记(启动项目)-03 1、在urls文件中配置一个路由url 2、在views文件中创建视图函数 3、启动项目测试结果 # 输入项目启动命令 python manage.py runserver4、创建HTML模版和静态文件 1、在templates文件夹中创建一个html 2、创建url路由与视图函数 3、测试效果 4、…

(三)线性代数之二阶和三阶行列式详解

在前端开发中,尤其是在WebGL、图形渲染、或是与地图、模型计算相关的应用场景里,行列式的概念常常在计算变换矩阵、进行坐标变换或进行图形学算法时被使用。理解二阶和三阶行列式对于理解矩阵运算、旋转、平移等操作至关重要。下面,我将结合具…

docker Ubuntu实战

目录 Ubuntu系统环境说明 一、如何安装docker 二、发布.netcore应用到docker中 Ubuntu系统环境说明 cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.5 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.5 LTS (Jammy Jellyfish)&quo…

如何优化虚拟化服务器在高负载环境下的性能?

虚拟化服务器利用虚拟化技术将物理服务器的硬件资源如CPU、内存、硬盘和网络带宽等)划分成多个虚拟机,每个虚拟机像独立的物理服务器一样运行操作系统和应用程序。虚拟机之间相互隔离,彼此共享底层硬件资源。虚拟化服务器可以通过Hypervisor虚拟机监控器…

研究 Day.js 及其在 Vue3 和 Vue 框架中的应用详解

前言 在前端开发中,日期和时间处理是一个常见需求。随着技术的发展,我们有了更多高效、灵活的日期库可供选择。Day.js 就是一个轻量级、易于使用的 JavaScript 日期库,其灵感来源于 Moment.js,但体积更小,速度更快。本…

如何在 macOS 上安装 PIP ?

PIP 是任何 Python 开发人员必备的工具,因为它简化了安装和管理 Python 包的过程。本教程是为 macOS 用户量身定制的,并假设对使用终端有基本的了解。 必备条件 在安装 PIP 之前,必须确保您的系统上已经安装了 Python。Python 3.4 及更高版…