1. 课程导论:后量子密码(PQC)背景、量子威胁、硬件安全的重要性、课程目标与学习路径

密码学是数字世界的信任基石。从网上银行、HTTPS 加密通信,到车联网 V2X 签名、固件安全启动,公钥密码体制(RSA、ECC、Diffie-Hellman)保障了数十亿设备的机密性与完整性。然而,这一基石正面临来自量子计算的根本性威胁。1994 年 Shor 算法证明,一旦拥有足够规模的容错量子计算机,大整数分解与离散对数问题可在多项式时间内求解——这意味着 RSA-2048、ECC-256 等现行公钥算法将全面失效。本课程聚焦于后量子密码(Post-Quantum Cryptography, PQC)的硬件实现,从算法原理、硬件架构、侧信道防护到 FPGA/ASIC 工程实践,帮助学员建立从数学算法到硅片实现的完整知识体系。

PQC 硬件实现知识体系与课程路径 量子威胁 Shor算法 / Grover算法 RSA/ECC 失效 PQC 算法族 格基 (Kyber/Dilithium) 哈希签名 (SPHINCS+) 硬件实现 FPGA / ASIC 高性能 / 低功耗 催生 落地 硬件安全四大挑战 侧信道攻击 (SCA) 故障注入 (FI) 算法硬件协同 性能/面积/功耗 课程六大模块 ① 数学基础 ② 算法原理 ③ 硬件架构 ④ 侧信道防护 ⑤ FPGA实现 ⑥ 工程实践 学习路径:理论 → 算法 → 硬件 → 安全 → 实践 每章包含:核心原理 / 操作流程 / 案例拆解 / 常见误区

1.1 量子威胁:为什么 RSA 和 ECC 会失效

核心原理:Shor 算法在 1994 年提出了一种能够在量子计算机上以多项式时间分解大整数和计算离散对数的算法。这意味着,对于 RSA-2048(模数 n 为 2048 位)或 ECC-256(椭圆曲线阶为 256 位),经典计算机需要 10 亿年以上才能破解,而理论上足够规模的量子计算机只需数小时甚至数分钟。Grover 算法则对对称密码(如 AES)提供平方加速,将 128 位安全性降为 64 位安全性,但可通过密钥长度加倍来缓解。

判断方法:评估量子威胁需要关注三个关键指标:

  • 逻辑量子比特数:破解 RSA-2048 约需 2000 万物理量子比特(含纠错开销),当前最先进量子处理器仅约 1000 物理比特。
  • 门操作保真度:需要低于 10⁻⁶ 的错误率,当前约为 10⁻³。
  • 相干时间:需要毫秒级以上,当前超导方案已接近该量级。
⚠️ 风险提示:“先收集,后解密”(Harvest Now, Decrypt Later)攻击是当前最紧迫的威胁。攻击者现在就在截获并存储加密通信数据,等待未来量子计算机成熟后批量解密。对于需要长期保密的数据(如医疗记录、政府机密、金融数据),迁移到 PQC 已刻不容缓。

1.2 PQC 算法族:NIST 标准化进程与候选算法

核心原理:NIST 于 2016 年启动后量子密码标准化项目,经过 3 轮评估,于 2022 年选定四种算法:CRYSTALS-Kyber(KEM,基于格)、CRYSTALS-Dilithium(数字签名,基于格)、Falcon(数字签名,基于格)、SPHINCS+(数字签名,基于哈希)。2024 年 8 月,NIST 正式发布 FIPS 203(ML-KEM)、FIPS 204(ML-DSA)、FIPS 205(SLH-DSA)标准。

算法 类型 安全基础 公钥/私钥/密文大小 硬件实现特点
ML-KEM-768 (Kyber) KEM Module-LWE 1184 / 2400 / 1088 B NTT 运算密集,并行度高
ML-DSA-65 (Dilithium) 签名 Module-LWE 1952 / 4000 / 3290 B 多项式乘法 + 拒绝采样
SLH-DSA (SPHINCS+) 签名 哈希函数 32 / 64 / 17088 B 大量哈希运算,状态存储大
FN-DSA (Falcon) 签名 NTRU 格 897 / 1281 / 666 B 浮点 FFT,硬件实现复杂

操作流程:选择 PQC 算法时,建议按以下步骤评估:

  1. 确定应用场景:是密钥交换(KEM)还是数字签名?
  2. 评估安全等级:NIST Level 1/2/3 对应 AES-128/192/256 安全性。
  3. 分析硬件约束:FPGA 资源、ASIC 面积、功耗预算、吞吐量要求。
  4. 考虑侧信道防护成本:掩码(Masking)和隐藏(Hiding)对面积的开销。
  5. 进行混合模式评估:是否与 ECC/RSA 组合使用(Hybrid Mode)。
