🛡️ 第五章 什么是密码、数字签名、数字证书
📄 一句话概括

"更安全"这件事有两个完全不同的方向:一个是换更难的数学(RSA → 椭圆曲线),一个是加长钥匙(2048 → 4096)——而 2026 年真正在发生的是第三种:因为量子计算机有朝一日能解开这两者,整个行业正在换掉"依赖大数分解与离散对数"这一整类数学。

📝 本节和前面几节的关系

5-3 讲了 RSA 靠"大数分解难"撑着,5-7 讲了整套 HTTPS 都建在这个假设上。

这一节要回答的是:这个假设还能撑多久,以及撑不住的时候怎么办。 它也是 5-10 的直接铺垫——"加密的危殆化"在历史上发生过很多次(MD5、SHA-1、DES),只是这一次的规模更大。

一、方向一:换更难的数学——椭圆曲线

要理解椭圆曲线加密(ECC)的价值,看一张对照表就够了:

安全等级 RSA 密钥 ECC 密钥 等效的对称密码
80 位 1024 位 160 位 DES(已废弃)
112 位 2048 位 224 位 3DES(已废弃)
128 位 3072 位 256 位 AES-128(当前主流)
192 位 7680 位 384 位 AES-192
256 位 15360 位 521 位 AES-256

读法:要达到 128 位安全等级,RSA 需要 3072 位密钥,而 ECC 只要 256 位——差 12 倍。

这个差距的实际意义:

代价是它有自己的一类实现风险:ECDSA 每次签名都依赖一个随机数,这个随机数一旦被重用或可预测,私钥就会被直接算出来——2010 年索尼 PS3 的签名密钥就是这么泄露的。这一点直接决定了下面的选型结论。

二、方向二:加长钥匙——但要看清加在哪儿

"把 2048 位改成 4096 位"看起来是最省事的安全加固,其实它有明确的边际效益问题:

对称加密那一侧就单纯得多:AES 的密钥长度直接等于安全等级,从 128 换成 256 几乎没有工程代价——所以这是唯一一个"加长就很划算"的地方(这也是 5-2 里"面对量子只需要把 AES-128 换成 AES-256"那句话的由来)。

三、动手 Demo:密钥长度、量子门槛、迁移时间表

# ① 密钥长度 ↔ 安全等级对照(经典计算机)
rows = [(80, 1024, 160, "DES(已废弃)"), (112, 2048, 224, "3DES(已废弃)"),
        (128, 3072, 256, "AES-128(当前主流)"), (192, 7680, 384, "AES-192"),
        (256, 15360, 521, "AES-256")]

# ② 分解 RSA-2048 所需的物理量子比特(逐年下降)
#    2019 年:约 2000 万 → 2025 年:不到 100 万
#    2026-02:约 9.4 万 → 2026-03:约 1 万~2.6 万

实跑输出:

一、密钥长度 ↔ 安全等级对照(针对经典计算机)
  安全等级    RSA 密钥      ECC 密钥      等效的对称密码
  80 位       1024 位       160 位        DES(已废弃)
  112 位      2048 位       224 位        3DES(已废弃)
  128 位      3072 位       256 位        AES-128(当前主流)
  192 位      7680 位       384 位        AES-192
  256 位      15360 位      521 位        AES-256
  → 要 128 位安全:RSA 需要 3072 位,ECC 只要 256 位(相差 12 倍)。
     这就是椭圆曲线加密(ECC)的意义:同样安全,钥匙更短、运算更快。

二、2026 年生成密钥的默认答案:Ed25519(一种椭圆曲线签名)
  方案        公钥大小        约等于          备注
  Ed25519     约 68 字节      RSA-3072        默认首选;签名快且确定性
  RSA-4096    约 740 字节     约 128 位安全   只用于必须兼容的老设备
  ECDSA       约 90 字节      约 128 位安全   不建议新用(见下)
  DSA         1024 位         已被禁用        删掉
  → ECDSA 的隐患不在数学,而在实现:它每次签名都依赖一个随机数,
     随机数一旦被重用或可预测,私钥直接暴露——2010 年索尼 PS3 的
     签名密钥就是这么被还原的。Ed25519 从设计上抹掉了这个失败模式。

