mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
4809 字
14 分钟
系列导读
2026-05-15

一、系列简介#

你每天打的 HTTPS 请求,背后跑着 TLS 1.3 握手——ECDHE 密钥交换、AES-GCM 加密、Ed25519 签名,整套流程在 100 毫秒内完成。你登录 GitHub 用的 OAuth 2.0,授权码经过 PKCE 保护,Access Token 是 JWT,签名密钥存在 KMS 里轮换。你存在数据库里的用户密码,经过 bcrypt 哈希、加盐、慢哈希迭代——这些全是密码学。问题是,大部分工程师对这些”黑盒”的理解停留在”调库”层面,一旦遇到密钥泄露、证书过期、JWT 伪造、TLS 降级攻击,就束手无策。

本系列从密码学三大分支(对称加密、非对称加密、哈希)出发,逐步深入到数字签名、TLS 1.3、PKI 证书体系、OAuth 2.0/OIDC、JWT 安全、零信任架构、密钥管理,再探索前沿方向(同态加密、后量子密码),最后以安全工程实践、攻击案例分析和全链路综合实战收尾。16 章内容覆盖从”调库工程师”到”安全架构师”的完整知识链路。

核心观点#

  • 密码学不是”调库”——不理解原理,你连参数都配不对:AES-GCM 的 nonce 重复一次就完蛋,RSA 的 padding 选错签名就能被伪造,JWT 的 alg=none 攻击只需要一行代码
  • 安全是系统工程,不是单点技术:TLS 保护传输、KMS 保护密钥、OAuth 保护授权、零信任保护边界——
  • 密码学攻击是检验安全设计的唯一标准:BEAST、Heartbleed、ROBOT、Logjam——每个攻击都暴露了”理论上安全、实现上脆弱”的鸿沟
  • 后量子迁移不是未来,是现在:NIST 已标准化 Kyber/Dilithium,“先加密、后解密”的 harvest-now-decrypt-later 攻击正在发生
Note

本系列假设你具备基本的网络协议知识(HTTP/TCP)和编程经验。OAuth 2.0 和 OIDC 部分与姊妹系列「Web 协议深潜」中的 OAuth2 与 OIDC 协议 互补,本系列侧重密码学视角(PKCE 的安全性证明、JWT 的签名与加密),Web 系列侧重协议流程与部署实践。

二、场景驱动阅读路线#

不想按部就班从第 1 章读到第 16 章?以下 5 条路线从你日常遇到的真实问题出发,按”问题在哪→密码学怎么解决→底层原理是什么”的顺序串联章节。每条路线可独立阅读,前置依赖已在路线内标注。

路线总览#

flowchart TB subgraph 路线A[" 路线A:我的数据安全吗"] A1[Ch1 密码学全景] --> A2[Ch2 对称加密] A2 --> A3[Ch4 哈希与MAC] A3 --> A4[Ch11 密钥管理] end subgraph 路线B[" 路线B:HTTPS 是怎么工作的"] B1[Ch1 密码学全景] --> B2[Ch2 对称加密] B2 --> B3[Ch3 非对称加密] B3 --> B4[Ch5 数字签名] B4 --> B5[Ch6 TLS 1.3] B5 --> B6[Ch7 证书与PKI] end subgraph 路线C[" 路线C:如何实现用户认证"] C1[Ch1 密码学全景] --> C2[Ch3 非对称加密] C2 --> C3[Ch5 数字签名] C3 --> C4[Ch8 OAuth2与OIDC] C4 --> C5[Ch9 JWT安全] end subgraph 路线D[" 路线D:量子计算来了怎么办"] D1[Ch1 密码学全景] --> D2[Ch3 非对称加密] D2 --> D3[Ch12 同态加密] D3 --> D4[Ch13 后量子密码] end subgraph 路线E[" 路线E:我的系统会被攻击吗"] E1[Ch1 密码学全景] --> E2[Ch6 TLS 1.3] E2 --> E3[Ch14 安全工程实践] E3 --> E4[Ch15 密码学攻击] end style 路线A fill:#e3f2fd,stroke:#1565c0 style 路线B fill:#e8f5e9,stroke:#2e7d32 style 路线C fill:#fff3e0,stroke:#e65100 style 路线D fill:#fce4ec,stroke:#c62828 style 路线E fill:#f3e5f5,stroke:#6a1b9a subgraph 路线F[" 路线F:我想动手实践"] F1[Ch2 对称加密实践] --> F2[Ch3 非对称加密实践] F2 --> F3[Ch4 哈希实践] F3 --> F4[Ch5 签名实践] F4 --> F5[Ch6-9 协议实践] F5 --> F6[Ch17 TLS实战] F6 --> F7[Ch18 认证实战] end style 路线F fill:#e0f2f1,stroke:#00695c

