4. 目标体系设计

过渡工程最容易失败的方式,不是算法选错,而是目标体系没有定义清楚:有人按“兼容优先”选算法,有人按“合规优先”选长度,最后新旧系统对不上。目标体系设计要回答四个问题:用什么算法组合、每类密钥多长、整体达到多少比特安全强度、以及如何从现状迁移到目标。这四个问题必须一起回答,因为它们互相约束。

一、先定安全强度基线,再反推算法与长度

安全强度用“比特”衡量,表示攻破所需的最优经典计算量约为 2^n 次操作。目标体系应先确定一个统一基线,再让每个环节都达到或超过它。常见基线选择如下:

安全强度对称算法RSA / DH 模数ECC 曲线哈希
112 bitAES-1282048 位P-224SHA-224
128 bitAES-1283072 位P-256SHA-256
192 bitAES-1927680 位P-384SHA-384
256 bitAES-25615360 位P-521SHA-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,禁止使用业务自实现随机源。

“混合”在密钥交换和签名两处的含义不同:密钥交换是两个共享秘密拼接后再派生,只要其中一个算法安全,会话密钥就安全;签名是两个签名都验证通过才接受,防止任一算法被攻破。两者都不能简单“二选一”。

三、过渡策略:先并行、再切换、后退役

过渡策略的核心是让新旧算法在同一协议中共存,而不是一次性替换。推荐三阶段:

  1. 并行期:协议同时携带经典与后量子参数,接收方按“双通过”校验;此阶段只增加字段,不改变业务语义。
  2. 切换期:新会话默认使用混合模式,旧会话仍可回退;通过配置开关控制比例,观察失败率与性能。
  3. 退役期:当旧客户端占比低于阈值(如 0.1%)后,关闭纯经典模式,仅保留混合模式。

每个阶段都要有明确的进入条件与退出条件,例如“混合握手成功率≥99.9% 且 P99 延迟增幅≤15%”才进入下一阶段。没有量化条件的过渡策略,等于没有策略。

建议把目标体系写成一份“算法套件表”,每个套件有唯一 ID,协议协商时只传 ID,避免逐字段协商带来的降级攻击面。

四、把目标体系画成一张可核对的图

下图把“安全强度基线—算法组合—过渡阶段—判断条件”放在同一视图中,便于在评审时逐项核对。图中左侧是目标基线,中间是按用途分层的算法组合,右侧是三阶段过渡路径及其量化门槛。

混合密码体系目标设计视图 基线 → 算法组合 → 过渡阶段 → 量化门槛 安全强度基线 默认:128 bit 长期数据:192 bit 对称:AES-128/256 非对称:P-256 / 3072 哈希:SHA-256/384 强度取最弱环节 按用途分层的算法组合 对称:AES-GCM 哈希:SHA-256 密钥交换:ECDH P-256 → X25519+ML-KEM-768 签名:ECDSA P-256 → Ed25519+ML-DSA-65 混合 = 拼接派生 / 双签名双验证 三阶段过渡路径 ① 并行期:双参数共存,双通过校验 ② 切换期:默认混合,旧会话可回退 ③ 退役期:关闭纯经典,仅留混合 阶段推进的量化门槛(示例阈值,需按业务校准) 并行→切换:混合握手成功率 ≥ 99.9% P99 延迟增幅 ≤ 15% 切换→退役:旧客户端占比 < 0.1% 无降级告警,回退率 < 0.5% 退役后:仅混合套件可协商 套件 ID 白名单,拒绝未知 ID 核对要点 · 每个套件有唯一 ID,协商只传 ID,避免逐字段降级 · 混合密钥交换 = 两秘密拼接派生;混合签名 = 双签名双验证 · 强度由最弱环节决定,逐项对齐基线 · 每阶段有进入/退出条件,无量化条件不推进

五、落地时的三个关键判断

第一,兼容性优先还是强度优先?若客户端不可控(如 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   切换

目标体系设计完成后,它就成为后续所有迁移、测试与验收的基准。任何算法替换、长度调整或阶段推进,都必须回到这张表上更新,而不是在代码里临时决定。