JaimeRosique/Federated-Learning-for-Threat-Intelligence
GitHub: JaimeRosique/Federated-Learning-for-Threat-Intelligence
联邦学习威胁情报原型,用于在不交换原始数据的情况下训练入侵检测模型。
Stars: 0 | Forks: 0
# 联邦学习威胁情报
使用联邦学习进行隐私保护网络安全威胁情报(CTI)的可复现硕士论文原型。该项目模拟了一个中心聚合器和三个孤立的组织在CIC-IDS2017风格的表格流量数据上训练入侵检测模型,而不交换原始记录。
该存储库是一个研究原型,不是一个生产级安全运营中心(SOC)平台。它旨在使方法易于检查,重新运行论文。
## 实现内容
- CIC-IDS2017风格的预处理:CSV加载、数值特征选择、NaN/无穷大清理、重复项删除、标签编码、训练/测试分割,以及仅在训练数据上拟合的缩放。
- 当CIC-IDS2017 CSV文件不可用时,用于烟雾测试的确定性合成回退数据。
- 为三个模拟客户端的非独立同分布(Non-IID)标签倾斜分区。
- 用于表格流量向量的PyTorch 1D-CNN模型,以及一个MLP基线类别。
- 集中和孤立的本地区分基线。
- FedAvg和FedProx联邦实验。
- Flower服务器和客户端角色用于Docker Compose编排。
- 在`results/`下保存的指标和图形:准确率、精确率、召回率、F1分数、ROC-AUC(当有效时)、混淆矩阵和训练曲线。
## 设置
```
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
默认配置使用合成数据,因此原型可以在不重新分配CIC-IDS2017的情况下运行。要使用真实CSV文件,请设置`data.synthetic: false`并在`configs/*.yaml`中列出本地CIC-IDS2017流量CSV路径。
原始数据集必须保留在Git之外,通常在`data/raw/`下。
## 运行实验
准备处理后的数据和标签倾斜的客户端分区:
```
bash scripts/prepare_data.sh
```
运行集中式基线:
```
bash scripts/run_centralized.sh
```
运行孤立客户端基线:
```
bash scripts/run_isolated.sh
```
运行本地可复现的联邦实验,该实验保存完整的指标和图形:
```
bash scripts/run_fedavg.sh
bash scripts/run_fedprox.sh
```
输出写入:
- `results/metrics/*.json`
- `results/metrics/baseline_summary.csv`
- `results/figures/*_confusion_matrix.png`
- `results/figures/*_training_curve.png`
## Flower Docker Compose测试平台
首先准备数据,以便每个客户端都有一个挂载的分区:
```
bash scripts/prepare_data.sh configs/fedavg.yaml
docker compose up --build
```
Compose文件启动:
- `server`:中心Flower聚合器。
- `client_0`、`client_1`、`client_2`:孤立客户端,仅从`data/processed/client_/`读取其本地分区。
Docker测试平台演示了Flower gRPC编排。对于论文准备好的指标和图表,请使用`scripts/run_fedavg.sh`和`scripts/run_fedprox.sh`,它们运行具有相同FedAvg/FedProx更新逻辑的确定性本地联邦循环。
## 配置
实验设置位于`configs/`:
- `centralized.yaml`
- `fedavg.yaml`
- `fedprox.yaml`
重要字段:
- `seed`:确定性随机种子。
- `data.processed_dir`:生成的训练/测试和客户端分区。
- `partitioning.dominant_fraction`:每个客户端的标签倾斜强度。
- `training.epochs`:集中和孤立轮数。
- `training.local_epochs`:每轮本地联邦轮数。
- `federated.num_clients`:默认为3。
- `federated.rounds`:联邦通信轮数。
- `federated.proximal_mu`:FedProx近端系数。
## 最终结果摘要
当前以论文为导向的结果摘要存储在:
```
results/FINAL_RESULTS.md
```
它总结了完成的CIC-IDS2017实验,包括集中式、孤立、FedAvg和FedProx结果。最重要的解释是,准确率很高,但在类别不平衡下具有误导性;宏F1和每类报告更有信息量。
对于最终的原型报告,推荐的证据集已经足够。除非发现明显的缺陷,否则额外的模型工作应被视为未来的工作。
使用组织名称(如医院、银行或工厂)仅作为模拟标签。不要将它们作为真实数据提供者展示。
## 验证
```
python -m pytest
python -m compileall src
docker compose config
```
## 隐私和研究笔记
原始流量数据保留在每个模拟客户端的本地。联邦运行交换模型参数,而不是原始日志。这减少了中心数据暴露,但并非绝对隐私:在某些攻击下,模型更新仍然可能泄露信息,除非添加并验证了额外的隐私增强技术,如差分隐私或安全聚合。
标签:Apex, CIC-IDS2017, Docker, F1 分数, Flower, PyTorch, ROC-AUC, 准确率, 凭据扫描, 召回率, 合成数据, 威胁情报, 安全防御评估, 开发者工具, 数据分区, 数据科学, 数据科学实验, 数据隐私, 数据预处理, 机器学习, 机器学习研究, 模型基准, 模型训练, 模型评估, 混淆矩阵, 硕士论文原型, 精确率, 网络安全, 网络安全, 联邦学习, 联邦实验, 联邦平均, 联邦近端, 请求拦截, 资源验证, 逆向工具, 隐私保护, 隐私保护