2. 密码学基础回顾:对称加密、非对称加密、哈希函数与数字签名

SSL/TLS 协议的安全基石建立在现代密码学的四大核心支柱之上:对称加密、非对称加密、哈希函数与数字签名。理解这些原语的工作原理、性能特征与安全边界,是掌握 SSL/TLS 握手协议、密钥交换与证书验证机制的前提。

2.1 对称加密:AES 与 DES

对称加密使用同一把密钥完成数据的加密与解密。其核心优势在于加解密速度快,适合对大量数据进行保护;挑战在于密钥分发与管理。

2.1.1 DES(数据加密标准)

DES 是早期对称加密标准,使用 56 位密钥对 64 位数据块进行 16 轮 Feistel 结构加密。由于密钥长度过短,DES 已能被暴力破解攻破,目前仅用于向后兼容或教学场景。

2.1.2 AES(高级加密标准)

AES 是当前对称加密的事实标准,采用 SubBytes-ShiftRows-MixColumns-AddRoundKey 的 SPN 结构,支持 128/192/256 位密钥长度,对应 10/12/14 轮加密。AES 在硬件与软件上均具有极高的执行效率,且未发现有效的实用攻击。

算法 密钥长度 分组大小 轮数 安全状态
DES 56 位 64 位 16 已破解(暴力可行)
3DES 112/168 位 64 位 48 逐步弃用(性能差)
AES-128 128 位 128 位 10 安全(推荐)
AES-256 256 位 128 位 14 安全(最高等级)
实战建议:SSL/TLS 中优先使用 AES-256-GCM 模式,它同时提供加密与完整性校验,避免 CBC 模式存在的填充预言攻击风险。

2.2 非对称加密:RSA 与 ECC

非对称加密使用公钥-私钥对:公钥公开分发,私钥严格保密。加密时使用接收方公钥,解密时使用接收方私钥。非对称加密解决了密钥分发问题,但计算速度比对称加密慢 100–1000 倍。

2.2.1 RSA

RSA 的安全性基于大整数分解难题。密钥生成过程:选择两个大素数 p、q,计算 n = p×q,选取公钥指数 e,计算私钥指数 d 满足 e×d ≡ 1 mod φ(n)。RSA 可用于加密与数字签名,推荐密钥长度 ≥ 2048 位。

2.2.2 ECC(椭圆曲线密码学)

ECC 的安全性基于椭圆曲线离散对数问题(ECDLP)。在相同安全强度下,ECC 密钥长度远小于 RSA:256 位 ECC 密钥 ≈ 3072 位 RSA 密钥。ECC 计算效率更高,带宽占用更小,是 TLS 1.3 的首选非对称算法。

安全等级 RSA 密钥长度 ECC 密钥长度 性能对比
80 位 1024 位 160 位 ECC 快 3–5 倍
112 位 2048 位 224 位 ECC 快 5–10 倍
128 位 3072 位 256 位 ECC 快 10–20 倍
256 位 15360 位 512 位 ECC 优势极大
核心对比:RSA 在密钥生成与签名验证上较慢,ECC 在同等安全强度下密钥更短、计算更快。TLS 1.3 已移除 RSA 密钥交换,仅保留 ECDHE 作为密钥协商算法。

2.3 哈希函数:SHA-256

哈希函数将任意长度的输入数据映射为固定长度的摘要值,具有单向性(不可逆)、抗碰撞性(难以找到两个不同输入产生相同输出)和雪崩效应(输入微小变化导致输出完全改变)。

2.3.1 SHA-256 工作原理

SHA-256 属于 SHA-2 家族,输出 256 位(32 字节)摘要。处理流程:

  1. 填充:在消息末尾添加 1 位 '1' 和若干 '0',使长度模 512 等于 448,最后附加 64 位原始长度。
  2. 分块:将填充后的消息划分为 512 位(64 字节)的数据块。
  3. 压缩:每个数据块经过 64 轮压缩函数,使用 8 个 32 位工作变量和 64 个常数 K。
  4. 输出:最终 8 个 32 位寄存器值拼接为 256 位摘要。
安全警告:SHA-1 已被实际碰撞攻击攻破(SHAttered 攻击),SHA-256 目前安全。TLS 1.3 要求至少使用 SHA-256 作为哈希函数,禁止使用 MD5 和 SHA-1。

2.4 数字签名

数字签名提供身份认证、数据完整性与不可否认性。签名者使用私钥对消息摘要进行签名,验证者使用签名者公钥验证签名。

2.4.1 签名与验证流程

  1. 签名方:对消息 m 计算哈希 h = Hash(m),使用私钥对 h 签名得到签名值 s。
  2. 验证方:对收到的消息 m' 计算哈希 h' = Hash(m'),使用公钥验证签名 s 是否匹配 h'。

2.4.2 常见签名算法

算法 基础 签名长度 TLS 支持
RSA-PSS 大整数分解 与密钥长度相同 TLS 1.2+
ECDSA 椭圆曲线 64–72 字节 TLS 1.2+
EdDSA (Ed25519) 扭曲爱德华曲线 64 字节 TLS 1.3
实战建议:在 TLS 证书签名中优先使用 ECDSA 或 EdDSA,它们比 RSA 签名更短、更快,且能减少握手延迟。
密码学基础四支柱与 SSL/TLS 关系图 对称加密 AES / DES / ChaCha20 非对称加密 RSA / ECC / DH 哈希函数 SHA-256 / SHA-384 数字签名 RSA-PSS / ECDSA TLS 记录层加密 TLS 密钥交换 TLS 完整性校验 TLS 证书验证 SSL/TLS 安全协议 握手层 + 记录层 + 警报层 安全通信信道 机密性 · 完整性 · 认证 对称加密保障传输效率,非对称加密实现密钥交换,哈希函数确保数据完整性,数字签名完成身份认证 四者协同构成 TLS 协议的安全基础

2.5 混合加密体系:SSL/TLS 的密码学组合

SSL/TLS 采用混合加密策略,结合对称与非对称加密的优势:

  • 握手阶段:使用非对称加密(ECDHE、RSA)协商对称密钥,使用数字签名验证证书身份。
  • 记录阶段:使用对称加密(AES-GCM、ChaCha20-Poly1305)加密应用数据,使用哈希函数(HMAC)保证完整性。
关键设计:非对称加密仅在握手阶段使用,保护密钥协商过程;对称加密用于后续大量数据传输,保证性能。这种分层设计使得 TLS 既安全又高效。

2.6 密码学安全边界与 TLS 实践

密码原语 安全边界 TLS 实践要求
AES 密钥长度 ≥ 128 位,使用认证加密模式 禁用 CBC 模式,使用 GCM/CCM
RSA 密钥长度 ≥ 2048 位,使用 OAEP 填充 仅用于签名,不用于密钥交换(TLS 1.3)
ECC 曲线选择至关重要(如 P-256、X25519) 优先使用 X25519 或 P-256
SHA-256 输出 256 位,抗碰撞安全 用于证书签名与 PRF 计算
数字签名 私钥保护、随机数质量 使用 ECDSA 或 EdDSA,避免 RSA 签名
安全红线:永远不要使用已废弃的算法(RC4、MD5、SHA-1、DES、3DES、1024 位 RSA)。TLS 1.3 已强制移除这些弱算法,确保配置遵循现代密码学最佳实践。