路线A:我的数据安全吗?#

场景:数据库被拖库了、备份文件泄露了、日志里明文存着密钥——你需要理解数据保护的完整链路:用什么加密、密钥怎么管、哈希怎么防篡改。

顺序章节为什么读这章
1Ch1 密码学全景建立全景认知:三大分支各解决什么问题、威胁模型怎么建模
2Ch2 对称加密核心:AES-GCM/ChaCha20-Poly1305 是数据加密的主力——但 nonce 重复、密钥派生错误都是致命漏洞
3Ch4 哈希与 MAC完整性保护:SHA-256 验证数据没被篡改、HMAC 验证消息来源、bcrypt 保护密码
4Ch11 密钥管理密钥是加密系统的命门——KMS/HSM、信封加密、密钥轮换策略

路线逻辑:先理解加密工具(Ch1→Ch2),再学完整性保护(Ch4),最后解决”密钥放哪”这个最现实的问题(Ch11)。很多团队加密做得很好,但密钥明文放在配置文件里——等于没加密。


路线B:HTTPS 是怎么工作的?#

场景:你每天都在用 HTTPS,但 TLS 握手发生了什么?ECDHE 怎么交换密钥?证书链怎么验证?0-RTT 有什么安全风险?这条路线带你从加密算法一路追踪到证书信任链。

顺序章节为什么读这章
1Ch1 密码学全景全景认知:密码学在 HTTPS 中的角色
2Ch2 对称加密TLS 数据通道用 AES-GCM 或 ChaCha20-Poly1305——AEAD 是 TLS 1.3 的加密核心
3Ch3 非对称加密TLS 密钥交换用 ECDHE——理解椭圆曲线才能理解前向安全
4Ch5 数字签名证书签名用 RSA-PSS 或 Ed25519——签名算法选错,证书就不安全
5Ch6 TLS 1.3核心:TLS 1.3 握手流程、0-RTT、密钥派生——HTTPS 安全的完整实现
6Ch7 证书与 PKI证书信任链、CA 层次、OCSP、Let’s Encrypt——HTTPS 信任的根基

路线逻辑:从加密原语出发(Ch2→Ch3→Ch5),理解 TLS 协议如何组合这些原语(Ch6),最后理解信任链如何建立(Ch7)。HTTPS 的安全不是某一个算法的功劳,而是对称加密+非对称加密+签名+证书链的协同。


路线C:如何实现用户认证?#

场景:你要给系统加登录功能。“用 JWT 吧”——但 JWT 的签名算法怎么选?密钥怎么轮换?OAuth 2.0 的授权码流程为什么比隐式流程安全?PKCE 解决了什么问题?

顺序章节为什么读这章
1Ch1 密码学全景全景认知:认证在密码学中的位置
2Ch3 非对称加密JWT 签名用 RSA/ECDSA——理解非对称加密才能理解签名验证
3Ch5 数字签名签名是认证的基石——RSA-PSS/ECDSA/EdDSA 各有适用场景
4Ch8 OAuth 2.0 与 OIDC核心:授权码+PKCE 是目前最安全的 OAuth 流程——OIDC 在授权层上叠加身份层
5Ch9 JWT 安全JWT 不是银弹——JWS/JWE/JWK 的正确用法、常见漏洞(alg=none、密钥混淆、重放)

