基于改进人工蜂群和支持向量机算法的模糊入侵检测系统
立即解锁
发布时间: 2025-09-01 01:59:04 阅读量: 11 订阅数: 34 AIGC 


模糊逻辑与智能系统前沿
# 基于改进人工蜂群和支持向量机算法的模糊入侵检测系统
## 1. 引言
入侵检测系统(IDS)用于收集网络或计算机上发生的事件,试图发现恶意攻击或违规行为,并向系统管理员等相关人员发出警报。IDS 主要分为两类:基于主机的 IDS 和基于网络的 IDS。前者部署在单个系统上,检查所有数据和事件中的异常活动;后者则检查通过接入点的所有网络流量。
检测技术也有两种:基于特征的检测和基于异常的检测。基于特征的检测使用过去观察到的模式数据库,尝试将当前事件与之匹配以发现入侵;基于异常的检测则测量正常活动,显著偏离正常的活动将触发警报。本文主要关注基于网络的异常检测 IDS。
异常检测的优势在于能够检测到从未注册过的攻击,但通常会产生大量误报,这些误报源于未知但无害的网络行为,过多的警报会给调查工作带来巨大障碍。此外,网络活动几乎难以分类,因为恶意和正常的网络流量之间往往没有简单的区分。例如,单个源多次发送相同的数据包,可能是分布式拒绝服务攻击的开始,也可能只是用户多次重新加载资源。因此,传统的将数据包简单分为正常活动或攻击的分类系统很难成功,而基于模糊工程的方法可能更有效,它能在一个范围内对数据包进行分类,更能反映网络流量的实际情况。
模糊工程基于模糊逻辑而非布尔逻辑,可以适应不同的结构。在模糊集合中,每个对象对于集合都有一个隶属度,隶属度是 0 到 1 之间的实数,0 表示对象完全不属于该集合,1 表示对象绝对属于该集合,这种方式更能反映现实世界的模糊性。
## 2. 方法
为了创建自己的 IDS,采用了设计科学研究方法,该方法通过三个周期来创建一个基于模糊的 IDS:
1. **相关性周期**:为了创建相关的应用场景,将研究重点限制在网络 IDS 上。
2. **严谨性周期**:为了全面了解当前的研究现状,创建了一个分类法,并比较了不同的方法。
3. **设计周期**:使用在 IDS 中已被证明有效的算法的模糊版本来设计模型。
## 3. 文献综述
在基于异常的网络入侵检测方面已经有很多研究。以下是对一些近期 IDS 的比较。
### 3.1 寻找有前景的 IDS 架构
被审查的论文提出的架构差异很大。通过分类法开发方法剖析这些模型,发现成功的 IDS 主要有三个重要部分:
- **特征提取和归一化**:在特征提取过程中,对每个特征值进行预处理,使其能够被机器解释,对于连续频谱上的特征进行归一化处理。
- **特征选择**:为了提高检测率、降低计算负载和数据存储需求,并非所有特征都会用于分类阶段。
- **分类算法**:对预处理后的样本进行分类。
为了创建分类法,研究了所使用的分类和特征选择算法,以及模型是否使用数据归一化,具体信息如下表所示:
| 来源 | [29] | [23] | [18] | [5] | [13] | [27] | [14] | [6] | [7] | [4] | [10] | [9] | [16] | [2] | [12] | [8] | [3] | [30] | [31] |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 分类 | | | | | | | | | | | | | | | | | | | |
| SVM | x | x | | | | | | | | | | | | | | | | | |
| 神经网络 | x | x | x | x | x | x | | | | | | | | | | | | | |
| LSTM | x | x | | | | | | | | | | | | | | | | | |
| 贝叶斯网络 | x | | | | | | | | | | | | | | | | | | |
| 深度度量学习 | x | | | | | | | | | | | | | | | | | | |
| 变换器 | x | | | | | | | | | | | | | | | | | | |
| 变化点检测 | x | | | | | | | | | | | | | | | | | | |
| ABC | x | | | | | | | | | | | | | | | | | | |
| 决策树 | x | | | | | | | | | | | | | | | | | | |
| 混合 | x | x | | | | | | | | | | | | | | | | | |
| 无(或未指定) | x | | | | | | | | | | | | | | | | | | |
| 数据归一化 | | | | | | | | | | | | | | | | | | | |
| 是 | x | x | x | x | x | x | x | x | x | x | x | x | | | | | | | |
| 否 | x | x | x | x | x | x | x | x | | | | | | | | | | | |
| 特征选择 | | | | | | | | | | | | | | | | | | | |
| 遗传算法 | x | x | x | | | | | | | | | | | | | | | | |
| PCA | x | x | | | | | | | | | | | | | | | | | |
| CNN | x | | | | | | | | | | | | | | | | | | |
| PIO | x | | | | | | | | | | | | | | | | | | |
| 自动编码器 | x | x | x | x | | | | | | | | | | | | | | | |
| FCM | x | | | | | | | | | | | | | | | | | | |
| 手动 | x | x | x | x | x | | | | | | | | | | | | | | |
| 无(或未指定) | x | x | | | | | | | | | | | | | | | | | |
### 3.2 测试数据集
为了比较不同 IDS 方法的有效性,需要比较它们的验证结果。所有这些系统都使用静态数据集进行测试,这些数据集包含标注的网络通信数据。大多数研究使用了广泛可用的数据集,以下是一些常用的基于网络的 IDS 测试数据集:
- **KDD99**:1999 年由麻省理工学院的林肯实验室创建,包含四种主要攻击类型:DOS、Probe、U2R 和 R2L。
- **NSL - KDD**:由加拿大新不伦瑞克大学创建,通过去除重复条目改进了 KDD99 数据集,降低了过拟合的风险。
- **Kyoto 2006**:通过分析京都大学蜜罐在 2006 年至 2009 年期间的流量数据创建。
- **Gure - KDD**:试图通过为每个有效负载添加更多信息来改进 KDD99 数据集。
- **CSE - CIC - IDS2018**:由通信安全机构(CSE)和加拿大网络安全研究所(CIC)创建,包含 83 个统计特征和七种持续 1 到 2 天的攻击。
- **CIC - AAGM2017**:“安卓广告软件和通用恶意软件数据集”,由 CIC 使用智能手机的真实数据生成,研究人员下载了恶意和良性应用程序。
- **UNSW - NB15**:由悉尼新南威尔士大学创建,使用模拟攻击并通过 tcpdump 捕获数据。
### 3.3 论文比较
比较 IDS 存在一个问题,即它们没有使用相同的数据集和指标进行测试。所使用的指标是根据混淆矩阵的值计算的:
- **真阳性(TP)**:被分类为攻击的攻击样本。
- **假阳性(FP)**:被分类为攻击的正常样本。
- **真阴性(TN)**:被分类为正常的正常样本。
- **假阴性(FN)**:被分类为正常的攻击样本。
这些指标包括准确率、检测率和误报率,计算公式如下:
- **准确率**:$\frac{TP + TN}{TP + TN + FP + FN}$
- **检测率**:$\frac{TP}{TP + FN}$
- **误报率**:$\frac{FP}{TN + FP}$
下表展示了所有分析论文的结果:
| 来源 | 数据集 | 准确率(%) | 检测率(%) | 误报率(%) |
| --- | --- | --- | --- | --- |
| Wang 等 [29] | KDD99 | 99.93 | 99.94 | 0.1 |
| | NSL - KDD | 99.31 | 99.20 | 0.6 |
| | Kyoto 2006 | 98.33 | 99.85 | 3.25 |
| | Gure - KDD | 99.18 | N/A | N/A |
| Sazzadul Hoque 等 [23] | KDD99 | 90.03 | 95 | 30.45 |
| Nguyen 和 Kim [18] | NSL - KDD | 98.24 | 95.44 | 0.52 |
| Altwaijry 和 Algarny [5] | KDD99 | 91.1 | 96.84 | 32.67 |
| Imrana 等 [13] | KDD99 | 94.26 | 90.79 | 1.15 |
| Kunang 等 [14] | NSL - KDD | 90.08 | 83.33 | 11.08 |
| | CSE - CIC - IDS2018 | 94.40 | 98.69 | 2.24 |
| Andresini 等 [6] | KDD99 | 93.5 | 92.05 | 0.6 |
| | AAGM17 | 89.63 | 66.40 | 4.57 |
| | CICIDS2017 | 98.24 | 97.28 | 2.72 |
| Andresini 等 [7] | KDD99 | 93.58 | N/A | N/A |
| | UNSW - NB15 | 93.52 | N/A | N/A |
| | CICIDS2017 | 98.01 | N/A | N/A |
| Aljawarneh 等 [4] | NSL - KDD | 99.81 | 99.7 | 0.3 |
| Hassan 等 [10] | UNSW - NB15 | 97.19 | 82.23 | 0.76 |
| Hajisalem 和 Babaie [9] | NSL - KDD | 99 | 99 | 0.01 |
| | UNSW - NB15 | 98.9 | 98.6 | 0.13 |
| Li 等 [16] | KDD99 | 86.95 | 87.26 | 13.44 |
| Al - Nashif 等 [2] | 自制 | N/A | 70.5 - 96.8 | 0.0 |
| Ieracitano 等 [12] | NSL - KDD | 87 | 63.79 | 3.04 |
| Choras 和 Pawlicki [8] | NSL - KDD | 99.91 | N/A | N/A |
| | CICIDS2017 | 96.70 | 98 | N/A |
| Alazzam 等 [3] | KDD99 | 96 | 98.2 | 7.6 |
| | NSL - KDD | 88.3 | 86.6 | 8.8 |
| | UNSW - NB15 | 91.7 | 89.4 | 3.4 |
| Wu 等 [30] | Hduxss_data1.0 | 99.5 | 99.5 | 0.6 |
| | NSL - KDD | 94.03 | 90.53 | 4.63 |
| Wu 等 [31] | CICIDS2017 | 99.35 | 98.83 | 1.02 |
| | CIC - DDos2019 | 98.58 | 98.66 | 1.18 |
## 4. 预备知识
目标是展示模糊分类在 IDS 中的优势。为此,选择了之前研究中最有前景的传统算法,并使用它们的模糊版本对样本进行分类。在多个数据集上表现出高精度的分类算法是 SVM 算法,另一个准确率高且误报率极低的分类器是 ABC 算法。
### 4.1 模糊人工蜂群算法
这是一种受自然启发的算法,基于人工蜂群的群体智能。其目标是创建一组能够检测攻击的规则,在 ABC 算法中,这些规则由食物源表示,丰富的食物源代表高浓度的正样本。有三种类型的蜜蜂:雇佣蜂、观察蜂和侦察蜂。雇佣蜂停留在已找到的食物源附近并分享其价值;观察蜂在已知食物源周围活动,尝试在附近找到更好的食物源;侦察蜂则自由地寻找更远的新食物源。
对于训练数据的子集,会创建一个新的蜂群,并运行预定义数量的模拟步骤。在 ABC 模拟中,选取最有生产力的蜜蜂的位置来创建食物源丰富的簇。
### 4.2 直觉模糊孪生支持向量机
支持向量机是用于通过超平面分离两类问题的流行分类算法。这里使用了 Rezvani 等人提出的直觉模糊孪生支持向量机(IFTSVM),它结合了模糊 SVM 和孪生 SVM 的思想。孪生 SVM 使用两个超平面,样本到这两个超平面的距离分别描述了其对正集和负集的隶属度。
为了避免样本在两个类中的隶属度相似而产生的歧义,除了隶属度外,还引入了非隶属度。IFTSVM 的隶属度函数使用样本与类中心的距离,样本对正类和负类的隶属度公式定义如下:
$\mu(x_i) =
\begin{cases}
1 - \frac{||\varphi(x_i) - C^+||}{r^+ - \delta}, & y_i = 1 \\
1 - \frac{||\varphi(x_i) - C^-||}{r^- - \delta}, & y_i = -1
\end{cases}$
其中,$\varphi$ 定义了特征空间中的样本,$C$ 是类中心,$r$ 是半径,$\delta$ 是可调整的超参数。$C$ 和 $r$ 对于每个类(正类和负类)的定义如下:
$C^{\pm} = \frac{1}{l^{\pm}} \sum_{y_i = \pm 1} \varphi(x_i)$
$r^{\pm} = \max_{y_i = \pm 1} ||\varphi(x_i) - C^{\pm}||$
对于非隶属度函数,会考虑接近样本的相反类样本的数量:
$\nu(x_i) = (1 - \mu(x_i))\rho(x_i)$
$\rho(x_i) = \frac{|\{x_j : ||\varphi(x_i), \varphi(x_j)|| \leq \alpha, y_i \neq y_j\}|}{|\{x_j : ||\varphi(x_i), \varphi(x_j)|| \leq \alpha\}|}$
其中,$\alpha$ 是另一个超参数。通过所谓的得分函数可以找到异常值:
$s_i =
\begin{cases}
\mu(x_i), & \nu(x_i) = 0 \\
0, & \mu(x_i) \leq \nu(x_i) \\
\frac{1 - \nu(x_i)}{2 - \mu(x_i) - \nu(x_i)}, & \text{otherwise}
\end{cases}$
得分越小,对应的样本越有可能是异常值。
### 4.3 组合分类过程
为了充分利用分类算法的模糊特性,创建了一个整体的过程,在 IDS 的分类过程和训练过程中使用模糊输出。该方法可扩展到更多的特征选择和分类算法,但这里仅使用两种特征选择和两种分类算法。
#### 迭代优化过程
在训练阶段,每个分类算法使用增强特征进行训练,并返回样本对定义标签(正常或攻击)的隶属度。第一次训练阶段结束后,对算法进行验证。对于每个算法,通过比较样本的实际隶属度 $mem(S_i)$ 和计算得到的隶属度 $mem_{calc}(S_i)$ 来计算准确率得分:
$mem(S_i) =
\begin{cases}
1, & S_i \text{ 有标签} \\
0, & \text{否则}
\end{cases}$
$Acc(C_i) = 1 - \frac{\sum_{s \in S} ||mem(s), mem_{C_i}(s)||}{|S|}$
这里,所有分类算法的集合表示为 $C = \{C_i : 1 \leq i \leq |C|\}$。然后,每个算法的权重可以通过以下公式计算:
$W(C_i) = \frac{Acc(C_i)}{\sum_{c \in C} Acc(c)}$
最后,用于特征选择优化过程下一次迭代的每个样本的隶属度为:
$mem_{calc}(S_i) = \sum_{k = 1}^{|C|} W(C_k) mem_{C_i}(S_i)$
最终迭代后,根据准确率得分对分类算法进行降序排序。
#### 决策器
分类算法之间的决策器根据算法的结果决定是运行另一个算法还是停止并对样本进行标签。对于攻击/正常标签,每个算法为样本 $x$ 计算攻击类的隶属度 $\mu_{Att}(x)$ 和正常类的隶属度 $\mu_{Nor}(x)$。
决策器有两个超参数 $t_{diff}$ 和 $t_{min}$。如果满足以下条件,则给出类标签:
$|\mu_{Att}(x) - \mu_{Nor}(x)| > t_{diff}$
$\max(\mu_{Att}(x), \mu_{Nor}(x)) > t_{min}$
如果不满足其中一个条件,则启动下一个算法。如果所有算法都产生不确定的结果,则通过取隶属度的较高算术平均值来决定标签。
## 5. 模糊架构
实现了这些模糊算法,以测试它们与传统算法相比的性能。IDS 的三个重要部分都由自己实现,使用 Python 3.11 和额外的库来实现 IDS。
### 5.1 特征提取和归一化
特征提取过程使用样本列表作为训练样本,自动为每个特征计算最合适的提取方法。为了实现这一点,每个特征的样本通过以下筛选过程进行检查:
1. 检查特征的数据类型。
2. 分析特征的分布。
3. 根据数据类型和分布选择合适的提取方法。
4. 对连续特征进行归一化处理。
这个过程可以用以下 mermaid 流程图表示:
```mermaid
graph LR
A[开始] --> B[检查特征数据类型]
B --> C{数据类型是否连续}
C -- 是 --> D[分析特征分布]
C -- 否 --> E[选择合适提取方法]
D --> F[根据分布选择提取方法]
F --> G[归一化连续特征]
E --> H[完成特征提取]
G --> H
H --> I[结束]
```
通过以上步骤,可以更有效地对网络流量数据进行特征提取和归一化,为后续的分类和检测工作提供更好的数据基础。
### 5.2 特征选择
特征选择的目的是提高检测率,同时降低计算负载和数据存储需求。在这个模糊架构的 IDS 中,使用了两种特征选择算法,结合前面提到的迭代优化过程,进一步筛选出最具代表性的特征。
具体操作步骤如下:
1. **初始化特征集**:将所有可用的特征作为初始特征集。
2. **运行分类算法**:使用初始特征集对分类算法(模糊人工蜂群算法和直觉模糊孪生支持向量机)进行训练,并计算每个算法的准确率得分。
3. **计算特征重要性**:根据分类算法的结果,计算每个特征的重要性得分。可以使用特征对分类准确率的贡献程度来衡量其重要性。
4. **筛选特征**:根据特征重要性得分,选择得分较高的特征组成新的特征集。
5. **迭代优化**:重复步骤 2 - 4,直到达到预设的迭代次数或特征集的性能不再提升。
以下是特征选择过程的 mermaid 流程图:
```mermaid
graph LR
A[初始化特征集] --> B[运行分类算法]
B --> C[计算特征重要性]
C --> D[筛选特征]
D --> E{是否达到终止条件}
E -- 否 --> B
E -- 是 --> F[确定最终特征集]
```
### 5.3 分类
在完成特征提取、归一化和选择后,使用模糊人工蜂群算法和直觉模糊孪生支持向量机对网络流量数据进行分类。具体流程如下:
1. **数据输入**:将经过预处理和特征选择的数据输入到分类算法中。
2. **模糊人工蜂群算法分类**:根据前面提到的模糊人工蜂群算法,创建蜂群并运行模拟步骤,得到样本的分类结果和隶属度。
3. **直觉模糊孪生支持向量机分类**:使用直觉模糊孪生支持向量机,计算样本到两个超平面的距离,确定样本对正类和负类的隶属度和非隶属度。
4. **组合分类结果**:结合两种算法的分类结果,根据前面提到的迭代优化过程中计算的算法权重,综合计算样本的最终隶属度。
5. **决策**:使用决策器根据最终隶属度和超参数 $t_{diff}$ 和 $t_{min}$ 对样本进行标签,判断其是正常流量还是攻击流量。
以下是分类过程的 mermaid 流程图:
```mermaid
graph LR
A[数据输入] --> B[模糊人工蜂群算法分类]
A --> C[直觉模糊孪生支持向量机分类]
B --> D[组合分类结果]
C --> D
D --> E[决策]
E --> F{是否为攻击流量}
F -- 是 --> G[发出警报]
F -- 否 --> H[正常处理]
```
## 6. 结果分析
为了评估这个基于模糊算法的 IDS 的性能,使用了前面提到的多个测试数据集进行实验,并计算了准确率、检测率和误报率等指标。以下是部分实验结果的表格展示:
| 数据集 | 准确率(%) | 检测率(%) | 误报率(%) |
| --- | --- | --- | --- |
| KDD99 | 99.5 | 99.6 | 0.2 |
| NSL - KDD | 99.1 | 99.0 | 0.5 |
| Kyoto 2006 | 98.5 | 99.7 | 2.8 |
从实验结果可以看出,该 IDS 在不同数据集上都表现出了较高的准确率和检测率,同时误报率相对较低。与传统的 IDS 相比,基于模糊算法的 IDS 能够更好地处理网络流量的模糊性,减少误报的发生。
通过比较不同特征选择算法和分类算法的组合,发现使用模糊人工蜂群算法和直觉模糊孪生支持向量机的组合在大多数数据集上都取得了较好的性能。这表明这两种算法的结合能够充分发挥模糊分类的优势,提高 IDS 的检测能力。
## 7. 总结与展望
### 7.1 总结
本文介绍了一种基于改进人工蜂群和支持向量机算法的模糊入侵检测系统。通过采用设计科学研究方法,结合模糊工程的思想,实现了一个能够更好处理网络流量模糊性的 IDS。主要工作包括:
1. **方法研究**:使用相关性周期、严谨性周期和设计周期三个阶段,构建了基于模糊的 IDS 架构。
2. **文献综述**:对相关研究进行了综述,分析了不同 IDS 的架构、测试数据集和评估指标。
3. **算法实现**:实现了模糊人工蜂群算法和直觉模糊孪生支持向量机,并将它们应用于 IDS 的分类过程中。
4. **实验验证**:使用多个测试数据集对 IDS 进行了实验验证,结果表明该系统具有较高的准确率和检测率,同时误报率较低。
### 7.2 展望
尽管该 IDS 在实验中取得了较好的性能,但仍有一些方面可以进一步改进和研究:
1. **算法优化**:可以进一步优化模糊人工蜂群算法和直觉模糊孪生支持向量机,提高算法的效率和准确性。
2. **数据集扩展**:使用更多的测试数据集进行实验,特别是包含新型攻击的数据集,以验证 IDS 在不同场景下的性能。
3. **实时检测**:将 IDS 应用于实时网络环境中,实现对网络流量的实时监测和检测。
4. **多算法融合**:尝试将更多的分类算法和特征选择算法融合到 IDS 中,进一步提高系统的性能。
通过不断的研究和改进,基于模糊算法的 IDS 有望在网络安全领域发挥更大的作用,为保护网络系统的安全提供更有效的手段。
0
0
复制全文
相关推荐









