全文鏈接: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注入、端口掃描等)。預處理需解決“分類變量數值化”“特征冗余”“數據分布不均”三個問題,代碼如下:
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler
from sklearn.feature_selection import SelectKBest, chi2
from sklearn.model_selection import train_test_split
# 1. 讀取數據集(實際應用中需替換為本地數據集路徑)
data = pd.read_csv("Edge-IIoT.csv")
# 2. 分類變量處理:先標簽編碼(字符串轉數值),再獨熱編碼(避免序數偏差)
label_encoder = LabelEncoder()
# 對OCPP協議類型、HTTP方法、MQTT主題等分類列進行編碼
data["ocpp_proto_code"] = label_encoder.fit_transform(data["ocpp_protocol"])
data["http_method_code"] = label_encoder.fit_transform(data["http_method"])
data["mqtt_topic_code"] = label_encoder.fit_transform(data["mqtt_topic"])
# 獨熱編碼:處理多類別特征,避免模型誤判“類別順序”
onehot_encoder = OneHotEncoder(sparse=False, drop="first") # drop="first"避免多重共線性
encoded_cols = onehot_encoder.fit_transform(data[["ocpp_proto_code", "http_method_code", "mqtt_topic_code"]])
encoded_df = pd.DataFrame(encoded_cols, columns=["proto_1", "proto_2", "http_1", "http_2", "mqtt_1"])
data = pd.concat([data, encoded_df], axis=1)
(2)模型構建與訓練
模型輸入需調整為Conv1D要求的“(樣本數,時間步長,特征數)”格式,再依次疊加CNN、LSTM、GRU層,代碼如下:
# 2. 構建集成模型
model = Sequential(name="EVCS_IoT_IDS_Model")
# CNN模塊:提取空間特征(如異常數據包結構、協議字段異常)
model.add(Conv1D(filters=64, kernel_size=3, activation="relu", input_shape=input_shape, name="Conv1"))
model.add(MaxPooling1D(pool_size=2, name="Pool1")) # 降維,保留關鍵特征,減少計算量
model.add(Conv1D(filters=32, kernel_size=3, activation="relu", name="Conv2"))
model.add(MaxPooling1D(pool_size=2, name="Pool2"))
# LSTM+GRU模塊:提取時序特征(如多步攻擊的流量序列變化)
model.add(LSTM(units=64, return_sequences=True, name="LSTM_Layer")) # return_sequences=True:輸出序列給后續GRU
model.add(GRU(units=32, name="GRU_Layer")) # 簡化門控,提升效率,捕捉近期時序特征
# 分類模塊:輸出威脅類型概率
model.add(Flatten(name="Flatten_Layer")) # 展平特征圖,連接全連接層
model.add(Dense(units=64, activation="relu", name="Dense1"))
model.add(Dropout(rate=0.3, name="Dropout_Layer")) # 隨機失活30%神經元,防止過擬合
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安全建設提供參考,幫助更多新能源企業解決充電站的網絡安全痛點。