当前位置: 首页 > news >正文

Python TensorFlow的CNN-LSTM-GRU集成模型在边缘物联网数据IoT电动汽车充电站入侵检测应用

全文链接:https://tecdat.cn/?p=43881
原文出处:拓端抖音号@拓端tecdat

随着物联网(IoT)技术在电动汽车充电站(EVCS)中的普及,充电站不仅成为智能交通的关键节点,更因连接电网、用户设备与管理系统,成为网络攻击的重点目标。传统入侵检测系统(IDS)要么难以处理IoT环境的动态数据,要么在多类型威胁识别中精度不足,这给充电站的安全运营带来极大隐患。
 

一、引言

本文内容改编自我们团队为某客户提供的IoT安全咨询项目——当时客户面临充电站数据泄露、充电流程被篡改等问题,我们通过构建深度学习集成模型成功解决了这些痛点。现在将项目核心技术整理为报告,方便相关领域学生与从业者参考。
报告中,我们采用Python结合TensorFlow/Keras框架,基于Edge-IIoTset真实边缘物联网数据集,设计了融合卷积神经网络(CNN)、长短期记忆网络(LSTM)与门控循环单元(GRU)的集成模型:CNN负责提取网络流量的空间特征(如异常数据包结构),LSTM+GRU负责捕捉时序特征(如多步攻击序列),最终实现对“正常行为”与“DDoS、注入攻击、扫描攻击”等多类威胁的精准识别。测试显示,模型在二分类任务中准确率达100%,15类细分威胁识别中准确率仍保持96.90%,完全满足实际应用需求。


完整项目代码和数据文件已分享在交流社群,阅读原文进群和600+行业人士共同交流和成长。

二、IoT电动汽车充电站的安全挑战与入侵检测需求

1. IoT电动汽车充电站的特殊性

IoT技术让充电站实现了“车-站-网”联动(如图1),图中清晰展示了可再生能源、电网、IoT设备与待充电车辆之间的互联关系,每一条连接都代表实时数据交互——这些交互是充电站高效运行的核心,但也放大了安全风险。与普通IoT系统相比,充电站的IoT架构有三个关键差异:

  • 实时性要求高:充电过程中数据延迟可能导致设备故障,甚至引发安全事故,因此IDS必须低延迟;
  • 多系统融合:同时连接能源系统(电网、光伏)、IT系统(用户数据、支付)和OT系统(充电设备控制),任何一个系统被攻击都会影响整体运营;
  • 协议特殊:采用Open Charge Point Protocol(OCPP)专用协议,传统IDS难以解析这类协议的异常流量。

2. 主要网络威胁类型

实际应用中,充电站面临的威胁主要有四类:

  • 充电流程篡改:攻击者修改充电参数,导致电池过充损坏或设备过载;
  • 数据拦截:窃取用户支付信息、车辆电池数据等敏感内容;
  • 电网联动攻击:通过篡改充电站与电网的通信数据,影响区域电网稳定;
  • 恶意软件入侵:植入后门程序,长期控制充电设备。

三、CNN-LSTM-GRU集成模型设计与实现

1. 模型核心思路

传统单一模型存在短板:CNN擅长空间特征提取但无法处理时序数据,LSTM/GRU能捕捉时序关系但对空间特征敏感度过低。我们的集成模型通过“空间特征提取→时序特征分析→联合分类”的流程,实现优势互补(模型架构如图2)。

为了让大家更清楚各组件的作用,这里补充三个关键结构的示意图:

  • CNN空间特征提取(图3):通过卷积滤波器滑动扫描网络流量数据,捕捉如“异常数据包长度”“协议字段异常值”等空间特征,这些特征是区分正常流量与攻击流量的基础。
  • LSTM时序记忆机制(图4):通过“记忆单元”和“门控结构”(输入门、遗忘门、输出门),记住长序列中的关键信息——比如DDoS攻击中“连续多数据包请求频率异常”这类跨时间步的特征,避免传统RNN的“梯度消失”问题。
  • GRU简化门控机制(图5):将LSTM的“输入门”和“遗忘门”合并为“更新门”,在保证时序特征捕捉能力的同时,减少参数数量,提升模型运行效率——这对充电站边缘设备的算力适配至关重要。

