研究报告 · 约 31,754 字 · 预计推送 4 部分

加密与密钥管理入门:对称加密、非对称加密、哈希、签名、密钥轮换与 Secret 管理(横纵综合报告) 未开始

目录

题记与说明

本文由两份章节研究综合而成:纵轴(历时发展史,1949–2026)与横轴(2026-10-31 时间截面的横向对比)。章节原文见 output/reports/parts/2026-10-31-加密与密钥管理-vertical.md 与 output/reports/parts/2026-10-31-加密与密钥管理入门-horizontal.md。综合时已消除两章重复(后量子标准、SHA-1 破灭、Sigstore、age、NIST IR 8547 等在两章均有出现的素材,按"史实在纵轴、现状对比在横轴"归位),并核实了细节口径(如 Chrome 启用的 Kyber 草案组与标准化后的 X25519MLKEM768 之别、FIPS 140-2/140-3 的时间差、SM4 的 GM/T 与 GB/T 双层标准号)。成文日期:2026-10-31。
final 修订说明(2026-10-31,按独立审读意见逐条处理,正文未被质疑的内容原样保留):
① TL;DR 与纵轴洞察 1 的"15–25 年"统一为"定标 → 退场/终结"口径,三个年数分别标注端点(被替换/被实际利用/被实际碰撞),洞察 1 加口径提示;
② 修正"此事件的后半段见横轴 3.1"为"见横轴 2.6 要点";全文交叉引用统一为"纵轴/横轴 + 节号"写法("本文二.2"→"横轴 2.2","纵轴洞察 N"→"纵轴 1.7 的洞察 N");
③ TL;DR 后新增"概念坐标与名词速览"一节(四原语分工坐标系前移 + 术语速查),正文首次出现的 AEAD/nonce/信封加密/KDF/XOF 补一句话定义;
④ 2.6 对比表补 Bitwarden 行(部署形态/许可/动态秘密/定价,官方页面核实),与正文两处 Bitwarden 推荐对齐;
⑤ 3.4 核心建议改写为具体指向:已定稿的 ML-KEM/ML-DSA 即刻排期、"4 年合规窗口"与 2030 弃用硬线显式挂钩、未定稿的 FN-DSA(FIPS 206)不必等但走混合路线;
⑥ 3.1 论题改为"至少两代、至多三代",对称位单独说明例外;crypto-agility 全文统一译为"算法敏捷性"(首次出现注英文,见纵轴洞察 5);
⑦ 来源卫生:DSA"内嵌追踪器"说法改写为有据的 1991 年 512 位密钥争议并补来源;AKeyless"2025 年获 FedRAMP Class D"未获证实,删除;"IBM 收购 HashiCorp"补官方公告来源;参考来源占位符 URL 替换;上述处理全部纳入文末诚实声明;
⑧ 新增 3.6"常见追问与下一步":作答 NIST 时间表为何非联邦系统也要跟进、"密码清单"怎么做、X25519MLKEM768 握手开销的实际影响、Argon2id 参数与 SOPS+age 最小上手;TL;DR 与纵轴洞察 5 补回"美国联邦系统"限定。

TL;DR

密码学 77 年的历史可以压缩成一句话:算法会老,密钥会漏,唯有人会犯错。纵轴显示,一个算法从定标到退场/终结约需 15–25 年(DES 24 年——被 AES 替换;MD5 16 年——Rogue CA 实际利用;SHA-1 22 年——SHAttered 实际碰撞),而全网迁移还要再花 10 年以上——现在轮到 RSA/ECC(按 NIST IR 8547,美国联邦系统 2030 年后弃用、2035 年后禁用)。在 2026 年 10 月的时间截面上,每个密码学位置都站着两到三代方案:AES-256-GCM/ChaCha20、X25519/Ed25519、SHA-256 是现役默认;ML-KEM/ML-DSA 混合模式已进入主流浏览器与 SSH;MD5/SHA-1 只剩遗产价值。密钥管理的"主语"则从个人(PGP)迁移到机构(PKI/HSM)、云(KMS)、代码流水线(Vault/SOPS),最终到身份本身(Sigstore keyless,不再持有长期私钥)。给实践者的结论:新系统用现代默认组合,能短命的密钥就不做长期密钥,并把"换算法"设计成改配置而不是重写系统。


概念坐标与名词速览

四个原语,各管一件事——这是横轴所有对比表的公共坐标系,后文所有表格都建立在这张图上:

原语干什么现役默认(2026)
对称加密藏数据:同一把密钥既加密又解密,快,适合大量数据AES-256-GCM、ChaCha20-Poly1305
非对称加密/密钥交换发钥匙:公钥可以公开、私钥自己留,解决"对称密钥怎么安全送到对方手里"X25519(后量子补位:ML-KEM)
哈希验完整:给数据算出指纹,验证数据没被篡改;单向、无密钥SHA-256
数字签名认身份:用私钥对数据盖章,任何持公钥者可验证来源并防抵赖Ed25519(后量子补位:ML-DSA)