💡 经验提示:对于大多数嵌入式应用,ML-KEM-768 + ML-DSA-65 是当前最均衡的选择。它们基于同一数学结构(Module-LWE),可以共享部分硬件单元(如 NTT 引擎),降低总体面积。Falcon 签名短但硬件实现复杂,适合对带宽敏感的场景。

1.3 硬件安全:为什么 PQC 必须考虑物理实现

核心原理:密码算法的数学安全性(Computational Security)与物理实现安全性(Physical Security)是两个正交维度。即使 ML-KEM 在数学上被证明是安全的,如果硬件实现不加以防护,攻击者仍可通过以下途径攻破:

  • 功耗分析(SPA/DPA):监控芯片功耗曲线,利用功耗与数据相关性提取密钥。
  • 电磁辐射分析(EMA):采集芯片电磁泄漏信号,类似功耗分析但非接触。
  • 故障注入(FI):通过激光、电压毛刺、时钟毛刺诱导计算错误,利用错误结果推断密钥。
  • 缓存/时序攻击:在软件实现中,通过观察执行时间或缓存命中率泄露信息。

判断方法:硬件安全评估通常遵循以下流程:

  1. 威胁建模:明确攻击者能力(是否物理接触设备?是否有探针台?)。
  2. 泄漏评估:使用 TVLA(Test Vector Leakage Assessment)统计检测泄漏点。
  3. 攻击复现:尝试实际 DPA/EMA 攻击,验证防护有效性。
  4. 认证标准:参考 Common Criteria (CC) EAL4+、FIPS 140-3 Level 3/4。
⚠️ 关键认知:PQC 算法(特别是格基密码)的侧信道防护比传统 ECC 更具挑战性。原因在于:① 多项式乘法涉及大量中间值,掩码开销更大;② 拒绝采样(Rejection Sampling)的循环次数依赖于秘密值,容易产生时间泄漏;③ 错误注入可能导致解密失败,而失败信息本身可能泄露密钥(CVE-2023-33204 等真实案例)。

1.4 课程目标与学习路径

核心原理:本课程旨在培养学员以下核心能力:

能力维度 具体目标 对应章节
算法理解 掌握 ML-KEM/ML-DSA 的数学原理与参数选择 第 2-5 章
硬件架构 设计 NTT 引擎、多项式乘法器、Keccak 核 第 6-10 章
侧信道防护 实现一阶/高阶掩码、隐藏技术、故障检测 第 11-15 章
FPGA 实现 完成 Xilinx/Intel FPGA 上的综合、布局布线、时序收敛 第 16-22 章
ASIC 设计 了解低功耗设计、物理实现、DFT 策略 第 23-26 章
工程实践 完成 PQC 硬件加速卡原型、安全启动方案、TLS 集成 第 27-30 章

操作流程:建议学员按以下路径学习:

  1. 基础阶段(第 1-5 章):建立量子威胁认知,掌握格密码数学基础(多项式环、NTT、LWE 问题)。
  2. 算法阶段(第 6-10 章):深入 ML-KEM/ML-DSA 的算法流程,理解关键运算模块。
  3. 安全阶段(第 11-15 章):学习侧信道攻击原理与防护技术,完成掩码设计实验。
  4. 实现阶段(第 16-22 章):在 FPGA 上完成完整 PQC 核的 RTL 设计、验证与优化。
  5. 进阶阶段(第 23-30 章):探索 ASIC 实现、硬件安全评估、真实应用集成。
🎯 学习建议:每章配套动手实验是关键。建议使用 Xilinx VCU118 或 Intel Agilex FPGA 开发板,配合 Vivado/Quartus 工具链。对于没有硬件条件的学员,可使用开源模拟器(如 Google 的 OpenROAD)进行数字前端设计验证。建议每周投入 8-10 小时,持续 16-20 周完成全部课程。

1.5 案例拆解:从 TLS 握手到 PQC 硬件加速

场景描述:某大型云服务提供商计划在 2025 年前将 TLS 1.3 迁移到混合 PQC 模式(X25519 + ML-KEM-768)。现有服务器使用软件实现,单次握手延迟增加 3.2ms,CPU 占用率提升 15%。为满足每秒 10 万次握手的高吞吐需求,需要设计专用的 PQC 硬件加速卡。

