---
# System prepended metadata

title: '文章閱讀:G-IDS: Generative Adversarial Networks Assisted Intrusion Detection System'
tags: [GAN]

---

# 文章閱讀: G-IDS: Generative Adversarial Networks Assisted Intrusion Detection System

- 作者: Md Hasan Shahriar∗, Nur Imtiazul Haque∗, Mohammad Ashiqur Rahman∗, and Miguel Alonso Jr
- 時間: 2020/6
- 原文連結: https://arxiv.org/pdf/2006.00676

---

本文針對作者提出的對抗式入侵偵測系統模型進行詳細的介紹，對於模型設計上會更有方向。

---
## 介紹

物聯網(IoT)是網路物理系統（Cyber-Physical Systems, CPS）的一個重要子領域，透過結合結執行器、電子設備、感測器、軟體和連接性等等，提升數據交換速度的新維度。然而近80%的物聯網設備容易受到各種網路攻擊，例如中間人攻擊、數據和身份盜竊、分散式拒絕服務攻擊（DDoS）、設備劫持等。

為了防止CPS被入侵，入侵檢測系統（IDS）被廣泛使用。IDS 負責檢查網路流量和系統數據中的惡意活動並發出警報，對於特定異常在系統中造成危害的確切位置和時間有適當的了解，有助於通過採取適當的行動來減輕影響，因此入侵預防系統也會隨之而來。透過入侵預防系統與入侵檢測系統同時運作，以防止攻擊者對系統造成任何損害。

雖然基於機器學習的 IDS 可以以相當高的準確性檢測系統中的異常，然而在新穎的架構，需要實施個別的IDS來觀察它們與這個複雜系統的互動，但數據不足限制了模型的訓練；此外，大多數可用的數據集都是不平衡的，與正常數據相比，各種類型的攻擊數據在大規模上不可用。

因此，為了應對這些限制，作者開發了一個生成對抗網路（GAN）輔助的IDS，旨在緩解所有這些新興技術所面臨的數據集相關限制。

### 貢獻
- 使用人工神經網絡（ANN）建模一個IDS，該系統可以在任何數據庫上進行高準確度的訓練。
- 建模了一個新興的CPS安全數據集，其中獨立的IDS無法高準確度地預測。
- 提出了一個新的安全框架G-IDS，其中GAN生成更多訓練數據以解決數據不平衡和缺失問題。通過評估獨立IDS（S-IDS）和G-IDS的性能，我們發現G-IDS在不同方面超越了S-IDS。
- 在廣泛的網路入侵檢測數據集KDD’99中評估了我們提出的框架。

![截圖 2024-08-04 下午1.20.10](https://hackmd.io/_uploads/ryGoJc3KA.png)

## BACKGROUND AND MOTIVATION
「CPS」指一種具有整合的計算和物理能力的系統，本節簡要討論CPS的安全挑戰和IDS的重要性，並簡要介紹作者在提議的解決方案中應用的生成對抗網路（GAN）。

### IDS
不同類型的IDS在CPS領域被廣泛實施。數據挖掘、機器學習、基於規則的模型、統計建模、協議模型、信號處理模型等都被用於CPS，其中基於異常的IDS最為常用。

基於異常的IDS在訓練過程中學習數據的分佈——如果新進來的數據不來自相同的分佈，它將被檢測為異常。每當系統有新的訓練數據時，它就會訓練IDS模型並隨著新型攻擊進行更新，因此基於異常的IDS的防禦機制是一個動態過程，需要更多的數據來正確訓練其模型。

除了基於異常的模型，防禦機制中還使用了各種入侵檢測技術。不同的機器學習和深度學習算法顯示出高的檢測準確率。對於分類型IDS，通常使用監督學習，而對於基於聚類的IDS，則通常使用無監督學習。此外，還使用不同的數據挖掘技術從大量數據中提取重要特徵。統計分析在歷史數據的異常檢測中也顯示出有效的性能。信號處理也被用來觀察網路的模式並檢測異常。

### GAN
GAN通過對抗性方法估計生成模型。它由兩個獨立的模型組成：生成器（G）和判別器（D）。

生成模型G估計真實數據空間x上的數據分佈p(g)。考慮一個輸入噪音變數p(z)，G的目標是生成新的對抗樣本G(z)，使其來自與x相同的分佈。另一方面，判別器模型D返回概率D(x)，即給定的樣本x來自真實數據集而非由G生成的概率。G的最終目標是最大化D錯誤預測生成數據為真實數據的概率，而D的目標則是做相反的事情。

價值函數V(G,D)定義如下：


$$
\min_G \max_D V(G, D) = \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_{z}(z)}[\log(1 - D(G(z)))]
$$