2. 关键步骤与代码实现

(1)数据预处理

包含10+类IoT设备的真实流量数据,涵盖14种攻击类型(如DDoS_UDP、SQL注入、端口扫描等)。预处理需解决“分类变量数值化”“特征冗余”“数据分布不均”三个问题,代码如下:

 
  1.  
    import pandas as pd
  2.  
    import numpy as np
  3.  
    from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler
  4.  
    from sklearn.feature_selection import SelectKBest, chi2
  5.  
    from sklearn.model_selection import train_test_split
  6.  
    # 1. 读取数据集(实际应用中需替换为本地数据集路径)
  7.  
    data = pd.read_csv("Edge-IIoT.csv")
  8.  
    # 2. 分类变量处理:先标签编码(字符串转数值),再独热编码(避免序数偏差)
  9.  
    label_encoder = LabelEncoder()
  10.  
    # 对OCPP协议类型、HTTP方法、MQTT主题等分类列进行编码
  11.  
    data["ocpp_proto_code"] = label_encoder.fit_transform(data["ocpp_protocol"])
  12.  
    data["http_method_code"] = label_encoder.fit_transform(data["http_method"])
  13.  
    data["mqtt_topic_code"] = label_encoder.fit_transform(data["mqtt_topic"])
  14.  
    # 独热编码:处理多类别特征,避免模型误判“类别顺序”
  15.  
    onehot_encoder = OneHotEncoder(sparse=False, drop="first") # drop="first"避免多重共线性
  16.  
    encoded_cols = onehot_encoder.fit_transform(data[["ocpp_proto_code", "http_method_code", "mqtt_topic_code"]])
  17.  
    encoded_df = pd.DataFrame(encoded_cols, columns=["proto_1", "proto_2", "http_1", "http_2", "mqtt_1"])
  18.  
    data = pd.concat([data, encoded_df], axis=1)
 
 
(2)模型构建与训练

模型输入需调整为Conv1D要求的“(样本数,时间步长,特征数)”格式,再依次叠加CNN、LSTM、GRU层,代码如下:

 
  1.  
     
  2.  
    # 2. 构建集成模型
  3.  
    model = Sequential(name="EVCS_IoT_IDS_Model")
  4.  
    # CNN模块:提取空间特征(如异常数据包结构、协议字段异常)
  5.  
    model.add(Conv1D(filters=64, kernel_size=3, activation="relu", input_shape=input_shape, name="Conv1"))
  6.  
    model.add(MaxPooling1D(pool_size=2, name="Pool1")) # 降维,保留关键特征,减少计算量
  7.  
    model.add(Conv1D(filters=32, kernel_size=3, activation="relu", name="Conv2"))
  8.  
    model.add(MaxPooling1D(pool_size=2, name="Pool2"))
  9.  
    # LSTM+GRU模块:提取时序特征(如多步攻击的流量序列变化)
  10.  
    model.add(LSTM(units=64, return_sequences=True, name="LSTM_Layer")) # return_sequences=True:输出序列给后续GRU
  11.  
    model.add(GRU(units=32, name="GRU_Layer")) # 简化门控,提升效率,捕捉近期时序特征
  12.  
    # 分类模块:输出威胁类型概率
  13.  
    model.add(Flatten(name="Flatten_Layer")) # 展平特征图,连接全连接层
  14.  
    model.add(Dense(units=64, activation="relu", name="Dense1"))
  15.  
    model.add(Dropout(rate=0.3, name="Dropout_Layer")) # 随机失活30%神经元,防止过拟合
  16.  
    model.add(Dense(units=15, activation="softmax", name="Output_Layer")) # 15类分类(1正常+14攻击)
 
 

四、模型应用测试结果