路线逻辑:先理解签名的密码学基础(Ch3→Ch5),再学习 OAuth 2.0 的授权架构(Ch8),最后深入 JWT 的安全实践(Ch9)。很多认证漏洞不是协议问题,而是实现问题——JWT 的 alg=none 攻击就是典型。


路线D:量子计算来了怎么办?#

场景:Shor 算法能破解 RSA 和 ECC,Grover 算法能削弱对称加密——量子计算对密码学的威胁不是科幻,是工程问题。NIST 已经标准化了后量子算法,迁移路径怎么规划?

顺序章节为什么读这章
1Ch1 密码学全景全景认知:当前密码学的安全假设
2Ch3 非对称加密RSA/ECC 的安全基于大数分解和离散对数——Shor 算法直接打破这两个假设
3Ch12 同态加密同态加密是隐私计算的方向——CKKS/BFV 允许在密文上计算
4Ch13 后量子密码核心:NIST PQC 标准——Kyber(KEM)、Dilithium(签名)、迁移路径与混合方案

路线逻辑:先理解当前非对称加密的安全假设(Ch3),再了解隐私计算前沿(Ch12),最后掌握后量子迁移方案(Ch13)。harvest-now-decrypt-later 攻击意味着你现在加密的数据,如果不用后量子算法,十年后可能被解密。


路线E:我的系统会被攻击吗?#

场景:TLS 配置正确吗?有没有降级风险?密钥实现在侧信道上泄露了吗?BEAST、Heartbleed、ROBOT 这些攻击在历史上是怎么发生的?安全工程怎么系统性地防御?

顺序章节为什么读这章
1Ch1 密码学全景全景认知:威胁模型与安全原则
2Ch6 TLS 1.3TLS 是攻击面最大的密码学协议——理解 TLS 才能理解大部分网络攻击
3Ch14 安全工程实践核心:STRIDE 威胁建模、安全开发生命周期、渗透测试方法论
4Ch15 密码学攻击历史攻击案例——BEAST/Heartbleed/ROBOT/Logjam、侧信道攻击、实现漏洞

路线逻辑:先理解 TLS 这个最大攻击面(Ch6),再学习安全工程的方法论(Ch14),最后通过历史攻击案例理解”理论上安全≠实现上安全”(Ch15)。每个攻击案例都是一次安全设计的教训。


路线F:我想动手实践!#

场景:理论看懂了,但一动手就懵——怎么生成 ECC 密钥?怎么签发 JWT?TLS 握手到底长什么样?这条路线串联所有实践环节,从简单到复杂,每一步都有可运行的代码和真实输出。

顺序章节实践内容
1Ch2 对称加密凯撒密码 → XOR → AES-CBC → AES-GCM 渐进式实现
2Ch3 非对称加密OpenSSL RSA/ECC 密钥生成、ECDH 密钥交换、混合加密
3Ch4 哈希与 MACSHA-256/SHA-3 计算、HMAC 签名验证、长度扩展攻击、bcrypt
4Ch5 数字签名RSA-PSS/ECDSA/Ed25519 签名验证、证书链验证
5Ch6 TLS 1.3s_client 分析握手、TLS 1.2 vs 1.3 对比
6Ch7 证书与 PKI从零构建 PKI:Root CA → 中间 CA → 终端证书 → CRL
7Ch8 OAuth 2.0 与 OIDCPKCE 生成器、授权码流程模拟、JWT 解码
8Ch9 JWT 安全alg=none 攻击、算法混淆攻击、ES256 签发验证、密钥轮换
9Ch17 TLS 握手实战综合:自建 CA → 签发证书 → TLS 服务器 → 抓包分析
10Ch18 认证协议实战综合:OAuth2 + JWT 认证系统、密钥轮换、安全测试

