当前位置: 首页 > article >正文

HTTPS 加密过程详解

HTTPS 详解及其加密过程流程框架

 

HTTPS(Hypertext Transfer Protocol Secure)是一种基于 HTTP 协议的安全通信协议,通过 SSL/TLS 协议对传输数据进行加密和身份验证,解决了 HTTP 明文传输的安全隐患。以下是其核心原理和加密流程的详细解析:

 

一、HTTPS 的核心组成

 

HTTPS 由两部分构成:HTTP + SSL/TLS。

 

• HTTP:负责应用层数据传输,但默认不加密。

 

• SSL/TLS:工作在传输层与应用层之间,提供加密、身份验证和数据完整性保护。

 

核心安全特性:

 

1. 机密性:数据加密传输,防止窃听。

 

2. 完整性:通过哈希算法(如 SHA-256)检测数据篡改。

 

3. 身份验证:数字证书验证服务器身份,防止中间人攻击。

 

二、加密过程流程框架(TLS 握手阶段)

 

1. 客户端发起请求(Client Hello)

 

• 客户端向服务器发送支持的 TLS 版本、加密套件列表(如 AES、RSA)和一个随机数 Client Random,用于后续密钥生成。

 

2. 服务器响应(Server Hello)

 

• 服务器选择双方均支持的 TLS 版本和加密套件,并返回 Server Random 和 数字证书(包含公钥、域名、CA 签名等信息)。

 

3. 客户端验证证书

 

