VuePress 站点
首页
数学
计算机基础
Java后端
AI大模型
UI设计
首页
数学
计算机基础
Java后端
AI大模型
UI设计
  • 计算机基础
  • 计算机网络应用

    • 课程笔记:TCP三次握手建立连接
    • 课程笔记:TCP三次握手的必要性
    • 课程笔记:TCP协议缺陷与SYN Flood攻击
    • 课程笔记:TCP四次挥手释放连接
    • 课程笔记:TCP四次挥手释放连接的必要性
    • 课程笔记:TCP 报文段格式与 IP 分组
    • 课程笔记:HTTP/2 新特性——二进制分帧
    • 课程笔记:HTTP/2 新特性——多路复用
    • 课程笔记:HTTP/2 新特性——服务器推送(Server Push)
    • 课程笔记:HTTPS 简介与架构图
    • 课程笔记:HTTPS原理与传输层安全协议(TLS)
    • 课程笔记:HTTPS原理——对称加密算法
    • 课程笔记:HTTPS原理——非对称加密算法
    • 课程笔记:HTTPS 原理 —— 数字签名
    • 课程笔记:HTTPS 原理——证书与 CA
    • 课程笔记:完整的HTTPS协议通信流程
    • 课程笔记:HTTPS 协议的性能损耗
    • 课程笔记:TLS False Start 加速 HTTPS
    • 课程笔记:升级 HTTP 协议到 HTTP/2
    • 课程笔记:通过会话恢复加速 HTTPS
    • 课程笔记:OWASP 组织与十大 Web 安全漏洞
    • 课程笔记:XSS 跨站脚本攻击
    • 课程笔记:存储型XSS跨站脚本攻击
    • 课程笔记:XSS攻击窃取Cookie
    • 课程笔记:反射型XSS跨站脚本攻击
    • 课程笔记:DOM型XSS跨站脚本攻击
    • 课程笔记:植入 JS、HTML 代码攻击
    • 课程笔记:XSS攻击的防护策略
    • 课程笔记:XSS攻击的输入环节防护
    • 课程笔记:XSS 劫持 Cookie 的防护策略
    • 课程笔记:XSS 内容输出防护方案
    • 课程笔记:CSP 内容安全策略
    • 课程笔记:CSP 内容安全策略的应用方式
    • 课程笔记:CSRF 跨站请求伪造攻击原理
    • 课程笔记:CSRF 跨站点请求伪造攻击案例
    • 课程笔记:CSRF 跨站请求伪造防护方案
    • 课程笔记:OWASP CSRFTester 工具的原理与使用
    • 课程笔记:点击劫持攻击原理
    • 课程笔记:点击劫持防护方案
    • 课程笔记:URL 跳转漏洞原理与防护
    • 课程笔记:Session 认证与会话劫持
    • 课程笔记:Session固定与Session保持攻击
    • 课程笔记:注入攻击与 OWASP 靶机平台
    • 课程笔记:SQL盲注与ORM注入攻击及防护
    • 课程笔记:XML注入、代码注入、OS命令注入攻击
    • 课程笔记:文件上传漏洞与文件下载/目录浏览漏洞
    • 课程笔记:访问控制与权限访问漏洞
    • 课程笔记:DDoS 分布式拒绝服务攻击原理与防护
    • 课程笔记:CC(Challenge Collapsar)攻击与防护
    • 课程笔记:CDN 的工作原理
    • 课程笔记:CDN的网络架构和术语说明
    • 课程笔记:CDN应用场景与阿里云CDN
    • 课程笔记:如何使用阿里云CDN服务
    • 课程笔记:CDN 刷新与预热
    • 课程笔记:阿里云 CDN 回源配置
    • 课程笔记:CDN 缓存配置
    • 课程笔记:CDN 访问控制与性能优化
  • 计算机网网络

    • 📖 教材介绍与课程导言
    • 📖 1.1 信息时代的计算机网络
    • 📖 1.2 因特网概述
    • 📖 1.3 电路交换、分组交换和报文交换
    • 📖 1.4 计算机网络的定义和分类
    • 📖 1.5 计算机网络的性能指标(1)
    • 📖 1.5 计算机网络的性能指标(2)
    • 📖 1.6.1 常见的三种计算机网络体系结构
    • 📖 1.6.2 计算机网络体系结构分层的必要性
    • 📖 1.6.3 计算机网络体系结构分层思想举例
    • 📖 计算机网络体系结构中的专用术语
    • 📖 物理层概述
    • 📖 物理层下面的传输媒体
    • 📖 传输方式
    • 📖 编码与调制
    • 📖 2.5 信道的极限容量
    • 📖 2.6 信道复用技术
    • 📖 3.1 数据链路层概述
    • 📖 3.2 数据链路层的三个重要问题
    • 📖 3.2.1 封装成帧和透明传输
    • 📖 3.2.2 差错检测
    • 📖 3.2.3 (1) 可靠传输的相关基本概念
    • 📖 3.2.3 (2) 可靠传输的实现机制 - 停止-等待协议(SW)
    • 📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
    • 📖 3.2.3 (4) 可靠传输的实现机制 - 选择重传协议(SR)
    • 📖 3.3 点对点协议 PPP
    • 📖 3.4 共享式以太网
    • 📖 3.4.1 网络适配器和 MAC 地址
    • 📖 3.4.2 (1) CSMA/CD 协议的基本原理
    • 📖 3.4.2 (2) 共享式以太网的争用期、最小帧长和最大帧长
    • 📖 3.4.2 (3) 共享式以太网的退避算法和信道利用率
    • 📖 3.4.3 使用集线器的共享式以太网
    • 📖 3.4.4 在物理层扩展以太网
    • 📖 3.4.5 (1) 网桥的主要结构和基本工作原理
    • 📖 3.4.5 (2) 透明网桥的自学习和转发帧的过程以及生成树协议STP
    • 📖 3.5 交换式以太网
    • 📖 3.5.1 以太网交换机
    • 📖 3.5.2 共享式以太网和交换式以太网的对比
    • 📖 3.6 以太网的MAC帧格式
    • 📖 3.7.1 虚拟局域网 VLAN 概述
    • 📖 3.7.2 虚拟局域网 VLAN 的实现机制
    • 📖 3.8 以太网的发展
    • 📖 3.9.1 802.11 无线局域网的组成
    • 📖 3.9.2 802.11 无线局域网的物理层
    • 📖 3.9.3 (1) 802.11 无线局域网的数据链路层 —— 使用 CSMA/CA 协议(而不使用 CSMA/CD 协议)
    • 📖 CSMA/CA(载波监听多址接入/碰撞避免)协议的基本工作原理
    • 📖 802.11 无线局域网的 MAC 帧格式
    • 📖 网络层概述
    • 📖 网际协议 IP(网际协议)与异构网络互连
    • 📖 IPv4 地址及其编址方法——概述
    • 📖 IPv4 地址的分类编址方法
    • 📖 IPv4 地址的划分子网编址方法
    • 📖 IPv4 地址的无分类编址方法(CIDR)
    • 📖 IPv4 地址的应用规划
    • 📖 IPv4 地址与 MAC 地址
    • 📖 地址解析协议 ARP
    • 📖 IP 数据报的发送和转发流程
    • 📖 IPv4 数据报的首部格式
    • 📖 静态路由配置
    • 📖 因特网的路由选择协议概述
    • 📖 路由信息协议 RIP(路由信息协议)
    • 📖 开放最短路径优先 OSPF(开放最短路径优先)
    • 📖 边界网关协议 BGP(边界网关协议)
    • 📖 路由器的基本工作原理
    • 📖 网际控制报文协议 ICMP(网际控制报文协议)
    • 📖 虚拟专用网 VPN 和网络地址转换 NAT
    • 📖 IP 多播技术的相关基本概念
    • 📖 在局域网上进行硬件多播
    • 📖 在因特网上进行 IP 多播需要的两种协议
    • 📖 网际组管理协议 IGMP
    • 📖 多播路由选择协议
    • 📖 移动 IP 技术概述
    • 📖 IPv6 引进的主要变化
    • 📖 IPv6 数据报的基本首部和扩展首部
    • 📖 IPv6 地址
    • 📖 从 IPv4 向 IPv6 过渡
    • 📖 网际控制报文协议 ICMPv6
    • 📖 软件定义网络 SDN
    • 📖 运输层概述 — 进程间基于网络的通信
    • 📖 TCP/IP 体系结构运输层中的两个重要协议
    • 📖 运输层端口号、复用与分用的概念
    • 📖 UDP 和 TCP 的对比
    • 📖 TCP 报文段的首部格式
    • 📖 "三报文握手"建立 TCP 连接
    • 📖 "四报文挥手"释放 TCP 连接
    • 📖 TCP 的流量控制 (Flow Control)
    • 📖 TCP 的拥塞控制 (Congestion Control) 及与网际层拥塞控制的关系
    • 📖 TCP 可靠传输的实现
    • 📖 TCP 超时重传时间 (RTO) 的选择
    • 📖 TCP 的选择确认 (SACK)
    • 📖 6.1 应用层概述
    • 📖 6.2 客户—服务器方式和对等方式
    • 📖 6.3 动态主机配置协议 DHCP
    • 📖 6.4 域名系统 DNS
    • 📖 6.5 文件传送协议 FTP
    • 📖 电子邮件
    • 📖 万维网 WWW
    • 📖 网络安全概述
    • 📖 密码学相关基本概念
    • 📖 对称密钥密码体制
    • 📖 公钥密码体制
    • 📖 报文摘要和报文鉴别码
    • 📖 数字签名(digital signature)
    • 📖 实体鉴别
    • 📖 密钥分发
    • 📖 访问控制
    • 📖 网络体系结构各层采取的安全措施—物理层和数据链路层
    • 📖 网络体系结构各层采取的安全措施—网络层
    • 📖 网络体系结构各层采取的安全措施—运输层
    • 📖 网络体系结构各层采取的安全措施—应用层
    • 📖 防火墙访问控制与入侵检测系统
    • 📖 常见的网络攻击及其防范
    • 📖 定长子网划分和变长子网划分的二叉树解法