路线逻辑:先在各理论章节的实践环节中掌握单个组件(Ch2-9),再用两个综合性实战章节(Ch17-18)把所有组件组装成完整的系统。实践路线的核心原则是:每个理论章节都有对应的动手环节,不是看完就忘,而是看完就做

路线交叉参考#

同一章节在不同路线中的关注点不同:

章节路线A 关注点路线B 关注点路线C 关注点路线D 关注点路线E 关注点
Ch1威胁模型HTTPS 角色认证位置安全假设威胁模型
Ch2数据加密核心AEAD 加密通道
Ch3ECDHE 密钥交换JWT 签名基础RSA/ECC 脆弱性
Ch4完整性+密码哈希
Ch5证书签名签名是认证基石
Ch6TLS 握手核心最大攻击面
Ch7证书信任链
Ch8OAuth 核心流程
Ch9JWT 漏洞防御
Ch10
Ch11密钥是命门
Ch12隐私计算方向
Ch13PQC 迁移核心
Ch14安全工程方法论
Ch15攻击案例分析
Ch16
Ch17TLS 握手综合实战
Ch18OAuth2+JWT 综合实战

三、知识导图#

以下导图展示 16 章知识之间的网络关系。与线性目录不同,这里强调跨层的连接——TLS 同时依赖对称加密(数据通道)、非对称加密(密钥交换)、签名(证书验证)三种原语的协同;OAuth 2.0 的安全性依赖 TLS 传输层保护 + JWT 签名保护 + PKCE 信道绑定三重保障。

概念关系图#

graph TB subgraph 原语层[" 原语层 — 密码学的三大分支"] SYM["对称加密<br/>Ch2"] ASYM["非对称加密<br/>Ch3"] HASH["哈希与 MAC<br/>Ch4"] end subgraph 构造层[" 构造层 — 基于原语构建的安全构造"] SIG["数字签名<br/>Ch5"] TLS["TLS 1.3<br/>Ch6"] PKI["证书与 PKI<br/>Ch7"] end subgraph 协议层[" 协议层 — 面向应用的认证与授权"] OAUTH["OAuth 2.0/OIDC<br/>Ch8"] JWT["JWT 安全<br/>Ch9"] ZT["零信任架构<br/>Ch10"] end subgraph 基础设施层[" 基础设施层 — 密钥管理与运行时安全"] KM["密钥管理<br/>Ch11"] SE["安全工程实践<br/>Ch14"] end subgraph 前沿层[" 前沿层 — 隐私计算与后量子"] HE["同态加密<br/>Ch12"] PQC["后量子密码<br/>Ch13"] end subgraph 攻防层[" 攻防层 — 攻击与综合实战"] ATK["密码学攻击<br/>Ch15"] PRAC["综合实战<br/>Ch16"] end subgraph 实践层[" 实践层 — 综合性动手实验"] TLS_P["TLS 握手实战<br/>Ch17"] AUTH_P["认证协议实战<br/>Ch18"] end %% 原语层 → 构造层 SYM --> TLS ASYM --> TLS ASYM --> SIG HASH --> SIG HASH --> TLS SIG --> PKI %% 构造层 → 协议层 TLS --> OAUTH SIG --> JWT PKI --> OAUTH TLS --> ZT PKI --> ZT %% 协议层 → 基础设施层 OAUTH --> KM JWT --> KM ZT --> KM %% 基础设施 → 攻防 SE --> ATK KM --> PRAC %% 前沿层连接 ASYM --> HE ASYM --> PQC PQC -.->|"替代 RSA/ECC"| ASYM %% 攻防层连接 TLS --> ATK SE --> PRAC OAUTH --> PRAC JWT --> PRAC %% 实践层连接 TLS --> TLS_P PKI --> TLS_P SIG --> TLS_P OAUTH --> AUTH_P JWT --> AUTH_P SIG --> AUTH_P style 原语层 fill:#e8eaf6,stroke:#283593 style 构造层 fill:#e0f2f1,stroke:#00695c style 协议层 fill:#fff3e0,stroke:#e65100 style 基础设施层 fill:#fce4ec,stroke:#880e4f style 前沿层 fill:#f3e5f5,stroke:#6a1b9a style 攻防层 fill:#ffebee,stroke:#c62828 style 实践层 fill:#e0f2f1,stroke:#00695c

