lucastuxnet/SBRC_2026

GitHub: lucastuxnet/SBRC_2026

提出一个LLM驱动的流水线,将GOOSE流量异常模式自动转换为可执行检测规则,解决变电站IDS规则手工编写成本高、适应性差的问题。

Stars: 0 | Forks: 0

# 从红旗到检测规则 ## 一个用于实时GOOSE入侵检测与预防的LLM驱动流水线 **作者:** Lucas A. Martins¹, Camilla B. Quincozes¹², Silvio E. Quincozes¹² ¹ Universidade Federal de Uberlândia (UFU) – Uberlândia, Brazil ² Universidade Federal do Pampa (UNIPAMPA) – Alegrete, Brazil `{lucas.martins, camillaquincozes, sequincozes, gsiervo}@ufu.br` `{marceloluizelli}@unipampa.edu.br` --- ## 工件徽章 本仓库符合以下工件评估徽章: | 徽章 | 状态 | 描述 | |:---|:---:|:---| | **可用 (D)** | 源代码、笔记本和示例数据在本仓库中公开可用。 | | **功能 (F)** | 笔记本可以从头执行到尾(需要 Groq API 密钥)。 | | **可持续 (S)** | 模块化结构、`requirements.txt` 中固定依赖、文档清晰。 | | **可重现 (R)** | 固定随机种子(`random_state=42`)以及逐步说明以重现实验。 | --- ## 概述 本仓库附带了提交至 **SBRC 2026** 的概念验证笔记本。该工作提出了一种 **LLM 驱动的流水线**,用于自动生成 IEC 61850 数字变电站的入侵检测规则,并采用 **GOOSE** 协议。 该方法消除了领域专家手动编写规则的需求:给定 ERENO 数据集的标注样本,LLM 识别行为层面的 *红旗(异常模式)*,并将其转换为可执行的 Python 规则。随后,这些规则在可编程交换机模拟器中进行实时检测评估。 --- ## 问题陈述 基于规范的入侵检测系统(IDS)在 IEC 61850 变电站中被广泛采用,因其 **计算开销低** 且 **可解释性强**。然而,它们依赖领域专家手工编写规则——这是一个成本高、难以扩展且适应性差的过程。 特别是,GOOSE 协议在设计之初并未考虑强健的原生安全机制,使其容易受到以下攻击: - **拒绝服务(DoS)** / *poisoned_high_rate* - **消息注入**(*masquerade_fake_fault*) - **重放攻击**(*inverse_replay*) - **灰洞攻击**(*grayhole*) --- ## 流水线 ``` ┌─────────────────┐ ┌──────────────────┐ ┌───────────────────┐ ┌──────────────────┐ │ Labeled GOOSE │───▶│ Red Flag Extract.│───▶│ Rule Generation │───▶│ Switch Simulation│ │ Dataset │ │ (LLM-based) │ │ (Python rules) │ │ (Real-time) │ │ (ERENO) │ │ │ │ │ │ │ └─────────────────┘ └──────────────────┘ └───────────────────┘ └──────────────────┘ ``` | 阶段 | 职责 | |------|------| | **1. 源数据摄取** | 加载 ERENO 数据集,选择相关特征并准备结构化提示 | | **2. 红旗提取** | LLM 检查正常与攻击样本以识别可疑模式 | | **3. 规则生成** | 将红旗转换为可执行 Python 函数(`rules.py`) | | **4. 模拟部署** | 在可编程交换机模拟器上应用规则处理 GOOSE 流量 | --- ## 数据集 该笔记本使用 **ERENO–IEC–61850** 数据集,这是一个公开的 GOOSE 流量标注数据集,包含正常条件与多种攻击场景。 - **预期文件:** `small_dataset/test.csv` 和 `train.csv` - **规模:** 约 207 个样本,52 个特征 - **类别:** `normal`、`poisoned_high_rate`、`grayhole`、`inverse_replay`、`masquerade_fake_fault` ### 特征类型 | 类型 | 示例 | |------|------| | 协议层 | `SqNum`、`StNum`、`cbStatus`、`ethType`、`gooseAppid`、`gooseLen`、`TPID`、`gocbRef`、`datSet`、`goID` | | 时间相关 | `GooseTimestamp`、`t`、`tDiff`、`timestampDiff`、`timeFromLastChange`、`delay` | | 衍生 | `stDiff`、`sqDiff`、`gooseLengthDiff`、`cbStatusDiff`、`frameLengthDiff` | --- ## 仓库结构 ``` . ├── SBRC_2026_LLM_IDS_GOOSE.ipynb # Main notebook (proof of concept) ├── small_dataset/ │ ├── train.csv # Training samples (ERENO) │ └── test.csv # Test samples (ERENO) ├── rules.py # Detection rules generated by the LLM (created at runtime) ├── requirements.txt # Python dependencies ├── .env.example # Example environment variables file ├── LICENSE # MIT License └── .gitignore # Files ignored by git ``` --- ## 依赖要求 - Python 3.12+ - 一个 [Groq](https://console.groq.com) 账户与 API 密钥(需能访问 `compound` 模型) ### 主要依赖 ``` numpy==2.3.3 pandas==2.3.3 groq==1.1.2 python-dotenv==1.0.0 httpx==0.28.1 pydantic>=1.9.0 ``` --- ## 安装 ``` # 克隆仓库 git clone cd # 创建并激活虚拟环境 python -m venv .venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows # 安装依赖项 pip install -r requirements.txt --- ## 配置 Create a `.env` file at the project root with your Groq API key: ``` ``` GROQ_API_KEY=gsk_... ``` ``` > **Warning:** never commit the `.env` file. Add it to `.gitignore`. --- Minimal Test To verify that the environment is correctly configured, run: ``` ``` python -c "import pandas, groq; print('Dependencies OK')" ``` | 章节 | 功能 | |------|------| | **§4 – 环境配置** | 安装依赖、导入库并配置 Groq 客户端 | | **§5 – 数据摄取** | 加载 ERENO 数据集,选择相关特征并展示类别分布 | | **§6 – 红旗提取** | 通过 LLM 从正常与攻击样本中提取红旗 | | **§6.1 – 红旗提取** | 为每个攻击类别识别行为模式 | | **§6.2 – 规则生成** | 将红旗转换为 Python 检测函数(`rules.py`) | | **§7 – 规则执行** | 将生成的规则应用于 GOOSE 流量并记录结果 | | **§8 – 矩阵生成** | 生成混淆矩阵与评估指标 | | **§8.1 – 简化流水线** | 快速生成规则-类别矩阵的线性版本 | | **§8.2 – 完整流水线** | 包含 BLOCK/ALLOW 决策与延迟测量的结构化流水线 | | **§8.3 – 可视化矩阵** | 生成规则-类别矩阵的柱状图可视化 | --- ## 预期结果 - 自动生成的 Python 规则能够检测所有 ERENO 攻击类别的异常行为 - 每包操作开销低,适合实时变电站环境 - 可重现的流水线:每次运行均从标注数据集开始,最终生成可审计的规则 --- ## 结论与未来工作 本工作证明了 LLM 可以替代基于规范的 IDS 中的手工规则编写步骤,减少对领域专家的依赖并提升对新攻击向量的适应性。计划的后续工作包括: - 在更大且更多样的数据集上进行验证 - 与基于经典 ML 的 IDS 方法进行比较 - 与真实的可编程交换硬件(P4/OpenFlow)集成 --- ## 参考文献 - IEC 61850-8-1: *Communication networks and systems in substations*, IEC, 2003. - Hong, J. & Liu, C. (2019). Intelligent electronic devices with collaborative intrusion detection systems. *IEEE Transactions on Smart Grid*, 10(1):271–281. - Hong, J., Liu, C., & Govindarasu, M. (2014). Detection of cyber intrusions using network-based multicast messages for substation automation. *ISGT, IEEE*. - Quincozes, S. E. et al. ERENO–IEC–61850 dataset. --- ## 引用 若使用本工作,请引用在 **SBRC 2026** 上发表的对应论文。
标签:Clean Code, ERENO数据集, GOOSE协议, ICS安全, IEC 61850, LLM驱动, Python规则, SBRC 2026, 低计算开销, 关键基础设施, 功能验证, 协议安全, 可复现研究, 可持续性, 可编程交换机, 可解释性, 实时检测, 工业控制系统, 开源代码, 数字变电站, 智能电网, 模拟环境, 生成式AI, 电力系统安全, 索引, 红队标志, 网络安全研究, 网络攻击检测, 自动化规则, 规则生成, 规范基IDS, 误用检测, 逆向工具, 预防