三、量子计算机用 Shor 算法打的是 RSA 与 ECC(对称密码不受影响)
  以下是把 RSA-2048 分解所需的物理量子比特估算(逐年大幅下降)
  时间                        所需物理量子比特        运行时间
  2019 年(Gidney-Ekerå)     约 2000 万              8 小时
  2025 年(Gidney 优化)      不到 100 万             一周内
  2026-02(Pinnacle 架构)    约 9.4 万               约 1 个月
  2026-03(中性原子+qLDPC)   约 1 万~2.6 万          数百天 / 并行约 10 天
  → 门槛在快速下降,但当前最好的机器仍在百比特量级,
     离【能真正跑动】还差好几个数量级。所以是【必须现在开始迁移】,
     而不是【明天就会被打穿】。

四、对称密码只被 Grover 减半,所以 AES-256 仍是安全区
  算法          经典强度      量子下等效    判断
  AES-128       128 位        64 位         不够
  AES-256       256 位        128 位        够用
  SHA-256       128 位抗碰撞  仍然够用      哈希只受 Grover 影响,可沿用

五、2026 年的迁移时间表(已经在执行)
  节点                          内容
  2024-08-13                    NIST 发布三个后量子标准 FIPS 203 / 204 / 205
  2025 起                       NSA CNSA 2.0:软件签名与 TLS 开始要求后量子算法
  2026 起                       VPN / IPsec 开始要求后量子密钥协商
  2030 年                       RSA-2048 / ECDSA / ECDH 进入【弃用】
  2035 年                       上述算法【禁止使用】
  (新标准的三兄弟:ML-KEM 管密钥协商、ML-DSA 管签名、SLH-DSA 为备份)
  代价                          新算法的钥匙和签名大得多
  ECC 签名(ECDSA P-256)       约 64~72 字节
  后量子签名(ML-DSA-65)       约 3309 字节(约 46 倍)
  → 因此浏览器端后量子支持已达 69.94%,而源站只做到 9.37%:
     客户端准备好了,服务器侧才是真正的工作量。

读这个输出:

四、⚠️ 2026 现状

30 秒实验

今天做两个动作,各 15 秒:

  1. 在心里做一次单位换算:看到"128 位安全"时,立刻对应出三个数字——AES-128、RSA-3072、ECC-256。然后留意一下你平时看到的配置里写的是多少位(比如某个网站上写着 RSA-2048,那它对应的是 112 位——能用,但不在今天的推荐基线上)。这个换算习惯比记任何具体数字都有用。
  2. 打开一个 https 站点,在开发者工具的"安全"面板里看看它协商的是什么密钥交换算法。如果看到 X25519MLKEM768 这样的混合名字,说明这次连接已经带上了后量子成分——这正是"浏览器端已经准备好了"在你眼前的具体体现。

这一节要带走的一句是:"更安全"在密码学里有三种做法——换更难的数学、加长钥匙、以及提前换掉整类数学;前两种我们自己就能决定,第三种是由量子计算机的进度表替我们决定的。