章节网络关系图#

graph LR Ch0["Ch0 导读"] --> Ch1["Ch1 全景"] Ch1 --> Ch2["Ch2 对称加密"] Ch1 --> Ch3["Ch3 非对称加密"] Ch1 --> Ch4["Ch4 哈希与MAC"] Ch3 --> Ch5["Ch5 数字签名"] Ch4 --> Ch5 Ch2 --> Ch6["Ch6 TLS 1.3"] Ch3 --> Ch6 Ch4 --> Ch6 Ch5 --> Ch6 Ch5 --> Ch7["Ch7 证书与PKI"] Ch6 --> Ch8["Ch8 OAuth2/OIDC"] Ch7 --> Ch8 Ch5 --> Ch9["Ch9 JWT安全"] Ch6 --> Ch10["Ch10 零信任"] Ch7 --> Ch10 Ch8 --> Ch11["Ch11 密钥管理"] Ch9 --> Ch11 Ch3 --> Ch12["Ch12 同态加密"] Ch3 --> Ch13["Ch13 后量子密码"] Ch6 --> Ch14["Ch14 安全工程"] Ch6 --> Ch15["Ch15 密码学攻击"] Ch14 --> Ch15 Ch14 --> Ch16 Ch8 --> Ch16["Ch16 综合实战"] Ch9 --> Ch16 Ch6 --> Ch16 Ch10 --> Ch16 Ch11 --> Ch16 Ch14 --> Ch16 Ch6 --> Ch17["Ch17 TLS握手实战"] Ch7 --> Ch17 Ch5 --> Ch17 Ch8 --> Ch18["Ch18 认证协议实战"] Ch9 --> Ch18 Ch5 --> Ch18 Ch13 -.->|"替代"| Ch3 Ch10 -.->|"mTLS"| Ch6 style Ch0 fill:#bbdefb,stroke:#1565c0 style Ch6 fill:#c8e6c9,stroke:#2e7d32 style Ch8 fill:#ffe0b2,stroke:#e65100 style Ch13 fill:#fff9c4,stroke:#f9a825 style Ch15 fill:#e1bee7,stroke:#6a1b9a style Ch16 fill:#ffcdd2,stroke:#c62828 style Ch17 fill:#b2dfdb,stroke:#00695c style Ch18 fill:#b2dfdb,stroke:#00695c

知识关联参考表#

按六层模型组织:原语层(密码学基础)→ 构造层(安全构造)→ 协议层(应用协议)→ 基础设施层(运行时支撑)→ 前沿层(未来方向)→ 攻防层(检验与实战)。同一行的条目之间存在直接的知识依赖。

原语构造协议基础设施前沿攻防实践
AES-GCM/ChaCha20TLS 数据通道OAuth 2.0 传输保护KMS 密钥存储BEAST/CRIME 攻击凯撒→AES-GCM 渐进实验
ECDHE 密钥交换TLS 握手OIDC id_token 签名HSM 密钥保护Kyber KEM 替代Logjam 降级攻击OpenSSL RSA/ECC 密钥生成
RSA-PSS/EdDSAX.509 证书签名JWT JWS 签名密钥轮换策略Dilithium 签名替代ROBOT 攻击RSA-PSS/ECDSA/Ed25519 签名验证
SHA-256/SHA-3HMAC 消息认证PKCE code_verifier信封加密碰撞攻击实践SHA-256/3 + HMAC + 长度扩展攻击
bcrypt/Argon2密码哈希存储用户密码保护加盐与迭代参数彩虹表防御bcrypt 密码哈希 + cost 对比
CKKS/BFV 同态隐私计算全同态加密