為了達到最佳解，G和D需要不斷地優化自己，以提高達到 Nash equilibrium。


### Research Motivation
訓練一個可以實際使用的 IDS 會有以下問題:
1. 除非有足夠的數據，否則IDS無法進行高準確度的訓練。
2. 正常數據點(data points)的數量遠大於異常/攻擊數據，這在訓練過程中會造成數據不平衡問題。
3. 即使有大量數據可用，由於某些缺失數據，數據空間的分佈對IDS來說可能不明顯。

因此，為了解決上述所有問題，可以使用GAN輔助的IDS框架來生成需要改進預測的所有標籤的新數據。此外，還需要一個綜合框架來處理新興CPS技術中的數據不平衡和缺失問題。

## RELATED WORK
文中提及很多前人都有將GAN應用於IDS的實現，然而那些工作中沒有處理新興CPS技術中數據不平衡和數據有限的問題，因此作者等人提出了一個綜合框架來合成訓練數據，從而提高IDS在網絡攻擊檢測中的性能。

## PROPOSED G-IDS FRAMEWORK
G-IDS框架可以分為以下四個部分:
1. Database module 
2. Intrusion detection system module 
3. Controller module
4. Synthesizer module

![截圖 2024-08-04 下午1.46.44](https://hackmd.io/_uploads/Bk8RHc2YA.png)

> 以下內容是過程，有順序之分

### Database module 
首先，Database module 從其數據收集器收集現實世界的入侵檢測數據。Database module 還可以從自身生成器獲取合成數據。所有數據都會並行和持續地積累，並以不同的標誌存儲在數據庫中以區分數據來源。

合成數據被細分為待處理和合成類別。待處理數據是未經批准的數據，可以根據 Controller module 的未來決定來接受或刪除。另一方面，標記為合成的數據已經過驗證，並永久保留在數據庫中。我們考慮了一個混合數據庫，其中僅包含原始和合成數據樣本。

### Intrusion detection system module
Intrusion detection system module 中的機器學習模型在數據庫中可用的數據上進行兩次訓練。第一次僅在混合數據集上進行訓練，而另一個模型則在混合數據集和待處理數據集上進行訓練。

Controller會根據評估結果評估這兩個IDS模型的性能，決定是否接受/拒絕數據庫中的待處理樣本。如果模型在這些樣本上進行訓練後顯示更好的結果，則接受待處理樣本並將其作為合成數據附加到數據庫中；否則待處理樣本會被拒絕並從數據庫中移除。

### Controller module
之後，Controller module 衡量每個類別的檢測率，並列出那些IDS性能低於某個閾值的類別。

### Synthesizer module

對於檢測較弱的類別，數據樣本會被送往數據 Data Synthesizer module以生成更多樣本。Data Synthesizer module包括一個GAN，它通過學習輸入數據的分佈來生成新樣本。生成潛在樣本後，Data Synthesizer module 將其以待處理標誌送入數據庫模塊。整個過程會重複，直到IDS模型的標籤性能對 Controller 滿意為止。

> algo. 1 提供了完整框架的綜合總結。

## G-IDS TECHNICAL DETAILS
### Database module (DM)
DM包含兩個重要元素：數據收集器和數據庫。
- 數據收集器 (DC)：DC通過捕獲網絡數據包來收集現實世界的網絡數據。數據包在進入數據庫之前會進行處理。數據包捕獲應用程序（例如，Wireshark）在DC內運行，以收集數據包並提取其中的特徵。DC的職責分為兩種類型：
    - 數據收集：數據收集是基於網絡的IDS的初始階段，如圖2所示。CPS的傳感器和執行器之間的通信會產生大量網絡數據，其中大部分包含正常/良好的數據。然而，對手可能會嘗試入侵傳感器或通信渠道以發起網絡攻擊。因此，為了使系統對任何類型的網絡攻擊具有韌性，DC與防火牆協作以標記這些數據包。收集後，DC對這些數據包進行一些預先確定的預處理，以使其可以輸入到機器學習模型中。
    - 數據預處理：由於網絡數據包分析器從網絡中收集了大量數據，因此需要進行一些預處理以從這些數據包中提取信息。在作者的模型裡需考慮:
        - Encoding：標籤編碼是一種編碼數據集中分類值的技術。它將每個特徵的每個類別轉換為0到n-1之間的值，其中n是該特徵的不同類別數量。
        - Feature Scaling：特徵縮放是一種用於標準化特徵範圍的方法。包含具有不同幅度、單位和範圍的特徵的數據集，可能會對使用歐氏距離進行計算的各種機器學習算法構成重大問題。為了解決這個問題，我們應用標準縮放來標準化特徵。
        - Feature Extraction：特徵提取（也稱為特徵降維）將高維空間重新建模為較少的維度，其中轉換可以是線性的或非線性的。這有助於消除冗餘變量，使模型更簡單。
- 數據庫 (DB)：數據庫存儲來自DC和DSM的收集數據，包括標籤和相應的標記。每個標籤代表數據的類型（即正常/攻擊）。在攻擊數據的情況下，標籤顯示攻擊的類型。每個樣本的標記位指示該數據的狀態：
    - 原始 (Original)：從DC收集的數據被標記為原始。
    - 待處理 (Pending)：如第IV節所述，DSM生成更多數據以提高IDS的性能。然而，由於GAN的隨機性，每批生成的數據不保證能改善IDS的性能。因此，生成的數據最初被標記為待處理，控制器會進一步檢查。
    - 合成 (Synthetic)：如果待處理數據有助於改善IDS的性能，控制器會將其標記從待處理變為合成，並將其永久存儲在數據庫中。當待處理數據轉換為合成數據時，它們成為混合數據集的一部分。

下列圖表顯示資料在 encoding 之前的狀況

![截圖 2024-08-04 下午2.06.26](https://hackmd.io/_uploads/By-u592FC.png)

### Intrusion detection system module (IDSM)
使用的是多層 ANN 模型。該模型由 4 層組成，其中輸入層和輸出層分別有 20 和 10 個節點，兩個隱藏層均由 50 個節點構成。IDS 被訓練兩次，以計算以下兩個性能指標，這些指標有助於評估合成數據：

1. 未包含待處理數據的性能指標 (Performance metric without pending data, $PM_H$)
    - 在從數據收集模塊收集數據後，IDS 在僅包含原始和合成數據的混合數據庫上訓練模型。然後，IDS 評估標籤級別的性能指標並將其存儲在 $PM_H$ 中，這是模塊當前最佳的性能。
2. 包含待處理數據的性能指標 (Performance metric with pending data, $PM_P$)
    - 在獲得標記為待處理的合成數據後，IDS 會在包括待處理數據的混合數據庫上重新訓練模型，以評估待處理數據點的額外貢獻。性能指標被存儲在 $PM_P$ 中。


這兩個評估指標都提供給控制器模塊，控制器基於這些指標對待處理數據做出進一步決策。

### Controller module(CM)

控制器模塊同時執行兩項重要任務：

1. **向數據合成模塊 (DSM) 發送數據合成請求**：首先，控制器分析 $PM_H$ 並與 $PM_{TH}$（性能指標的最小閾值）進行比較。任何單個類別的性能分數低於 $PM_{TH}$ 的，將被視為弱類別，需要 DSM 的幫助來生成新的樣本以提高檢測率。每次 CM 會針對一個標籤發送請求，並對所有其餘弱類別進行類似操作。
2. **評估來自 DSM 的待處理數據請求**：CM 分析評估指標 $PM_P$ 和 $PM_H$ 以更新數據庫。通過比較這兩個指標，CM 建議數據庫刪除特定標籤的待處理樣本，如果這些樣本的性能指標下降。另一方面，如果性能得到提升，CM 建議接受待處理數據，將其標記更新為合成數據。

### Data Synthesizer Module (DSM)
數據合成模塊 (DSM) 的核心是一個基於 GAN 的模型，由兩個機器學習模型組成：

1. 生成器 (G)
2. 判別器 (D)


控制器選擇一個類別，並將整個數據庫發送到 DSM，標記該類別為 1，其他類別為 0。這樣，對於 DSM，它變成了一個二分類模型，並在成功訓練後生成更多樣本。

作者使用四層人工神經網絡 (ANN) 模型來建立生成器和判別器。每個隱藏層有 50 個節點。判別器的輸入層和輸出層分別有 20 和 1 個節點。此外，生成器以噪聲（latent space）作為輸入，並生成人工樣本。因此，生成器的輸入層和輸出層分別有 5 和 20 個節點。

一旦 GAN 訓練完成，它會生成新的樣本，並要求數據庫添加這些樣本，標記為待處理（pending）標籤。


## EVALUATION METHODOLOGY

### 數據預處理
1) encoding：為了處理三個分類輸入特徵（即協議類型、服務和標誌）以及一個輸出特徵，我們通過應用標籤編碼技術來編碼相應的數據。

2) Feature Scaling：特徵縮放是一個關鍵步驟，用於處理局部最優和偏向特定特徵的偏斜。它還有助於機器學習基於 IDS 的更快訓練。我們應用標準縮放，這會將值替換為其 Z 分數。數據點的 Z 分數表示其與平均值的偏差。z-score $z_i$ 的計算公式如下：
$$
z_i = \frac{x_i - x_{\text{mean}}}{x_{\text{std}}}
$$
    - $x_i$ 是每個特徵的值
    - $x_{\text{mean}}$ 是該特徵的平均值
    - $x_{\text{std}}$ 是該特徵的標準差
    >這個公式將數據點的值轉換為標準差單位，使得不同特徵的數據可以在相同的尺度上進行比較。