课程笔记:HTTPS 原理 —— 数字签名

课程名称:计算机网络应用 核心摘要:本讲围绕 HTTPS 中的"数字签名"展开,讲解数字签名的两大作用(确认发送方身份、防篡改),梳理签名的生成流程(明文 → 哈希摘要 → 私钥加密 → 数字签名)与验签流程(公钥解密 → 对比摘要),并引出公钥分发难题与 CA 证书颁发机构的引入,为下一讲证书内容做铺垫。

一、 核心概念与原理

1.1 数字签名的定义

数字签名:发送方使用自身私钥对消息摘要加密后生成的密文,附加在原文之外一同发送,用于让接收方验证消息来源与完整性。

1.2 数字签名的两大作用

序号作用说明
1防伪造(确认身份)由于私钥仅发送方(服务端)持有,他人无法假冒其签名,故接收方可确认消息确由声明方发出。例:浏览器访问拉勾教育,验签通过即可确认消息来自该 Web 应用。
2防篡改(保证完整性)接收方通过对比摘要可判断原文是否被修改,确保消息原模原样到达。

1.3 关键术语对照

术语英文/缩写含义
明文Plaintext未加密的原始信息
哈希/散列算法Hash / Digest Algorithm将任意长数据映射为定长摘要
消息摘要Digest哈希算法输出,通常为 32 位十六进制串
私钥Private Key仅服务端持有,用于签名(加密摘要)
公钥Public Key客户端持有,用于验签(解密签名)
数字签名Digital Signature私钥加密摘要后的密文
证书颁发机构CA (Certificate Authority)权威第三方,签发数字证书