四、系列大纲#

以下是按章节编号排列的完整目录。建议结合上方的场景驱动阅读路线知识导图选择适合你的阅读顺序。

章节标题核心内容
0系列导读系列定位、场景路线、知识导图、开发环境、参考资料
1密码学全景对称/非对称/哈希三大分支、威胁模型、安全原则
2对称加密AES/ChaCha20、GCM/AEAD、填充攻击、密钥派生
3非对称加密RSA/ECC、ECDH/ECDSA、密钥长度选择、数学基础
4哈希与 MACSHA-2/SHA-3、HMAC、碰撞攻击、密码哈希(bcrypt/Argon2)
5数字签名RSA-PSS/ECDSA/EdDSA、证书链、签名安全性证明
6TLS 1.3握手流程、0-RTT、密钥派生、与 TLS 1.2 对比
7证书与 PKIX.509、CA 层次、OCSP/CRL、Let’s Encrypt、证书锁定
8OAuth 2.0 与 OIDC授权码/PKCE、四种流程对比、OIDC 身份层、安全最佳实践
9JWT 安全JWS/JWE/JWK、alg=none 攻击、密钥混淆、重放防御
10零信任架构BeyondCorp、mTLS、服务网格、持续验证、策略引擎
11密钥管理KMS/HSM、信封加密、密钥轮换、密钥生命周期
12同态加密CKKS/BFV、隐私计算、同态加密在 ML 中的应用
13后量子密码NIST PQC 标准、Kyber/Dilithium、迁移路径、混合方案
14安全工程实践STRIDE 威胁建模、安全开发生命周期、渗透测试、安全审计
15密码学攻击BEAST/Heartbleed/ROBOT/Logjam、侧信道攻击、实现漏洞
16综合实战OAuth2+JWT+TLS+mTLS 全链路安全认证系统、密钥轮换与审计

五、开发环境搭建#

Warning

以下环境搭建步骤基于 Ubuntu 22.04 LTS。其他发行版的包名和路径可能不同,请参考各项目官方文档。部分实验涉及密钥生成和证书操作,建议在隔离环境中进行,切勿在生产环境直接操作。

密码学工具架构#

graph TB subgraph 加密工具[" 加密与哈希"] OPENSSL["OpenSSL<br/>加密/签名/证书"] GPG["GnuPG<br/>文件加密/签名"] end subgraph 证书工具[" 证书管理"] KEYTOOL["keytool<br/>Java 密钥库"] CERTBOT["certbot<br/>Let's Encrypt"] CFSSL["cfssl<br/>Cloudflare PKI"] end subgraph 分析工具[" 协议分析"] WIRESHARK["Wireshark<br/>TLS 握手抓包"] SSLYZE["sslyze<br/>TLS 配置审计"] CURL["curl -v<br/>快速验证"] end subgraph 开发工具[" 开发库"] BCRYPT["bcrypt/Argon2<br/>密码哈希"] JOSE["jose/jwt<br/>JWT 操作"] PQC["liboqs<br/>后量子算法"] end OPENSSL --> CERTBOT OPENSSL --> CFSSL KEYTOOL --> OPENSSL WIRESHARK --> OPENSSL style 加密工具 fill:#e8eaf6,stroke:#283593 style 证书工具 fill:#e0f2f1,stroke:#00695c style 分析工具 fill:#fff3e0,stroke:#e65100 style 开发工具 fill:#fce4ec,stroke:#880e4f

OpenSSL 环境#

