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` 中。将其视为对抗性正确性的参考,以及必须将回归编码为测试的场所。 ### 🛡️ 数学证明的安全性(“世界级”) ![Uncrashable](https://img.shields.io/badge/Formal_Verification-Kani-success) ![Fuzzing](https://img.shields.io/badge/Fuzzing-LibFuzzer-coverage) - **形式化验证 (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, 关键基础设施, 内存安全, 加密算法, 可视化界面, 后量子密码学, 安全合规, 客户端加密, 密码学, 密钥封装机制, 嵌入式系统, 工业物联网, 形式化验证, 手动系统调用, 数字签名, 混合加密, 物理不可克隆功能, 硬件加速, 硬件安全, 网络代理, 网络安全, 网络流量审计, 蓝队防御, 裸机编程, 隐私保护, 零知识化