我们从“二分类(正常/攻击)”“六分类(正常+5大类攻击)”“十五分类(正常+14小类攻击)”三个维度测试模型,所有测试均基于数据的真实流量数据,确保结果贴合实际应用场景。

1. 二分类测试结果(正常/攻击)

二分类任务的目标是快速区分“正常流量”与“任意攻击流量”,适合充电站的实时初步预警。模型仅训练6轮就达到稳定性能,测试损失接近0,准确率100%(表1)。

性能指标 二分类结果
测试损失 0.0000
测试准确率(%) 100
训练时间(秒) 1885.46
测试时间(秒) 42.53

从准确率与损失曲线(图6)可见,训练轮次增加后,训练集与验证集的准确率始终保持100%,损失快速降至0,说明模型无过拟合,且学习效率高。

混淆矩阵(图7)和归一化混淆矩阵(图8)进一步验证了模型的完美分类能力:所有“正常流量”(279,968条)和“攻击流量”(109,122条)均被正确识别,无任何误判——这意味着模型能100%拦截攻击,且不会产生“正常流量被误判为攻击”的 false alarm(误报),避免影响充电站正常运营。


相关文章

​CNN-LSTM、GRU、​XGBoost、LightGBM风电健康诊断、故障与中国银行股票预测应用实例

原文链接:https://tecdat.cn/?p=41907


2. 六分类测试结果(正常+5大类攻击)

六分类任务将攻击分为“DDoS、注入攻击、扫描攻击、恶意软件、MITM(中间人攻击)”5大类,需要模型区分不同攻击的核心特征。测试结果显示,模型准确率达97.44%,测试损失0.0532(表2)。

性能指标 六分类结果
测试损失 0.0532
测试准确率(%) 97.44
训练时间(秒) 14803.63
测试时间(秒) 42.20

准确率与损失曲线(图9)显示,模型在50轮训练后收敛,验证集准确率稳定在97%左右,无明显波动,说明模型对大类攻击的分类能力稳定。


从分类报告看,“正常流量”“DDoS”“MITM”的精确率、召回率、F1值均为1.00或接近1.00,而“注入攻击”(精确率0.72)和“恶意软件”(召回率0.62)存在少量误判——这是因为部分“注入攻击”的数据包特征与正常HTTP请求相似,部分“恶意软件”的流量签名较隐蔽。混淆矩阵(图10)和归一化混淆矩阵(图11)进一步显示,误判主要集中在“注入攻击”与“正常流量”、“恶意软件”与“扫描攻击”之间,但整体误判比例低于3%,不影响实际使用。


 

3. 十五分类测试结果(正常+14小类攻击)

十五分类任务是最精细的测试,需区分“正常流量”和14种具体攻击(如DDoS_UDP、SQL注入、端口扫描、勒索软件等)。测试结果显示,模型准确率仍达96.90%,测试损失0.0632(表3),仅比六分类低0.54个百分点,表现远超传统模型。

性能指标 十五分类结果
测试损失 0.0632
测试准确率(%) 96.90
训练时间(秒) 14719.47
测试时间(秒) 40.65

准确率与损失曲线(图12)显示,模型在50轮训练后收敛,训练集与验证集准确率差距小,说明模型对细分类别的学习能力强,无过拟合。


分类报告显示,“正常流量”“DDoS_UDP”“DDoS_ICMP”“MITM”的精确率和召回率均为1.00,而“SQL注入”(精确率0.62)、“XSS攻击”(精确率0.64)、“指纹识别攻击”(召回率0.27)的表现相对较弱——这是因为这些攻击的流量特征更细微(如SQL注入的恶意语句被加密、XSS攻击的脚本片段短)。混淆矩阵(图13)和归一化混淆矩阵(图14)显示,主要误判集中在“密码攻击”与“后门程序”、“指纹识别”与“端口扫描”之间,但整体正确分类比例仍达96.9%,满足充电站对细分类别攻击的识别需求。


 

4. 与传统模型的对比优势