# 安装 OpenSSL(3.x 版本,支持 Ed25519/Ed448)
sudo apt install openssl
# 验证版本
openssl version
# OpenSSL 3.0.2 15 Mar 2022
# 生成 RSA-2048 密钥对
openssl genrsa -out rsa-private.pem 2048
openssl rsa -in rsa-private.pem -pubout -out rsa-public.pem
# 生成 Ed25519 密钥对(推荐用于签名)
openssl genpkey -algorithm Ed25519 -out ed25519-private.pem
openssl pkey -in ed25519-private.pem -pubout -out ed25519-public.pem
# 生成 ECDH 密钥对(用于密钥交换)
openssl ecparam -name prime256v1 -genkey -noout -out ecdh-private.pem
# AES-256-GCM 加密/解密
openssl enc -aes-256-gcm -salt -in plaintext.txt -out ciphertext.bin -pass pass:your-key
openssl enc -aes-256-gcm -d -in ciphertext.bin -out decrypted.txt -pass pass:your-key
# SHA-256 哈希
openssl dgst -sha256 -hex message.txt
# RSA-PSS 签名与验证
openssl dgst -sha256 -sign rsa-private.pem -sigopt rsa_padding_mode:pss -out signature.bin message.txt
openssl dgst -sha256 -verify rsa-public.pem -sigopt rsa_padding_mode:pss -signature signature.bin message.txt

证书与 PKI 环境#

# 生成自签名 CA 证书
openssl req -x509 -new -nodes -key ca-key.pem -sha256 -days 3650 -out ca-cert.pem \
-subj "/C=CN/ST=Beijing/O=MyCA/CN=My Root CA"
# 生成服务端 CSR 并签发证书
openssl req -new -key server-key.pem -out server.csr \
-subj "/C=CN/ST=Beijing/O=MyOrg/CN=myapp.example.com"
openssl x509 -req -in server.csr -CA ca-cert.pem -CAkey ca-key.pem \
-CAcreateserial -out server-cert.pem -days 365 -sha256
# 查看证书详情
openssl x509 -in server-cert.pem -text -noout
# 验证证书链
openssl verify -CAfile ca-cert.pem server-cert.pem
# 安装 certbot(Let's Encrypt 客户端)
sudo apt install certbot
# 或使用 snap
sudo snap install --classic certbot
# 获取证书(standalone 模式)
sudo certbot certonly --standalone -d example.com
# 查看证书有效期
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

Java keytool(用于 Java 生态)#

# 生成 Java 密钥库
keytool -genkeypair -alias myapp -keyalg RSA -keysize 2048 \
-validity 365 -keystore keystore.jks -storepass changeit
# 导出证书
keytool -exportcert -alias myapp -keystore keystore.jks \
-rfc -file myapp-cert.pem -storepass changeit
# 导入 CA 证书到信任库
keytool -importcert -alias myca -file ca-cert.pem \
-keystore truststore.jks -storepass changeit -noprompt
# 查看密钥库内容
keytool -list -v -keystore keystore.jks -storepass changeit

Wireshark TLS 抓包#

# 安装 Wireshark
sudo apt install wireshark tshark
# 命令行抓取 TLS 握手包
sudo tshark -i eth0 -f "tcp port 443" -w tls-handshake.pcap
# 解析 TLS 握手(需要配置密钥日志文件)
# 在启动应用前设置环境变量
export SSLKEYLOGFILE=/tmp/sslkeys.log
# 然后在 Wireshark 中:Edit → Preferences → Protocols → TLS → Pre-Master-Secret log filename
# 用 tshark 过滤 TLS ClientHello
tshark -r tls-handshake.pcap -Y "tls.handshake.type == 1" -T fields \
-e tls.handshake.extensions_server_name -e ip.dst

TLS 配置审计#