3) 特徵提取：為了減少特徵數量，作者使用基於主成分分析（PCA）的特徵提取方法。
    > PCA 是一種無監督、非參數的統計程序，它計算一組新的變數（“主成分”），並將數據表示為這些新變數的形式，並使用正交變換將可能相關的變數觀察集轉換為一組新的觀察值。在數學上，PCA 通過稱為特徵分解的線性代數函數進行計算，這是一種將矩陣分解為標準形式的過程。
    
    為了選擇主成分的數量，作者使用解釋變異比率，這表示應用 PCA 後保留的信息量。總變異是所有單個主成分變異的總和。作者對所有原始 42 個特徵使用 PCA，並將維度縮小為 20 個元素，保持總解釋變異(explained variance)為 91.14%。

### data modeling
- 選擇了5000個樣本用於訓練，其餘的數據則用於測試
    - 模擬一個新興的CPS
- 從所有可用的類別中隨機選擇數據
    - 為了解決數據集的不平衡、隨機分割數據集會導致某些標籤在訓練數據集中丟失

### 評估

1. **精確度 (Precision)**: 精確度是正確預測為正類的觀察數量與總正類觀察數量的比率。
2. **召回率 (Recall)**: 召回率是正確預測為正類的觀察數量與總實際正類觀察數量的比率。
3. **F1 分數 (F1 Score)**: F1 分數是精確度和召回率的加權平均數，它考慮了假陽性和假陰性。在假陰性和假陽性的分佈不均的情況下，F1 分數能更好地反映模型的性能。
4. **混淆矩陣 (Confusion Matrix)**: 混淆矩陣是一個表格，用來呈現每個類別的正確預測和錯誤預測的數量。它清楚地顯示了預測結果和分類錯誤的類型（例如，真正例、真負例、假陽性、假陰性）。因此，可以通過這四個重要指標來分析IDS的性能，如表 IV 所示。