我们将本模型与近年主流IDS模型对比(表4),可见在多分类任务中,本模型优势明显:

  • 十五分类准确率(96.90%)比DNN(94.67%)高2.23个百分点,比RNN(90.22%)高6.68个百分点;
  • 六分类准确率(97.44%)仅比“CNN-LSTM”(98.69%)低1.25个百分点,但计算效率更高(训练时间缩短约8%);
  • 二分类准确率与“CNN-LSTM”“VGG-16”持平(100%),但模型参数更少,更适合边缘设备部署。
     
模型名称 年份 二分类准确率(%) 六分类准确率(%) 十五分类准确率(%)
DNN 2022 99.99 96.01 94.67
Inception Time 2022 - - 94.94
CNN-LSTM 2022 100 98.69 -
VGG-16 2023 100 - 94.86
RNN 2023 100 92.53 90.22
CNN-LSTM-GRU 2023 100 97.44 96.90

五、结论与展望

本文提出的CNN-LSTM-GRU集成模型,通过“CNN空间特征提取+LSTM-GRU时序特征捕捉”的融合架构,解决了IoT电动汽车充电站IDS的“低延迟”“多威胁识别”“边缘设备适配”三大核心问题。基于Edge-IIoTset真实数据集的测试证明,模型在二分类、六分类、十五分类任务中均保持高准确率,且计算效率优于多数传统模型,可直接部署到充电站的边缘设备中,为实际运营提供安全保障。
未来,我们将从两个方向优化模型:一是适配加密流量场景(如HTTPS协议下的威胁识别),通过提取TLS握手阶段的特征,解决“加密流量不可见”的问题;二是模型压缩(如量化、剪枝),进一步降低对边缘设备的算力要求,让模型能在低配置IoT设备上运行。
希望本文能为相关领域学生提供清晰的技术思路——从数据预处理到模型构建的每一步都有实际代码和图表支撑,便于理解和复现;同时也为企业IoT安全建设提供参考,帮助更多新能源企业解决充电站的网络安全痛点。

http://www.wxhsa.cn/company.asp?id=5469

相关文章:

  • C++多线程编程—线程控制、同步与互斥详解
  • MySQL启动失败:mysqld.log Permis 报错处理.250916
  • 源码管理—密钥硬编码问题
  • 无速度传感器交流电机的扩展Luenberger观测器
  • AI Ping体验记:终于有人做大模型服务的“性能监控”了
  • 数据库原理-第二章——关系型数据库
  • mac 的任务栏 Windows-Style Taskbar For macOS
  • 快手Java一面
  • 详细介绍:Elastic APM 入门指南:快速设置应用性能监控
  • 想找Axure替代?这6个原型设计工具值得一试
  • H5游戏性能优化系列-----cpu相关优化
  • IPA 混淆实战 IPA 混淆、IPA 加固、ipa 文件安全与成品包防护全流程指南
  • 实用指南:javaweb HTML基本介绍/常见标签
  • 文档处理控件Aspose.Words教程:在 C# 中将 Markdown 转换为 PDF
  • TCP协议与wireshark
  • docker容器mysql导入sql文件
  • ObjectSense 包与模块:代码组织的艺术
  • IDE工具RAD Studio 13 Florence重磅发布:64 位 IDE + AI 组件全面升级!
  • C# 批量修改数据库
  • Job for network.service failed because the control process exited with error code.
  • 负荷聚类及其在MATLAB中的实现
  • 移动安全框架(MobSF)静态分析入门指南
  • 列表项点击,逻辑梳理
  • CRMEB标准版PHP批量发货功能深度解析
  • 数学之美 第一章读后感
  • 【SPIE出版】第九届交通工程与运输系统国际学术会议(ICTETS 2025)
  • 模型上下文协议(Model Context Protocol,MCP)
  • 大华设备视频平台EasyCVR视频分析设备平台双轨视频数据存储方案全解读
  • AI音乐创作新突破:ACE-Step模型开启放克音乐智能生成时代
  • 【ABSR出版】第二届农业工程与生物学国际研讨会(ISAEB 2025)