HEETKOTADIA/QuantumShield
GitHub: HEETKOTADIA/QuantumShield
QuantumShield 是一个使用 KEMTLS 替代传统 TLS 的后量子安全平台,专注于保护 OpenID Connect 通信,以应对量子计算对加密安全的威胁。
Stars: 0 | Forks: 0
# QuantumShield:使用KEMTLS的后量子安全OpenID Connect
## 概述
QuantumShield 实现了一个**后量子OpenID Connect**系统,其中所有TLS通信均由**KEMTLS**(基于密钥封装机制的TLS)替代。它遵循“无签名TLS”架构(Wiggers 2020),其中认证通过KEM本身**隐式**完成。
**握手过程中不使用任何签名。** 所有密钥交换均使用 ML-KEM-768 (Kyber768, NIST FIPS 203)。认证通过Finished MAC证明——只有持有长期 ML-KEM-768 密钥的服务器才能解密客户端的密文。ML-DSA-65 (Dilithium3, NIST FIPS 204) 严格用于应用层的 OIDC ID 令牌。
## 架构
```
+--------------------+ +--------------------+
| OIDC Client | | OIDC Provider |
| (Browser/App) | | (Flask Server) |
| | | |
| Login Form ------>| KEMTLS | /oidc/authorize |
| Auth Code <------| Channel | /oidc/token |
| ID Token <------| (KEM) | /oidc/userinfo |
| Dashboard <------| | /oidc/jwks |
+--------------------+ +--------------------+
| |
| ML-KEM-768 Handshake |
| (Implicit Auth - No Sig) |
| AES-256-GCM Channel |
| SHA3-256 Transcript Hash |
+-------------------------------+
```
### 性能 (IITK 2026 展示结果)
以下结果是在 IITK 2026 开发者硬件 (x86-64) 上使用 `metrics/benchmark.py` 记录的。
| 指标 | PQ-TLS (参考) | **KEMTLS (优化后)** | 经典 TLS (RSA-2048) |
|---|---|---|---|
| **握手时延** | ~1.38 毫秒 | **~1.08 毫秒** | ~0.92 毫秒 |
| **性能提升** | — | **快约 21.6%** | **PQ 安全基线** |
| **消息大小** | ~10.8 KB | **~7.5 KB** | ~1.4 KB |
| **PQ JWT 生成** | ~0.58 毫秒 | **~0.58 毫秒** | ~0.76 毫秒 (RSA) |
## 项目结构
```
QuantumShield/
├── web_demo/ # Interactive Dashboard & OIDC Proxy
│ ├── server.py # Flask app: Dashboard (9000) & API
│ ├── pq_crypto_real.py # Real PQ Handshake simulation engine
│ ├── static/ # CSS + JS (particles.js, dashboard.js)
│ └── templates/ # HTML templates (comparison.html, dashboard.html)
├── kemtls/ # Core Protocol Implementation
│ ├── handshake.py # Strictly Signature-less KEMTLS logic
│ └── channel.py # AES-256-GCM Secure Channel
├── kemtls_server_tcp.py # Hardened TCP KEMTLS Server (Implicit Auth)
├── kemtls_client_tcp.py # Hardened TCP KEMTLS Client
├── kemtls_http_adapter.py # HTTP-to-KEMTLS translation layer
├── metrics/ # Benchmarking & Performance
│ └── benchmark.py # Real-world cryptographic benchmark script
└── scripts/ # Utility scripts & flow demos
```
## 使用的算法
| 用途 | 算法 | NIST 标准 | 安全等级 |
|---|---|---|---|
| 密钥封装 | ML-KEM-768 (Kyber768) | FIPS 203 | 3 级 |
| 数字签名 (JWT) | ML-DSA-65 (Dilithium3) | FIPS 204 | 3 级 |
| 对称加密 | AES-256-GCM | FIPS 197 | 256 位 |
| 转录哈希 | SHA3-256 | FIPS 202 | 256 位 |
**密码学库:** 通过 `liboqs-python` 使用的 [liboqs](https://github.com/open-quantum-safe/liboqs) (Open Quantum Safe)。
## 基于 KEMTLS 的 OIDC 流程
1. **发现:** 客户端从 `.well-known/openid-configuration` 获取 KEM 算法 (ML-KEM-768)。
2. **KEMTLS 握手:** 通过 ML-KEM-768 建立共享密钥,并实现**隐式认证**。基准测试结果(**约 1.08 毫秒**)反映了高安全性的参考流程。
3. **授权:** OAuth 2.0 流程在建立的 KEMTLS 通道(AES-256-GCM)上进行。
4. **令牌签发:** ID 令牌使用 **ML-DSA-65** (Dilithium3) 签名,以进行独立验证。
## 设计决策
1. **显式 vs 隐式认证:** 项目核心严格采用无签名方式以获得最大速度。基准测试(**约 1.08 毫秒**)包含了服务器的长期身份验证。
2. **双向绑定:** 我们实现了 `SERVER_FINISHED` 和 `CLIENT_FINISHED` MAC(Wiggers §3.2),以确保紧密的通道绑定并防止会话劫持。
3. **协议规模:** 通过最小化传输层中的数字签名,握手消息大小减少到 **7.5 KB**(相比完整 PQ-TLS 的约 10.8 KB)。
## 参考文献
1. P. Schwabe, D. Stebila, T. Wiggers, "KEMTLS: Building TLS with Key Encapsulation Mechanisms," *IACR Cryptology ePrint Archive*, Report 2020/534, 2020.
2. F. Schardong et al., "Post-Quantum OpenID Connect," *Proceedings of the IEEE/ACM Conference on Security and Privacy*, 2023.
3. NIST FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard (ML-KEM)
4. NIST FIPS 204: Module-Lattice-Based Digital Signature Standard (ML-DSA)
标签:AES-256-GCM, Dilithium3, Flask, HNDL攻击防护, KEMTLS, Kyber768, ML-DSA, ML-KEM, OpenID Connect, Post-Quantum TLS, QuantumShield, SHA3-256, TLS, 加密认证, 后量子安全, 后量子密码学, 安全密钥交换, 安全通信, 实时协议比较, 密码学, 手动系统调用, 无签名认证, 网络安全, 逆向工具, 通信协议, 量子计算抵抗, 防御工具, 隐式认证, 隐私保护