Guest Blog作者丁楠雅校对张玲翻译

一文读懂如何用深度学习实现网络安全

本文简要介绍深度学习以及它支持的一些现有信息安全应用,并提出一个基于深度学习的TOR流量检测方案。

简介

我们看到的大多数深度学习应用程序通常面向市场、销售、金融等领域,但在使用深度学习来保护这些领域的产品和业务、避免恶意软件和黑客攻击方面,则鲜有文章或资源。

像谷歌、脸谱、微软和SalesForce这样的大型科技公司已经将深度学习嵌入他们的产品之中,但网络安全行业仍在迎头赶上。这是一个具有挑战性的领域,需要我们全力关注。

本文中,我们简要介绍深度学习(Deep Learning,DL)以及它支持的一些现有信息安全(此处称为InfoSec)应用。然后,我们深入研究匿名TOR流量检测这个有趣的问题,并提出一个基于深度学习的TOR流量检测方案。

本文的目标读者是已经从事机器学习项目的数据科学专业人员。本文内容假设您具备机器学习的基础知识,而且当前是深度学习和其应用案例的初学者或探索者。

为了能够充分理解本文,强烈推荐预读以下两篇文章:

  • 《使用数据科学解开信息安全的神秘面纱》

  • 深度学习的基础知识-激活功能以及何时使用它们》

目录

一、信息安全领域中深度学习系统的现状

二、前馈神经网络概述

三、案例研究:使用深度学习检测TOR流量

四、数据实验-TOR流量检测

一、信息安全领域中深度学习系统的现状

深度学习不是解决所有信息安全问题的“灵丹妙药”,因为它需要广泛的标注数据集。不幸的是,没有这样的标记数据集可供使用。但是,有几个深度学习网络对现有解决方案做出重大改进的信息安全案例。恶意软件检测和网络入侵检测恰是两个这样的领域,深度学习已经显示出比基于规则和经典机器学习的解决方案有更显著的改进。

网络入侵检测系统通常是基于规则和签名的控件,它们部署在外围以检测已知威胁。攻击者改变恶意软件签名,就可以轻易地避开传统的网络入侵检测系统。Quamar等[1]在他们的IEEE学报论文中指出,有望采用自学的基于深度学习的系统来检测未知的网络入侵。基于深度神经网络的系统已经用来解决传统安全应用问题,例如检测恶意软件和间谍软件[2]。

与传统的机器学习方法相比,基于深度学习的技术的泛化能力更好。Jung等[3]基于深度学习的系统甚至可以检测零日恶意软件。毕业于巴塞罗那大学的Daniel已经做了大量有关CNN(Convolutional Neural Networks,卷积神经网络)和恶意软件检测的工作。他在博士论文中提及,CNNs甚至可以检测变形恶意软件。

现在,基于深度学习神经网络正在用户和实体行为分析(User and Entity Behaviour Analytics,UEBA)中使用。传统上,UEBA采用异常检测机器学习算法。这些算法提取安全事件以分析和基线化企业IT环境中的每一个用户和网络元素。任何偏离基线的重大偏差都会被触发为异常,进一步引发安全分析师调查警报。UEBA强化了内部威胁的检测,尽管程度有限。

现在,基于深度学习的系统被用来检测许多其他类型的异常。波兰华沙大学的Pawel Kobojek[4]使用击键动力学来验证用户是否使用LSTM网络。Capital one安全数据工程总监JasonTrost 发表了几篇博客[5],其中包含一系列有关深度学习在InfoSec应用的技术论文和演讲。

二、前馈神经网络概述

人工神经网络的灵感来自生物神经网络神经元是生物神经系统的基本单元。每一个神经元由树突、细胞核和轴突组成。它通过树突接收信号,并通过轴突进行传递(图1)。计算在核中进行。整个网络由一系列神经元组成。

AI研究人员借用这个原理设计出人工神经网络(Artificial Neural Network,ANN)。在这样的设置下,每个神经元完成三个动作:

  • 它收集来自其他不同神经元的输入或者经过加权处理的输入

  • 它对所有的输入进行求和

  • 基于求和值,它调用激活函数

因此,每个神经元可以把一组输入归为一类或者其他类。当仅使用单个神经元时,这种能力会受到限制。但是,使用一组神经元足以使其成为分类和序列标记任务的强大机制。

图1:我们能获得的最大灵感来自大自然——图中描绘了一个生物神经元和一个人工神经元

可以使用神经元层来构建神经网络。网络需要实现的目标不同,其架构也是不同的。常见的网络架构是前馈神经网络(Feed ForWard Neural Network,FFN)。神经元在无环的情况下线性排列,形成FFN。因为信息在网络内部向前传播,它被称为前馈。信息首先经过输入神经元层,然后经过隐藏神经元层和输出神经元层(图2)。

图2:具有两个隐藏层的前馈网络

