Homaei/PQ-TDAG
GitHub: Homaei/PQ-TDAG
PQ-TDAG 是一个面向工业控制系统的后量子认证框架,通过微链式 DAG 架构分摊 ML-DSA 签名开销,使 1000+ 传感器在 5G URLLC 链路上满足 50ms 控制环路延迟要求,解决了 PQC 直接部署时的吞吐量崩塌问题。
Stars: 0 | Forks: 0
# PQ-TDAG:通过微链式技术实现工业控制系统的高效后量子认证
[](LICENSE)
[](https://python.org)
[](https://nsnam.org)
[](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 即可复现论文中的所有图表。
[](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, 传感器网络, 低延迟, 信息物理系统, 后量子密码学, 实时系统, 工业控制系统, 带宽优化, 微链架构, 抗量子计算, 数字签名, 无后门, 智能制造, 有向无环图, 物联网安全, 确定性同步, 网络模拟, 能耗优化, 量子威胁防御