doomhammerhell/pqc-iiot
GitHub: doomhammerhell/pqc-iiot
专为工业物联网设计的轻量级 Rust 后量子密码学库,提供抗量子攻击的加密与签名能力以满足严苛的安全合规要求。
Stars: 3 | Forks: 0
# PQC-IIoT
一个用于工业物联网 (IIoT) 系统中后量子密码学的 Rust crate。
**[📚 完整文档 (NIST/学术标准)](https://doomhammerhell.github.io/pqc-iiot/)**
## 功能特性
- 后量子密码算法:
- 混合 KEM (Kyber-1024 + X25519)
- 密钥封装机制:
- Kyber
- HQC
- 数字签名:
- Falcon
- **Galactic Apex 安全性 (V4)**:
- **PUF 标识**:源自硅指纹的根密钥(硬件固有)。
- **数学证明**:通过基于属性的验证来验证 Double Ratchet。
- 支持 `no_std` 和 `heapless`
- 硬件加速支持
- 性能监控和指标
- 密钥轮换和管理
- 安全级别管理
## 安全与合规特性
为关键基础设施中的 **FIPS 140-3** 和 **IEC 62443** 合规性而设计:
### 安全契约
不变量级别的安全契约(威胁模型假设、信任边界、闭锁故障门控)位于 `SECURITY_INVARIANTS.md` 中。将其视为对抗性正确性的参考,以及必须将回归编码为测试的场所。
### 🛡️ 数学证明的安全性(“世界级”)


- **形式化验证 (Kani)**:核心启动逻辑 (`PartitionManager`) 经过模型检查,在数学上被证明不存在 Panic 和无效的状态转换。
- **持续模糊测试**:`fuzz_target` crate 持续向密码解析器输入大量随机数据,以保证对格式错误数据的鲁棒性。
### 合规特性
- **开机自检 (POST)**:在启动时自动验证密码完整性 (KAT/PCT)。
- **完整性检查**:使用 SHA-256 校验和验证库的完整性。
- **安全内存**:使用 `Zeroize` 自动将敏感密钥材料归零。
- **审计日志**:用于 SIEM 集成的结构化安全事件。
- **硬件抽象**:已准备好通过 `SecurityProvider` trait 集成 TPM 2.0 / HSM。
## 密码配置方案
该 crate 提供了预定义的 KEM 和签名算法组合,并针对不同的 IIoT 场景进行了优化:
### ProfileKyberFalcon
- **KEM**:Kyber (NIST Level 3)
- **签名**:Falcon (NIST Level 5)
- **应用场景**:需要强签名的高安全性应用
- **性能**:在 KEM 和签名操作之间保持平衡
- **内存使用**:中等
### ProfileSaberDilithium
- **KEM**:SABER (NIST Level 3)
- **签名**:Dilithium (NIST Level 3)
- **应用场景**:需要标准化算法的应用
- **性能**:针对一致的性能进行了优化
- **内存使用**:中等到较高
### ProfileKyberDilithium
- **KEM**:Kyber (NIST Level 3)
- **签名**:Dilithium (NIST Level 3)
- **应用场景**:通用 IIoT 应用
- **性能**:在所有操作中保持平衡
- **内存使用**:中等
## 选择配置方案
根据您的要求选择一个配置方案:
1. **安全级别**:考虑您的应用所需的 NIST 安全级别
2. **性能**:评估您的设备的计算需求
3. **内存**:检查目标设备上的可用内存
4. **标准化**:考虑是否需要标准化算法
5. **应用场景**:将配置方案与您特定的 IIoT 场景相匹配
## 用法
### 基本用法
```
use pqc_iiot::crypto::profile::{CryptoProfileTrait, ProfileKyberFalcon};
// Create a profile instance
let profile = ProfileKyberFalcon::new();
// Generate key pair
let (pk, sk) = profile.generate_keypair().unwrap();
// Encapsulate a shared secret
let (ct, ss1) = profile.encapsulate(&pk).unwrap();
// Decapsulate the shared secret
let ss2 = profile.decapsulate(&sk, &ct).unwrap();
assert_eq!(ss1, ss2);
// Sign a message
let msg = b"Hello, IIoT!";
let sig = profile.sign(&sk, msg).unwrap();
// Verify the signature
let valid = profile.verify(&pk, msg, &sig).unwrap();
assert!(valid);
```
### 性能监控
```
use pqc_iiot::crypto::traits::{Metrics, PqcKEM, PqcSignature};
use pqc_iiot::{Falcon, Kyber};
use std::time::Duration;
// Configure key rotation on the concrete primitives (profiles are composition layers).
let kyber = Kyber::new().with_key_rotation_interval(Duration::from_secs(3600));
let falcon = Falcon::new();
// Perform operations
let (pk, _sk) = kyber.generate_keypair().unwrap();
let (_ct, _ss) = kyber.encapsulate(&pk).unwrap();
let (sig_pk, sig_sk) = falcon.generate_keypair().unwrap();
let msg = b"Hello, IIoT!";
let sig = falcon.sign(&sig_sk, msg).unwrap();
assert!(falcon.verify(&sig_pk, msg, &sig).unwrap());
// Get performance metrics
let _ = kyber.metrics();
let _ = falcon.metrics();
```
## 配置
配置方案可以通过以下方式配置:
1. **构建时配置**:
- `Cargo.toml` 中的 feature flags
- 环境变量
2. **运行时配置**:
- 配置方案选择
- 安全级别调整
- 密钥轮换间隔
## 安全注意事项
- 根据您的威胁模型使用适当的安全级别
- 实施适当的密钥轮换策略
- 监控性能指标以发现异常
- 验证所有密码操作
- 尽可能使用恒定时间操作
## 性能
每种配置方案都有不同的性能特征:
| 配置方案 | 密钥生成 | 封装 | 解封装 | 签名 | 验证 |
|---------|---------------|---------------|---------------|---------|--------------|
| Kyber+Falcon | 快 | 快 | 快 | 中等 | 快 |
| SABER+Dilithium | 中等 | 中等 | 中等 | 快 | 中等 |
| Kyber+Dilithium | 快 | 快 | 快 | 快 | 中等 |
## 内存使用
大致的内存需求:
| 配置方案 | 静态内存 | 动态内存 (峰值) |
|---------|--------------|----------------------|
| Kyber+Falcon | ~10KB | ~50KB |
| SABER+Dilithium | ~15KB | ~60KB |
| Kyber+Dilithium | ~12KB | ~55KB |
## 许可证
本项目基于 MIT 许可证授权。
## 贡献
请阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 以详细了解我们的行为准则以及提交 Pull Request 的流程。
标签:CVE, Falcon, FIPS 140-3, Fuzzing, Heapless, HQC, IEC 62443, IIoT, Kani, KEM, Kyber, no_std, PQC, PUF, Rust, X25519, 关键基础设施, 内存安全, 加密算法, 可视化界面, 后量子密码学, 安全合规, 客户端加密, 密码学, 密钥封装机制, 嵌入式系统, 工业物联网, 形式化验证, 手动系统调用, 数字签名, 混合加密, 物理不可克隆功能, 硬件加速, 硬件安全, 网络代理, 网络安全, 网络流量审计, 蓝队防御, 裸机编程, 隐私保护, 零知识化