与任何监督学习模型一样,FFN需要使用标记的数据进行训练。训练的形式是通过减少输出值和真值之间的误差来优化参数。要优化的一个重要参数是每个神经元赋予其每个输入信号的权重。对于单个神经元来说,使用权重可以很容易地计算出误差。

然而,在多层中调整一组神经元时,基于输出层算出的误差来优化多层中神经元权重是具有挑战性的。反向传播算法有助于解决这个问题[6]。反向传播是一项旧技术,属于计算机代数的分支。这里,自动微分法用来计算梯度。网络中计算权重的时候需要用到梯度。

在FFN中,基于每个连接神经元的激活获得结果。误差逐层传播。基于输出与最终结果的正确性,计算误差。接着,将此误差反向传播,以修正内部神经元的误差。对于每个数据实例来说,参数是经过多次迭代优化出来的。

三、案例研究:使用深度学习检测TOR流量

网络攻击的主要目的是窃取企业用户数据、销售数据、知识产权文件、源代码和软件秘钥。攻击者使用加密流量将被盗数据混夹在常规流量中,传输到远程服务器上。

大多数经常攻击的攻击者使用匿名网络,使得安全保护人员难以跟踪流量。此外,被盗数据通常是加密的,这使得基于规则的网络入侵工具和防火墙失效。最近,匿名网络以勒索软件/恶意软件的变体形式用于C&C。例如,洋葱勒索[7]使用TOR网络和其C&C服务器进行通信。

图3:Alice与目标服务器之间TOR通信的说明。通信开始于Alice向服务器请求一个地址。TOR网络给出AES加密的路径。路径的随机化发生在TOR网络内部。包的加密路径用红色显示。当到达TOR网络的出口节点时,将简单分组转发给服务器。出口节点是TOR网络的外围节点。

匿名网络/流量可以通过多种方式完成,它们大体可分为:

  • 基于网络(TOR,I2P,Freenet)

  • 基于自定义系统(子图操作系统,Freepto)

其中,TOR是比较流行的选择之一。TOR是一款免费软件,能够通过称为洋葱路由协议的专用路由协议在互联网上进行匿名通信[9]。该协议依赖于重定向全球范围内多个免费托管中继的互联网流量。在中继期间,就像洋葱皮的层一样,每个HTTP包使用接收器的公钥加密。

在每个接收点,使用私钥对数据包进行解密。解密后,下一个目标中继地址就会披露出来。这个过程会持续下去,直到找到TOR网络的出口节点为止。在这里数据包解密结束,一个简单的HTTP数据包会被转发到原始目标服务器。在图3中展示了Alice和服务器之间的一个示例路由方案。

启动TOR最初的目的是保护用户隐私。但是,攻击者却用它代替其他不法方式,来威逼善良的人。截至2016年,约有20%的TOR流量涉及非法活动。在企业网络中,通过不允许安装TOR客户端或者拦截保护或入口节点的IP地址来屏蔽TOR流量。

不管怎样,有许多手段可以让攻击者和恶意软件访问TOR网络以传输数据和信息。IP拦截策略不是一个合理的策略。一篇来自Distil网站[5]的自动程序情势不佳报告显示,2017年70%的自动攻击使用多个IP,20%的自动攻击使用超过100个IP。

可以通过分析流量包来检测TOR流量。这项分析可以在TOR 节点上进行,也可以在客户端和入口节点之间进行。分析是在单个数据包流上完成的。每个数据包流构成一个元组,这个元组包括源地址、源端口、目标地址和目标端口。

提取不同时间间隔的网络流,并对其进行分析。G.He等人在他们的论文“从TOR加密流量中推断应用类型信息”中提取出突发的流量和方向,以创建HMM(Hidden Markov Model,隐马尔科夫模型)来检测可能正在产生那些流量的TOR应用程序。这个领域中大部分主流工作都利用时间特征和其他特征如大小、端口信息来检测TOR流量。

我们从Habibi等人的“利用时间特征来发现TOR流量的特点”论文中得到启发,并遵循基于时间的方法提取网络流,用于本文TOR流量的检测。但是,我们的架构使用了大量可以获得的其他元信息,来对流量进行分类。这本质上是由于我们已经选择使用深度学习架构来解决这个问题。

四、数据实验-TOR流量检测

为了完成本文的数据实验,我们从纽布伦斯威克大学的Habibi Lashkari等人[11]那里获取了数据。他们的数据由从校园网络流量分析中提取的特征组成。从数据中提取的元信息如下表所示:

 表1:从[ 1 ]获得的元信息参数

除了这些参数之外,其他基于流的参数也包括在内。图4显示了一个数据集的样例。

图4:本文使用的数据集实例

请注意,源IP/端口、目标IP/端口和协议字段已经从实例中删除,因为它们会导致模型过拟合。我们使用具有N隐藏层的深度前馈神经网络来处理其他所有特征。神经网络的架构如图5所示。