## EVALUATION RESULTS AND DISCUSSION
### A. 基於訓練數據集大小的評估

為了調查S-IDS(standalone IDS)和G-IDS的性能，整個訓練數據集分成五部分。作者取20%、40%、60%、80%和100%的訓練數據來觀察隨著數據集增長，GAN的貢獻。

1) **標籤級別評估：** 首先，我們在沒有GAN輔助的情況下訓練S-IDS模型，這在某些特定標籤的預測中效果良好。然而，由於對於這些特定標籤的訓練樣本數量不足，S-IDS在準確預測一些類別上存在困難。
    
    如圖3(a)所示，在使用20%的數據作為訓練數據時，S-IDS對於標籤5的F1分數約為0.70，而隨著訓練數據集的增長，這一分數逐漸上升到0.78。然而，使用GAN生成數據和原始數據一起訓練G-IDS可以大幅提升其性能。如圖所示，G-IDS在使用20%的數據作為訓練數據時，F1分數達到0.90，並在40%時達到0.96。從圖中可以明顯看出，G-IDS在攻擊檢測中的表現遠優於S-IDS。至於G-IDS在60%的數據時F1分數的下降是因為GAN以隨機噪聲作為輸入。
    
    類似的改進也在標籤6和9中觀察到，分別顯示在圖3(b)和圖3(c)中。雖然大多數標籤的預測都有所改善，但我們僅以這三個標籤作為示例。