# 安装 sslyze
pip install sslyze
# 扫描目标站点的 TLS 配置
sslyze --certinfo --openssl_ccs --openssl_heartbleed --robot \
--sslv3 --tlsv1 --tlsv1_1 --tlsv1_2 --tlsv1_3 example.com:443
# 使用 nmap 检查支持的加密套件
nmap --script ssl-enum-ciphers -p 443 example.com
# 使用 testssl.sh(更全面的检测)
git clone https://github.com/drwetter/testssl.sh.git
cd testssl.sh
./testssl.sh example.com
Note

OpenSSL 3.x 是当前推荐版本,支持 Ed25519/Ed448、AES-GCM、ECDH 等现代算法。如果你用的是 OpenSSL 1.1.1,部分后量子算法和 Ed25519 可能需要额外编译。密钥日志文件(SSLKEYLOGFILE)仅用于开发调试,切勿在生产环境启用。

六、本系列的实践方法论#

本系列遵循 原理 → 构造 → 协议 → 攻击 → 防御 的学习方法:

  1. 原理:理解密码学原语的数学基础和安全假设——AES 的分组密码工作模式、ECC 的椭圆曲线离散对数、SHA-3 的海绵构造
  2. 构造:看原语如何组合成安全构造——签名 = 哈希 + 非对称加密、TLS = 密钥交换 + 对称加密 + 签名验证
  3. 协议:理解协议如何使用构造——OAuth 2.0 的授权码流程为什么安全、JWT 的 JWS Compact Serialization 怎么工作
  4. 攻击:通过攻击案例理解安全边界——BEAST 利用 CBC 模式可预测 IV、ROBOT 利用 RSA PKCS#1 v1.5 填充预言机
  5. 防御:系统性地加固——密钥轮换、证书锁定、零信任、STRIDE 威胁建模

每章的「动手实践」部分都遵循这一方法论。先理解原理,再动手构造,然后尝试攻击自己构造的系统,最后加固防御。密码学最忌讳”调库就完事”——你至少要能解释每个参数的安全含义。

Warning

密码学实验中生成的密钥和证书仅供学习使用,切勿用于生产环境。部分攻击实验(如 BEAST、ROBOT)需要特定版本的 OpenSSL,请严格在隔离环境中操作。本系列在每章都会标注相关安全风险。

七、推荐参考资料#

经典教材#

书籍作者特点
《Real-World Cryptography》David Wong实战导向,覆盖现代密码学全栈,代码示例丰富
《Serious Cryptography》Jean-Philippe Aumasson深入原理,AES/SHA/ECC 的数学基础讲得最清楚
《The Art of Exploitation》Jon Erickson攻击视角,理解缓冲区溢出、格式化字符串等底层漏洞
《Applied Cryptography》Bruce Schneier密码学百科全书,协议设计参考
《Cryptography Engineering》Ferguson, Schneier, Kohno工程实践,如何正确使用密码学原语

官方文档与标准#

文档链接说明
RFC 8446: TLS 1.3datatracker.ietf.orgTLS 1.3 协议完整规范
RFC 6749: OAuth 2.0datatracker.ietf.orgOAuth 2.0 授权框架
RFC 7519: JWTdatatracker.ietf.orgJSON Web Token 标准
NIST FIPS 197: AEScsrc.nist.govAES 标准规范
NIST PQC Standardizationcsrc.nist.gov后量子密码标准化进程
OWASP Cheat Sheet Seriescheatsheetseries.owasp.orgWeb 安全速查手册

开源工具#

项目用途星标
OpenSSL密码学工具箱与库24k+
liboqs后量子密码算法库1k+
certbotLet’s Encrypt 客户端21k+
cfsslCloudflare PKI 工具包7k+
testssl.shTLS 配置检测8k+
jwt.ioJWT 编解码调试

技术博客与资源#


准备好开始了吗?从 密码学全景 开始你的密码学与安全工程之旅吧!


参考#

支持与分享

如果这篇文章对你有帮助,欢迎支持作者或分享给更多人

系列导读
https://blog.souloss.com/posts/cryptography/cryptography-series-guide/
作者
Souloss
发布于
2026-05-15
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时