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

HTTPS 加密原理介绍

HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)并非独立协议,而是 HTTP 协议与 TLS/SSL(Transport Layer Security/Secure Sockets Layer,传输层安全 / 安全套接层)协议的结合,核心目标是通过加密和身份验证,解决 HTTP 协议 “明文传输” 导致的 “数据窃听、篡改、身份伪造” 三大安全风险。其加密原理围绕 “身份验证、密钥协商、数据加密” 三个核心环节展开,依赖非对称加密、对称加密、数字证书等技术协同实现。

一、HTTPS 的核心技术基础

在理解加密流程前,需先明确支撑 HTTPS 的两类加密算法及数字证书机制,这是其安全的基石。

1. 两类核心加密算法

HTTPS 并非依赖单一加密方式,而是结合 “非对称加密” 和 “对称加密” 的优势,平衡 “安全性” 与 “性能”:

  • 非对称加密(公钥加密):采用 “一对密钥”(公钥 + 私钥),公钥可公开分发,私钥仅持有者保存。核心特性是 “公钥加密的数据只能用私钥解密,私钥加密的数据只能用公钥解密”,安全性高但运算速度慢(比对称加密慢 100-1000 倍),适用于 “少量关键数据传输”(如密钥协商)。常见算法有 RSA、ECC(椭圆曲线加密,密钥更短、效率更高,是当前主流)。
  • 对称加密:采用 “单密钥”,加密和解密使用同一密钥,运算速度快(适合大量数据传输),但密钥需在通信双方间安全传递 —— 若密钥通过明文传输,会被中间人窃取,导致加密失效。常见算法有 AES(高级加密标准,当前主流,如 AES-256)、ChaCha20(适配低性能设备)。

2. 数字证书与 CA 机构

解决 “公钥信任问题” 的核心机制。非对称加密中,公钥需公开传递,但如何确保 “收到的公钥是目标服务器的,而非中间人伪造的”?这就需要数字证书(由权威 CA 机构颁发):

  • 数字证书内容:包含服务器公钥、服务器域名、证书有效期、CA 机构签名(用 CA 私钥对证书内容加密)等信息;
  • CA 机构(Certificate Authority):如 Let’s Encrypt(免费)、Verisign(付费),是公认的 “信任根”,其根证书预装在浏览器、操作系统中(如 Chrome、Windows 默认信任主流 CA);
  • 验证逻辑:客户端收到服务器证书后,会用本地预装的 CA 根证书(含 CA 公钥)解密 “CA 签名”,若解密成功且证书内容(如域名)与目标匹配,说明服务器公钥可信,反之则提示 “证书风险”。

二、HTTPS 完整加密流程(TLS 1.3 为例)

TLS 是 SSL 的升级版本(当前主流为 TLS 1.2/1.3,SSL 已被淘汰),其握手流程是 HTTPS 加密的核心。以更高效的 TLS 1.3 为例,完整流程可分为 “握手阶段(密钥协商)” 和 “数据传输阶段(对称加密)”,共 4 个关键步骤:

1. 步骤 1:客户端发起 “Client Hello”

客户端(如浏览器)向服务器发送初始请求,包含:

  • 支持的 TLS 版本(如 TLS 1.3)、对称加密算法列表(如 AES-256-GCM)、非对称加密算法列表(如 ECC);
  • 客户端随机数(Client Random,16 字节随机值,用于后续生成会话密钥);
  • 客户端支持的 “扩展字段”(如 SNI,用于服务器在多域名共享 IP 时识别目标域名)。

2. 步骤 2:服务器响应 “Server Hello” 并验证身份

服务器收到请求后,确定通信参数并向客户端发送响应,包含:

  • 确认的 TLS 版本、对称加密算法、非对称加密算法(从客户端列表中选择);
  • 服务器随机数(Server Random,16 字节随机值,与 Client Random 共同参与密钥生成);
  • 服务器数字证书(含服务器公钥,用于客户端验证身份);
  • 服务器临时公钥(若用 ECC 算法,服务器会生成临时 ECC 密钥对,将公钥发送给客户端,避免使用服务器长期公钥,提升安全性);
  • “Server Hello Done” 标识(表示服务器响应完成)。

此时,客户端会验证服务器证书:

  1. 检查证书是否在有效期内;
  2. 检查证书域名是否与目标服务器域名一致;
  3. 用本地 CA 根证书的公钥解密证书中的 “CA 签名”,验证证书是否由可信 CA 颁发(未被篡改)。若验证失败,浏览器会弹出 “不安全连接” 提示,阻断通信;验证成功则提取证书中的服务器公钥(或临时公钥),进入下一步。

3. 步骤 3:客户端生成 “会话密钥” 并验证服务器

客户端基于前两步的随机数和服务器公钥,完成密钥协商:

  1. 生成 “预主密钥(Pre-Master Secret,PMS)”:一个随机值,用服务器公钥(或临时公钥)加密后发送给服务器(因用服务器公钥加密,仅服务器私钥能解密,确保 PMS 不被中间人窃取);
  2. 生成 “会话密钥(Master Secret)”:客户端用 “Client Random + Server Random + Pre-Master Secret” 通过密钥派生函数(如 HKDF)生成会话密钥,该密钥仅客户端和服务器知晓,将用于后续数据的对称加密;
  3. 发送 “Finished 消息”:客户端用会话密钥加密 “Client Random + Server Random + 之前所有通信内容的哈希值”,发送给服务器,用于服务器验证客户端是否正确生成会话密钥。