先记住这个分工直觉:对称加密管"藏数据"、非对称管"发钥匙"、哈希管"验完整"、签名管"认身份"。正文首次出现的关键术语不再展开解释,速查如下(详见各自章节):

术语一句话解释
AEAD认证加密:一次运算同时完成"加密"与"完整性校验",是当前对称加密的标准形态
nonce一次性编号:AEAD 每次加密必须使用不同的 nonce,重用会同时葬送保密性与可认证性
信封加密两层加密:数据先由随机"数据密钥"加密,数据密钥再交给 KMS 主密钥加密,与密文一起存放
KMS密钥管理服务:托管密钥的创建、存储、轮换与审计的云服务(AWS KMS、Azure Key Vault、GCP KMS)
KDF密钥派生函数:从主密钥或口令按规则派生子密钥(如 HKDF、Argon2id)
XOF可扩展输出函数:输出长度可按需设定的哈希变体(如 SHA-3 的 SHAKE、BLAKE3)
KEM密钥封装机制:用对方公钥"封装"出一份共享密钥的公钥原语,比通用公钥加密更贴合密钥交换场景
混合密钥交换经典 + 后量子两组算法同时运行(X25519 + ML-KEM),任一被攻破仍有另一组兜底
口令哈希慢哈希(Argon2id 等):专为"人记的密码"设计,与 SHA-256 这类快哈希是两道题
动态秘密用时现签、短 TTL、到期自动失效的临时凭据,让密钥"天然短命"
keyless 签名用 OIDC 身份换短时证书来签名(Sigstore),根本不持有长期私钥
算法敏捷性(crypto-agility)把"用哪个算法"做成可配置项——换算法是改配置,不是重写系统

一、纵轴:发展脉络(1949–2026)

1.1 前史与理论奠基(1949–1975):从手艺到科学

这一阶段没有"标准"与"产品",只有两件事:理论化与垄断化。

驱动因素:军备竞赛与通信保密需求。正因体系封闭,学术界与工业界无标准可用,为 70 年代的"密码学民主化"埋下伏笔。

1.2 公钥革命与商用标准诞生(1976–1990)

驱动因素:计算机进入企业与个人,跨机构通信需要互操作标准;美国出口管制(ITAR 把加密软件当军火)反而刺激了民间密码学社群的对抗式成长。

1.3 互联网商业化与"密码战争"(1991–2000)

1.4 AES 时代与哈希危机(2001–2012)

1.5 云与 DevOps 的密钥管理工程化(2013–2018)

密码原语至此已足够强,但"密钥放哪儿、怎么轮换、谁持有"成了新瓶颈——本阶段主线是工程化、服务化与规模化。

1.6 后量子迁移与供应链信任(2019–2026)

1.7 纵轴洞察:模式与规律

  1. 节奏规律:新原语 → 公开竞赛定标准 → 事故暴露短板 → 治理与自动化。DES(1977)→ AES(2001)相隔 24 年;MD5(1992)→ Rogue CA 处决(2008)16 年;SHA-1(1995)→ SHAttered(2017)22 年。算法"半衰期"约 15–25 年,而全网迁移往往还要再花 10 年以上——这正是 PQC 时间表(2030/2035)的制定逻辑。口径提示:上面三个年数用了三种不同端点(DES 数到被 AES 替换、MD5 数到被 Rogue CA 实际利用、SHA-1 数到被 SHAttered 实际碰撞),并非同一种"被攻破";若只数到理论攻击出现,则 DES 21 年(Deep Crack,1998)、MD5 12 年(2004)、SHA-1 10 年(2005),半衰期会更短。
  2. 密钥管理的主语不断迁移:个人(PGP 时代自己保管私钥)→ 机构(PKI/HSM/KMIP)→ 云平台(KMS 托管 + 信封加密)→ 代码与流水线(Vault/SOPS/Sealed Secrets,生命周期全自动化)→ 身份即密钥(Sigstore keyless:根本不持有长期私钥)。每一次迁移都消掉一类"人犯错的环节"。
  3. 轮换从灾难词汇变成日常词汇:Heartbleed(2014)是分水岭;ACME、动态密钥、短生命周期证书让"轮换"不再是事故响应动作,而是每小时都在发生的常规操作。
  4. 信任模型在去中心化与可验证化之间演进:从信任单一 CA,到 CT 强制公开日志(2013 起),到 Sigstore 的透明日志 + OIDC 身份绑定——方向始终是"不必信任任何单一长期密钥,只验证可审计的证据"。
  5. 2026 年当下的位置:PQC 标准已定稿但全球迁移刚过半程;RSA-2048 / P-256 距美国联邦系统 2030 年 deprecated 硬线还有约 4 年合规寿命;FIPS 140-2 刚于上月(2026-09-21)谢幕;下一站是算法敏捷性(crypto-agility)——让"换算法"变成改配置而不是重写系统。

二、横轴:横向对比(时间截面 2026-10-31)

