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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
云防火墙,500元 1000GB
简介: 本文简要介绍深度学习以及它支持的一些现有信息安全应用,并提出一个基于深度学习的TOR流量检测方案。

简介

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

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

image

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

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

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

《使用数据科学解开信息安全的神秘面纱》
《深度学习的基础知识-激活功能以及何时使用它们》

目录

一、信息安全领域中深度学习系统的现状
二、前馈神经网络概述
三、案例研究:使用深度学习检测TOR流量
四、数据实验-TOR流量检测

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


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

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

image

与传统的机器学习方法相比,基于深度学习的技术的泛化能力更好。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)。在这样的设置下,每个神经元完成三个动作:

它收集来自其他不同神经元的输入或者经过加权处理的输入
它对所有的输入进行求和
基于求和值,它调用激活函数

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

image

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


image

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

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

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

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

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

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

image

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

基于网络(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]那里获取了数据。他们的数据由从校园网络流量分析中提取的特征组成。从数据中提取的元信息如下表所示:

image

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

image

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

image

隐藏层层数在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显示,在一轮仿真训练中,随着训练次数的增加,性能也在增加,损失值也在下降。

image

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

image

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

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

尾记

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

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

原文发布时间为:2018-08-08
本文作者:Guest Blog
本文来自云栖社区合作伙伴“ 数据派THU ”,了解相关信息可以关注“ 数据派THU

相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
23 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
29天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
258 55
|
26天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
61 31
|
1月前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
84 3
|
2月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
85 8
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
363 7