摘要:量子计算威胁正在迫使嵌入式系统迁移到后量子密码。NIST已标准化PQC算法,但新算法的内存需求对资源受限的嵌入式设备构成重大挑战。本文从算法选型、内存优化和工程实践三个维度,分析PQC在嵌入式设备上的部署路径。
一、量子威胁与PQC的紧迫性
量子计算对经典密码体系构成根本性威胁。Shor算法可以在多项式时间内破解RSA和ECC,这意味着当前广泛使用的公钥密码体系在量子计算机面前将不再安全。
嵌入式系统面临的风险尤其严重。工业设备、汽车电子、医疗设备的生命周期通常长达10到15年。今天部署的设备,可能需要在量子计算机成熟后仍然保持安全。这就是“先收集,后解密”攻击的逻辑——攻击者现在收集加密数据,等量子计算机成熟后再解密。
NIST已经标准化了后量子密码算法,包括基于格的Kyber(密钥封装)和Dilithium(数字签名),以及基于哈希的SPHINCS+。这些算法在安全性上有充分的理论支撑,但它们的计算开销和内存需求远高于经典算法。
二、PQC在嵌入式设备上的挑战
PQC在嵌入式设备上的部署面临三重挑战。
第一,内存需求。基于格的PQC算法需要存储大型矩阵和多项式。Kyber的密钥生成和封装操作需要数KB到数十KB的内存,对于RAM在64KB到512KB之间的MCU,这是一个显著的开销。
第二,计算开销。PQC算法的计算复杂度高于经典算法。在低主频的MCU上,PQC操作可能需要数百毫秒甚至数秒。对于实时性要求高的场景,这是不可接受的。
第三,代码体积。PQC算法的实现代码比经典算法大。对于Flash在256KB到2MB之间的MCU,代码体积的增加可能挤占应用代码的空间。
一项系统调研分析了PQC在嵌入式设备上的适用性,覆盖安全通信、安全启动和安全更新三个关键用例。研究结论是:PQC已经能够与经典密码算法竞争性能,但在性能与内存约束成为问题时,需要根据具体用例选择算法。
三、算法选型:根据用例选择
不同的嵌入式用例对PQC的要求不同。
安全通信。TLS握手需要密钥封装和数字签名。Kyber(密钥封装)和Dilithium(签名)是主流选择。对于嵌入式设备,可以使用混合模式——经典算法与PQC算法结合,确保即使PQC被破解,经典算法仍然提供保护。
安全启动。安全启动需要数字签名验证。Dilithium的签名验证开销相对较低,适合在Bootloader中实现。但Dilithium的公钥和签名体积较大,需要考虑Flash空间的约束。
安全更新。OTA更新需要签名验证和完整性保护。SPHINCS+基于哈希,签名验证开销较低,但签名体积较大。对于OTA场景,签名体积的增加可能影响传输效率。
算法选择策略。对于资源极度受限的设备,可以选择基于哈希的SPHINCS+,其计算开销较低但签名体积较大。对于资源相对充裕的设备,可以选择Kyber和Dilithium,其综合性能更好。
四、工程实践:内存优化与硬件加速
PQC在嵌入式设备上的部署需要工程优化。
内存优化。通过分块计算、内存复用和栈优化,可以降低PQC算法的内存峰值需求。例如,Kyber的矩阵乘法可以分块执行,避免一次性加载整个矩阵。
硬件加速。部分MCU集成了密码加速器,可以加速AES、SHA和ECC运算。但PQC算法的硬件加速仍在早期阶段。一些芯片厂商开始集成NTT(数论变换)加速器,用于加速基于格的PQC算法。
开源与厂商方案对比。STM32H563ZI上的开源与厂商PQC方案对比研究表明,厂商提供的PQC可用性并不等同于在受限嵌入式目标上的部署就绪。开源方案(如PQClean)在可移植性和灵活性上具有优势,厂商方案在性能和集成度上具有优势。
混合模式部署。在过渡期,混合模式是务实的选择。经典算法与PQC算法结合,确保即使PQC被破解,经典算法仍然提供保护。混合模式增加了计算开销和通信开销,但降低了迁移风险。
五、对嵌入式工程师的影响
第一,理解PQC算法的基本原理。不需要成为密码学专家,但需要理解Kyber、Dilithium和SPHINCS+的基本原理、内存需求和计算开销。
第二,掌握PQC在MCU上的部署方法。理解开源PQC库(如PQClean、liboqs)的移植和优化方法,是PQC嵌入式部署的基础。
第三,根据用例选择算法。不同的嵌入式用例对PQC的要求不同。安全通信、安全启动和安全更新需要不同的算法选择和优化策略。
第四,关注硬件加速的进展。NTT加速器和PQC专用加速器正在进入MCU。理解这些加速器的工作原理和编程模型,是PQC嵌入式优化的关键。
六、总结
后量子密码正在从标准走向工程部署。NIST的PQC标准已经就绪,但资源受限的嵌入式设备需要针对性的算法选型和内存优化。
对于嵌入式工程师而言,PQC意味着新的技能需求:算法选型、内存优化、硬件加速和混合模式部署。在量子计算威胁日益迫近的背景下,掌握PQC的嵌入式部署能力,正在成为嵌入式安全工程师的核心竞争力。