1.一种基于深度学习的网络流量内容类型识别方法,其特征在于,包括以下步骤:步骤1,对采集的网络数据进行预处理,包括:对每个TCP传输控制协议会话,提取上行数据包的第X1个包之后的连续负载,收集1024字节作为一个负载数据块,对于不足1024字节的流,通过字符重复补齐为1024字节,将M个负载数据块压入堆栈作为一个批次,同时创建包含批次对应的M个五元组、未定内容类型和置信概率的结构体;
步骤2,将批次输入至深度神经网络推理模块进行前向计算,深度神经网络推理模块用于接收M个1024字节的输入,输出对应的M个流的内容类型;
步骤3,将M个流的内容类型填充至对应结构体,以softmax输出的最大概率作为内容类型,以所述最大概率作为置信度,输出内容类型、置信度和五元组,根据类型标签将相同类型的流量分到一起,并清空流表;
步骤2中,所述深度神经网络推理模块包含一个用于内容类型识别的整数精度一维卷积神经网络;
步骤2还包括:采用如下步骤对所述卷积神经网络进行训练:步骤2‑1,构建训练数据集;
步骤2‑2,进行训练过程;
步骤2‑3,整数化训练;
步骤2‑4,模型测试与部署;
步骤2‑1包括:
步骤2‑1‑1,采集数据:从各类网络环境中采集包括明文流量和加密流量的原始网络流量数据;采集的同时直接进行负载内容明文类型标注;所述加密数据包括能通过DPI识别的TLS安全传输层协议、SSH安全外壳协议,采集的同时直接进行负载内容加密类型标注;
步骤2‑1‑2,生成数据:针对采集到的明文数据,分别采用编码Base16、编码Base32、编码based45、编码base64,编码base85,编码base91,编码base100,编码base122,编码Ascii85生成相应的编码数据样本,生成的同时直接进行对应编码类型的标注,形成数据和标签对;
步骤2‑1‑3,划分数据集,将数据和标签对随机划分为互斥的训练集、验证集和测试集;
步骤2‑2包括:
步骤2‑2‑1,设计损失函数:采用交叉熵损失函数,衡量卷积神经网络输出的内容类型分布与真实标签的差异;
步骤2‑2‑2,参数初始化,对第一卷积层L2、第二卷积层L4、第三卷积层L6和全连接层L9的权重矩阵使用截断正态分布进行初始化,偏置向量初始化为零向量;
步骤2‑2‑3,设置超参数:预设网络结构参数、批大小、学习率,无需额外调优;所述网络结构参数包括卷积核尺寸和数量;
步骤2‑2‑4,训练过程包括:
前向传播:对训练集中每个批次数据进行前向传播,计算预测输出;
计算损失:使用设计好的交叉熵损失函数,计算预测输出与真实标签之间的误差;
反向传播:通过反向传播算法,计算损失函数相对于各层权重和偏置的梯度;
更新权重:使用优化算法根据计算得到的梯度,更新网络的权重和偏置;
保存权重:在每个epoch结束时,保存当前训练得到的模型权重;
步骤2‑3包括:
步骤2‑3‑1,将训练集、标签、模型权重量化为8位有符号整数,在前向传播和反向传播中使用整数运算,完成模型的量化过程,转换为量化整数模型;
步骤2‑3‑2,设置缩放因子,用于在整数和浮点数之间进行范围映射,防止量化误差累积;
步骤2‑3‑3,使用Adam优化算法,将整数梯度除以缩放因子转换为浮点数,更新权重;
步骤2‑3‑4,训练终止,当验证集性能连续epoch次不再提升时,停止训练;训练好的卷积神经网络将会对输入数据输出M×12的输出矩阵;
步骤2‑4包括:
步骤2‑4‑1,在测试集上评估训练得到的卷积神经网络的内容识别准确率和速度;
步骤2‑4‑2,将训练好的量化整数模型转换为适合部署环境的格式,并按照M批处理模式提供统一的调用接口。
2.根据权利要求1所述的方法,其特征在于,步骤1包括:步骤1‑1,捕获网络数据包,提取TCP负载数据,构建如下元组:(timestamp,src_ip,src_port,dst_ip,dst_port,packet_length,payload),其中timestamp为捕获时间戳,src_ip和dst_ip分别为源IP地址和目的IP地址,src_port和dst_port分别为源端口号和目的端口号,packet_length为负载长度,payload为负载内容;
步骤1‑2,基于五元组(src_ip,src_port,dst_ip,dst_port,protocol)对网络数据包进行会话聚合和TCP重组,protocol为传输层协议类型,同一五元组的网络数据包划分到同一会话;
步骤1‑3,对每个会话,提取上行数据包的第5个包之后的连续负载数据,构造负载数据块;所述上行数据包是指从源地址src到目的地址dst;
步骤1‑4,设置负载数据块分组的固定长度为1024字节,如果负载数据块长度L小于
1024字节,则通过以下方式扩展:
计算重复次数 为向上取整符号;将原始L字节的负载数据块重复T次,取前1024字节作为扩展后的负载数据块;
步骤1‑5,基于当前会话的五元组信息,构建结构体struct Session:struct Session{
int64 timestamp;
char[16]src_ip;
int src_port;
char[16]dst_ip;
int dst_port;
int block_num;
char content_type;
float conf_prob;
},
其中int64 timestamp表示会话开始时间戳的数据类型为int64,char[16]src_ip表示源IP地址的数据类型为char[16],int src_port表示源端口号的数据类型为int,char[16]dst_ip表示目的IP地址的数据类型为char[16],int dst_port表示目的端口号的数据类型为int,int block_num表示累计的数据块个数block_num的数据类型为int;char content_type表示内容类型content_type的数据类型为char,内容类型初始为空;float conf_prob表示置信度概率conf_prob的数据类型为float,置信度概率初始为0;
步骤1‑6,从步骤1‑4得到的负载数据块,填充到1个大小为M×1024字节的缓冲区中,作为一个批次,同时将对应的结构体指针填入一个大小为M的批次结构体指针数组;
步骤1‑7,如果缓冲区和指针数组未满,则返回步骤1‑2;如果缓冲区和指针数组已满,则进入步骤2。
3.根据权利要求2所述的方法,其特征在于,步骤2中,所述卷积神经网络的层次结构包括:输入层L1,接收一个尺寸为1024的无符号字节整数向量,代表一个数据块的原始字节序列;
第一卷积层L2,包含3组一维卷积核,卷积核尺寸分别为1、3、5,每组卷积核的数量为
128,所有卷积核的步长均为1,输出3组尺寸为1024×128的整数特征向量;
第一BN层L3,对第一卷积层L2的输出特征向量分别进行批量归一化Batch Normalization操作,并使用ReLU函数进行激活;
第二卷积层L4,包含3组一维卷积核,卷积核尺寸分别为1、3、5,每组卷积核的数量为
256,所有卷积核的步长均为1,输出3组尺寸为1024×256的整数特征向量;
第二BN层L5,对第二卷积层L4的输出特征向量分别进行批量归一化Batch Normalization操作,并使用ReLU函数进行激活;
第三卷积层L6,包含3组一维卷积核,卷积核尺寸分别为1、3、5,每组卷积核的数量为
512为超参数,所有卷积核的步长均为1,输出3组尺寸为1024×512的整数特征向量;
第三BN层L7,对第三卷积层L6的输出特征向量分别进行批量归一化Batch Normalization操作,并使用ReLU函数进行激活;
全局平均池化层L8,分别对第三BN层L7输出的3组特征向量进行全局平均池化,得到一个3×512维的整数特征向量;
全连接层L9,将全局平均池化层L8的输出通过一个全连接层,将3×512维特征向量映射为12维类别输出向量,全连接层的权重和偏置均为整数,类别定义为:
0:明文,
1:密文,
2:编码Base16,
3:编码Base32,
4:编码Based45,
5:编码Base64,
6:编码Base85,
7:编码Base91,
8:编码Base100,
9:编码Base122,
10:编码Ascii85,
11:未知Unknow;
Softmax层L10,对全连接层L9的输出向量进行Softmax归一化,得到一个12维概率分布向量,每个元素对应一个内容类型的后验概率。
4.根据权利要求3所述的方法,其特征在于,步骤3包括:步骤3‑1,将M×12的输出矩阵通过逐行做softmax运算,得到归一化的概率分布;
步骤3‑2,对于M×12的输出矩阵的每一行,取最大概率值对应的类型索引作为预测类型,索引与类型名称的对应关系为:{0:明文,1:密文,2:编码Base16,3:编码Base32,4:编码based45,5:编码base64,6:编码base85,7:编码base91,8:编码base100,9:编码base122,
10:编码Ascii85,11:未知Unknow};
步骤3‑3,将预测类型填充到步骤1生成的结构体的内容类型content_type字段,将最大概率值填充到置信度概率conf_prob字段,输出一个M元组,每个元素为(五元组,content_type,conf_prob);
步骤3‑4,遍历M元组,将对应的负载数据块输出到下一步处理的模块,完成一个批次的处理;
步骤3‑5,当前批次处理完成后,清空保存流信息的表格或数据结构中对应的字节和五元组缓存,等待下一批次数据。
5.根据权利要求4所述的方法,其特征在于,还包括步骤4:通过在部署环境中执行如下步骤确定批处理参数M:步骤4‑1,统计训练集中每秒新增的并发连接数量P,P等于每秒新增TCP连接的SYN包数量;
步骤4‑2,从数据集中随机采样S个会话,计算每个会话上行数据包的平均到达间隔时间t;
步骤4‑3,采样S个会话对应的1024字节负载,送入步骤2‑4得到的训练后的处于部署状态的卷积神经网络进行推理,计算平均推理时间R;
步骤4‑4,M的计算公式为:
6.一种基于权利要求1~5任一所述方法的流量内容类型识别装置,其特征在于,包括:预处理模块,用于对采集的网络数据进行预处理,包括:对每个TCP传输控制协议会话,提取上行数据包的第X1个包之后的连续负载,收集1024字节作为一个负载数据块,对于不足1024字节的流,通过字符重复补齐为1024字节,将M个负载数据块压入堆栈作为一个批次,同时创建包含批次对应的M个五元组、未定内容类型和置信概率的结构体;
神经网络推理模块,用于将批次输入至深度神经网络推理模块进行前向计算,深度神经网络推理模块用于接收M个1024字节的输入,输出对应的M个流的内容类型;
后处理模块,用于将M个流的内容类型填充至对应结构体,以softmax输出的最大概率作为内容类型,以所述最大概率作为置信度,输出内容类型、置信度和五元组,根据类型标签将相同类型的流量分到一起,并清空流表。