![截圖 2024-08-04 下午2.46.48](https://hackmd.io/_uploads/Hk2yEinY0.png)
![截圖 2024-08-04 下午2.48.43](https://hackmd.io/_uploads/SJs84inFR.png)
2) **整體評估：** 使用宏F1分數作為度量指標，以更好地反映模型在不同標籤上的性能。

    圖3(d)顯示了S-IDS和G-IDS在不同訓練數據大小下對相同測試數據的宏F1分數。隨著訓練數據從20%增加到100%，S-IDS的宏F1分數從0.82提高到0.87。另一方面，由於在訓練中也考慮了GAN生成的合成數據，G-IDS的性能提高了約4%。對於完整的訓練數據集，S-IDS的最大宏F1分數為0.87，而G-IDS則至少能達到0.91。
    
    表III總結了S-IDS和G-IDS在使用40%原始數據訓練時的性能對比。前面三列顯示了S-IDS在每個類別上的性能指標。如果任何類別的F1分數低於我們設定的閾值（此例中為0.98），控制器會要求數據合成模塊為該特定類別生成更多合成數據，以提高IDS的性能。
    ![截圖 2024-08-04 下午2.51.09](https://hackmd.io/_uploads/SyCJBohFA.png)
    
    最初，S-IDS 在標籤 2、5、6 和 9 上的 F1 分數分別為 0.85、0.71、0.55 和 0.33。這些標籤被視為弱標籤，並被送到數據合成模塊 (DSM) 生成更多的訓練樣本。GAN 會針對這些標籤進行訓練，然後為每個標籤生成 25% 的新樣本。一旦控制器驗證這些新生成的合成樣本，它們會被添加到現有的混合數據集中。更新後的混合數據集會用來重新訓練 IDS，整個過程會持續進行。

    表 III 的第二部分顯示了 G-IDS 在混合數據集上的性能。從結果中，我們可以看到大多數類別的檢測率都有所提升。具體來說，標籤 2、5、6 和 9 的 F1 分數分別提高至 0.93、0.96、0.68 和 0.41。儘管 GAN 天然存在生成噪聲或意外數據的不可預測性，這些數據可能與其他標籤的分佈重疊，但控制器模塊會拒絕這類不良數據，保持 G-IDS 的性能持續改進。


### B. 訓練穩定性改進的評估

除了提高對不同攻擊的最終檢測率外，GAN 還增強了 IDS 訓練過程的穩定性。圖 4 針對四個隨機目標，顯示了前 100 個時期模型在訓練過程中的性能。
![截圖 2024-08-04 下午2.55.28](https://hackmd.io/_uploads/S15eIjntA.png)

從圖中可以清楚地看出，S-IDS 在訓練模型和使 F1 分數達到最終值的過程中需要更多的訓練時期。對於 S-IDS，大多數標籤需要大約 50 到 100 個時期或更多才能穩定下來。另一方面，G-IDS 在訓練穩定性方面表現良好。幾乎所有的目標都在大約 25 個時期內達到穩定。因此，G-IDS 的訓練過程比 S-IDS 更加穩定。由於 GAN 生成的樣本填補了數據分佈中的空白，IDS 更容易學習訓練數據的分佈並達到穩定。

總結來說，G-IDS 通過平衡不平衡數據集以及生成缺失數據來提高性能。

## CONCLUSION AND FUTURE WORK
在不平衡數據集或在數據稀少的嶄新CPS領域中，G-IDS框架即使在最初僅用少量原始數據訓練的情況下，能比獨立的IDS更準確地預測。然而G-IDS框架的集中式、計算密集型和耗時性質需要進一步的研究。

在未來的工作中，作者計劃專注於創建一個動態、高效且輕量級的去中心化算法，將其實現在IoT領域的邊緣設備上。