关键输入数据:

  • 目标吞吐量:100K TPS(Transactions Per Second)
  • 单次 ML-KEM-768 封装/解封装延迟要求:< 50μs
  • 功耗预算:PCIe 卡功耗 ≤ 75W
  • FPGA 资源:Xilinx Alveo U250(约 1.3M LUTs)

分析判断过程:

  1. 软件基线测试:单核 Intel Xeon 8380 上 ML-KEM-768 封装耗时 82μs,解封装 96μs。
  2. 硬件加速目标:FPGA 实现封装 < 10μs,解封装 < 15μs。
  3. 架构选择:采用 4 个并行 NTT 引擎 + 2 个 Keccak-512 核,流水线设计。
  4. 侧信道防护:对关键路径(多项式乘法、哈希)实施一阶布尔掩码,面积开销约 2.3 倍。

实际操作步骤:

// 顶层模块接口示例
module ml_kem_768_top (
    input  wire         clk,          // 200MHz
    input  wire         rst_n,
    input  wire [1:0]   mode,         // 00: KeyGen, 01: Encaps, 10: Decaps
    input  wire [255:0] seed,         // 随机种子
    input  wire [1183:0] pk_in,       // 公钥输入
    input  wire [1087:0] ct_in,       // 密文输入
    output wire [1183:0] pk_out,      // 公钥输出
    output wire [2399:0] sk_out,      // 私钥输出
    output wire [1087:0] ct_out,      // 密文输出
    output wire [255:0]  ss_out,      // 共享密钥
    output wire         done,
    output wire         error
);
    // NTT 引擎实例化 ×4
    ntt_engine #(.N(256), .Q(3329)) u_ntt_0 (.clk(clk), .rst_n(rst_n), ...);
    ntt_engine #(.N(256), .Q(3329)) u_ntt_1 (.clk(clk), .rst_n(rst_n), ...);
    // Keccak-512 实例化 ×2
    keccak_core #(.W(512)) u_keccak_0 (.clk(clk), .rst_n(rst_n), ...);
    // 掩码逻辑
    masking_unit u_mask (.data_in(ntt_out), .mask(mask_val), .data_out(masked_data), ...);
endmodule

结果对比:

指标 软件实现 FPGA 无防护 FPGA 带掩码
封装延迟 82μs 6.8μs 9.2μs
解封装延迟 96μs 8.1μs 11.5μs
吞吐量 12K TPS 147K TPS 108K TPS
LUT 消耗 — 412K 948K
功耗 — 38W 52W

风险与代价:带掩码方案 LUT 消耗增加 130%,功耗增加 37%,但仍满足 100K TPS 吞吐目标。主要风险在于时序收敛——掩码逻辑增加了关键路径延迟,需通过流水线插入(Pipeline Insertion)和布局优化解决。

复盘经验:

  • 硬件加速收益显著:延迟降低 8-10 倍,吞吐量提升 9 倍。
  • 侧信道防护成本可控:面积增加 2.3 倍,但可通过算法级优化(如共享子表达式)降低。
  • 建议采用“先无防护实现 → 验证功能 → 逐步添加防护”的迭代策略。

1.6 常见误区与总结复盘

误区一:认为 PQC 只是软件升级。实际上,大量嵌入式设备(智能卡、IoT 传感器、汽车 ECU)依赖硬件密码引擎。软件实现无法满足功耗、延迟和物理安全要求。

误区二:忽视侧信道防护。部分团队认为 PQC 算法“足够新”,攻击者尚未研究。事实上,2023 年已有多个针对 Kyber 的侧信道攻击发表(如 CHES 2023 的 DPA 攻击)。

误区三:盲目追求最高安全等级。ML-KEM-1024 比 ML-KEM-768 安全性更高,但硬件面积增加约 60%,功耗增加 45%。应根据应用场景选择合适等级。

误区四:忽略混合模式过渡。直接切换到纯 PQC 模式存在兼容性和信任风险。建议在过渡期采用 X25519 + ML-KEM 混合模式,确保向后兼容。

📌 本章要点总结:
  • 量子威胁是现实且紧迫的,Shor 算法将彻底瓦解 RSA/ECC。
  • NIST 已发布 ML-KEM、ML-DSA、SLH-DSA 标准,硬件实现是落地关键。
  • 硬件安全(侧信道、故障注入)与数学安全同等重要。
  • 本课程提供从算法到硅片的完整知识体系,强调动手实践。
  • 学习路径:理论 → 算法 → 硬件 → 安全 → 实践,每章配套案例与实验。