服务器收到加密的 PMS 后:

  1. 用自身私钥解密 PMS,得到预主密钥;
  2. 用与客户端相同的算法(Client Random + Server Random + PMS)生成会话密钥;
  3. 解密客户端发送的 “Finished 消息”,验证哈希值是否匹配 —— 若匹配,说明客户端已正确生成会话密钥,双方密钥协商完成;若不匹配,通信中断。

4. 步骤 4:对称加密传输数据

密钥协商完成后,客户端与服务器进入 “数据传输阶段”,此时所有 HTTP 数据均通过 “会话密钥” 进行对称加密:

  • 客户端将 HTTP 请求(如 GET/POST 数据)用会话密钥加密,加上 “消息认证码(MAC,如 HMAC)”(用于验证数据是否被篡改),发送给服务器;
  • 服务器用会话密钥解密数据,验证 MAC 通过后,处理 HTTP 请求并生成响应;
  • 服务器将 HTTP 响应(如 HTML、JSON)用会话密钥加密,加上 MAC,发送给客户端;
  • 客户端解密并验证 MAC,解析响应数据,完成一次 HTTPS 通信。

注意:会话密钥仅在当前连接有效(连接关闭后失效),下次连接需重新执行握手流程生成新密钥;TLS 1.3 支持 “会话复用”(如 PSK,预共享密钥),可跳过证书验证和公钥加密步骤,直接复用历史会话密钥,减少握手耗时(从数百毫秒降至十几毫秒)。

三、HTTPS 的安全保障与局限性

1. 三大安全保障

  • 机密性:数据传输用会话密钥对称加密,即使被中间人截取,若无会话密钥也无法解密内容;
  • 完整性:通过 MAC 或 “认证加密算法”(如 AES-GCM)验证数据 —— 若数据被篡改,哈希值会变化,接收方可立即发现;
  • 身份认证:通过数字证书确保 “通信对方是目标服务器”,避免 “中间人攻击”(中间人无法伪造可信 CA 颁发的证书)。

2. 局限性

  • 性能开销:握手阶段的非对称加密运算、证书验证会增加耗时(首次握手约 100-300 毫秒),对称加密也会比 HTTP 多消耗少量 CPU 资源(但当前硬件可忽略);
  • 依赖 CA 信任链:若 CA 机构被攻破(如私钥泄露),攻击者可伪造证书,导致 HTTPS 安全失效(此类事件极少,主流 CA 均有严格安全机制);
  • 无法防 “内容劫持”:HTTPS 仅保障传输过程安全,若服务器本身被入侵(如页面被篡改),客户端仍会接收恶意内容(需结合其他安全措施,如内容校验)。

四、总结

HTTPS 的加密原理本质是 “用非对称加密解决对称密钥的安全传递问题,用对称加密解决大量数据的高效传输问题,用数字证书解决身份信任问题”,三者协同构建了 “端到端” 的安全通信通道。从 TLS 1.0 到 TLS 1.3,协议不断优化(如简化握手流程、淘汰不安全算法),当前已成为互联网的 “标配”—— 无论是电商支付、社交聊天,还是物联网设备通信,HTTPS 都是保障数据安全的核心技术,也是构建可信网络环境的基础。

http://www.dtcms.com/a/531751.html

相关文章:

  • 小白python入门 - 9. Python 列表2 ——从基础操作到高级应用
  • 日本生活-东京新干线乘车经验-流程介绍
  • 实现用户角色权限的动态注册路由
  • 推荐几个安全没封的网站网站搭建的人
  • 数据结构:顺序表讲解(总)
  • 1. 简单回顾Numpy神经网络
  • ArkTS 中 @State 底层原理详解
  • Post-training-of-llms TASK05
  • 项目实战复盘:基于仓颉语言的鸿蒙智能导航助手(HarmonyNav)
  • Datawhale AI秋训营|RAG 多模态相关 TASK1 /Task 2 Baseline笔记(待优化)
  • 龙华新区城市建设局网站网页布局是指什么
  • 【系统分析师】高分论文:论需求分析在项目中的应用(智慧市场监管项目)
  • LeetCode128. 最长连续序列
  • go-stream(一些常用命令介绍,以及在go-tcp中使用)
  • 中职 网站建设与管理海口快速建站公司推荐
  • Qt TCP 网络通信详解(笔记)
  • RandLA-net-pytorch 复现
  • Rocky 9 安装 Elasticsearch分布式集群基于非安全特性
  • 使用现代C++构建高效日志系统的分步指南
  • Nacos 环境搭建:从单机开发到集群生产部署
  • OpenWrt | 实现限制只有指定设备才能访问 luci 和 使用 SSH 等方式管理设备的方法
  • 数据库圣经-----最终章JDBC
  • 小贷做网站客户推广渠道有哪些
  • SAP SD交货单明细查询接口分享
  • Java Spring原理 --- Bean的作用域,Bean的生命周期,Spring自动配置
  • TCP三次握手与四次挥手通俗理解
  • 电商网站如何设计内容能源产品网站建设多少钱
  • 门户网站的发布特点网站子栏目设计
  • 赣州企业网站建设公司苏州网站定制公司哪家好
  • 网页设计与网站建设的课后习题答案外贸 企业网站 建设