4. 目标体系设计
过渡工程最容易失败的方式,不是算法选错,而是目标体系没有定义清楚:有人按“兼容优先”选算法,有人按“合规优先”选长度,最后新旧系统对不上。目标体系设计要回答四个问题:用什么算法组合、每类密钥多长、整体达到多少比特安全强度、以及如何从现状迁移到目标。这四个问题必须一起回答,因为它们互相约束。
一、先定安全强度基线,再反推算法与长度
安全强度用“比特”衡量,表示攻破所需的最优经典计算量约为 2^n 次操作。目标体系应先确定一个统一基线,再让每个环节都达到或超过它。常见基线选择如下:
| 安全强度 | 对称算法 | RSA / DH 模数 | ECC 曲线 | 哈希 |
|---|---|---|---|---|
| 112 bit | AES-128 | 2048 位 | P-224 | SHA-224 |
| 128 bit | AES-128 | 3072 位 | P-256 | SHA-256 |
| 192 bit | AES-192 | 7680 位 | P-384 | SHA-384 |
| 256 bit | AES-256 | 15360 位 | P-521 | SHA-512 |
注意两点:一是强度由最弱环节决定,若签名用 P-256(128 bit)而摘要用 SHA-1(约 63 bit 抗碰撞),整体只有约 63 bit;二是不要盲目追高,把 RSA 提到 15360 位会带来明显性能与兼容代价,而多数业务 128 bit 已足够。建议目标基线定为 128 bit,对长期敏感数据(如存档、根密钥)单独提升到 192 bit。
二、算法组合:按用途分层选型
混合体系不是“选一个算法”,而是按用途给出组合。推荐的目标组合如下(示例,需结合合规要求调整):
- 对称加密:AES-128-GCM 或 AES-256-GCM,优先 GCM 因为同时提供机密性与完整性;
- 密钥封装 / 密钥交换:ECDH P-256 为主,逐步引入 X25519;后量子过渡期采用 X25519 + ML-KEM-768 混合;
- 数字签名:ECDSA P-256 或 Ed25519;后量子过渡期采用 Ed25519 + ML-DSA-65 双签名;
- 哈希与 KDF:SHA-256 / SHA-384,口令派生用 Argon2id 或 PBKDF2-HMAC-SHA-256(迭代≥600000);
- 随机数:系统 CSPRNG,禁止使用业务自实现随机源。
“混合”在密钥交换和签名两处的含义不同:密钥交换是两个共享秘密拼接后再派生,只要其中一个算法安全,会话密钥就安全;签名是两个签名都验证通过才接受,防止任一算法被攻破。两者都不能简单“二选一”。
三、过渡策略:先并行、再切换、后退役
过渡策略的核心是让新旧算法在同一协议中共存,而不是一次性替换。推荐三阶段:
- 并行期:协议同时携带经典与后量子参数,接收方按“双通过”校验;此阶段只增加字段,不改变业务语义。
- 切换期:新会话默认使用混合模式,旧会话仍可回退;通过配置开关控制比例,观察失败率与性能。
- 退役期:当旧客户端占比低于阈值(如 0.1%)后,关闭纯经典模式,仅保留混合模式。
每个阶段都要有明确的进入条件与退出条件,例如“混合握手成功率≥99.9% 且 P99 延迟增幅≤15%”才进入下一阶段。没有量化条件的过渡策略,等于没有策略。
四、把目标体系画成一张可核对的图
下图把“安全强度基线—算法组合—过渡阶段—判断条件”放在同一视图中,便于在评审时逐项核对。图中左侧是目标基线,中间是按用途分层的算法组合,右侧是三阶段过渡路径及其量化门槛。
五、落地时的三个关键判断
第一,兼容性优先还是强度优先?若客户端不可控(如 IoT、旧浏览器),并行期必须保留经典套件,但要用白名单限制最低强度,禁止协商到 SHA-1 或 1024 位 RSA。第二,混合模式会不会拖慢性能?ML-KEM-768 与 X25519 的运算量远小于一次 RSA-3072 握手,实测中混合握手通常只增加 5%~15% 的 CPU 开销,瓶颈往往在证书链长度而非算法本身。第三,如何验证目标体系真的生效?在握手日志中记录协商到的套件 ID、双方算法列表与是否发生回退,用“套件 ID 分布”而非“是否成功”来判断过渡进度。
最后给出一个可直接填写的目标体系表模板,字段包括:套件 ID、用途、经典算法、后量子算法、安全强度、启用阶段、退出条件。评审时逐行核对,任何一行强度低于基线或缺少退出条件,都视为未完成设计。
套件ID 用途 经典算法 后量子算法 强度 阶段
CS-001 对称加密 AES-128-GCM — 128 bit 并行
CS-002 密钥交换 ECDH P-256 ML-KEM-768 128 bit 并行
CS-003 签名 ECDSA P-256 ML-DSA-65 128 bit 并行
CS-004 长期存档 AES-256-GCM — 192 bit 切换
CS-005 根密钥签名 Ed25519 ML-DSA-87 192 bit 切换
目标体系设计完成后,它就成为后续所有迁移、测试与验收的基准。任何算法替换、长度调整或阶段推进,都必须回到这张表上更新,而不是在代码里临时决定。