隨著工業物聯網 (IIoT) 的快速發展,工業控制系統 (ICS) 的網路安全風險也日益加劇。傳統的資安防禦方法,例如根據簽名和異常的偵測,在面對日新月異的攻擊手法時,顯得力不從心。深度學習技術的出現,為 IIoT 網路攻擊偵測提供了一種更有效的解決方案。藉由分析大量的網路流量資料,深度學習模型可以學習到複雜的攻擊模式,進而更精確地識別潛在威脅。同時,FPGA 的硬體加速能力,可以大幅提升深度學習模型的運算效率,滿足 IIoT 環境下對於即時性偵測的需求。本文將探討如何利用深度學習技術,例如自動編碼器和 LSTM,結合 FPGA 的硬體優勢,構建更強健的 IIoT 網路攻擊偵測系統。

工業物聯網中機器學習的角色:根據FPGA的深度表示學習

1. 簡介

網路攻擊是試圖暴露、更改、破壞、竊取或未經授權存取資產的行為,主要針對電腦資訊系統、基礎設施、電腦網路或個人電腦。工業4.0將工業控制系統(ICS)網路連線到網際網路,定義了工業物聯網(IIoT),使得這些系統可以從網際網路上被存取,也成為了攻擊者的新目標。根據SonicWall的安全報告,2019年檢測到了3430萬次IoT惡意軟體攻擊,相比2018年增加了4.8%。

最初,ICS的設計目的是透過減少手動監控、控制和管理來提高效能、可靠性和安全性。傳統上,ICS的安全性是由物理隔離或所謂的「空氣隔離」來提供的。然而,隨著工業4.0的引入,ICS資訊透過區域網路和網際網路傳輸到企業中的複雜應用程式,這使得單純依靠隱蔽來提供安全已經不再是一個有效的解決方案。

2. 工業物聯網的安全挑戰

雖然IoT和通訊網路的整合提高了ICS的效率和敏捷性,但也顯著增加了攻擊面和遭受網路攻擊的可能性。根據ICS電腦緊急應變小組(ICS-CERT)的報告,從2009年到2016年,報告的ICS事件數量顯著增加。例如,Stuxnet病毒在2010年攻擊了伊朗的核濃縮離心機,對裝置造成了嚴重損害。2015年,一種名為BlackEnergy的惡意軟體被用來攻擊烏克蘭的電力網,導致工業停電,影響了約23萬人。

除了網路層,IIoT網路的物理部分也可能成為網路攻擊的目標。IIoT中的作業技術(OT)裝置沒有內建安全功能,因為它們被設計安裝在一個不會傳遞任何威脅的網路上。然而,隨著資訊技術(IT)和OT網路的融合,裝置現在面臨著許多型別的威脅。例如,攻擊者可以操縱物理層裝置(如感測器或執行器)來使系統不穩定。因此,需要系統級的安全方法來分析物理行為並維護系統的可靠執行。

3. 深度表示學習在工業物聯網中的應用

在IIoT中,IT安全解決方案已經成熟,但由於各種原因無法直接在OT環境中實施。OT安全目標優先考慮可用性、完整性和機密性。為瞭解決這些挑戰,研究人員開始探索使用機器學習技術,特別是深度表示學習,用於IIoT中的網路攻擊檢測。

3.1 FPGA在深度表示學習中的角色

現場可程式化門陣列(FPGA)是一種半導體裝置,可以在製造後由客戶或設計者組態。FPGA在實作深度表示學習模型方面具有高度的靈活性,可以根據特定的應用需求進行最佳化。在IIoT中,FPGA可以用於加速機器學習模型的訓練和推斷過程,從而提高網路攻擊檢測的效率和準確性。

# 使用FPGA加速深度表示學習的範例程式碼
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 定義模型架構
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(784,)))
model.add(Dense(32, activation='relu'))
model.add(Dense(10, activation='softmax'))

# 編譯模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 使用FPGA加速模型訓練
# 這裡需要呼叫特定的FPGA加速函式庫,例如Xilinx的DNNDK
# model.fit(X_train, y_train, epochs=10, batch_size=128)

#### 內容解密:

