通过实验读懂神经网络识别VPN行为

Yeslab讲师 曹鑫磊
私有虚拟网络(VPN)是在公用网络基础之上建立的私有加密通信隧道网络,企业对于自管辖网络中个人使用VPN软件行为具有监管责任,但技术上却很难识别VPN的加密与通信方式,因此利用人工智能(AI)领域的神经网络技术从网络流量中识别VPN软件行为是一种全新的检测方法 。这种方法完全跟VPN技术解耦,不论VPN软件使用的加密技术如何复杂,神经网络都可以站在VPN使用者的角度去识别VPN行为 。在华为HCIA-AI与HCIP-AI认证中,神经网络在被描述为核心技能,本文就将讲解如何使用神经网络来识别VPN流量 。
 
根据我国互联网相关法律,个人及企业在未备案前提下不允许私自建立与使用跨国际VPN线路与软件 。但实际情况是企业难以管理个人利用企业网络使用各类VPN软件,甚至自己搭建VPN通道连接至境外服务器 。随着VPN技术在不断进步,这类监管任务的难度也在不断提升 。
 
网络行为是主机连接至网络后,向网关或对端发送网络数据包的行为,例如持续均等时间间隔的发包与发送一定流量后马上停止一段时间就被认为是两种不同的网络行为 。基于这种方法,我们使用的数据集体现了此类发包规律的明显特征 。
 
神经网络是人工智能领域的流行算法,利用神经网络模型与反向传播技术可以对神经网络进行基于数据的监督学习训练,完成训练的模型会对某些数据的拟合度提高一些 。用神经网络搭建数据分类器是计算机视觉、自然语言处理等领域的常用方法,我们也使用这样的方法来处理网络行为数据 。
 
数据
 
我们使用了公开的VPN流量数据集,该数据集由一家安全企业对近1000名员工的网络数据进行抓包截取,并固化为一些行为特征 。这份数据分两个月抓取完成,第一个月由全体员工不连接任何VPN进行正常工作,其流量包含访问公司信箱、OA系统、即时聊天、视频网站、购物网站等 。第二个月由全体员工按自己的方式连接VPN进行办公,流量仍包含上述站点 。这样就抓取了两份不同标签的网络数据(VPN | NOVPN)
 
抓取的数据以数据流为基本单位进行了特征提取,提取出来的数据特征如下所示:
· FIAT指标: 向前发送两个数据包之间的时间(固化为四个指标:平均值,最大值,最小值,标准差)
· BIAT指标: 向后发送两个数据包之间的时间(固化为四个指标:平均值,最大值,最小值,标准差)
· FLOWIAT: 形成数据流的两个数据包之间的时间(固化为四个指标:平均值,最大值,最小值,标准差)
· ACTIVE: 时间量,在变成空闲之前的活跃时间
· IDLE: 时间量,在变成活跃之前的空闲时间
这份网络流量数据最终被制作为23个数据属性,1个标签属性,使用Pandas导入数据后如图1所示:

通过实验读懂神经网络识别VPN行为

文章插图
图1:示例数据展示
数据分布
通过观察数据在各个值域的分布情况,可以对数据的质量有所掌握,数据的质量问题会导致模型训练结果不太理想 。例如某些数据可能存在部分值域数据非常多,而其他值域几乎没有数据的"一边倒"情况,我们需要通过对数据质量的考察,来决定是否需要做一些数据增强、数据筛选与特征工程 。神经网络拥有非常庞大的参数空间,对特征工程的要求偏低 。本文所使用的数据分布图如图2所示 。
通过实验读懂神经网络识别VPN行为

文章插图
图2:每项属性的数据分布,大多数属性存在上述"一边倒"问题,也是在真实世界中捕获网络流量数据的正常现象
神经网络模型
本文使用的神经网络为多层感知器模型,通过前向传播的线性计算与非线性激活来完成推理过程,推理结果与标签计算获得误差,使用误差通过反向传播的偏微分计算获得残差并最终转化为梯度来更新神经网络的可学习参数 。其数学过程不在这里详细讲解,这类知识可以在华为HCIA-AI认证、HCIP-AI认证与华为人才在线平台中获取 。
 
模型结构
本文使用的神经网络模型结构如下:
· 输入层:(None, 23) 维度的数据输入
· 第一个隐含层:32个神经元,激活函数为"ReLU"
· 第二个隐含层:32个神经元,激活函数为"ReLU"
· 第三个隐含层:16个神经元,激活函数为"ReLU"


推荐阅读