Homaei/PQ-TDAG

GitHub: Homaei/PQ-TDAG

PQ-TDAG 是一个面向工业控制系统的后量子认证框架,通过微链式 DAG 架构分摊 ML-DSA 签名开销,使 1000+ 传感器在 5G URLLC 链路上满足 50ms 控制环路延迟要求,解决了 PQC 直接部署时的吞吐量崩塌问题。

Stars: 0 | Forks: 0

# PQ-TDAG:通过微链式技术实现工业控制系统的高效后量子认证 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://python.org) [![NS-3 3.40](https://img.shields.io/badge/NS--3-3.40-green.svg)](https://nsnam.org) [![liboqs 0.15.0](https://img.shields.io/badge/liboqs-0.15.0-orange.svg)](https://github.com/open-quantum-safe/liboqs) ## 概述 工业控制系统 (ICS) 面临着迫在眉睫的量子威胁:其传统的加密方案 (ECDSA, RSA) 将被足够强大的量子计算机破解。由 NIST 标准化的后量子替代候选方案 —— ML-DSA-44 (FIPS 204) 和 SLH-DSA (FIPS 205) —— 其签名大小比 ECDSA-P256 大 20-300 倍,这使得在 ICS 延迟预算内的 5G URLLC 链路上进行直接部署变得不可行。 **PQ-TDAG** 通过微链式架构解决了这一冲突:传感器为每 `M` 个 *内部节点* 签署一个 *终端节点*,从而将签名开销分摊到 `M` 笔事务中。其结果是一个符合 10 Mbps 5G URLLC 信道预算,同时满足 T_max = 50 ms ICS 控制环路截止时间的后量子认证 DAG。 ### 核心实证结果 | 指标 | PQ-TDAG (M=5) | 直接部署 ML-DSA-44 | 提升 | |--------|--------------|-----------------|-------------| | 所需带宽 | **4.67 Mbps** | 20.16 Mbps | **降低 4.3 倍** | | 最大可行传感器数量 | **≥ 1000** | 25 | **增加 40 倍** | | 每笔事务能耗 | **1.82 µJ** | 8.79 µJ | **降低 4.8 倍** | | p_e=10% 时的 TBFR 投递率 | **100%** | — | 满足截止时间要求 | 两种方案均使用相同的 ML-DSA-44 密码学。所有性能提升均源自架构优化。 ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ ICS FIELD LAYER │ │ Sensor: Raspberry Pi 5 / NVIDIA Jetson Orin Nano │ │ Operation: SIGN (ML-DSA-44) → t_sign on ARM hardware │ └─────────────────┬───────────────────────────────────────────┘ │ 5G URLLC (B_max = 10 Mbps, T_max = 50 ms) ┌─────────────────▼───────────────────────────────────────────┐ │ EDGE GATEWAY LAYER │ │ Platform: Intel Core i9-14900KF / NVIDIA RTX 4070 │ │ Operation: VERIFY (batch) + DAG tip selection + TBFR │ └─────────────────────────────────────────────────────────────┘ ``` ## 仓库结构 ``` pq-tdag/ ├── src/ │ ├── step_2_gateway_benchmark.py # Gateway crypto timings (liboqs) │ ├── step_2b_fix_liboqs_015.py # liboqs 0.15.0 name-change fix │ ├── step_2c_rpi5_sensor_benchmark.py # Run on physical RPi5 │ ├── step_2d_jetson_sensor_benchmark.py # Run on physical Jetson │ ├── step_3_bandwidth_figures.py # Group A: bandwidth analysis │ ├── step_4_resource_figures.py # Group E: memory, energy, storage │ ├── step_5_security_figures.py # Group D: Byzantine, TBFR, attack │ ├── step_6_ns3_plot_results.py # Group B/C: plot NS-3 CSV output │ ├── step_7_gpu_benchmark.py # GPU batch verification │ ├── step_8_final_tables.py # LaTeX table generator │ └── gpu_batch_verify.cu # CUDA source (RTX 4070 / Jetson) ├── ns3/ │ ├── pqtdag_latency_cdf.cc # Latency CDF scenario │ ├── pqtdag_throughput.cc # Throughput vs M and N │ ├── pqtdag_erasure.cc # TBFR erasure resilience │ ├── CMakeLists.txt # NS-3 build file │ └── run_all.sh # Batch runner ├── scripts/ │ ├── install_gateway.sh # Setup for i9-14900KF gateway │ ├── install_sensor.sh # Setup for RPi5 / Jetson │ └── install_ns3.sh # NS-3.40 installation ├── plot_figures.py # Regenerate all 17 figures ├── requirements.txt ├── LICENSE └── results/ # Populated after running experiments ├── data/ ├── figures/ ├── tables/ └── logs/ ``` ## 硬件要求 ### 网关 (验证 + DAG) | 组件 | 最低要求 | 论文中使用 | |-----------|---------|---------------| | CPU | 任意 x86-64,4+ 核心 | Intel Core i9-14900KF | | RAM | 16 GB | 64 GB | | GPU (可选) | 任意 CUDA 8.x | NVIDIA RTX 4070 | | OS | Ubuntu 22.04+ | Ubuntu 24.04 LTS | ### 传感器平台 | 平台 | CPU | RAM | 角色 | |----------|-----|-----|------| | Raspberry Pi 5 | Cortex-A76, 2.4 GHz, 4 核 | 8 GB | ICS 传感器 (主要) | | NVIDIA Jetson Orin Nano | Cortex-A78AE, 1.5 GHz, 6 核 + GA10B GPU | 8 GB | ICS 传感器 / 边缘网关 | ## 安装说明 ### 选项 A — 网关 (i9-14900KF 或同等性能的 x86 设备) ``` git clone https://github.com/your-org/pq-tdag.git cd pq-tdag chmod +x scripts/install_gateway.sh bash scripts/install_gateway.sh source ~/pq_tdag_env/bin/activate ``` ### 选项 B — 传感器 (Raspberry Pi 5) ``` git clone https://github.com/your-org/pq-tdag.git cd pq-tdag chmod +x scripts/install_sensor.sh bash scripts/install_sensor.sh source ~/pq_tdag_env/bin/activate ``` ### 选项 C — 传感器 (Jetson Orin Nano) 与选项 B 相同。JetPack 6.x 包含 CUDA;GPU 基准测试将自动编译。 ## 运行实验 所有步骤相互独立;早期步骤的结果将作为后续步骤的输入。 ### 步骤 1 — 网关密码学基准测试 测量网关 CPU 上所有 8 种方案的实际签名和验证延迟。 ``` cd /home/hubert/pq-tdag source ~/pq_tdag_env/bin/activate python3 src/step_2_gateway_benchmark.py # 运行时间:3-8 分钟 # 输出:results/data/crypto_timings.json # results/logs/benchmark_report.txt ← 粘贴到论文 Section 5.1 ``` ### 步骤 2 — 修复 liboqs 0.15.0 命名 liboqs 0.15.0 重命名了方案标识符,并在其构建中移除了 XMSS-MT。 此步骤修补了 JSON 并为 XMSS-MT 注入了 RFC 8391 参考值。 ``` python3 src/step_2b_fix_liboqs_015.py # 运行时间:3-5 分钟(SLH-DSA-128s 的 benchmark 较慢) # 输出:results/data/crypto_timings.json (已更新,完成 8 种 schemes) ``` ### 步骤 3 — 传感器基准测试 (在物理硬件上运行) **在 Raspberry Pi 5 上:** ``` scp src/step_2c_rpi5_sensor_benchmark.py hubert@:~/ ssh hubert@ source ~/pq_tdag_env/bin/activate python3 step_2c_rpi5_sensor_benchmark.py # 输出:crypto_timings_rpi5.json — 复制回 results/data/ ``` **在 Jetson Orin Nano 上:** ``` scp src/step_2d_jetson_sensor_benchmark.py hubert@:~/ ssh hubert@ source ~/pq_tdag_env/bin/activate python3 step_2d_jetson_sensor_benchmark.py # 输出:crypto_timings_jetson.json — 复制回 results/data/ ``` ### 步骤 4 — 分析图表 (无需 NS-3) ``` python3 src/step_3_bandwidth_figures.py # fig_A1, A2, A3 python3 src/step_4_resource_figures.py # fig_E1, E2, E3 python3 src/step_5_security_figures.py # fig_D1, D2, D3 (~10 min Monte Carlo) ``` ### 步骤 5 — NS-3 网络仿真 首先安装 NS-3(一次性操作,约 25 分钟): ``` bash scripts/install_ns3.sh ``` 部署并运行: ``` mkdir -p /root/ns-allinone-3.40/ns-3.40/scratch/pq_tdag cp ns3/*.cc ns3/CMakeLists.txt /root/ns-allinone-3.40/ns-3.40/scratch/pq_tdag/ cd /root/ns-allinone-3.40/ns-3.40 ./ns3 build -j$(nproc) bash scratch/pq_tdag/run_all.sh cp results/*.csv /home/hubert/pq-tdag/results/data/ cd /home/hubert/pq-tdag python3 src/step_6_ns3_plot_results.py # fig_B1, B2, C1, C2, C3 ``` ### 步骤 6 — GPU 基准测试 (可选,RTX 4070 / Jetson) ``` python3 src/step_7_gpu_benchmark.py # 如果 CUDA 可用:自动编译并运行 gpu_batch_verify.cu # 否则:使用已验证的 RTX 4070 analytical model ``` ### 步骤 7 — 最终表格 ``` python3 src/step_8_final_tables.py # 输出:results/tables/table1_baselines.tex # results/tables/table2_security.tex ``` ### 重新生成所有图表 在收集所有数据之后: ``` python3 plot_figures.py # 全部 17 张图表已写入 results/figures/ # 编辑顶部的 STYLE dict 以更改字体、颜色、线宽 ``` ## 基线方案 共评估了八种方案。这些方案的选择是经过深思熟虑的。 | ID | 方案 | 标准 | σ (字节) | 科学作用 | |----|--------|----------|-------|-----------------| | pq_tdag | PQ-TDAG M=5 | ML-DSA-44 | 2420 | 本文提出的方法 | | naive_mldsa44 | 直接部署 ML-DSA-44 | FIPS 204 | 2420 | 隔离架构贡献 | | mldsa65 | ML-DSA-65 | FIPS 204 L3 | 3309 | 更高安全性的权衡 | | falcon512 | Falcon-512 | NIST 第 3 轮 | 655 | 最小的 PQC 签名 | | slhdsa128s | SLH-DSA-128s | FIPS 205 慢速 | 7856 | 无状态 —— 极慢 | | slhdsa128f | SLH-DSA-128f | FIPS 205 快速 | 17088 | 无状态 —— 带宽不可行 | | xmssmt | XMSS-MT | RFC 8391 | 4963 | 有状态 —— 理论上已证明不适用 | | ecdsa | ECDSA-P256 | FIPS 186-5 | 64 | 经典上限参考 | ## 核心结果 ### 实测结果 (i9-14900KF, liboqs 0.15.0, 500 次迭代) | 方案 | σ (字节) | t_sign (毫秒) | t_verify (毫秒) | B_req (Mbps) | |--------|-------|-------------|---------------|--------------| | **PQ-TDAG M=5** | 2420 | 0.044 ±0.027 | 0.016 ±0.001 | **4.67** | | 直接部署 ML-DSA-44 | 2420 | 0.043 ±0.025 | 0.016 ±0.001 | 20.16 | | ML-DSA-65 | 3309 | 0.070 ±0.039 | 0.025 ±0.001 | 27.27 | | Falcon-512 | 655 | 0.117 ±0.003 | 0.022 ±0.001 | 6.04 | | SLH-DSA-128s | 7856 | 284.21 ±2.11 | 0.286 ±0.006 | 63.65 | | SLH-DSA-128f | 17088 | 13.57 ±0.20 | 0.795 ±0.022 | 137.50 | | XMSS-MT [†] | 4963 | 12.40 ±0.85 | 1.180 ±0.042 | 40.50 | | ECDSA-P256 | 64 | 0.303 ±0.006 | 0.677 ±0.012 | 1.31 | [†] 文献参考值 (RFC 8391 + pqm4)。未包含在 liboqs 0.15.0 中。 ### NS-3 可扩展性 | 方案 | 最大可行 N | 崩溃点 | |--------|---------------|----------------| | **PQ-TDAG** | **≥ 1000** | 测试范围内未出现 | | 直接部署 ML-DSA-44 | 25 | N=25 | | Falcon-512 | 100 | N=100 | ## 故障排除 ## 复现性 — Google Colab 通过在预计算的实验数据上运行提供的 Colab notebook,无需安装 liboqs 或 NS-3 即可复现论文中的所有图表。 [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/your-org/pq-tdag/blob/main/PQ_TDAG_Colab.ipynb) **步骤:** 1. 在 Google Colab 中打开 `PQ_TDAG_Colab.ipynb` 2. 根据提示上传 `PQ-TDAG-main.zip` (单元格 1) 3. 运行所有单元格 —— 图表将保存到 `results/figures/` 4. 最后一个单元格会将所有 PDF 下载为一个 zip 压缩包 **生成的图表:** A1, A2, A3, A4, B1, B2, C1, C2, D1, D4, E2, sensitivity_tpipe **运行时间:** 约 30 秒 **无需 GPU** ## 引用 如果您使用了本代码或结果,请引用: ``` @article{pqtdag2025, title = {{PQ-TDAG}: Bandwidth-Efficient Post-Quantum Authentication for Industrial Control Systems via Micro-Chaining}, authors = {Homaei. Mohammadhossein}, journal = {IEEE Transactions on Industrial Informatics}, year = {2026} } ``` ## 许可证 MIT 许可证 —— 见 [LICENSE](LICENSE)。 ## 致谢 - [Open Quantum Safe / liboqs](https://github.com/open-quantum-safe/liboqs) — PQC 实现库 - [NS-3 网络模拟器](https://nsnam.org) — 网络层评估 - [pqm4](https://github.com/mupq/pqm4) — ARM 能耗模型参考值 - [pqax](https://github.com/mupq/pqax) — ARM Neon NTT 性能参考
标签:5G URLLC, CVE, DAG, FIPS 204, ICS, liboqs, ML-DSA, NS-3, NTLM Relay, PQC, Python, Vectored Exception Handling, 传感器网络, 低延迟, 信息物理系统, 后量子密码学, 实时系统, 工业控制系统, 带宽优化, 微链架构, 抗量子计算, 数字签名, 无后门, 智能制造, 有向无环图, 物联网安全, 确定性同步, 网络模拟, 能耗优化, 量子威胁防御