digitalinnovator/ai-robust-iot-ids
GitHub: digitalinnovator/ai-robust-iot-ids
系统评估物联网入侵检测系统中机器学习模型面对对抗攻击的鲁棒性,并提供多种防御方案的实验框架。
Stars: 0 | Forks: 0
# 基于AI的物联网入侵检测系统与对抗鲁棒性测试
**作者:** Amar Sohail — [AllysAI](https://allysai.com) 首席技术官 (CTO),计算机科学硕士,PLOS ONE (Q1) 物联网/RPL安全与分布式系统方向已发表研究员。
## 动机
物联网网络日益成为复杂网络攻击的目标。基于机器学习的入侵检测系统 (IDS) 已成为最先进的防御手段,在基准数据集上实现了高准确率。然而,**对抗性机器学习** 暴露了一个关键漏洞:经过精心设计的输入扰动能够以极高的成功率逃避检测,同时保持难以被察觉。
本项目系统地研究了在多种攻击策略和防御机制下,干净数据准确率与对抗数据准确率之间的**鲁棒性差距**。目标是在对抗条件下量化基于机器学习的 IDS 性能下降程度,并评估哪些防御措施能提供实质性的鲁棒性提升。
## 架构
```
+------------------+
| NSL-KDD Data |
| (or Synthetic) |
+--------+---------+
|
+--------v---------+
| Preprocessing |
| - One-hot encode|
| - Standardize |
+--------+---------+
|
+---------------+---------------+
| | |
+-------v------+ +-----v------+ +------v-------+
| Random Forest| | Deep NN | | Autoencoder |
| (sklearn) | | (PyTorch) | | (PyTorch) |
| Baseline | | 4-layer | | Anomaly Det. |
+--------------+ +-----+------+ +--------------+
|
+---------------+---------------+
| | |
+------v-----+ +------v-----+ +-------v------+
| FGSM | | PGD | | C&W L2 |
| single-step| | iterative | | optimization |
+------+-----+ +------+-----+ +-------+------+
| | |
+-------+-------+-------+-------+
| |
+-------v------+ +------v--------+
| Adv.Training | | Input Transf. |
| (PGD-AT) | | Squeezing / |
+--------------+ | Smoothing |
+---------------+
|
+-------v--------+
| Ensemble |
| RF + DNN + AE |
| Majority Vote |
+-------+--------+
|
+-------v--------+
| Evaluation |
| Acc, F1, DR, |
| Robustness |
+----------------+
```
## 方法论
评估遵循四阶段周期:
1. 在干净的 NSL-KDD 数据上**训练**基线模型
2. 使用 FGSM、PGD 和 C&W **攻击** DNN 以衡量其脆弱性
3. 使用对抗训练、输入变换和集成方法进行**防御**
4. 在相同攻击下**评估**防御后的模型,以衡量鲁棒性的提升
## 数据集:NSL-KDD
NSL-KDD 是 KDD Cup 1999 数据集的改进版本,解决了重复记录和不切实际的类别分布问题。它包含描述网络连接的 41 个特征:
| 特征组 | 示例 | 数量 |
|---|---|---|
| Basic | duration, protocol_type, service, flag, src_bytes, dst_bytes | 9 |
| Content | hot, num_failed_logins, logged_in, num_compromised, root_shell | 13 |
| Traffic | count, srv_count, serror_rate, same_srv_rate | 9 |
| Host | dst_host_count, dst_host_srv_count, dst_host_same_srv_rate | 10 |
标签被映射为二进制:**normal** (0) vs. **attack** (1)。攻击类别包括 DoS、Probe、R2L 和 U2R。
如果 NSL-KDD 下载失败,系统包含一个合成数据生成器作为备用方案,可以生成特征兼容且分布逼真的样本。
## 对抗攻击
### FGSM (Fast Gradient Sign Method)
**Goodfellow 等人, 2015** — 沿梯度方向的单步扰动:
```
x_adv = x + epsilon * sign(nabla_x L(theta, x, y))
```
计算速度快,但生成的对抗样本是次优的。作为对抗漏洞的下限。
### PGD (Projected Gradient Descent)
**Madry 等人, 2018** — FGSM 的迭代细化并结合投影操作:
```
x^{t+1} = Pi_{B(x, epsilon)} ( x^t + alpha * sign(nabla_x L(theta, x^t, y)) )
```
PGD 是典型的一阶攻击对手。投影算子 `Pi` 确保扰动保持在 L-infinity epsilon球内。它被认为是最强的一阶攻击。
### Carlini & Wagner L2
**Carlini 和 Wagner, 2017** — 基于优化的攻击方法,最小化:
```
min_delta ||delta||_2 + c * max( Z(x+delta)_y - max_{i != y} Z(x+delta)_i, -kappa )
```
比梯度符号方法强得多。它能找到导致误分类的最小扰动,使其成为鲁棒性评估的黄金标准。
## 防御机制
### 对抗训练 (PGD-AT)
在每个训练的 mini-batch 中加入 PGD 对抗样本,迫使模型学习鲁棒的表示。这是最具原则性的防御方法,拥有来自鲁棒优化的理论支持。
### 输入变换
- **Feature Squeezing** (Xu 等人, 2018):通过量化降低特征精度,破坏微小的对抗扰动。
- **Spatial Smoothing**:在特征窗口上应用局部平均,以破坏与梯度对齐的扰动。
### 集成防御
通过多数投票结合 Random Forest(不可微)、DNN(可微)和 Autoencoder(基于异常)的预测。针对 DNN 制作的对抗样本不太可能同时欺骗 RF 和 Autoencoder。
## 结果
结果通过运行完整的流水线生成。输出格式示例如下:
| 模型 | 上下文 | 准确率 | 精确率 | 召回率 | F1 | 检测率 |
|---|---|---|---|---|---|---|
| RandomForest | clean | — | — | — | — | — |
| DNN | clean | — | — | — | — | — |
| DNN | FGSM eps=0.1 | — | — | — | — | — |
| DNN | PGD eps=0.1 | — | — | — | — | — |
| DNN | C&W L2 | — | — | — | — | — |
| DNN-AT | FGSM eps=0.1 | — | — | — | — | — |
| DNN-AT | PGD eps=0.1 | — | — | — | — | — |
| Ensemble | FGSM eps=0.1 | — | — | — | — | — |
运行以下流水线以填充这些值:`python -m experiments.full_pipeline --synthetic`
## 如何运行
### 环境设置
```
cd iot-adversarial-ids
pip install -r requirements.txt
```
### 快速开始(合成数据)
```
# 使用合成数据的完整 pipeline(无需下载)
python -m experiments.full_pipeline --synthetic
```
### 使用 NSL-KDD 数据
```
# 完整 pipeline(如果不存在则自动下载 NSL-KDD)
python -m experiments.full_pipeline
```
### 分步执行
```
# 1. 训练 baseline 模型
python -m experiments.train_baseline --synthetic
# 2. 运行 adversarial attacks
python -m experiments.run_attacks --synthetic
# 3. 应用防御并评估
python -m experiments.run_defenses --synthetic
```
### 配置
编辑 `configs/default.yaml` 以调整:
- 模型超参数(隐藏层、dropout、学习率)
- 攻击参数(epsilon 值、PGD 步数、C&W 迭代次数)
- 防御设置(对抗训练轮数、squeezing 位深)
## 项目结构
```
iot-adversarial-ids/
├── src/
│ ├── data/ # Dataset loading, preprocessing, synthetic fallback
│ ├── models/ # RF baseline, DNN (PyTorch), Autoencoder (PyTorch)
│ ├── attacks/ # FGSM, PGD, Carlini & Wagner L2
│ ├── defenses/ # Adversarial training, input transforms, ensemble
│ └── evaluation/ # Metrics, comparison tables, result export
├── experiments/ # Runnable scripts (train, attack, defend, full pipeline)
├── configs/ # YAML hyperparameter configs
├── results/ # Generated results (JSON, CSV, tables)
├── requirements.txt
├── setup.py
└── README.md
```
## 环境要求
- Python >= 3.9
- PyTorch >= 2.0 (CPU, CUDA, 或 MPS)
- scikit-learn >= 1.3
- pandas, numpy, pyyaml, matplotlib
## 参考文献
1. Goodfellow, I. J., Shlens, J., & Szegedy, C. (2015). *Explaining and Harnessing Adversarial Examples.* ICLR 2015.
2. Madry, A., Makelov, A., Schmidt, L., Tsipras, D., & Vladu, A. (2018). *Towards Deep Learning Models Resistant to Adversarial Attacks.* ICLR 2018.
3. Carlini, N., & Wagner, D. (2017). *Towards Evaluating the Robustness of Neural Networks.* IEEE S&P 2017.
4. Xu, W., Evans, D., & Qi, Y. (2018). *Feature Squeezing: Detecting Adversarial Examples in Deep Neural Networks.* NDSS 2018.
5. Tavallaee, M., Bagheri, E., Lu, W., & Ghorbani, A. A. (2009). *A Detailed Analysis of the KDD CUP 99 Data Set.* IEEE CISDA 2009.
## 作者
**Amar Sohail**
- AllysAI 首席技术官 (CTO)
- 发表文章:PLOS ONE (Q1) — 分布式网络中的 IoT/RPL 安全
- 研究方向:基于 AI 的 IoT 安全、对抗性机器学习、形式化验证、后量子密码学
标签:AI安全, Apex, Chat Copilot, C&W攻击, FGSM, IoT网络, IP 地址批量处理, NSL-KDD数据集, PGD, PyTorch, Scikit-learn, 主机安全, 人工智能, 入侵检测系统, 凭据扫描, 安全数据湖, 对抗攻击, 对抗训练, 对抗鲁棒性, 异常检测, 恶意代码分类, 敏感信息检测, 机器学习, 深度学习, 深度神经网络, 物联网安全, 用户模式Hook绕过, 绕过防御, 网络安全, 网络流量分析, 自编码器, 逆向工具, 随机森林, 隐私保护, 集成防御, 鲁棒性评估