上述程式碼展示瞭如何使用Keras定義一個簡單的神經網路模型。在實際應用中,可以使用FPGA加速函式庫(如Xilinx的DNNDK)來加速模型的訓練過程。這需要將模型轉換為FPGA可執行的格式,並呼叫相應的API進行加速。

工業物聯網(IIoT)安全挑戰與深度學習偵測方法

工業控制系統(ICS)與資訊科技(IT)安全優先順序的差異

工業控制系統(ICS)與工業物聯網(IIoT)的安全需求與傳統資訊科技(IT)環境有著本質上的不同。傳統IT系統優先考慮的順序是可用性、完整性、機密性,而工業控制系統則相反,優先順序為機密性、完整性、可用性。這種差異源於工業控制系統對於物理過程的嚴格控制需求,以及對於環境和人身安全的高度重視。

工業物聯網(IIoT)安全挑戰

由於工業物聯網系統與物理環境的緊密耦合,網路攻擊可能導致致命且具有環境破壞性的後果。因此,工業物聯網需要極為強健的安全措施來偵測和防止入侵。傳統IT安全解決方案雖然成熟,但由於工業控制系統與IT系統之間的差異,這些方案並不足以完全應對工業物聯網的安全挑戰。

工業控制協定的安全漏洞

大多數工業控制協定在設計之初並未考慮嚴格的安全需求,這些協定假設將在安全的網路環境中使用,因此缺乏安全的存取控制。此外,舊版本的工業網路協定,如監控控制和資料擷取(SCADA),存在常見的安全問題,例如缺乏身份驗證、資料傳輸過程中缺乏保護措施等。這些協定原本設計用於隔離的、自成體系的系統或區域,但在公共網路(如廣域網)中使用時需要特別的考量。

工業物聯網安全研究趨勢

根據Web of Science的文獻分析,自工業4.0概念提出以來,關於工業控制系統和工業物聯網安全的研究數量顯著增加,從2011年的約30篇論文增加到2019年的約300篇。這表明隨著網路與工業控制系統的整合,安全在該領域的重要性大大提高。

深度學習在工業物聯網攻擊偵測中的應用

由於工業物聯網網路中的資產數量龐大,特徵數量也非常高,使得手動和傳統的統計分析變得耗時且幾乎不可能。根據機器學習(ML)的技術可以透過從資料中提取抽象模式來自主分析高維資料。

每年關於ICS/IIoT網路安全論文的數量

此圖示顯示了每年發表的ICS/IIoT網路安全相關論文的數量變化趨勢。 圖表翻譯: 該圖表呈現了自2001年以來每年發表的與ICS/IIoT網路安全相關的論文數量,可以觀察到在工業4.0概念提出後,研究數量顯著增加,反映了該領域日益增長的安全關注。

工業控制系統/工業物聯網(ICS/IIoT)中的深度表示學習用於網路攻擊偵測

2 網路攻擊偵測

網路威脅偵測主要回答「傳入的封包或流量是否為已知的(之前見過的)網路攻擊?」這樣一個問題。為了減輕網路攻擊對工業控制系統(ICS)的影響,文獻中提出了包括根據簽名和根據異常的偵測系統在內的攻擊偵測技術[19–23]。根據簽名的方法使用資料函式庫和固定的簽名,這使得它們在偵測未知或新攻擊時不可靠[24–26]。另一方面,根據異常的方法旨在識別流程模式或習慣,從而提高處理任何新的或意外的入侵的能力[27]。

傳統上,攻擊偵測已被廣泛用作防止網路攻擊於網路物理系統(CPS)中的一個有用的安全工具。混合攻擊偵測結合了根據簽名和根據異常的偵測,它結合了根據簽名方法對已知攻擊的準確性和根據異常系統的泛化能力[23]。儘管這些方法有效地偵測了異常活動,但由於網路頻繁升級導致不同的入侵偵測系統(IDS)型別[28],它們並不可靠。除此之外,傳統的攻擊偵測技術主要依賴於網路後設資料分析,包括IP地址、傳輸埠、流量持續時間和封包間隔。

圖表翻譯:

