格密码选来抗量子,但它自身面对量子计算机的真实加速能力有多强?实现层的计时、功耗、电磁泄漏又会从哪里把数学上的安全凿穿?本节给出量子加速的精确边界(答案:有,但只有常数折让),并用三个真实案例讲清侧信道的攻防——安全是全栈属性,不是归约证书。
承接 6.2 节:数学层的火力阶梯已经盘完,本节处理两个"场外"威胁。读完本节,你会对"格密码抗量子"这句口号拥有逐条审计的能力,也会知道为什么 KyberSlash 这类名字值得每个实现者记住——通往第 7 章的标准化讨论,正是建立在这套攻防常识之上。
把量子威胁分层审。第一层,RSA 与 ECC 的死刑:Shor 算法把大数分解与离散对数变成量子多项式时间——这不是加速,是类别降维,量子计算机一旦够大,两者直接死亡。第二层,格难题的待遇:目前没有找到任何把 SVP/CVP 降维到多项式的量子算法;已有的量子加速集中在筛法(6.2 节的 0.292\beta \to 0.265\beta,约 8% 折让)与 Grover 式的通用平方根加速上。一个容易混淆的点要澄清:Regev 的量子归约确实给了"近似因子 \tilde{O}(n) 的 SVP"一个量子多项式算法,但那是对超宽近似档的求解——格密码用的近似档窄得多,两者不在一个战场。第三层,诚实的不确定性:量子算法研究仍在推进,2022 年以来对核心 SVP 口径的若干修正已削掉数比特估计;这解释了第 7 章你会看到的"安全边际"条款,也是 NIST 保留非格备用算法(编码基的 HQC)的原因——鸡蛋不放一个篮子。
一句话总结:量子对格是折扣店,对 RSA 是坟场。折扣的深度会变,这也是参数表需要持续校准的原因。给非密码背景的读者一句翻译:选择格方案相当于把"密码分析进展"设为唯一的风险变量,而 RSA 方案还额外背着"量子硬件进度"这个倒计时变量——风险管理上,单变量组合永远好过双变量组合。单变量不等于零风险,但它让风险变得可跟踪、可估算、可对冲,这三"可"正是本书反复强调的工程纪律。
KyberSlash(2024 年初):Kyber 若干参考实现与衍生库的解密代码里,藏着一条依赖秘密的除法——压缩运算里的常数除法在部分处理器上耗时随操作数变化,攻击者远程测时即可逐位恢复会话密钥。修复是纯工程动作:把除法改成乘法与移位的常量时间组合,几天内全生态打上补丁。案例的教学价值在于:数学层完美、实现层漏风——归约证书不会替你检查除法指令。

Hertzbleed(2023):攻击者利用 CPU 动态调频——密集运算使芯片升温降频,把功耗差异转写成时间差异,对格密码的常量时间实现依然有效。它刷新了一个共识:常量时间代码不等于常量时间芯片。缓解靠掩码(把秘密拆成随机份额分别运算)与硬件调频策略,代价从百分之几十到翻倍不等。生态教训(2022):同届候选的另一个后量子家族——基于同源的 SIKE——被经典计算机在数小时内击破,与量子无关,纯数学突破。它给格生态的启示写进了标准流程:算法组合多样化(KEM 主力加编码基备份)、参数随估算工具滚动复核、实现要经第三方审计。回头看 6.1 节 LLL 击破 GGH 与背包的历史,你会认出同一个模式:每一代格方案都要在自己的规约算法上活过几年,才算真正成年。
给实现者的底线清单,四条,按优先级排:密钥相关的分支与内存访问清零(查表换成算术);除法与取模改乘移组合(KyberSlash 教训);签名的重试次数与失败路径常量化(4.2 节的"作废重签"也是信息);关键运算双算比对防故障注入。第 7 章讨论工程实现时会把这些条目接上具体的库与编译开关。
侧信道之外还有一类"主动式"实现攻击值得单独立案:故障注入。思路不是偷看计算,而是打断计算——让设备在签名过程中算错一处,从带故障的错误签名里反推私钥。经典案例是 RSA-CRT 签名的 Bellcore 攻击:拿到一份错误签名,与真值做差取最大公因子,直接分解出模数因子。格签名同样有对应面:若响应多项式的某个系数被故障翻转而验证端因实现缺陷未复核,攻击者可从多份故障签名的线性关系里解出短秘密。防线不贵:签名后用公钥回验一遍(验签通过才输出),或对关键运算双轨比对——成本约百分之几十,换来故障路径的封死。写进采购要求时认准一句话:实现是否默认开启回验或等效防护。
直觉上远程测时像天方夜谭,历史上却有成熟方法:海量重复测量加统计滤波,把噪声里稳定的均值差提取出来;缓存与分支预测让时间差异放大到微秒级;网络抖动用"取最小值"策略压掉(噪声只会让时间变长,最小值逼近真实耗时)。KyberSlash 的复现甚至在局域网内几分钟出结果。防御方的结论因此很朴素:不要赌统计够难,要让"密钥无关"成为代码性质,而不是让攻击者的信噪比来决定。
把本章的威胁评估收成一张决策卡,供你贴在项目文档里。卡一,量子威胁排期:格方案按标准档选用即可,真正的排期压力在 RSA/ECC 的退役(第 7 章时间线),不在"格被量子攻破"这个不存在的日程上。卡二,实现威胁排期:任何上线实现必须过常量时间审计,这一项的优先级高于一切性能优化——慢但稳的实现能活着,快而漏的实现等于明文。卡三,事件响应:订阅所用库的安全公告,KyberSlash 类事件从披露到补丁通常按天计,你的响应也要按天计。三张卡讲完,威胁模型从抽象名词变成了三行待办。
要点速记:量子对格只有常数折让、对 RSA 是类别降维,两者不可混谈;KyberSlash 证明计时器能说出密钥,修复靠乘移替换除法;Hertzbleed 证明常量时间代码挡不住常量时间芯片;安全是三层工程,归约证书只保第一层。
攻击者视角到此收束。下一章回到建设者视角:这套攻防生态如何凝成 NIST 标准、参数表与真实世界的 TLS 流量。