本课题横跨"算法原语"与"工程实践"两层,横向对比也分两层展开:算法层(对称加密、非对称加密/密钥交换、哈希、签名各类内部的主流候选)与工程层(密钥轮换策略与 Secret 管理工具)。统一对比维度:能力、性能、成本、生态、成熟度/合规、适用场景。时效敏感项(价格、版本)标注"以官方页面为准"。

2.1 对称加密:AES-GCM vs ChaCha20-Poly1305 vs SM4

维度AES-256-GCMChaCha20-Poly1305(含 XChaCha20)SM4-GCM(国密)
标准来源FIPS 197 / NIST SP 800-38DRFC 8439(互联网标准)GM/T 0002-2012(国标层为 GB/T 32907-2016)
密钥长度128/192/256 bit256 bit128 bit
硬件加速AES-NI / ARMv8 几乎全面普及无专用指令,依赖软件实现无普遍硬件支持
无硬件时性能查表实现有缓存侧信道风险快、天然常量时间友好软件实现与 AES 有差距
nonce 重用容忍度重用即灾难(GCM 认证可被破解)同样要求唯一,XChaCha20 降低误用风险同为 AEAD,要求 nonce 唯一
生态位TLS 1.3 必备套件、企业/合规默认TLS 1.3 必备套件、移动/嵌入式首选信创与国密合规体系(GM/T 0024 国密 SSL)
适用场景有 AES-NI 的服务器、桌面端无 AES 指令的老旧设备、手机、IoT国内政务/金融合规

要点:三者都是当前公认安全的 AEAD 构造(AEAD:认证加密,一次运算同时完成加密与完整性校验;其每次加密所需的编号 nonce 必须唯一,重用即同时破坏保密与认证,术语详见文首名词速览),2025–2026 年社区共识没有实用攻击(对比讨论见 Netgate 论坛、aead_perf 基准)。性能是最核心的分水岭:带 AES-NI 的现代 CPU 上 AES-256-GCM 通常等于或快于 ChaCha20;无硬件加速的设备上 ChaCha20 明显更快且天然规避缓存时序侧信道(NordPass 对比)。这也是 TLS 库按客户端能力自动协商的原因:移动客户端常被优先给 ChaCha20,服务器互连给 AES-GCM。AES 生态最厚(FIPS 合规、全平台硬件指令),是"默认无脑选";ChaCha20 零专利、代码简洁;SM4 的短板在性能与国际化生态而非安全设计,国内合规场景是强制/推荐选项(国密对比(CSDN)、国密生态演进(知乎)、SM4 高速实现)。

2.2 非对称加密与密钥交换:RSA vs ECDH/X25519 vs ML-KEM vs SM2

维度RSA-2048/3072ECDH (P-256) / X25519ML-KEM(FIPS 203)SM2(国密)
数学基础大整数分解椭圆曲线离散对数格(Module-Lattice)256 位椭圆曲线
安全强度RSA-2048 ≈ 112-bit;3072 ≈ 128-bitP-256/X25519 ≈ 128-bit抗经典+抗量子对标 RSA-3072 级别
抗量子否否是否
密钥/密文开销密钥 256B+,运算慢32B 级密钥、运算快密钥与密文 KB 级,运算快密钥短、运算较 RSA 快
2030/2035 时间线2030 后弃用、2035 后禁用(NIST IR 8547)同左替代者未在美国体系内,国密体系另有演进
适用场景旧系统兼容、证书签发遗留新系统默认密钥交换逐步替换 ECDH,混合模式先行国密 TLS、电子政务/金融

要点:

2.3 哈希:SHA-2 / SHA-3 / BLAKE3 / SM3,以及一个最常见误区

MD5 与 SHA-1 已被碰撞攻击实用化(史实见纵轴),对抗场景一律禁用;NIST 已宣布 SHA-1 于 2030 年后不再允许用于数字签名。现役候选对比如下:

维度SHA-256(SHA-2)SHA-3BLAKE3SM3(国密)
摘要长度256 bit256 bit256 bit(可扩展)256 bit
当前状态安全,事实标准安全,FIPS 202安全,非 NIST 标准安全,GM/T 0004-2012
软件性能快,有 SHA-NI 硬件加速比 SHA-256 慢约 3 倍软件最快(约 SHA-256 的 10 倍+,可并行)与 SHA-256 相当偏慢
标准化FIPS 180-4,无处不在FIPS 202(XOF:SHAKE)无 FIPS 合规国密合规
附加能力—海绵结构、可变输出内建 KDF/MAC/XOF/Merkle 树—
适用场景新项目默认需要 FIPS 合规或不同数学族高吞吐(内容寻址、去重)国密体系

要点:

2.4 数字签名:RSA-PSS vs ECDSA vs Ed25519 vs ML-DSA,以及 Sigstore 的"无密钥"范式

