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, 准确率, 凭据扫描, 召回率, 合成数据, 威胁情报, 安全防御评估, 开发者工具, 数据分区, 数据科学, 数据科学实验, 数据隐私, 数据预处理, 机器学习, 机器学习研究, 模型基准, 模型训练, 模型评估, 混淆矩阵, 硕士论文原型, 精确率, 网络安全, 网络安全, 联邦学习, 联邦实验, 联邦平均, 联邦近端, 请求拦截, 资源验证, 逆向工具, 隐私保护, 隐私保护