常见误区

  1. 错误:RSA-4096 一定比 ECC-256 更安全,所以选它准没错。——纠正:它们的安全性是对等的(都对应约 128 位安全等级),差的只是成本。RSA-4096 的密钥和证书大得多、运算慢得多,而同等级安全下 ECC 只需要 256 位——这是"用更少的位表达同等强度",不是"强度更低"。 唯一需要用 RSA 的场景是兼容性:某些老设备、老系统只认 RSA(5-12 会给出 SSH 的完整选型表)。"用新不用旧"的正确表述是"新场景用 ECC(含 Ed25519),老设备才退回 RSA"。

  2. 错误:量子计算机还很远,现在投入迁移是浪费钱。——纠正:"现在要开始"不等于"现在要全部换完",而理由是"先存后解"。攻击者可以今天就把加密流量录下来存着,等量子计算机可用时再解开——这意味着"需要长期保密的数据"今天就已经处在风险中。所以规划的依据不是"量子计算机什么时候能用",而是"这份数据要保密多少年":保密期 10 年以上的,现在就该把迁移排进计划。再加上后量子算法有体积代价,需要提前做硬件与协议的适配——这些都是有前置期的工程,不是一个开关。

  3. 错误:换了后量子算法,对称加密也得一起换掉。——纠正:正好相反,对称加密是这次迁移里最不需要操心的部分。因为 Shor 算法打的是大数分解和离散对数,对 AES 完全没有作用;量子世界对对称算法只有 Grover 算法,效果是把有效强度减半——AES-256 减半后还有 128 位,依然安全。哈希也一样(SHA-256 可以继续用)。所以迁移的全部工作量集中在公开密钥加密和签名上——这也解释了为什么所有时间表里提到的都是 RSA、ECDSA、ECDH 这几个名字。

  4. 错误:密钥长度只要够长,算法老一点没关系。——纠正:"加长"对某些算法有用,对另一些完全无效。对 AES 这类对称算法,加长直接等于提升强度;但对已经发生结构性失效的算法,加长只是拖延——DES 的 3DES(用三把 DES 密钥)当年就是"加长"的思路,最后仍然因为 64 位分组带来的 Sweet32 攻击而退场。判断标准是"它倒下是因为钥匙太短,还是因为算法本身有结构问题":前者可以加长,后者只能替换(这正是 5-10 要分清的两件事)。

自测三问(点开对答案) 1. "128 位安全等级"这句话该怎么换算? —— **它表示"破解它需要约 2^128 次基本运算",而不同的算法类型要用不同长度的密钥才能达到这个强度**:**对称加密(AES)用 128 位密钥;RSA 要用 3072 位;椭圆曲线(ECC)用 256 位**。**这个换算表是本节最有实用价值的工具**——**因为你在配置、证书、协议里遇到的全是密钥位数,而"这个位数算不算安全"的判断依据就是它能对上哪个安全等级**。**记住三个锚点就够了**:**AES-128 = RSA-3072 = ECC-256 = 128 位安全**。**看到 RSA-2048 就知道是 112 位(可用但偏低),看到 RSA-4096 或 ECC-256 就是 128 位等级。** 2. 为什么量子计算机来了要换算法,而不是把 RSA 加长? —— **因为 Shor 算法打的是算法的数学结构,不是密钥长度**。**RSA 的安全性建立在"大数分解很难"上,Shor 算法能高效地分解大数**——**它把问题的复杂度从"次指数级"降到"多项式级"**,**也就是说"把密钥加到 16384 位"也只是让对方多花一点多项式时间,不能恢复安全性**(这与对称加密的情况正好相反:**Grover 只是把穷举的尝试次数降到约根号,加长密钥就能补回来**)。**所以处理方式是"换掉整类数学"**——**新标准(ML-KEM、ML-DSA)建立在格问题等不同基础上,目前没有已知的量子算法能高效破解它们。** 3. 后量子迁移最难的部分是什么? —— **不是"换算法"这个决定,而是它牵连出来的工程改造**。**三个具体的难点**:① **体积**——**后量子签名约 3,309 字节(ECDSA 只有 64~72 字节),证书链和握手会显著变胖,一些老设备的固定长度缓冲直接放不下**;② **硬件能力**——**硬件安全模块的存储与吞吐要重新评估(后量子私钥大得多)**;③ **两端不同步**——**实测数据显示客户端支持率接近 70%,而源站只有 9.37%**,**所以真正的工作量在服务器与 CDN 那一侧,不在浏览器**。**这也是为什么各家的路线图都是"三年左右的分阶段计划",而不是一次性切换。**

相关笔记