图5:用于Tor流量检测的深度学习网络表示

隐藏层层数在2和10之间变化。当N=5时是最优的。为了激活,线性整流函数Rectified Linear Unit, ReLU)用于所有隐藏层。隐藏层每一层实际上都是密集的,有100个维度。

Keras中的FFN的Python代码片段:

model = Sequential() model.add(Dense(feature_dim,  input_dim= feature_dim, kernel_initializer='normal', activation='relu')) for _ in range(0,  hidden_layers-1): model.add(Dense(neurons_num,  kernel_initializer='normal', activation='relu')) model.add(Dense(1,kernel_initializer='normal',  activation='sigmoid')) model.compile(optimizer='adam',  loss='binary_crossentropy', metrics=["accuracy"])

输出节点由Sigmoid函数激活。这被用来输出二分类结果-TOR或非TOR。

我们在后端使用带有TensorFlow的Keras来训练深度学习模块。使用二元交叉熵损失来优化FFN。模型会被训练不同次数。图7显示,在一轮仿真训练中,随着训练次数的增加,性能也在增加,损失值也在下降。

图7:网络训练过程中Tensorboard生成的静态图

我们将深度学习系统的结果与其他预测系统进行了比较。使用召回率(Recall)、精准率(Precision)和F-Score这些标准分类指标来衡量预测系统性能。我们基于深度学习的系统能够很好地检测TOR类。但是,我们更加重视非TOR类。可以看出,基于深度学习的系统可以减少非TOR类的假阳性情况。结果如下表:

表2:用于TOR流量检测实验的深度学习机器学习模型结果

在各种分类器中,随机森林和基于深度学习的方法比其他方法更好。所示结果基于5,500个训练实例。本实验中使用数据集的大小相对小于典型的基于深度学习的系统。随着训练数据的增加,基于深度学习的系统和随机森林分类器的性能将会进一步提升。

但是,对于大型数据集来说,基于深度学习的分类器通常优于其他分类器,并且可以针对相似类型的应用程序进行推广。例如,如果需要训练检测使用TOR的应用程序,那么只需要重新训练输出层,并且其他所有层可以保持不变。而其他机器学习分类器则需要在整个数据集上重新训练。请记住,对于大型数据集来说,重新训练模型需要耗费巨大的计算资源。

尾记

每个企业面临的匿名流量检测的挑战是存在细微差别的。攻击者使用TOR信道以匿名模式偷窃数据。当前流量检测供应商的方法依赖于拦截TOR网络的已知入口节点。这不是一个可拓展的方法,而且很容易绕过。一种通用的方法是使用基于深度学习的技术。

本文中,我们提出了一个基于深度学习的系统来检测TOR流量,具有高召回率和高精准率。请下面的评论部分告诉我们您对当前深度学习状态的看法,或者如果您有其他替代方法。

References

[1]: Quamar Niyaz, Weiqing Sun, Ahmad Y Javaid,     and Mansoor Alam, “A Deep Learning     Approach for Network Intrusion Detection System,”  IEEE Transactions on Emerging     Topics in Computational Intelligence, 2018.

[2]: Daniel Gibert, “Convolutional Neural Networks     for Malware Classification,” Thesis 2016.

[3]: Wookhyun Jung, Sangwon Kim,, Sangyong Choi,     “Deep Learning for Zero-day     Flash Malware Detection,” IEEE security, 2017.

[4]: Paweł Kobojek and Khalid Saeed, “Application of Recurrent   

THU数据派
THU数据派

THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。

入门网络安全TOR流量检测深度学习
4
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

异常检测技术

在数据挖掘中,异常检测(英语:anomaly detection)对不符合预期模式或数据集中其他项目的项目、事件或观测值的识别。 通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。 异常也被称为离群值、新奇、噪声、偏差和例外。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

线性整流函数技术

线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。比较常用的线性整流函数有斜坡函数f(x)=max(0, x),以及带泄露整流函数 (Leaky ReLU),其中x为神经元(Neuron)的输入。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

随机森林技术

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而"Random Forests"是他们的商标。这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合Breimans的"Bootstrap aggregating"想法和Ho的"random subspace method" 以建造决策树的集合。

反向传播算法技术

反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法计算对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。 在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播遍历图的方式计算损失函数值相对于每个参数的偏导数。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

前馈神经网络技术

前馈神经网络(FNN)是人工智能领域中最早发明的简单人工神经网络类型。在它内部,参数从输入层经过隐含层向输出层单向传播。与递归神经网络不同,在它内部不会构成有向环。FNN由一个输入层、一个(浅层网络)或多个(深层网络,因此叫作深度学习)隐藏层,和一个输出层构成。每个层(除输出层以外)与下一层连接。这种连接是 FNN 架构的关键,具有两个主要特征:加权平均值和激活函数。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

暂无评论
暂无评论~