维度RSA-PSS (2048/3072)ECDSA (P-256)Ed25519ML-DSA(FIPS 204)
公钥/签名大小256B+ / 256B+32B / 64B32B / 64B1.3KB / 2.4KB(ML-DSA-65)
签名速度慢(验签快)快最快(比 RSA-2048 快约 50 倍,确定性签名无 RNG 依赖)快
已知实现坑填充模式易用错(必须 PSS/OAEP 而非 PKCS#1 v1.5)nonce 复用/偏置即泄漏私钥,无效曲线攻击有真实事故抗侧信道设计、无需高质量 RNG需防随机数风险
抗量子否否否是
生态位遗留兼容、旧证书体系TLS 证书主流SSH/Git/新协议默认新标准、逐步落地

要点:

2.5 密钥轮换:策略与实现对比

方案机制典型周期优点代价/局限
NIST SP 800-57 加密周期按密钥类型/用途规定使用期限区间数月~数年(风险评估决定)权威、体系化只是框架,不给单一答案(NIST 密钥管理指南)
云 KMS 定时轮换KMS 自动生成新密钥材料,旧材料仅保留解密AWS 默认 1 年;2024-04-12 起可配 90–2560 天并支持按需轮换 API零运维、对应用透明AWS 自己论证:密钥不出 HSM、每请求派生子密钥时,轮换的实际安全增益有限(AWS 官方博客)
动态秘密(Dynamic Secrets)用时现签、短 TTL、到期自动失效分钟~小时级(数据库凭据、云 IAM 临时令牌)把"轮换"变成"生命周期天然极短",泄漏窗口趋近于零需要中间件(Vault/OpenBao)与审计配套
无密钥/短时凭证(Sigstore、OIDC)每次操作签发短时证书/令牌分钟级无长期密钥可轮换依赖在线基础设施(CA、日志)

要点:

2.6 Secret 管理平台对比

方案部署形态许可证动态秘密/轮换定价(2026-10 查询,以官方页为准)适用场景
HashiCorp Vault自托管/托管(HCP)BSL 1.1(2023-08 起,非纯开源)强(数据库、PKI、云 IAM 动态凭据)开源版免费自托管;企业版按需报价多云/混合、需要动态秘密与 PKI 的中大型组织
OpenBao自托管MPL(纯开源),Linux 基金会治理与 Vault 同源(fork 自 Vault)免费自托管拒绝 BSL、要求开源治理的团队
AWS Secrets Manager全托管 SaaS闭源Lambda 轮换、自动轮换$0.40/秘密/月 + $0.05/万次 API纯 AWS 技术栈
Azure Key Vault全托管 SaaS闭源密钥/证书/秘密三类资产,支持轮换策略主要按操作计费(约 $0.03/万次)Azure 栈;秘密+密钥+证书一站式
GCP Secret Manager全托管 SaaS闭源轮换调度与版本管理按活跃版本计费($0.06/版本/月)+ 访问量GCP 栈
Infisical开源自托管 + 云MIT(核心)支持动态秘密Pro 约 $20/身份/月、Advanced 约 $40/身份/月(官方定价)开发者体验优先、中小团队
Doppler纯 SaaS闭源环境级同步慷慨免费层 + 按席位小团队快速起步
1Password Connect自托管 Connect + 云订阅闭源服务无动态秘密,偏人工保管Business 订阅(约 $7–8/人/月)已用 1Password 的团队做 Secret Automation
Bitwarden云 SaaS + 自托管(Enterprise 版含自托管)服务端主代码 AGPL-3.0,企业功能(SSO/SCIM 等)另有商业许可(仓库许可说明)无动态秘密;Bitwarden Secrets Manager 是静态机器秘密存储(项目化管理、机器账号、过期访问令牌)密码管理器 Teams $4/人/月、Enterprise $6/人/月(年付);Secrets Manager Teams $6/人/月、Enterprise $12/人/月,超额机器账号 $1/个/月(官方定价、SM 产品页)个人/小团队"人的密码";已用 Bitwarden 的团队顺带管机器秘密
AKeyless纯企业 SaaS闭源强(含 PAM、证书生命周期)报价制企业级 Vault 替代

要点:

2.7 GitOps/Kubernetes 场景与文件加密工具

GitOps 三件套对比:

维度SOPS(+age/KMS)Sealed SecretsExternal Secrets OperatorK8s 原生 Secret
核心机制YAML 中值字段就地加密后提交 Git,可配 age/AWS KMS/GCP KMS 后端用集群公钥加密成 SealedSecret CR,仅集群内控制器能解Git 里不存秘密,从外部仓库同步生成 K8s Secretetcd 中的 base64(可配静态加密),本身不是加密
Git 中是否可存可(密文)可(密文)不可(只存引用)不应
密钥归属你自己的 KMS/age 密钥集群控制器私钥外部 Secret 管理系统集群自身
换集群/迁移只要密钥在即可解密需重新加密(绑定集群密钥)无影响—
适用场景已有云 KMS 或 age、想保持 Git 单一事实源小团队最省心的 GitOps 加密已有中心化 Vault/云 SM 的组织从来不是完整答案,需配合加密与 RBAC

社区的经典比喻:"Sealed Secrets 像保险箱:秘密进去就出不来;SOPS 像灵活的保险柜:你决定谁有钥匙、何时开"(Minimal DevOps,2025-07);ESO 不解决"Git 里怎么存",而解决"怎么从中心仓库同步"(Cloudogu 综述)。三者可与 Vault/云 SM 叠加而非互斥。

文件加密:age vs GPG(SOPS 的后端选择):

维度ageGPG
设计哲学只做加密,做好一件事全功能:签名、Web of Trust、密钥环
密钥管理无全局密钥环,密钥就是普通文件密钥环/信任模型复杂,易用错
性能实测约 GPG 的 3 倍快(对比基准)慢、历史包袱重
签名能力无(加密专用,HN 讨论)有
生态SOPS 官方推荐优先 age 后端;有 YubiKey 插件OpenPGP 标准(RFC 4880),最通用

2.8 分场景选型速查

场景推荐组合
新应用的算法默认AES-256-GCM(有硬件)/ XChaCha20(无硬件)+ X25519/Ed25519 + SHA-256(或 BLAKE3)+ Argon2id(密码存储)
国内合规(信创/金融)SM2/SM3/SM4 双栈 + 国密 TLS(GM/T 0024),保留国际算法兼容
个人/小团队 Secret 管理1Password/Bitwarden(人的密码)+ Doppler 或 Infisical(机器的秘密)
单一云技术栈云原生 Secret Manager(AWS SM / Azure KV / GCP SM),轮换用托管能力
多云/混合/自建 IDCVault(合规企业版)或 OpenBao(开源治理)+ 动态秘密优先
纯 K8s GitOpsSOPS+age(灵活、可迁移)或 Sealed Secrets(最省心);已有 Vault 则上 ESO
抗量子迁移TLS 层:升级到支持 X25519MLKEM768 的组件(OpenSSL 3.5+/Go 1.24+ 等,多数已默认开启);应用层:做算法敏捷性抽象;存档/长保密期数据优先混合加密
签名新系统 Ed25519;制品/镜像签名考虑 Sigstore keyless(消灭长期私钥)
密钥轮换能短命就短命(动态秘密/OIDC/短时证书);必须长期的才配轮换周期,并为"可疑时立即作废"留操作手册

三、交叉洞察:两轴结合说明了什么

单看纵轴,我们看到的是一部"算法不断被攻破、又不断被替换"的编年史;单看横轴,我们看到的是一张"每个位置都有三四个候选"的选型表。把两条轴交叉起来,才显出这个领域真正的结构。

3.1 选型即排队:每个"位置"上站着至少两代、至多三代方案

纵轴给出算法半衰期约 15–25 年;横轴的时间截面则显示,每一个密码学位置上都站着至少两代、至多三代方案。完整三代的是密钥交换位:RSA/DH(倒计时中)/X25519(现役)/X25519MLKEM768(新秀转正);两代的是哈希位:MD5/SHA-1(退役)/SHA-2、SHA-3、BLAKE3(现役);对称位是个例外——只有现役一代独大,因为对称算法目前普遍被认为可抵抗量子攻击,AES-GCM/ChaCha20 之后暂无"新秀代"在排队,这一位置近期不会出现换代压力。

两轴结合的推论是:横向选型表本质上是一张"排队表"——你今天选的现役方案,就是纵轴上某一章未来要写的"被替换故事"的主角。这不是悲观,而是排期依据:RSA-2048 距美国联邦系统 2030 年弃用硬线约 4 年,意味着任何新系统若绑定经典公钥算法,都应在架构里预留"算法可替换"的缝隙。这正是纵轴 1.7 的洞察 5 与横轴 2.8"算法敏捷性"条目的交汇点:把算法选择做成配置项(算法标识符、可插拔 KEM/签名接口),是横轴选型能兑现纵轴时间表的唯一办法。

3.2 横轴的工具光谱,是纵轴"主语迁移"的地层剖面

纵轴 1.7 的洞察 2 说密钥管理的"主语"从个人→机构→云→代码→身份不断迁移;横轴 2.6/2.7 的工具表其实正是这条迁移史的地层剖面——每一层工具都是纵轴某个时代的答案,至今并存:

由此得出一个横轴表格给不出的判断:选择 Secret 管理工具,本质上不是比功能,而是选择"你把信任放在哪个主体上"。个人开发者选 1Password/Bitwarden 没有问题;强调不可抵赖与治理的机构可能需要 Vault 的审计与动态秘密;已经全面 GitOps 的小团队选 SOPS+age 就够。功能差异是表层的,信任模型差异才是根本的。

3.3 轮换语义的三次变化在 2026 年汇成一句话

纵轴 1.7 的洞察 3 记录了"轮换"从灾难词汇(Heartbleed 时代全球手动换证书)变成日常词汇(ACME 每小时自动续期);横轴 2.5 则给出了当前的完整光谱:NIST 框架(按周期)→ 云 KMS 按钮(1 年可配 90 天起)→ 动态秘密(分钟级)→ keyless(无密钥可换)。

把两轴并排看,轮换的语义经历了三次变化:从"事故后的补救动作",到"运维日历上的例行任务",再到"让密钥天然短命、根本无需轮换"。而 AWS 那篇反直觉博客(横轴 2.5)恰好是这条演化线的理论总结:当密钥被 HSM 保护、且数据密钥按请求派生时,例行轮换的边际收益趋近于零,轮换的真正价值只剩下"可疑时立即作废"的应急能力。两轴结合的操作结论只有一句话:能短命就短命(动态秘密/短时证书/OIDC);必须长期的才配轮换周期;无论哪一种,都要为"可疑时立即作废"写好操作手册——横轴 2.8 的最后一条选型速查就是这句话的工程化表达。

3.4 "事故 → 标准 → 自动化"三段式,是本领域最强的可预测模式

纵轴的每个阶段都重复同一个三段式:MD5 Rogue CA(事故)→ Certificate Transparency(标准)→ Chrome 强制公开日志(自动化);Heartbleed(事故)→ ACME(标准)→ Let's Encrypt 全自动轮换(自动化);SolarWinds/Codecov(事故)→ SLSA(框架)→ Sigstore keyless 签名(自动化);斯诺登与量子威胁(警报)→ NIST PQC 竞赛(标准)→ 浏览器/SSH 默认启用混合密钥交换(自动化)。

对读者最有用的推论是时序规律:工程落地总是早于标准定稿(Chrome 124 启用 Kyber 草案组在 FIPS 203 定稿之前,OpenSSH 9.0 启用混合交换在标准发布之前),但标准定稿之前都用"混合模式"对冲不确定性(X25519 + ML-KEM 同时使用,任一被攻破仍有保护)。给实践者的建议因此是双向的:已定稿的 ML-KEM/ML-DSA(FIPS 203/204/205)不必再等,现在就排期——距美国联邦系统 2030 年弃用硬线只剩约 4 年合规窗口,存量 RSA/ECC 的替换要压在这 4 年内完成;仍在草案中的 FN-DSA(FIPS 206)等标准不必等它定稿,但落地时应走混合路线对冲不确定性(X25519 + ML-KEM 同时使用,任一被攻破仍有保护),也不要在标准定稿前就全量切换到裸新算法。这正是横轴 2.2 部署面数据(主流浏览器与运行时已默认开启 X25519MLKEM768)与纵轴 1.6 迁移时间表(2030/2035)能够同时成立的机制。

3.5 对用户的判断与建议

学习路径(入门者):先理解四原语的分工——对称加密管"藏数据"、非对称管"发钥匙"、哈希管"验完整"、签名管"认身份"——这套坐标系已前移至文首"概念坐标与名词速览",是横轴所有对比表的公共坐标系;然后学工程层:KMS 与 Secret 管理(纵轴 1.5 的历史能帮你理解每类工具为何长成那样);最后跟踪 PQC 迁移与签名自动化两个前沿(纵轴 1.6)。

工程清单(实践者):

  1. 新系统默认组合照抄横轴 2.8 第一行:AES-256-GCM/XChaCha20 + X25519/Ed25519 + SHA-256 + Argon2id(密码存储);
  2. 盘点存量系统里的 RSA/ECDSA/MD5/SHA-1 使用点,建立"密码清单"(cryptographic inventory),为 2030 硬线排期(具体做法与工具见 3.6 问二);
  3. 能短命的密钥不做长期密钥;CI/签名优先考虑 Sigstore keyless;数据库凭据优先动态秘密;
  4. Git 里的秘密用 SOPS+age 或 Sealed Secrets,K8s 原生 Secret 必须配合 etcd 静态加密与 RBAC(SOPS+age 最小上手见 3.6 问四);
  5. 把算法选择抽象为可配置项(算法敏捷性),这是应对下一次"算法半衰期到期"的唯一廉价保险;
  6. 国内合规项目做国密/国际双栈,注意 SM 系列的 GM/T 与 GB/T 双层标准号对应关系。

两个不要:不要自己发明密码学构造(纵轴上所有悲剧都源于此,包括 NSA 自己缩短 DES 密钥的行为在 21 年后被 Deep Crack 处决);不要把"轮换"当成万能药——AWS 的分析与 Uber/丰田的泄漏事故共同说明,绝大多数密钥事故是"人把密钥放错了地方",而不是"密钥用得太久"。

3.6 常见追问与下一步

按上文逻辑推演,读者读完最容易追问的四件事,在此逐条作答;超出本文范围的,显式声明并给指向。

问一:NIST IR 8547 的 2030/2035 是美国联邦系统的时间表,非联邦、非美国的系统为什么要跟进?
先补上 TL;DR 与纵轴 1.7 的洞察 5 原先省略的限定:2030 年弃用/2035 年禁用的硬约束,只落在美国联邦信息系统上(横轴 2.2 与纵轴 1.6 均已注明)。非联邦系统跟进的三个理由:其一,事实标准来自供给侧——Chrome/Edge、Firefox、Safari、OpenSSL、Go、Java、OpenSSH 等全球共用组件已默认启用 X25519MLKEM768(横轴 2.2),无论在哪个法域,你的流量协议都会跟着组件默认值走,逆行者承担的是兼容与安全审查成本;其二,"先收割、后解密"不看法域(纵轴 1.6)——今天被存下的密文,量子算力成熟时是全局可解的,长保密期数据等不起自己辖区的时间表;其三,合规会外溢——为美国联邦系统供货或身处其供应链的供应商,会被合同与采购要求拉进这条时间线。所以真正的判断标准不是"是否美国系统",而是数据的保密期是否长于迁移周期。各国/各行业监管的具体差异不在本文覆盖范围,指向:跟踪本国密码主管机构的 PQC 公告(如中国国家密码管理局,见参考来源)与所用组件的迁移文档。

问二:建立"密码清单"(cryptographic inventory)用什么工具、怎么做?
按四步走:

  1. 代码与依赖面:扫描自家代码与依赖中的密码 API 调用点——按算法名(RSA、ECDSA、MD5、SHA-1、DES 等)与各语言密码库 import 检索;
  2. 协议与配置面:枚举 TLS/SSH/JWT 的证书链、密码套件与签名算法配置,把"哪些服务还在用经典公钥算法"数清楚;
  3. 密钥面:从 KMS/HSM、内部 CA 与证书透明日志导出密钥与证书台账(谁持有、何时到期、保护什么);
  4. 归一成"密码物料清单"(CBOM,Cryptography Bill of Materials):CycloneDX 1.6(2024-04)起原生支持 CBOM,把算法、密钥长度、用途、保护对象结构化记录,IBM 等方提供配套扫描工具(如 CBOMkit)(CycloneDX CBOM、IBM/CBOM)。有了这份底账,2030 硬线的替换排期才有对象与优先级。

本文未逐一评测各扫描工具的能力边界,工具选型以各官方文档为准。

问三:混合握手 X25519MLKEM768 的"KB 级"开销,对 TLS 握手实际影响多大?
把数字拆开(部署分析、部署指南):ML-KEM-768 的封装公钥 1184 字节、密文 1088 字节;X25519 两侧各 32 字节。合入同一混合组后,客户端 key share 从 32 字节涨到约 1216 字节、服务端回包约 1120 字节——整个握手净增约 2 KB,ClientHello 整体从约 300–500 字节涨到约 1300–1500 字节。对人类网页浏览,这个量级的传输与计算开销在现代带宽与 CPU 上基本无感;真正的坑在兼容性:超大 ClientHello 在个别企业中间件(防火墙、DPI 设备、负载均衡)上可能被静默丢弃或分片出错,QUIC 初始包也更容易触顶。结合横轴 2.2(主流客户端已默认开启),实践建议:服务端保留纯 X25519 组作为回退;IoT、高频短连接与极小 MTU 场景先实测再全量。

问四:Argon2id 参数在常用语言里怎么配?SOPS+age 最小上手长什么样?
参数基线沿用横轴 2.3 引用的 OWASP 口令存储速查表:Argon2id 最低 m=19 MiB(=19456 KiB)、t=2、p=1;通行经验是把单次哈希调到生产机上约 0.5–1 秒、随硬件上调,并把结果存成 PHC 格式字符串(自带算法与参数头),以便日后无损升级参数。

常用语言示例(按 OWASP 最低参数书写,生产建议上调 memory):

# Python:argon2-cffi(其默认值 64 MiB / t=3 / p=4 已高于 OWASP 下限)
from argon2 import PasswordHasher
ph = PasswordHasher(time_cost=2, memory_cost=19456, parallelism=1)  # memory 单位 KiB
h = ph.hash("password")
ph.verify(h, "password")
// Go:golang.org/x/crypto/argon2(IDKey 即 Argon2id;盐与 PHC 编码需自理)
key := argon2.IDKey([]byte(password), salt, 2, 19456, 1, 32) // t, m(KiB), p, keyLen
// Node:node-argon2
const argon2 = require("argon2");
await argon2.hash("password", {
  type: argon2.argon2id, memoryCost: 19456, timeCost: 2, parallelism: 1, // memoryCost 单位 KiB
});

(Python 绑定见 argon2-cffi 文档;Go 的 x/crypto 只提供裸 KDF 函数,盐生成与 PHC 编码需自行封装。)

SOPS+age 最小上手(命令整理自 getsops/sops 官方 README):

# 1) 生成 age 密钥对(私钥文件妥善保管,绝不入 Git)
age-keygen -o key.txt                     # 输出 age1... 开头的公钥
export SOPS_AGE_RECIPIENTS=age1xxxxxxxx   # 加密方:用公钥
# 解密方:export SOPS_AGE_KEY_FILE=key.txt(指向私钥文件)

# 2) 加密:值字段就地加密,键保留,Git 里可 diff
sops -e secrets.yaml > secrets.enc.yaml

# 3) 日常编辑与查看
sops secrets.enc.yaml        # 解密进 $EDITOR 编辑,保存后自动重新加密
sops -d secrets.enc.yaml     # 只读解密到 stdout

# 4) 把加密规则固化进 .sops.yaml(只含公钥,可安全入库)
cat > .sops.yaml <<'EOF'
creation_rules:
  - path_regex: secrets/.*\.ya?ml$
    age: age1xxxxxxxx
EOF

两个易错点:加密用公钥(recipient)、解密用私钥文件(SOPS_AGE_KEY_FILE),别配反;CI/集群侧只需要私钥文件的最小读取权限。


四、参考来源

纵轴章节(vertical)核实来源:

横轴章节(horizontal)核实来源(标注"已直接抓取核验"的为章节作者在本会话抓取原文核验):

final 修订新增来源(2026-10-31,本稿修订时检索/抓取):

沿袭两章的诚实声明:标注"未直接核验"的事实(OpenBao 采用方报道、Vault 修复时差报道)来自搜索结果摘要,仅作背景参考;两章作者已核验的事实,本稿未重新独立核验。final 修订(2026-10-31)新增内容的核验口径:已直接抓取核验——X25519MLKEM768 握手开销数字(postquantumsecurity.org)、Bitwarden 定价与 Secrets Manager 形态(bitwarden.com 两个页面)、Bitwarden 服务端许可结构(GitHub 仓库页);经检索交叉确认、未直接抓取原文——IBM 收购 HashiCorp 于 2025-02-27 完成交割、DSS 1991 年 512 位争议与 1994 年定稿、CycloneDX 1.6 支持 CBOM、Argon2id 与 SOPS+age 的绑定用法及命令。原稿 AKeyless"2025 年获 FedRAMP Class D"未获证实(检索提示 FedRAMP 20x 的 Class D 分级并非 2025 年既有设计),已删除该说法,准确状态请以 FedRAMP Marketplace 为准;原稿 DSA"内嵌追踪器"说法查无出处,已改写为有据的 1991 年 512 位密钥争议史实并补来源。3.6 的代码示例为按官方文档整理的最小演示,未经生产环境验证。价格与版本数据为 2026-10-31 前后查询结果,以各官方页面实时数据为准。

思考题(读完后想一想,参考答案可展开)

  1. 报告用哪一句话概括密码学 77 年的历史?“四个原语”各自管什么?
    参考答案

    一句话:算法会老,密钥会漏,唯有人会犯错。规律是算法从定标到退场约 15–25 年(DES 24 年被 AES 替换、MD5 16 年被 Rogue CA 实际利用、SHA-1 22 年被 SHAttered 实际碰撞),全网迁移还要再花 10 年以上,现在轮到 RSA/ECC——按 NIST IR 8547,美国联邦系统 2030 年后弃用、2035 年后禁用。四原语分工:对称加密管“藏数据”、非对称管“发钥匙”、哈希管“验完整”、签名管“认身份”。

  2. AES-256-GCM 与 ChaCha20-Poly1305 应如何取舍?AWS KMS 关于密钥轮换的反直觉结论是什么?
    参考答案

    性能是核心分水岭:带 AES-NI 的现代 CPU 上 AES-256-GCM 通常等于或快于 ChaCha20;无硬件加速的设备(老旧设备、手机、IoT)上 ChaCha20 明显更快且天然规避缓存时序侧信道,TLS 库因此按客户端能力自动协商;AES 生态最厚(FIPS 合规),是默认无脑选。轮换方面 AWS 论证:密钥不出 HSM、每请求派生子密钥时,加快轮换的边际安全收益不大——轮换的真正价值是“可疑时立即作废重造”的应急能力,而非例行周期。

  3. 为什么“用 SHA-256 加盐存密码”不合格?ECDSA 签名有哪些已知的实现坑?
    参考答案

    密码存储属于口令哈希/慢哈希一族,与快哈希是两道题。OWASP 2025 推荐顺序:Argon2id(首选,最低参数 m=19 MiB、t=2、p=1)→ scrypt → bcrypt(cost≥10,注意 72 字节截断)→ PBKDF2(仅 FIPS-140 约束下,SHA-256 下 60 万次迭代)。ECDSA 的坑:nonce 复用/偏置即泄漏私钥,无效曲线攻击有真实事故;相比之下 Ed25519 确定性签名无 RNG 依赖、签名最快(比 RSA-2048 快约 50 倍),是新系统默认。

  4. 按报告的工程清单,个人/小团队开发者在新系统与存量系统上应分别做什么?
    参考答案

    新系统默认组合照抄:AES-256-GCM/XChaCha20 + X25519/Ed25519 + SHA-256 + Argon2id(密码存储)。能短命的密钥不做长期密钥:CI/制品签名优先 Sigstore keyless,数据库凭据优先动态秘密;Git 里的秘密用 SOPS+age 或 Sealed Secrets。存量系统要盘点 RSA/ECDSA/MD5/SHA-1 使用点,建立密码清单(CBOM),为 2030 硬线排期。两个不要:不要自己发明密码学构造;不要把轮换当万能药——绝大多数密钥事故是人把密钥放错了地方。

← 资料库今日播报 →