圖3顯示了每年與攻擊偵測、威脅偵測或入侵偵測相關的論文數量,以及與IIoT和ICS攻擊偵測、威脅偵測或入侵偵測相關的論文數量(來源:Web of Science)。從圖中可以看出,這些領域的研究呈現出增長趨勢,表明學術界對這些主題的興趣日益增加。

為了克服這些問題,人們提出了根據機器學習(ML)的攻擊偵測。此外,攻擊偵測還可以根據根據網路或根據主機的方法進行分類別[29]。監督式聚類別[26]、單類別或多類別支援向量機(SVM)[30, 31]、模糊邏輯[28, 32, 33]、深度神經網路(DNNs)[29, 32, 34]和深度學習[35]等都是常用於網路流量攻擊偵測的技術。這些技術分析即時流量資料以迅速偵測惡意攻擊。

然而,只考慮網路和主機資料的攻擊偵測可能會無法偵測到複雜的攻擊和內部利用。無監督模型必須在不依賴詳細瞭解漏洞的情況下監視系統作為補充。一般來說,具有足夠知識和時間的複雜攻擊者可以輕易繞過甚至是強壯的攻擊偵測[15]。

根據機器學習的攻擊偵測技術的工作原理是根據一個不斷演變和學習新漏洞的移動目標,而不是識別攻擊簽名或網路的正常模式[23, 36]。文獻中有不同的機器學習演算法可用於偵測損害資料完整性[32, 37, 38]、可用性[39]和機密性[33]的網路攻擊。

2016年,Shang等人[36]提出了一種根據單類別SVM(OCSVM)的模型來從一系列Modbus功能程式碼中偵測攻擊。一年後,Ashfaq等人[40]提出了一種模糊神經網路方法進行攻擊偵測。他們沒有在ICS資料上測試他們的方法,但他們提出的方法在半監督環境中工作。[41]的研究使用了DNN演算法來偵測電力系統中的虛假資料注入攻擊,這是一種ICS。他們在兩個資料集上測試了他們提出的方法,並報告了91.80%的準確度。

內容解密:

上述段落描述了不同研究人員如何使用機器學習技術來改進工業控制系統的安全性。例如,使用單類別SVM來檢測Modbus協定中的異常,或者使用深度神經網路來檢測電力系統中的虛假資料注入攻擊。這些研究顯示了機器學習在提高ICS安全性方面的潛力。

程式碼範例

# 使用Scikit-learn函式庫實作單類別SVM
from sklearn import svm
import numpy as np

# 生成一些示例資料
np.random.seed(0)
data = np.r_[np.random.randn(50, 2) + [2, 2], np.random.randn(50, 2) + [-2, -2]]

# 建立單類別SVM模型
clf = svm.OneClassSVM(kernel='rbf', gamma=0.1, nu=0.1)
clf.fit(data)

# 使用模型進行預測
y_pred = clf.predict(data)
print(y_pred)

內容解密:

此程式碼範例展示瞭如何使用Scikit-learn函式庫在Python中實作單類別SVM。首先,我們生成了一些示例資料,然後建立了一個單類別SVM模型,並對資料進行了擬合。最後,我們使用模型對資料進行預測,以識別異常值。在ICS/IIoT安全領域,這種技術可以用於檢測異常行為,從而提高安全性。

深度學習在工業物聯網中的網路攻擊偵測應用

3 機器學習(ML)

本章節將介紹深度神經網路(DNN)及自動編碼器(autoencoder),作為無監督的DNN。同時,也將介紹在實驗中使用的分類別方法。

3.1 深度神經網路(DNN)

過去,大多數機器學習和訊號處理技術都採用淺層架構[53]。這些架構通常包含最多一或兩層的非線性特徵轉換。淺層架構的例子包括高斯混合模型(GMMs)、線性或非線性動態系統、條件隨機場(CRFs)、最大熵(MaxEnt)模型、支援向量機、邏輯迴歸、核迴歸、多層感知器(MLP)等。

深度神經網路方法嘗試以階層方式學習特徵,讓更高層次的特徵由更低層次的特徵組合而成[56, 57]。自動學習多個層次的特徵,使模型能夠直接從資料中學習更複雜的系統,而無需依賴人工設計的特徵[57, 58]。

