adityasnipnet/Post_Quantum_Encryption_Toolkit

GitHub: adityasnipnet/Post_Quantum_Encryption_Toolkit

一个基于 Python 的后量子加密工具包,实现 NIST 标准化算法并提供基准测试与混合加密演示,解决经典公钥算法在量子计算下的破解风险。

Stars: 0 | Forks: 0

# 后量子加密工具包 一个完整的 Python 后量子密码学工具包,提供 NIST 标准化算法、基准测试以及混合加密演示应用。**这是所有加密的未来。** ## 是什么与为什么 经典加密(RSA、ECDH、ECDSA)可被足够大的量子计算机上的 Shor 算法破解。NIST 于 2024 年 finalized 了其后量子标准。本工具包实现了这些标准并进行基准测试。 | 经典算法 | 后量子替代方案 | 基础 | |----------|----------------|------| | RSA / ECDH | CRYSTALS-Kyber | 模块 LWE | | ECDSA / RSA-PSS | CRYSTALS-Dilithium | 模块 LWE + SIS | | — | SPHINCS+ | 哈希函数 | ## 项目结构 ``` pqc_toolkit/ ├── main.py # CLI entry point ├── kyber_kem.py # CRYSTALS-Kyber Key Encapsulation Mechanism ├── dilithium_sig.py # CRYSTALS-Dilithium digital signatures ├── classical_baseline.py# RSA and ECDH/ECDSA for comparison ├── hybrid_encrypt.py # Kyber + AES-256-GCM file encryption ├── benchmark.py # Full performance comparison suite ├── requirements.txt └── tests/ └── test_pqc.py # Pytest unit tests (38 tests) ``` ## 安装 ``` # 安装 liboqs 系统依赖 (macOS) brew install liboqs # 安装 liboqs 系统依赖 (Ubuntu/Debian) sudo apt install -y liboqs-dev # 安装 Python 依赖 pip install -r requirements.txt ``` ## 快速开始 ``` # 运行所有演示 (Kyber, Dilithium, 混合加密) python main.py demo # 生成 Kyber-768 密钥对 python main.py keygen --level 768 --out mykey # 加密文件给收件人 python main.py encrypt secret.txt --pubkey mykey.pub # 解密 python main.py decrypt secret.txt.pqe --privkey mykey.key # 签名文件 python main.py sign document.pdf --privkey dilithium.key # 验证签名 python main.py verify document.pdf --pubkey dilithium.pub --sig document.pdf.sig # 运行完整基准测试 (PQC vs RSA vs ECC, 200 次迭代) python main.py benchmark --runs 200 --chart ``` ## 基准测试结果(Apple M2,100 次迭代) ### 密钥交换 / KEM | 算法 | 量子安全 | 公钥 | 私钥 | 密文 | 密钥生成 | 封装 | 解封装 | |------|----------|------|------|------|----------|------|--------| | ECDH-P256 | 否 | 91 B | 121 B | 91 B | 0.08 ms | 0.07 ms | 0.07 ms | | ECDH-P384 | 否 | 120 B | 167 B | 120 B | 0.12 ms | 0.10 ms | 0.10 ms | | RSA-2048 | 否 | 294 B | 1218 B | 256 B | 38 ms | 0.08 ms | 1.1 ms | | RSA-4096 | 否 | 550 B | 2374 B | 512 B | 280 ms | 0.3 ms | 8.5 ms | | **Kyber512** | **是** | **800 B** | **1632 B** | **768 B** | **0.04 ms** | **0.05 ms** | **0.05 ms** | | **Kyber768** | **是** | **1184 B** | **2400 B** | **1088 B** | **0.06 ms** | **0.07 ms** | **0.06 ms** | | **Kyber1024** | **是** | **1568 B** | **3168 B** | **1568 B** | **0.09 ms** | **0.10 ms** | **0.09 ms** | **关键洞察:** Kyber768 比 ECDH-P256 更快,且比 RSA-2048 快 500 倍以上,密钥虽更大但仍非常紧凑。 ### 数字签名 | 算法 | 量子安全 | 公钥 | 私钥 | 签名 | 密钥生成 | 签名 | 验证 | |------|----------|------|------|------|----------|------|--------| | ECDSA-P256 | 否 | 91 B | 121 B | ~71 B | 0.08 ms | 0.07 ms | 0.12 ms | | RSA-PSS-2048 | 否 | 294 B | 1218 B | 256 B | 38 ms | 1.1 ms | 0.08 ms | | **Dilithium2** | **是** | **1312 B** | **2528 B** | **2420 B** | **0.05 ms** | **0.07 ms** | **0.04 ms** | | **Dilithium3** | **是** | **1952 B** | **4000 B** | **3293 B** | **0.07 ms** | **0.10 ms** | **0.06 ms** | | **Dilithium5** | **是** | **2592 B** | **4864 B** | **4595 B** | **0.10 ms** | **0.15 ms** | **0.09 ms** | **关键洞察:** Dilithium 的密钥生成速度比 ECDSA 快,且远快于 RSA-PSS。签名体积更大(约 3 KB 对比 ECDSA 的 71 字节)—这是主要的权衡。 ## 混合加密包格式(`.pqe`) ``` [4B] Magic: "PQE\x01" [1B] Version [2B] Algorithm ID (Kyber512=1, Kyber768=2, Kyber1024=3) [4B] Kyber ciphertext length [N B] Kyber ciphertext ← the "lockbox" for the AES key [12B] AES-GCM nonce [4B] Plaintext length [M B] AES-256-GCM ciphertext + 16B auth tag ``` Kyber 密文允许接收者派生 AES 密钥。只有持有私钥的一方可以执行此操作。AES-GCM 认证标签可检测任何篡改。 ## 安全特性 - **IND-CCA2 安全:** Kyber768 在自适应选择密文攻击下是安全的。 - **EU-CMA 安全:** Dilithium3 在选择消息攻击下具有可证明安全性。 - **混合设计:** 即使 Kyber 在经典意义上被破解,AES-256-GCM 层仍然安全。 - **认证:** AES-GCM 提供内置认证 — 任何对加密有效载荷的篡改都会被检测到。 ## 下一步要构建的 - 使用 Kyber + Dilithium 实现的 TLS 1.3 风格握手模拟器 - 加密剪贴板内容的浏览器扩展 - 带有 PQC 密钥交换的安全消息应用 - 与 mTLS 集成的微服务 - 硬件安全模块(HSM)模拟器 ## 参考 - [NIST 后量子标准(2024)](https://csrc.nist.gov/projects/post-quantum-cryptography) - [CRYSTALS-Kyber 规范](https://pq-crystals.org/kyber/) - [CRYSTALS-Dilithium 规范](https://pq-crystals.org/dilithium/) - [Open Quantum Safe 项目](https://openquantumsafe.org/) - [liboqs-python](https://github.com/open-quantum-safe/liboqs-python)
标签:AES-256-GCM, benchmark, CRYSTALS-Dilithium, CRYSTALS-Kyber, CVE, liboqs, NIST, PQC, Python, SPHINCS+, 二进制发布, 加密工具包, 后量子密码, 密钥封装, 密钥生成, 开源工具, 性能评测, 数字签名, 文件加密, 无后门, 混合加密, 签名验证, 蓝队防御, 逆向工具, 量子安全, 量子计算安全