二、 技术细节与协议分析

2.1 数字签名的生成流程

明文 (Plaintext)
   │
   ▼
[哈希/散列算法]  ── 如 MD5 / SHA
   │
   ▼
消息摘要 (Digest)   ── 定长,如 32 位十六进制字符串
   │
   ▼
[发送方私钥加密]
   │
   ▼
数字签名 (Digital Signature)

要点:

  • 摘要由原文经哈希算法生成,原文不同则摘要几乎必然不同。
  • 私钥只有服务端持有,因此签名不可被他人伪造。
  • 最终发送给接收方的数据包 = 明文 + 数字签名(两部分一起传输)。

2.2 数字签名的验证(验签)流程

接收方收到:{ 明文, 数字签名 }
   │
   ├──► [用本地公钥解密 数字签名] ──► 得到摘要①(发送方计算)
   │
   └──► [用与服务端相同的哈希算法 对明文做摘要] ──► 得到摘要②(接收方计算)

           比较摘要① 与 摘要②
                 │
        ┌────────┴────────┐
        ▼                 ▼
    两者一致            两者不一致
   验签通过             数据被篡改
  来源可信 / 完整       或 来源可疑
步骤操作结果
1用公钥解密数字签名还原出服务端生成的消息摘要①
2用相同的哈希算法对收到的明文重新计算得到接收方本地摘要②
3对比摘要①与摘要②一致→未被篡改且来源可信;不一致→遭篡改