機器學習方法的效能很大程度上取決於資料表示(或特徵)的選擇。因此,佈署機器學習演算法的實際工作大多投入於設計預處理流程和資料轉換,以表示支援有效機器學習的資料。這種特徵工程是必要的,但卻是勞動密集型的。它凸顯了當前學習演算法無法從資料中提取和組織判別資訊的弱點。特徵工程是一種利用人類智慧和先驗知識來彌補這種弱點的方法。為了擴大機器學習的適用範圍並簡化其應用,減少對特徵工程的依賴將是非常理想的,這樣就能更快地構建新的應用,更重要的是,向人工智慧(AI)邁進一大步。這些演算法被稱為表示學習(也稱為深度學習或特徵學習)[59]。

深度學習透過引入以其他更簡單表示形式表達的表示,解決了表示學習中的核心問題。深度學習使電腦能夠從更簡單的概念中構建複雜的概念[59]。

3.1.1 自動編碼器

自動編碼器是一種三層神經網路,訓練用於將其輸入複製到其輸出。在內部,它有一個隱藏層h,描述了用於表示輸入的程式碼。該網路可以被視為由兩部分組成:編碼器函式h(見公式1)和解碼器,後者產生重建$\hat{x}$。這種架構如圖4所示。如果自動編碼器僅僅學會設定$g(f(x)) = x$,那麼它並不是特別有用。相反,自動編碼器被設計為無法正確地學習複製。通常,它們在某些方面受到限制,只能近似地複製,並且只能複製與訓練資料相似的輸入。因為模型被迫優先考慮輸入的哪些方面應該被複製,所以它通常會學到資料的有用屬性[60]。

如前所述,每個自動編碼器由兩部分組成:編碼器和解碼器。公式(1)表示自動編碼器的編碼器函式。

h = f(x) = \sigma(W_1x + b_1)

其中$\sigma$是sigmoid函式($\sigma(x) = \frac{1}{1 + e^{-x}}$),用於使函式非線性化。

公式解密:

  • $h = f(x)$:表示編碼器的輸出,即輸入$x$經過編碼後的結果。
  • $\sigma$:sigmoid啟用函式,將結果對映到0和1之間,增加非線性。
  • $W_1$和$b_1$:分別是權重矩陣和偏置向量,是編碼器中的可訓練引數。

同時,公式(2)顯示瞭解碼器函式。

\hat{x} = g(h) = \sigma(W_2h + b_2)

公式解密:

  • $\hat{x} = g(h)$:表示解碼器的輸出,即重建後的輸入$x$。
  • $W_2$和$b_2$:分別是解碼器中的權重矩陣和偏置向量,也是可訓練引數。
  • 整體作用:透過最小化重建誤差,自動編碼器學會了資料的有用表示。

傳統上,自動編碼器被用於降維或特徵學習。最近,自動編碼器與潛在變數模型之間的理論聯絡使自動編碼器成為生成建模和表示學習的前沿技術[57, 58]。自動編碼器可以捕捉訓練資料中最顯著的特徵。學習過程被描述為最小化損失函式,如公式(3)所示[61]。

L(x, \hat{x}) = L(x, g(f(x)))

公式解密:

  • $L(x, \hat{x})$:表示輸入$x$和重建$\hat{x}$之間的損失函式。
  • 損失函式的作用:指導模型最佳化,使得重建誤差最小化,從而學到有效的資料表示。

圖5顯示了一個具有編碼器和解碼器層的自動編碼器模型,該模型將資料編碼為新的表示,並從新的表示中重建資料。

@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam rectangleBackgroundColor #F5F5F5
skinparam rectangleBorderColor #333333
skinparam arrowColor #333333

title 公式解密:

rectangle "編碼器" as node1
rectangle "解碼器" as node2

node1 --> node2

@enduml

圖表翻譯: 此圖展示了自動編碼器的基本結構,包括輸入層、隱藏層(編碼器)和輸出層(解碼器)。輸入$x$透過編碼器對映到隱藏層$h$,再透過解碼器重建出$\hat{x}$。這個過程展示了自動編碼器如何學習資料的有效表示,並透過最小化重建誤差來最佳化模型引數。

無監督深度表示學習在工業物聯網入侵偵測中的應用

