codervm15/HyCAN

GitHub: codervm15/HyCAN

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

Stars: 0 | Forks: 0

# HyCAN:基于机器学习的 CAN 总线入侵检测混合框架 ![Python](https://img.shields.io/badge/python-3.9+-blue.svg) ![PyTorch](https://img.shields.io/badge/PyTorch-2.0+-EE4C2C.svg) ![Status](https://img.shields.io/badge/status-research-green.svg) 📚 **硕士论文** — *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, 入侵检测系统, 凭据扫描, 学术论文, 安全数据湖, 无后门, 时间序列分析, 机器学习, 模型对比分析, 欺骗攻击, 汽车安全, 深度学习, 特征工程, 系统调用监控, 网络安全, 车载网络安全, 逆向工具, 配置错误, 重放攻击, 隐私保护, 集成学习