codervm15/HyCAN
GitHub: codervm15/HyCAN
HyCAN 是一个在统一框架下对十余种机器学习、深度学习和 Transformer 模型进行 CAN 总线入侵检测性能对比分析的研究平台,基于真实道路车辆数据集,涵盖五种攻击类型。
Stars: 0 | Forks: 0
# HyCAN:基于机器学习的 CAN 总线入侵检测混合框架



📚 **硕士论文** — *HyCAN:使用机器学习技术性能分析的 CAN 总线入侵检测混合方法*
🎓 **温莎大学** · 计算机科学学院
👨🔬 **作者:** Vikrant Mehla · **导师:** Dr. Ikjot Saini
## 🧠 概述
现代车辆依赖数百个通过 **CAN 总线** 通信的电子控制单元 (ECU) —— 该协议缺乏内置的加密或身份验证机制,使其容易受到欺骗、注入、DoS 和重放攻击。
**HyCAN** 是一个统一且可扩展的框架,允许您在同一个流水线中训练、调优和对比测试 **多种 ML、DL 和基于 Transformer 的 IDS 模型**
一个核心创新点:HyCAN **将数值型的 CAN 总线数据转换为特征字符串**,以便 BERT 能够处理,从而将 CAN 流量视为一种语言建模问题。
## ✨ 主要贡献
- 🔬 **首个混合框架**,在相同数据集和相同条件下对比了 10 多种 ML/DL/Transformer 模型
- 📊 **真实世界数据集** —— 使用了从 4 辆真实道路行驶车辆中收集的 `can-train-and-test` 数据集
- 🤖 **针对 CAN 的 BERT 模型** —— 将 CAN 帧标记化为特征字符串以进行 Transformer 微调的新颖方法
- 🧱 **堆叠集成** —— 结合了 KNN、DT、RF、XGBoost 和 CatBoost,并使用 Logistic Regression 作为元学习器
- ⏱️ **时间戳消融研究** —— 量化了时间特征对检测精度的贡献程度 (RS1 vs RS2)
- 🚗 **5 种攻击类型** —— DoS · Fuzzy · 档位欺骗 · 速度欺骗 · 静止
## 🛠️ 已实现的模型
| 类别 | 模型 |
|---|---|
| **传统 ML** | Logistic Regression · KNN · Decision Tree · Random Forest · XGBoost · CatBoost |
| **集成模型** | 堆叠泛化 (5 个基学习器 + LR 元学习器) |
| **深度学习** | MLP · LSTM |
| **Transformer** | BERT (`bert-base-uncased`, 微调) |
## 🚗 数据集
本研究使用 **`can-train-and-test`** 数据集 —— 通过 Korlan USB2CAN 线缆从四辆在真实道路上行驶的车辆中捕获的 CAN 总线数据:
- Chevrolet Impala
- Subaru Forester
- Chevrolet Silverado
- Chevrolet Traverse
每辆车都包含所有 5 种攻击类型的无攻击和有攻击轨迹。每类使用了 10 万个样本进行均衡训练。
| 特征 | 描述 |
|---|---|
| `timestamp` | 记录时间 (秒) |
| `arbitration_id` | CAN 报文标识符 (HEX) |
| `data_field` | 负载值 (字节) |
| `attack` | 1 = 注入, 0 = 正常 |
## 🔬 研究场景
为了评估时间信息的重要性:
- **RS1 — 包含时间戳:** 完整特征集,包括时间
- **RS2 — 不含时间戳:** 仅包含 `arbitration_id` + `data_field`
这揭示了哪些模型真正*依赖*时间模式,而哪些仅依赖于消息内容。
## 📁 仓库结构
```
CAN_RESEARCH/
├── CANData/ # Root folder for all data and experiments
│ ├── CAND/ # Dataset — CAN data per vehicle and attack type
│ ├── Examples/ # Sample code for reference experiments
│ │
│ ├── Forester/ # Per-vehicle experiments
│ │ ├── With_Timestamp/ # RS1 — includes timestamp feature
│ │ │ ├── DOS/
│ │ │ │ ├── Exp1-Bert-base_uncased.ipynb
│ │ │ │ ├── Exp1-Bert-base_uncased.py
│ │ │ │ ├── Exp2-Roberta_base_dos_binary.ipynb
│ │ │ │ ├── Exp2-Roberta_base_dos_binary.py
│ │ │ │ ├── Exp3-ML_Models_dos_binary.ipynb
│ │ │ │ ├── Exp3-ML_Models_dos_binary.py
│ │ │ │ ├── Exp4-MLP_Dos_binary.ipynb
│ │ │ │ ├── Exp4-MLP_Dos_binary.py
│ │ │ │ ├── Exp5-LSTM_Dos_binary.ipynb
│ │ │ │ └── Exp5-LSTM_Dos_binary.py
│ │ │ ├── Fuzzy/
│ │ │ ├── Gear/
│ │ │ ├── Speed/
│ │ │ ├── Standstill/
│ │ │ └── MultiClass.ipynb # Multi-class classification across all attacks
│ │ │
│ │ └── Without_Timestamp/ # RS2 — excludes timestamp feature
│ │ └── ... (same structure)
│ │
│ ├── Impala/ # Same structure as Forester
│ ├── Silverado/ # Same structure as Forester
│ └── Traverse/ # Same structure as Forester
│
└── README.md
```
### 实验的组织方式
每个攻击文件夹包含 **5 个实验** (每个实验均提供 `.ipynb` 和 `.py` 格式):
| 实验 | 涵盖的模型 |
|---|---|
| `Exp1-Bert-base_uncased` | BERT (针对 CAN 分类进行微调) |
| `Exp2-Roberta_base_*_binary` | RoBERTa (Transformer 基线) |
| `Exp3-ML_Models_*_binary` | Logistic Regression、KNN、Decision Tree、Random Forest、XGBoost、CatBoost、Stacked Ensemble |
| `Exp4-MLP_*_binary` | Multi-Layer Perceptron |
| `Exp5-LSTM_*_binary` | Long Short-Term Memory |
每个 `With_Timestamp/` 和 `Without_Timestamp/` 文件夹还包含一个 `MultiClass.ipynb` (以及 `.py`),用于跨所有五种攻击类型的多类分类。
### 仓库导航
CANData/{Vehicle}/{With_Timestamp | Without_Timestamp}/{AttackType}/{Experiment}.{ipynb|py}
### 运行实验
您可以通过**两种方式**运行实验:
**选项 1:Jupyter / Colab (推荐用于探索性分析)**
```
jupyter notebook CANData/Forester/With_Timestamp/DOS/Exp1-Bert-base_uncased.ipynb
```
**选项 2:作为 Python 脚本 (推荐用于复现或 CI)**
```
python CANData/Forester/With_Timestamp/DOS/Exp1-Bert-base_uncased.py
```
## 📈 关键发现
- 在 RS1 的大多数攻击中,**BERT** 实现了**接近完美的准确率 (高达 99.9%)** —— 但计算成本较高
- **Stacked Ensemble** 始终能提供 **>90% 的准确率**,且效率更高,使其成为实际系统中最具部署价值的选择
- 移除时间戳 (RS2) 导致 BERT 和 LSTM 的**性能显著下降**,证实了它们对时间上下文的依赖
- **KNN** 表现出惊人的适应性 —— 在 RS2 中跨越多个车辆大幅提升
- **Logistic Regression** 始终表现最差 (~50%),突显了使用非线性模型的必要性
## 📊 评估指标
所有模型均在以下指标上进行评估:
- **Accuracy**
- **Precision**
- **Recall**
- **F1-Score**
- **ROC-AUC**
- **训练和推理时间** (计算效率)
## 🔭 未来方向
- 在嵌入式 ECU 上进行实时部署和延迟基准测试
- 预训练并量化开源 LLM (例如 LLaMA) 以用于 CAN 数据
- 添加 **xAI** (SHAP / LIME) 以实现可解释的 IDS 决策
- 扩展至 **V2X** 通信和 **Automotive Ethernet**
- 结合 **GAN** 和无监督方法进行零日检测
## 📜 引用
如果您使用了 HyCAN 或在此基础上进行了工作,请引用:
```
@mastersthesis{vikrant2024hycan,
title = {HyCAN: A Hybrid Approach for CAN Bus Intrusion Detection Using Performance Analysis of Machine Learning Techniques},
author = {Vikrant},
year = {2024},
publisher = {ProQuest Dissertations \& Theses}
}
```
## 🙏 致谢
- Dr. **Ikjot Saini** — 论文导师,温莎大学
- **Lavanya Nagaraju** — 研究合作者
- **B. Lampe & W. Meng** — 提供 `can-train-and-test` 数据集
- 温莎大学计算机科学学院提供的计算资源
## 📬 联系方式
**Vikrant Mehla**
Security Engineer @ Arctic Wolf · 理学硕士, 温莎大学
[LinkedIn](https://www.linkedin.com/in/vmehla15/) · [GitHub](https://github.com/codervm15)
标签:Apex, BERT, CAN总线, DoS攻击, ECU, Python, PyTorch, Stacked Ensemble, Transformer, TruffleHog, 入侵检测系统, 凭据扫描, 学术论文, 安全数据湖, 无后门, 时间序列分析, 机器学习, 模型对比分析, 欺骗攻击, 汽车安全, 深度学习, 特征工程, 系统调用监控, 网络安全, 车载网络安全, 逆向工具, 配置错误, 重放攻击, 隐私保护, 集成学习