隨著工業物聯網(IIoT)的普及,網路安全威脅日益嚴重。傳統的攻擊偵測方法難以應對日趨複雜的攻擊手段,尤其是在資料不平衡的情況下。深度學習技術的出現為解決此問題提供了新的途徑。本文提出了一種根據深度表示學習的IIoT攻擊偵測方法,利用堆積疊式自動編碼器學習正常和攻擊樣本的獨特表示,並透過主成分分析(PCA)降維和特徵提取,最後使用決策樹進行分類別。此方法有效解決了資料不平衡的問題,並在多個IIoT資料集上取得了顯著的效能提升。實驗結果顯示,該方法在準確率、精確率、召回率和F-measure等指標上均優於傳統的決策樹方法,證明瞭深度表示學習在IIoT攻擊偵測中的有效性。
工業物聯網攻擊偵測中的深度表示學習
4.2 資料分割
為了確保有足夠的資料進行訓練階段,並保留未見資料進行測試階段,我們將資料集分成兩類別。其中90%的資料用於訓練,剩餘的10%則保留作為未見資料供測試階段使用。由於我們的資料集具有高度不平衡性,我們在分割資料集時確保了兩個集合中的資料分佈保持一致。這個過程重複十次,以形成十倍交叉驗證。
4.3 訓練所提出的方法
在本研究提出的方法中,為了處理不平衡的工業物聯網(IIoT)資料而不忽視少數類別或平衡資料集,我們將攻擊樣本和正常樣本分開。每個樣本透過堆積疊式自動編碼器(stacked autoencoder)來建立其獨特的表示。這些表示然後被融合並形成一個超級向量。得到的超級向量透過主成分分析(PCA)進行特徵提取和維度降低。最後,決策樹(DT)被用來做出最終的決策。圖7顯示了所提出方法的結構。
圖7 所提出的IIoT攻擊偵測方法的結構
此圖示展示了所提出方法的整體架構,包括表示學習和偵測階段。
圖表翻譯: 圖7顯示了一個雙階段的攻擊偵測方法。首先,透過堆積疊式自動編碼器對正常和攻擊樣本進行表示學習,然後將學習到的表示融合為一個超級向量。接著,透過PCA對超級向量進行特徵提取和降維,最終使用決策樹進行分類別。
所提出的攻擊偵測方法由兩個部分組成:表示學習和偵測階段。深度神經網路(DNN)本身無法在不平衡資料上表現良好,並且傾向於學習多數類別的模式,將大多數少數類別樣本誤分類別為多數類別,從而導致低偵測率(召回率)。本文提出了一種根據兩個自動編碼器的表示學習方法來處理上述挑戰。如前所述,每個自動編碼器負責學習一個類別的表示,而不考慮其他類別的樣本,因此每個自動編碼器的輸出都能很好地代表其輸入類別。所使用的自動編碼器具有三個編碼器和三個解碼器。在訓練自動編碼器之後,所有正常和攻擊樣本都透過兩個自動編碼器,並融合為一個超級向量,以形成所有樣本的新表示。
在第二階段,超級向量透過PCA進行特徵提取和維度降低。提取的特徵然後被傳遞給DT分類別器,以做出最終的決策。由於DT對不平衡資料具有快速和穩健的特性,並且在我們的先前實驗中對IIoT資料表現良好,因此被選為最終的分類別器。演算法1顯示了所提出的偵測方法的流程。
5. 實驗設定與評估結果
5.1 資料集
我們使用了在新南威爾士大學收集的Ton_IoT資料集[72]來評估所提出的IIoT攻擊偵測方法。這些資料集包含了IoT/IIoT服務的遙測資料、作業系統日誌和網路流量。如圖8所示,用於收集這些資料集的測試平台是根據IIoT網路元素與Edge、Fog和Cloud三層之間的互動設計的,以模擬真實世界的IIoT網路[72]。
圖8 TON_IOT資料集的測試環境[72]
此圖示展示了用於收集TON_IOT資料集的測試平台架構。
圖表翻譯: 圖8描述了TON_IOT資料集的測試環境,包括Edge、Fog和Cloud三層結構,用於模擬真實的IIoT網路環境。
TON_IoT資料集包含了正常資料和九種型別的攻擊,包括掃描、拒絕服務(DoS)、分散式拒絕服務(DDoS)、勒索軟體、後門、資料注入、跨站指令碼(XSS)、密碼破解和中間人(MITM)等攻擊,這些攻擊是針對各種IoT和IIoT網路發起的。此外,TON_IoT包含七個資料集:冰箱、車函式庫門、GPS追蹤器、Modbus、運動燈、溫控器和天氣。
5.2 攻擊場景
如前所述,TON_IoT包含了九種型別的攻擊[72]。
- 掃描:是攻擊的第一步,攻擊者在此階段收集目標的資訊,如開放的埠和可用的服務。
- 拒絕服務(DoS):是一種淹沒式攻擊,攻擊者發起多個惡意嘗試以破壞對服務的存取。
- 分散式拒絕服務(DDoS):是一種由大量受感染裝置(稱為機器人)發起的DoS攻擊。
- 勒索軟體:一種複雜的惡意軟體,它加密使用者檔案並限制使用者對系統或服務的存取,然後出售解密金鑰。IIoT裝置和應用程式往往是IoT勒索軟體的受害者,因為它們經常執行關鍵任務。
- 後門:是一種允許攻擊者獲得對IIoT裝置未經授權的遠端存取的攻擊。
- 注入攻擊:試圖執行惡意程式碼或將惡意資料注入IIoT伺服器和應用程式。
- 跨站指令碼(XSS):試圖透過HTML或JavaScript程式碼在IIoT應用程式中的Web伺服器上執行惡意命令。
- 密碼破解:嘗試使用各種暴力破解或字典攻擊來猜測IIoT裝置和伺服器的密碼。
- 中間人(MITM):是一種網路攻擊,可以攔截兩個裝置之間的通訊通道並操縱資料。
5.3 評估指標
在IIoT攻擊偵測中,主要關注的是高偵測率和避免誤報的能力。因此,我們根據真陽性(TP)、真陰性(TN)、假陽性(FP)和假陰性(FN)等指標來分析所提出方法的效能。
# 示例程式碼:計算評估指標
def calculate_metrics(tp, tn, fp, fn):
accuracy = (tp + tn) / (tp + tn + fp + fn)
precision = tp / (tp + fp) if (tp + fp) != 0 else 0
recall = tp / (tp + fn) if (tp + fn) != 0 else 0
f1_score = 2 * (precision * recall) / (precision + recall) if (precision + recall) != 0 else 0
return accuracy, precision, recall, f1_score
# 使用示例
tp = 100 # 真陽性數量
tn = 900 # 真陰性數量
fp = 20 # 假陽性數量
fn = 30 # 假陰性數量
accuracy, precision, recall, f1_score = calculate_metrics(tp, tn, fp, fn)
print(f"準確率:{accuracy:.4f}")
print(f"精確率:{precision:.4f}")
print(f"召回率:{recall:.4f}")
print(f"F1分數:{f1_score:.4f}")
內容解密:
這段程式碼定義了一個函式calculate_metrics,用於計算分類別模型的評估指標,包括準確率、精確率、召回率和F1分數。函式接收真陽性(tp)、真陰性(tn)、假陽性(fp)和假陰性(fn)的數量作為輸入,並傳回計算出的評估指標。在示例使用中,我們給出了tp、tn、fp和fn的具體數值,並呼叫函式計算了相應的評估指標,最後列印預出結果。
- 函式定義與引數:
calculate_metrics函式接收四個引數:tp、tn、fp和fn,分別代表真陽性、真陰性、假陽性和假陰性的數量。 - 準確率計算:準確率是正確預測(包括真陽性和真陰性)的數量佔總預測數量的比例。公式為
(tp + tn) / (tp + tn + fp + fn)。 - 精確率計算:精確率是指在所有預測為陽性的樣本中,真正為陽性的比例。公式為
tp / (tp + fp),需注意分母不能為零。 - 召回率計算:召回率是指在所有實際為陽性的樣本中,被正確預測為陽性的比例。公式為
tp / (tp + fn),同樣需注意分母不能為零。 - F1分數計算:F1分數是精確率和召回率的調和平均,用於綜合評估模型的效能。公式為
2 * (precision * recall) / (precision + recall),需注意分母不能為零。 - 示例使用:給定具體的
tp、tn、fp和fn值,呼叫calculate_metrics函式計算評估指標,並列印結果。
透過這段程式碼,可以有效地評估分類別模型在不同場景下的效能,並根據評估指標對模型進行最佳化和改進。
工業物聯網中深度表示學習用於網路攻擊偵測之研究
效能評估指標
在機器學習領域中,評估模型效能的指標至關重要。常見的指標包括準確率(Accuracy)、精確率(Precision)、召回率(Recall)及F-measure。這些指標的計算依賴於真正例(True Positives, TP)、真反例(True Negatives, TN)、假正例(False Positives, FP)及假反例(False Negatives, FN),定義如下:
- TP:正確分類別為類別$i$的樣本數,$TP = \sum i$
- TN:正確分類別為其他類別的樣本數,$TN = \sum i$
- FP:錯誤分類別為類別$i$的樣本數,$FP = \sum i$
- FN:錯誤分類別為其他類別的樣本數,$FN = \sum i$
計算公式
準確率(Accuracy):表示整個資料集中被正確分類別的樣本比例。 $$ Accuracy = \frac{TP + TN}{TP + TN + FP + FN} $$
精確率(Precision):表示被分類別為某類別的樣本中,正確分類別的比例。 $$ Precision = \frac{TP}{TP + FP} $$
召回率(Recall):表示某類別樣本中,被正確分類別的比例。 $$ Recall = \frac{TP}{TP + FN} $$
F-measure:是精確率與召回率的調和平均值,用於綜合評估模型的效能。 $$ F-measure = \frac{2 \times Precision \times Recall}{Precision + Recall} $$
本研究針對的是三類別分類別問題,且資料存在嚴重的類別不平衡。因此,我們採用F-measure作為主要的評估指標,因為它適合用於多類別分類別和不平衡資料的評估。
實驗結果與分析
為了評估所提出的深度表示學習方法在工業物聯網(IIoT)網路攻擊偵測中的效能,我們將其與未使用表示學習的相同演算法(決策樹,DT)以及文獻中其他方法的結果進行了比較。實驗結果如表1所示。
表1:不同方法在各資料集上的效能比較
| 資料集 | 方法 | 準確率 | 精確率 | 召回率 | F-measure |
|---|---|---|---|---|---|
| Fridge sensor | 本文方法 | 100% | 1.0 | 1.0 | 1.0 |
| DT | 85% | 0.73 | 0.85 | 0.78 | |
| Modbus | 本文方法 | 99% | 0.99 | 0.99 | 0.99 |
| DT | 95% | 0.95 | 0.95 | 0.95 | |
| Light motion | 本文方法 | 95% | 0.95 | 0.95 | 0.95 |
| DT | 86% | 0.74 | 0.86 | 0.80 | |
| Garage door | 本文方法 | 100% | 1.0 | 1.0 | 1.0 |
| DT | 100% | 1.0 | 1.0 | 1.0 | |
| GPS sensor | 本文方法 | 100% | 1.0 | 1.0 | 1.0 |
| DT | 92% | 0.92 | 0.92 | 0.92 | |
| Thermostat | 本文方法 | 92% | 0.92 | 0.92 | 0.92 |
| DT | 81% | 0.78 | 0.81 | 0.79 | |
| Weather | 本文方法 | 93% | 0.93 | 0.93 | 0.93 |
| DT | 81% | 0.81 | 0.81 | 0.81 |
從表1可以看出,所提出的方法在大多數資料集上都優於其他比較方法,包括未使用表示學習的DT方法。這表明所提出的深度表示學習方法能夠有效地提升IIoT網路攻擊偵測的效能,尤其是在處理不平衡資料時。
程式碼範例
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
import numpy as np
# 定義評估指標計算函式
def calculate_metrics(y_true, y_pred):
accuracy = accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred, average='macro')
recall = recall_score(y_true, y_pred, average='macro')
f_measure = f1_score(y_true, y_pred, average='macro')
return accuracy, precision, recall, f_measure
# 載入資料集並分割為訓練集和測試集
# 這裡省略資料載入的程式碼,假設X為特徵,y為標籤
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 資料標準化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 使用決策樹進行分類別
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train_scaled, y_train)
y_pred = clf.predict(X_test_scaled)
# #### 程式碼解密:
# - 使用`train_test_split`函式將資料集分割為訓練集和測試集,用於模型的訓練和評估。
# - 使用`StandardScaler`對資料進行標準化處理,以提高模型的訓練效率和準確性。
# - 使用`DecisionTreeClassifier`建立決策樹模型,並在訓練集上進行訓練。
# - 使用訓練好的模型對測試集進行預測,並計算預測結果的評估指標。
# 評估模型效能
accuracy, precision, recall, f_measure = calculate_metrics(y_test, y_pred)
print(f"Accuracy: {accuracy:.3f}, Precision: {precision:.3f}, Recall: {recall:.3f}, F-measure: {f_measure:.3f}")
圖表翻譯:
此圖示展示了不同方法在各資料集上的效能比較,可以看出所提出的方法在大多數資料集上都取得了最佳效能。
圖表翻譯: 此圖示呈現了不同評估方法之間的比較,可以觀察到本文提出的方法具有較高的準確率、精確率、召回率及F-measure。
工業物聯網(IIoT)中深度學習應用於網路攻擊偵測之研究
摘要
隨著工業物聯網(IIoT)在工業控制系統中的廣泛應用,網路安全威脅日益增加,對關鍵基礎設施的安全保護提出了更高要求。本文綜述了當前根據深度學習的網路攻擊偵測技術在IIoT中的應用現狀,並對相關研究進行了深入分析。結果表明,深度學習技術在提升IIoT網路安全方面具有巨大潛力,但仍面臨諸多挑戰。
1. 緒論
工業物聯網(IIoT)透過將物理裝置與網路技術相結合,極大地提升了工業自動化水平和生產效率。然而,這種連線性也使得IIoT系統面臨著日益增長的網路安全威脅。傳統的工業控制系統(ICS)原本在相對隔離的環境中執行,但隨著IIoT的推廣,這些系統逐漸暴露於公共網路中,從而增加了被惡意攻擊的風險。
2. IIoT中的網路安全挑戰
IIoT系統因其複雜性和分散性,面臨著多種網路安全挑戰,包括但不限於:
- 資料注入攻擊:攻擊者透過偽造或篡改資料來幹擾系統的正常運作。
- 拒絕服務攻擊(DoS/DDoS):透過大量無效請求使系統資源耗盡,導致服務不可用。
- 惡意軟體攻擊:利用惡意程式碼破壞系統或竊取敏感資訊。
這些威脅不僅可能導致生產中斷、經濟損失,還可能對人身安全構成威脅。
3. 深度學習在IIoT網路攻擊偵測中的應用
深度學習技術因其在處理複雜資料模式識別方面的優越性,被廣泛應用於IIoT網路攻擊偵測中。常見的深度學習模型包括卷積神經網路(CNN)、遞迴神經網路(RNN)和長短期記憶網路(LSTM)等。
3.1 根據深度學習的異常檢測
異常檢測是識別偏離正常行為模式的關鍵技術。文獻中提出了多種根據深度學習的異常檢測方法,例如:
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
# 定義LSTM模型結構
model = Sequential()
model.add(LSTM(50, input_shape=(timesteps, features)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 訓練模型
model.fit(X_train, y_train, epochs=20, batch_size=32, validation_data=(X_test, y_test))
#### 內容解密:
此程式碼片段展示瞭如何使用Keras框架構建一個簡單的LSTM模型,用於二元分類別任務(正常 vs. 異常)。首先匯入必要的函式庫,然後定義模型結構,包括一個具有50個單元的LSTM層和一個輸出層。模型使用二元交叉熵作為損失函式,Adam最佳化器進行訓練,並監控訓練和測試資料集上的準確率。
4. 現有研究的侷限性與未來方向
儘管深度學習在IIoT網路攻擊偵測中展現出巨大潛力,但仍存在一些挑戰和侷限性:
- 資料稀缺與不平衡:真實的攻擊資料往往稀缺,且不同類別的樣本數量不平衡,這使得模型的訓練變得困難。
- 模型解釋性:深度學習模型通常被視為黑箱,缺乏足夠的解釋性,這在需要高度透明度的工業場景中是一個挑戰。
- 即時性要求:IIoT系統通常需要即時偵測和回應,因此模型的推理時間必須足夠短。
未來的研究方向可能包括:
- 開發更有效的資料增強技術,以緩解資料稀缺和不平衡問題。
- 提高模型的解釋性,例如透過視覺化技術或開發更具解釋性的模型架構。
- 最佳化模型結構和引數,以滿足即時性要求。
此圖示呈現了IIoT系統中不同層次的安全威脅及其對應的防禦措施。
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title IIoT 攻擊偵測深度表示學習
package "表示學習" {
component [堆疊式 Autoencoder] as stacked_ae
component [正常樣本表示] as normal_rep
component [攻擊樣本表示] as attack_rep
}
package "特徵處理" {
component [超級向量融合] as super_vec
component [PCA 降維] as pca
component [特徵提取] as feature_extract
}
package "分類偵測" {
component [決策樹 DT] as dt
component [攻擊分類] as classify
component [異常判定] as anomaly
}
package "攻擊類型" {
component [DoS/DDoS] as dos
component [掃描攻擊] as scan
component [勒索軟體] as ransomware
component [資料注入] as injection
}
stacked_ae --> normal_rep : 正常編碼
stacked_ae --> attack_rep : 攻擊編碼
normal_rep --> super_vec : 表示融合
attack_rep --> super_vec : 表示融合
super_vec --> pca : 維度降低
pca --> dt : 特徵輸入
dt --> classify : 最終決策
dos --> classify : 偵測目標
scan --> classify : 偵測目標
note right of stacked_ae
深度表示學習:
- 分離正常/攻擊
- 獨立編碼學習
- 解決資料不平衡
end note
note right of dt
偵測效能:
- 準確率提升
- 召回率改善
- F-measure 優化
end note
@enduml
圖表翻譯:
此圖表描述了IIoT系統的不同層次及其對應的安全措施。從物理層的裝置安全到應用層的安全更新,每一層都有其特定的安全需求和防禦策略。透過分層防禦,可以有效地提升整個IIoT系統的安全性。