2.3 公钥分发难题(HTTPS 的核心痛点)

验签的前提是客户端必须持有服务端的公钥,但公钥本身面临两个问题:

  1. 公钥不能在不安全的网络中直接明文发送——否则可被中间人截获/替换。
  2. 如何证明公钥确实属于该服务器——即"如何证明你是你",防止黑客伪装。

解决思路:引入权威第三方 CA(证书颁发机构),由 CA 为服务器签发数字证书,证书中包含并担保服务器的公钥。

2.4 证书颁发机构 CA

  • CA(Certificate Authority):全球数量不多的权威第三方机构,专门负责签发证书并以此盈利。
  • CA 能够自证权威,其自身根证书已被浏览器 / 操作系统内置为受信任证书。
  • 客户端(浏览器、操作系统)出厂时已预装受信任的 CA 证书列表。
  • ⚠️ 安全提示:若安装盗版/篡改过的操作系统,可能将不受信任的 CA 证书伪装为受信任证书内置,导致中间人攻击风险。务必使用正版操作系统。

2.5 常见消息摘要算法

系列全称说明
MD 系列Message DigestMD4、MD5 等,生成定长摘要
SHA 系列Secure Hash Algorithm(安全散列算法)如 SHA-1、SHA-256
MACMessage Authentication Code(消息认证码)带密钥的摘要算法

本讲聚焦 HTTPS 加密原理,上述算法仅作名称了解,不展开细节。

2.6 MD5 的安全性与加盐

  • 网络上存在大量 MD5 摘要库(彩虹表),存储"原文 ↔ 摘要"对照,使 MD5 易被反查破解。
  • 应对手段:加盐(Salt)——在原文中混入随机串后再做摘要,提高破解难度。

三、 实践应用与配置命令

本讲为原理讲解,无具体配置命令。验签逻辑可伪代码表示如下:

# === 服务端:生成数字签名 ===
digest_server = HASH(plaintext)            # 1. 对明文做摘要
signature    = ENCRYPT(digest_server, server_private_key)  # 2. 私钥加密摘要

# 发送:plaintext + signature 一起发给客户端

# === 客户端:验证数字签名 ===
digest_from_sig = DECRYPT(signature, server_public_key)    # 1. 公钥解密签名得摘要①
digest_local    = HASH(plaintext)        # 2. 用相同算法对明文做摘要得摘要②

if digest_from_sig == digest_local:      # 3. 对比两个摘要
    print("验签通过:来源可信、数据完整")
else:
    print("验签失败:数据被篡改或来源可疑")

四、 重点与难点提示

  • 重点①:数字签名的两大作用 = 防伪造(身份认证)+ 防篡改(完整性校验)。
  • 重点②:签名用私钥加密摘要,验签用公钥解密签名——与常规"公钥加密、私钥解密"的方向相反,易混淆,务必区分。
  • 重点③:验签的本质 = 对比两个摘要(解密得到的 vs 本地重算的)。
  • 难点:公钥分发问题——验签依赖公钥,但公钥本身如何安全可信地交付给客户端,是 HTTPS 必须解决的核心问题,引出 CA 与数字证书。
  • 易错点:私钥仅服务端持有;公钥可公开。切勿记反。
  • 考点/面试题:
    1. 简述数字签名的生成与验证过程。
    2. 数字签名如何保证消息的完整性与不可伪造性?
    3. 为什么 HTTPS 需要引入 CA 证书?不能直接发送公钥吗?
    4. MD5 为什么不安全?如何缓解?

五、 课后疑问 / 遗留问题

  1. CA 如何自证权威? 根证书的信任链是如何建立的?
  2. 数字证书的具体结构是什么? 证书中包含哪些字段(公钥、持有者、有效期、CA 签名等)?
  3. 浏览器如何校验一张证书的合法性? 证书被吊销(CRL/OCSP)时如何处理?
  4. TLS 握手过程中,数字签名与证书分别在哪一步使用?
  5. 预告:下一讲将深入讲解证书颁发机构 CA 与数字证书的细节。
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
课程笔记:HTTPS原理——非对称加密算法
Next
课程笔记:HTTPS 原理——证书与 CA