• 证书合法性检查:

 

  ◦ 验证颁发机构(CA)是否受信任(如 Let's Encrypt、VeriSign)。

 

  ◦ 检查证书有效期和域名是否匹配。

 

  ◦ 若验证失败,浏览器提示风险(如“证书不受信任”)。

 

• 生成预主密钥:客户端生成随机数 Pre-Master Secret,用服务器公钥加密后发送。

 

4. 服务器解密预主密钥

 

• 服务器使用私钥解密 Pre-Master Secret,结合 Client Random 和 Server Random,生成对称加密的 会话密钥(Session Key)。

 

5. 完成握手(Finished)

 

• 客户端和服务器交换 Finished 消息,使用会话密钥加密验证握手完整性。

 

• 验证通过后,后续通信全部采用 对称加密(如 AES)传输数据。

 

三、加密算法与密钥管理

 

1. 非对称加密(RSA/ECDHE):

 

  • 用于握手阶段安全交换 会话密钥(如 Pre-Master Secret)。

 

  • 公钥加密,私钥解密,防止中间人窃取密钥。

 

2. 对称加密(AES/ChaCha20):

 

  • 会话密钥生成后,采用对称加密传输数据,效率更高。

 

3. 哈希算法(HMAC/SHA-256):

 

  • 生成消息摘要,验证数据完整性。

 

四、安全机制与优化

 

1. 前向保密(Forward Secrecy):

 

  • 使用 ECDHE 算法动态生成会话密钥,即使私钥泄露,历史通信仍无法解密。

 

2. 防止重放攻击:

 

  • 通过 序列号 和 随机数 标记数据包,避免攻击者重复发送旧数据。

 

3. 性能优化(TLS 1.3):

 

  • 简化握手流程至 1-RTT(单次往返),减少延迟。

 

五、注意事项

 

1. 并非绝对安全:

 

  • 若用户主动接受伪造证书(如点击“继续访问不安全网站”),仍可能遭受中间人攻击。

 

2. 证书成本:

 

  • 权威 CA 证书需付费,但 Let's Encrypt 等机构提供免费证书。

 

流程图总结

 

客户端 → 发送 Client Hello(TLS 版本、加密套件、Client Random)  

服务器 → 返回 Server Hello(证书、Server Random)  

客户端 → 验证证书 → 生成 Pre-Master Secret → 公钥加密发送  

服务器 → 私钥解密 → 生成会话密钥 → Finished 消息确认  

后续通信 → 对称加密传输数据  

 

 

通过 HTTPS,数据传输的安全性从协议层面得到保障,成为现代互联网(如支付、登录等场景)的基石。

 

HTTP 与 HTTPS 的区别

HTTP(HyperText Transfer Protocol) 和 HTTPS(HyperText Transfer Protocol Secure) 是用于在客户端和服务器之间传输数据的协议。它们的主要区别在于安全性:

1. 安全性:

  • HTTP:数据以明文形式传输,容易被窃听和篡改。

  • HTTPS:数据通过加密传输,确保数据的机密性、完整性和真实性。

2. 端口:

  • HTTP:默认使用端口 80。

  • HTTPS:默认使用端口 443。

3. 协议层:

  • HTTP:工作在应用层。

  • HTTPS:在 HTTP 的基础上增加了 SSL/TLS 协议,工作在传输层和应用层之间。

4. 证书:

  • HTTP:不需要证书。

  • HTTPS:需要 SSL/TLS 证书,由受信任的证书颁发机构(CA)签发。

5. 性能:

  • HTTP:由于没有加密和解密过程,性能较好。

  • HTTPS:由于加密和解密过程,性能稍差,但现代硬件和优化技术已经大大减少了这种差异。

HTTPS 加密过程详解

HTTPS 的加密过程主要依赖于 SSL/TLS 协议,以下是其工作流程:

1. 客户端发起请求:

  • 客户端(通常是浏览器)向服务器发起 HTTPS 请求,请求建立安全连接。

2. 服务器响应并发送证书:

  • 服务器响应客户端的请求,并发送其 SSL/TLS 证书。证书中包含服务器的公钥和证书颁发机构(CA)的签名。

3. 客户端验证证书:

  • 客户端验证证书的有效性,包括检查证书是否由受信任的 CA 签发、证书是否在有效期内、以及证书中的域名是否与请求的域名匹配。

4. 生成会话密钥:

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

5. 服务器解密会话密钥:

  • 服务器使用自己的私钥解密客户端发送的加密会话密钥。

6. 建立加密通信:

  • 客户端和服务器都拥有相同的会话密钥,之后的所有通信都使用这个对称密钥进行加密和解密。

7. 安全数据传输:

  • 客户端和服务器之间的所有数据传输都通过对称加密算法进行加密,确保数据的机密性和完整性。

总结

• HTTP 是一种不安全的协议,适合不需要加密的场景。

• HTTPS 在 HTTP 的基础上增加了 SSL/TLS 加密,适合需要保护数据安全的场景,如在线支付、登录等。

• HTTPS 的加密过程 主要包括证书验证、会话密钥的生成和交换,以及后续的对称加密通信。

通过 HTTPS,用户可以确保其数据在传输过程中不会被窃听或篡改,从而提高了网络通信的安全性。

 

HTTPS 加密过程在网络中的详解

HTTPS 的加密过程主要依赖于 SSL/TLS 协议,它确保了客户端与服务器之间的通信是加密的、安全的。以下是 HTTPS 加密过程在网络中的详细步骤:

1. 客户端发起 HTTPS 请求

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

• 客户端会明确表示支持哪些 SSL/TLS 版本和加密套件(如 TLS 1.2、TLS 1.3 等)。

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

• 服务器收到请求后,会返回以下信息:

  ◦ SSL/TLS 证书:包含服务器的公钥、域名、证书颁发机构(CA)信息等。

  ◦ 支持的加密套件:服务器选择与客户端协商的加密算法(如 RSA、ECDHE 等)。

• 证书由受信任的 CA 签发,用于验证服务器的身份。

3. 客户端验证证书

• 客户端(浏览器)收到证书后,会进行以下验证:

  ◦ 证书是否由受信任的 CA 签发:检查证书链是否可信。

  ◦ 证书是否在有效期内:确保证书未过期。

  ◦ 证书中的域名是否匹配:验证证书中的域名与请求的域名一致。

• 如果验证失败,浏览器会提示用户证书不安全。

4. 密钥交换(Key Exchange)

• 验证通过后,客户端和服务器开始协商加密密钥。常见的密钥交换方式包括:

  ◦ RSA:客户端生成一个随机的对称密钥(会话密钥),并用服务器的公钥加密后发送给服务器。

  ◦ ECDHE(Elliptic Curve Diffie-Hellman Ephemeral):客户端和服务器通过 Diffie-Hellman 算法协商出一个共享密钥,该密钥仅用于当前会话。

• 这一过程确保只有客户端和服务器知道会话密钥。

5. 建立加密通信

• 客户端和服务器使用协商出的对称密钥(会话密钥)进行加密通信。

• 对称加密算法(如 AES、ChaCha20)用于加密数据,确保数据的机密性。

• 同时,使用 HMAC(Hash-based Message Authentication Code)或 AEAD(Authenticated Encryption with Associated Data)确保数据的完整性。

6. 安全数据传输

• 客户端和服务器之间的所有数据(如 HTTP 请求和响应)都通过对称加密算法加密。

• 即使数据被截获,攻击者也无法解密或篡改数据。

7. 会话结束

• 当会话结束时,会话密钥会被销毁,确保每次会话的密钥都是唯一的。

• 如果客户端再次发起请求,会重新进行上述密钥交换过程。

关键点总结

1. 证书的作用:

  • 证书用于验证服务器的身份,确保客户端连接的是真正的服务器,而不是中间人攻击者。

2. 对称加密与非对称加密:

  • 非对称加密(如 RSA、ECDHE):用于密钥交换,确保会话密钥的安全传输。

  • 对称加密(如 AES):用于实际数据传输,效率更高。

3. 安全性:

  • HTTPS 通过加密和证书验证,防止了数据窃听、篡改和中间人攻击。

4. 性能优化:

  • 现代 TLS 协议(如 TLS 1.3)优化了握手过程,减少了延迟,提高了性能。

示例流程

1. 用户访问 https://example.com。

2. 浏览器向服务器发起 HTTPS 请求。

3. 服务器返回证书和公钥。

4. 浏览器验证证书,生成会话密钥,并用服务器的公钥加密后发送给服务器。

5. 服务器用私钥解密,得到会话密钥。

6. 浏览器和服务器使用会话密钥加密通信。

7. 用户与网站之间的所有数据传输都是加密的。

通过 HTTPS,网络通信的安全性得到了极大提升,成为现代互联网的标配协议。

 

 

相关文章:

HTTPS 加密过程详解

HTTPS 详解及其加密过程流程框架 HTTPS(Hypertext Transfer Protocol Secure)是一种基于 HTTP 协议的安全通信协议,通过 SSL/TLS 协议对传输数据进行加密和身份验证,解决了 HTTP 明文传输的安全隐患。以下是其核心原理和加密流程的…...

SpringCache小记

Spring Cache 小记 官方文档:https://springdoc.cn/spring-cache-tutorial/ 基础知识 常用注解 EnableCaching:开启缓存功能,一般放在启动类上。 Cacheable:表示该方法支持缓存。当调用被注解的方法时,如果对应的键已…...

Web-Machine-N7靶机通关攻略

获取靶机ip arp-scan -l 端口扫描 nmap xxxx 访问80端口发现没用 扫描目录 gobuster dir -u http:/192.168.117.160 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium,txt -x php,html,txt ,zip 打开exploit.html 点击F12,修改localhost为靶机ip&#…...

笔记本运行边缘计算

笔记本电脑可以用来运行PCDN(Peer-to-Peer Content Delivery Network)服务。实际上,如果你有闲置的笔记本电脑,并且它具备一定的硬件条件和网络环境,那么它可以成为一个不错的PCDN节点。 运行PCDN的基本要求 硬件需求…...

self Attention为何除以根号dk?(全新角度)

全网最独特解析:self Attention为何除根号dk? 一、假设条件:查询向量和键向量服从正态分布 假设查询向量 q i q_i qi​和键向量 k j k_j kj​的每个分量均为独立同分布的随机变量,且服从标准正态分布,即:…...

第十五次CCF-CSP认证(含C++源码)

第十五次CCF-CSP认证 小明上学满分思路 数据中心满分思路 小明放学满分题解 小明上学 题目链接 满分思路 其实题目看着长,但是做起来是非常好写的,其实主要原因在于,他的红绿灯的变化规律是一定的,而且小明路上的每次红绿灯情况…...

基于Azure Delta Lake与Databricks的医疗数据变更管理

设计Azure云架构方案实现Azure Delta Lake和Azure Databricks,在医疗场景下记录所有数据变更,满足合规性要求(如 GDPR),并具备回滚能力,能快速恢复误删数据(如 RESTORE TABLE table VERSION AS …...

简述Mybatis的插件运行原理,以及如何编写一个插件?

MyBatis 插件运行原理 MyBatis 插件的核心原理基于 Java 的动态代理和责任链模式。下面详细阐述其工作机制: 动态代理 MyBatis 允许你在四大核心对象(Executor、StatementHandler、ParameterHandler 和 ResultSetHandler)的方法执行前后进…...

Java-servlet(七)详细讲解Servlet注解

Java-servlet(七)详细讲解Servlet注解 前言一、注解的基本概念二、Override 注解2.1 作用与优势2.2 示例代码 三、Target 注解3.1 定义与用途3.2 示例代码 四、WebServlet 注解4.1 作用4.2 示例代码 五、反射与注解5.1 反射的概念5.2 注解与反射的结合使…...

SQLark 实战 | 如何通过对象名和 DDL 快速搜索数据库对象

在数据库运维管理、应用开发和问题定位时,常常需要搜索相关的数据库对象。本文将为你介绍如何使用 SQLark 的搜索功能,实现对数据库对象的快速查找与定位。 👉 前往 SQLark 官网:www.sqlark.com 下载全功能免费版。 通过对象名称搜…...

C/S模型-TCP

下图是基于TCP协议的客户端/服务器程序的一般流程: TCP协议通讯流程 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SY…...

51c自动驾驶~合集24

我自己的原文哦~ https://blog.51cto.com/whaosoft/11926510 #DriveArena 上海AI Lab又放大招:首个高保真闭环生成仿真平台 仓库链接:https://github.com/PJLab-ADG/DriveArena 项目链接:https://pjlab-adg.github.io/DriveArena/ D…...

19.哈希表的实现

1.哈希的概念 哈希(hash)⼜称散列,是⼀种组织数据的⽅式。从译名来看,有散乱排列的意思。本质就是通过哈希函数把关键字Key跟存储位置建⽴⼀个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进⾏快速查找。 1.2.直接定址法…...

【PCB工艺】晶体管的发展历史

晶体管被认为是20世纪最伟大的发明之一,因为没有晶体管就不会有现代电脑、手机或平板​​,你也无法阅读到这里的内容,因为不存在网络。 ——本文纯粹出于对过往奋斗在这个领域中科学家的缅怀。科学家有太多宝贵的思想和经验值得我们认真总结和…...

通向AGI的未来之路!首篇2D/视频/3D/4D统一生成框架全景综述(港科大中山等)

文章链接: https://arxiv.org/pdf/2503.04641 摘要 理解并复现现实世界是人工通用智能(AGI)研究中的一个关键挑战。为实现这一目标,许多现有方法(例如世界模型)旨在捕捉支配物理世界的基本原理&#xff0…...

C# BindingFlags 使用详解

总目录 前言 在 C# 编程的世界里,反射(Reflection)是一个强大且灵活的特性,它允许我们在运行时动态地获取和操作类型的信息。而 BindingFlags 枚举类型,作为反射中的核心概念之一,为我们提供了精确控制类型…...

【亚马逊云科技】大模型选型实战(挑选和测评对比最适合业务的大模型)

文章目录 前言1、实验内容2、手册内容 一、环境准备二、Prompt 实战与模型配置2.1 基于 Amazon Bedrock 对比测试不同模型的逻辑推理效果2.2 基于 Amazon Bedrock 对比测试不同模型知识问答能力2.3 Prompt 实战结果分析 三、基于 Amazon Bedrock Evaluations 进行模型评测与自动…...

调用feapder作为子程序时setting.py文件不起作用

feaper 官方文档地址: 简介及安装 - feapder官方文档|feapder-document 问题: 在最近的开发中需要调用feapder作为主程序调用的子程序时发现自动入库时无法入库,通过查看日志信息发现连接数据库时被拒绝连接了,但是我的setting.p…...

神经网络量化3-全连接层实现量化

本节,我们模拟下全连接层实现量化,原理上为了方便计算,全连接矩阵采用动态量化的方法,而输入由于不断在变化,我们采用静态量化的方法,直接给出代码: import torch import numpy as np import m…...

【从零开始学习计算机科学】软件测试(九)Web系统测试 与 数据库测试

【从零开始学习计算机科学】软件测试(九)Web系统测试 与 数据库测试 Web系统测试Web系统基本组成Web系统的服务器端应用特点Web系统测试的分类Web应用系统测试的实施功能测试链接测试表单测试性能测试连接速度测试负载测试压力测试可用性测试导航测试图形测试内容测试表格测试…...

G-Star 校园开发者计划·黑科大|开源第一课之 Git 入门

万事开源先修 Git。Git 是当下主流的分布式版本控制工具,在软件开发、文档管理等方面用处极大。它能自动记录文件改动,简化合并流程,还特别适合多人协作开发。学会 Git,就相当于掌握了一把通往开源世界的钥匙,以后参与…...

笔记:代码随想录算法训练营day58:101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿

学习资料&#xff1a;代码随想录 文中含大模型生成内容 101. 孤岛的总面积 卡码网&#xff1a;101. 孤岛的总面积 所以找周边都是水的陆地的方法就是找边缘的陆地然后删除它连同它的连通的陆地 深搜 #include <iostream> #include <vector> using namespac…...

5.0 VisionPro调用USB相机的方法与步骤说明(一)

本文介绍如何在C#中调用visionPro以处理USB相机采集到的图片。示例如下: 主要思路如下: 1. 使用AForge来打开以及采集usb相机照片。 usb相机处于一直运行状态。每隔100ms采集一次照片。且触发一次事件。 public void Start() { this.videoSourcePlayer.Stop(); …...

微信小程序计算属性与监听器:miniprogram-computed

小程序框架没有提供计算属性相关的 api &#xff0c;但是官方为开发者提供了拓展工具库 miniprogram-computed。 该工具库提供了两个功能&#xff1a; 计算属性 computed监听器 watch 一、安装 miniprogram-computed 在项目的根目录下&#xff0c;使用如下命令&#xff0c;…...

强大的AI网站推荐(第二集)—— V0.dev

网站&#xff1a;V0.dev 号称&#xff1a;前端开发神器&#xff0c;专为开发人员和设计师设计&#xff0c;能够使用 AI 生成 React 代码 博主评价&#xff1a;生成的UI效果太强大了&#xff0c;适合需要快速创建UI原型的设计师和开发者 推荐指数&#xff1a;&#x1f31f;&…...

整理和总结微信小程序的高频知识点

前言 近期萌生了一些想法&#xff0c;感觉可以做一个小程序作为产出。 但小程序做得比较少&#xff0c;因此边做边复习。整理和总结了一些高频知识点和大家一起分享。 一、模板和组件 1.1模板&#xff08;Template&#xff09; 优势 简单灵活&#xff1a;模板定义和使用都较…...

vue中js简单创建一个事件中心/中间件/eventBus

vue中js简单创建一个事件中心/中间件/eventBus 目录结构如下&#xff1a; eventBus.js class eventBus {constructor() {this.events {};}// 监听事件on(event, callback) {if (!this.events[event]) {this.events[event] [];}this.events[event].push(callback);}// 发射…...

01. Linux嵌入式系统学习笔记(一)

一. linux基础操作指令 1. 新建文件和目录 (1) 新建文件 touch 命令&#xff1a;用于创建空文件。 touch filename.txt 如果文件已存在&#xff0c;touch 会更新文件的访问时间和修改时间。 (2) 新建目录 mkdir 命令&#xff1a;用于创建目录。 mkdir directoryname 使…...

【从零开始学习计算机科学】软件测试(十)嵌入式系统测试、游戏开发与测试过程、移动应用软件测试 与 云应用软件测试

【从零开始学习计算机科学】软件测试(十)嵌入式系统测试、游戏开发与测试过程、移动应用软件测试 与 云应用软件测试 嵌入式系统测试测试策略及测试流程嵌入式软件测试问题及测试方法嵌入式软件的测试流程游戏开发与测试过程游戏开发与通用软件的开发过程区别游戏测试主要内容…...

# [RPA] 使用八爪鱼进行高效网页数据采集

在许多行业中&#xff0c;数据是核心资产。然而&#xff0c;虽然许多网站的文本内容可以免费访问&#xff0c;但手动一条一条采集&#xff0c;不仅耗时耗力&#xff0c;还容易出错。这种情况下&#xff0c;使用自动化工具来提高采集效率就显得尤为重要。本文将介绍 八爪鱼 这一…...