工業物聯網(IIoT)的安全性是現今的一個重要議題。隨著物聯網技術的發展,工業控制系統(ICS)與網路的整合日益緊密,使得ICS面臨著越來越多的網路威脅。因此,發展有效的入侵偵測系統對於保護IIoT的安全至關重要。

自動編碼器(Autoencoder)

自動編碼器是一種無監督的神經網路,能夠學習資料的壓縮表示。它由編碼器(Encoder)和解碼器(Decoder)兩部分組成。編碼器將輸入資料對映到一個低維度的潛在空間,而解碼器則試圖從這個潛在空間重構原始輸入資料。

堆積疊式自動編碼器(Stacked Autoencoder)

堆積疊式自動編碼器是一種多層的自動編碼器,能夠學習更加複雜和非線性的資料表示。如圖所示,資料首先被編碼到第一個潛在空間 $h_1$,然後進一步被編碼到更抽象的表示 $h_2$。接著,透過解碼器層重構出 $\hat{h}_1$,並最終重構出輸入資料 $\hat{x}$。

此圖示顯示了一個具有兩個編碼器和解碼器的堆積疊式自動編碼器架構。

圖表翻譯: 此圖示呈現了一個堆積疊式自動編碼器的架構,包括兩個編碼器和兩個解碼器。資料透過編碼器被壓縮到更抽象的表示,然後透過解碼器被重構回原始輸入資料。

長短期記憶網路(LSTM)

長短期記憶網路是一種特殊的遞迴神經網路(RNN),能夠學習長期依賴關係。LSTM被設計用來避免傳統RNN中的梯度消失問題。

傳統機器學習演算法

除了深度學習方法外,本研究還探討了幾種傳統的機器學習演算法,包括:

決策樹(DT)

決策樹是一種根據樣本特徵進行分類別的演算法。它透過遞迴地將資料分割成子集來建立一棵樹狀結構。

K最近鄰演算法(KNN)

K最近鄰演算法是一種根據距離的分類別演算法。它透過計算測試樣本與訓練樣本之間的距離來進行分類別。

隨機森林(RF)

隨機森林是一種整合學習演算法,它結合多個決策樹來提高分類別效能。

支援向量機(SVM)

支援向量機是一種二元分類別演算法,它透過在特徵空間中找到一個最佳超平面來分隔不同類別的樣本。

樸素貝葉斯(NB)

樸素貝葉斯是一種根據貝葉斯定理的機率模型,它假設特徵之間相互獨立。

在IIoT資料上應用機器學習的挑戰

在IIoT資料上應用機器學習面臨著多個挑戰,包括:

  1. 維度災難:IIoT資料通常具有很高的維度,需要進行特徵工程來降低維度。
  2. 資料不平衡:IIoT資料集通常存在類別不平衡的問題,即某些類別的樣本數量遠遠少於其他類別。

為瞭解決這些挑戰,本研究提出了一種無監督的深度表示學習方法,能夠在不改變、生成或刪除樣本的情況下處理不平衡的資料集。

提出的根據機器學習的入侵偵測方法

本研究提出了一種根據無監督深度表示學習的入侵偵測方法,主要包括四個步驟:

  1. 資料工程:對原始資料進行預處理,包括刪除無用的特徵和標準化資料。
  2. 資料分割:將預處理後的資料分割成訓練集和測試集。
  3. 模型訓練:使用堆積疊式自動編碼器對訓練資料進行無監督學習,以獲得更好的資料表示。
  4. 模型評估:使用多種機器學習分類別演算法對學習到的表示進行評估。

資料工程

在資料工程階段,首先分析了原始資料,刪除了那些具有常數值或缺失值過多的特徵。同時,對資料進行了標準化處理,以避免某些特徵因其尺度較大而對機器學習模型產生偏差。

# 標準化函式
def normalize_data(data):
    max_value = max(data)
    min_value = min(data)
    return [(x - min_value) / (max_value - min_value) for x in data]

內容解密: 上述程式碼實作了資料標準化的功能,將原始資料縮放到0到1之間。這樣可以避免不同特徵之間的尺度差異對機器學習模型的影響。其中,max_valuemin_value 分別代表了原始資料中的最大值和最小值,透過這兩個值可以計算出標準化後的資料。