shawmoonazad/RL-driven-Hybrid-PQC-TLS-Negotiation

GitHub: shawmoonazad/RL-driven-Hybrid-PQC-TLS-Negotiation

该项目利用离线强化学习在混合后量子 TLS 握手中实现密码策略的自适应选择,以在满足安全约束的前提下最小化握手延迟。

Stars: 1 | Forks: 0

# 用于混合 PQC-TLS 协议选择的离线 RL 这是一个将**离线强化学习**应用于混合后量子 TLS 握手中自适应密码策略选择的研究项目代码库。基于真实的握手测量数据训练了五种离线 RL 算法,并与基于规则的基线进行了评估对比。 ## 项目功能 在 TLS 握手阶段,智能体会根据观测到的网络和密码学时间特征,从 **12 种密码学配置**(四种策略模式 × 三种 NIST 安全级别)中选择一种。目标是在遵守安全约束(无低于最低级别的纯经典回退)的前提下最小化延迟。 **策略模式:** `REQUIRE_HYBRID` · `PQC_ONLY` · `ALLOW_FALLBACK` · `CLASSICAL_ONLY` **NIST 安全级别:** 1 · 3 · 5 **状态空间:** 15 个特征(RTT、密钥生成/封装/验证时间、传输开销) ## 算法 | 算法 | 描述 | |-----------|-------------| | **BC** | Behavioral Cloning(行为克隆)— 监督模仿基线 | | **CQL** | Conservative Q-Learning(保守 Q 学习)(Kumar et al., 2020) | | **IQL** | Implicit Q-Learning(隐式 Q 学习)(Kostrikov et al., 2021) | | **BCQ** | Batch-Constrained Q-Learning(批量约束 Q 学习)(Fujimoto et al., 2019) | | **AWAC** | Advantage Weighted Actor-Critic(优势加权 Actor-Critic)(Nair et al., 2020) | 所有模型均使用共享的 MLP 主干(2 × 256 隐藏单元,ReLU),并在离散的 12 动作空间上运行。 ## 项目结构 ``` hybrid_pqc_tls/ # Main package ├── rl_config.py # Action space, state space, reward config, hyperparameters ├── rl_models.py # PyTorch implementations of all 5 algorithms ├── rl_train.py # Training pipeline ├── rl_offline_dataset.py # Base dataset builder ├── rl_dataset_improved.py # Improved dataset (epsilon=0.3) ├── rl_dataset_improved_v2.py # Diverse dataset (epsilon=0.6, min 2% per action) ├── rl_evaluate.py # Evaluation v1 ├── rl_evaluate_v2.py # Evaluation v2 — RL vs Rule-Based comparison ├── rl_inference.py # Single-model inference ├── rl_inference_multi.py # Multi-model inference (deployment) ├── rl_env.py # Gymnasium-compatible environment wrapper ├── generate_paper_figures.py # Publication figure generation │ ├── config.py # TLS/crypto configuration ├── policy.py # Cryptographic policy logic ├── primitives.py # Crypto primitives ├── protocol.py # TLS protocol simulation └── session.py # Session management run_rl_pipeline.py # Main pipeline entry point (place in project root) run_pipeline_v2.py # Pipeline v2 (diverse dataset variant) run_action_masking_eval.py # Inference-time action masking experiment ``` ## 环境设置 ``` pip install torch numpy pandas matplotlib scikit-learn gymnasium cryptography stable-baselines3 ``` 推荐使用 Python 3.9+ 版本。 ## 用法 ### 运行完整流水线 ``` # 默认(100 epochs) python run_rl_pipeline.py # 自定义选项 python run_rl_pipeline.py --data-path path/to/handshake_raw.csv --epochs 200 # 如果已完成则跳过步骤 python run_rl_pipeline.py --skip-dataset # reuse existing dataset python run_rl_pipeline.py --skip-training # reuse existing models ``` ### 运行多样化数据集变体 ``` python run_pipeline_v2.py ``` ### 运行动作掩码评估(无需重新训练) ``` python run_action_masking_eval.py ``` ## 数据 流水线预期的原始 TLS 握手测量数据位于: ``` results/eval_grid/handshake_raw.csv ``` 数据集构建器会对约 10,000 次转换进行采样,支持配置探索 epsilon 和最小动作覆盖率,随后将结果保存至: ``` results/rl/offline_rl_dataset_v2.npz ``` ## 输出结果 运行完成后,结果将写入: ``` results/rl/ ├── models/ # Trained model checkpoints (.pt) ├── evaluation/ # CSV comparison tables │ ├── action_masking/ # Masked vs unmasked results │ └── latex/ # LaTeX-ready tables └── figures/ # PNG plots ``` ## 关键超参数 | 参数 | 默认值 | |-----------|---------| | 隐藏层维度 | 256 × 256 | | Batch size | 256 | | Learning rate | 3e-4 | | 折扣因子 γ | 0.99 | | CQL α | 1.0 | | IQL τ (expectile) | 0.7 | | BCQ threshold | 0.3 | | AWAC λ | 1.0 | | 最低可接受安全级别 | 3 | ## 奖励函数 奖励依赖于 RTT,并编码了安全优先级层级: ``` R = base_reward − α(RTT) × latency # RTT-scaled latency penalty − β × wire_overhead_KB # Wire cost penalty + γ(RTT) × security_level # RTT-scaled security bonus + mode_bonus # REQUIRE_HYBRID: +3.0, PQC_ONLY: +1.5, # ALLOW_FALLBACK: −1.0, CLASSICAL_ONLY: −15.0 − violation_penalty # −5.0 if level < 3 ```
标签:Apex, PyTorch, TLS协议, 凭据扫描, 后量子密码学, 密码学, 手动系统调用, 机器学习, 离线强化学习, 逆向工具