对网络的入口处对应用程序识别是非常重要的,无论是网络安全产品,还是专业的流量分析引擎,应用流量的准确识别不但能洞悉整个企业内网的运行情况,还能针对具体需求做用户行为的准确管控,在一定程度上既可保证业务流的高效运行,也可预防由于内网中毒引起的断网事件。
基于此,我们采访了北京邮电大学信号与信息处理专业博士、360企业安全部研究员王占一,就如何利用深度学习、机器学习等方法来对网站流量进行监控识别做深入的解答。王占一博士目前在360天眼团队,主要负责机器学习、数据挖掘、深度学习、异常检测、复杂网络分析方向的研究,并在2015年Black Hat大会上做了题为《深度学习在流量识别中的应用》的主题演讲。
以下内容为InfoQ对王占一博士的采访资料!
王占一:综合来讲,当时主要分享了两部分的内容。
第一部分就是对协议进行识别,每天会对50-80种协议通过网络流量来识别,通过采用360内网流量数据来做识别实验。对于协议的识别相对容易,识别的方法是通过多层全连接的神经网络,识别出来的结果总体来说准确率超过99%,平均准确率在97.9%,算是比较高的了。
对于应用程序的流量识别,其难度要比对协议的识别更大,而且识别的速度也相对慢一些,因为涉及到更细致的版本号,而且应用程序的数据规模和类别也比协议要大得多,每天大概有将近1000种。所以使用的方法也更复杂——卷积神经网络(Convolutional Neural Network,CNN),识别的准确率在96%。
目前360天眼团队主要还是用机器学习、深度学习和数据挖掘等手段,研究出相关的算法模型来解决不同场景下的网络安全和企业安全中遇到的问题。利用这些手段对流量进行识别的目的有两方面。一方面能减轻人工的工作量,另一方面,如果识别率很准的算法模型是可以形成一个模块加入到产品里。
王占一:对于加密的协议,刚开始做识别的时候并没有区分协议是否加密了,因为机器会根据特征去学习,只要把数据输入进去,不关注加密与否。后来根据比特流(BitTorrent)下载协议的结果来看,准确率也在99%,只要协议不是完全加密的,都可以识别出来。至于加密的协议有多少,还是要看情况,像迅雷BT、HTTPS这些协议以后会越来越多。
王占一:这个可以从“输入”和“输出”两方面来说。但是“输出”方面的难点在后面会详细讲解。
输入方面遇到的障碍就是拿什么作为输入源。现如今很多人都在谈大数据,以为把庞大的数据输入进模型就可以了,其实不是这么简单。和传统的人眼所见即输入的图像输入不同,图像输入只需要把图像的大小、像素、调参准备好就能进行识别。但是在安全领域对流量进行识别的话,因为数据的样本、网络日志和表现形式都是不一样的,所涉及到的问题也比较多,需要耗费一半的精力在解决这部分问题上。拿什么当作输入,拿什么当作特征,这就需要做数据的关联,需要一个统计分析的过程。流量的字节流可以看作是文本或者二维图像,所以也是可以通过深度学习和机器学习的算法来解决对流量的识别,这也是当时的一个策略。现在是根据情况,调整卷积核的大小,将一维和二维融合起来。
王占一:360QVM是杀毒引擎的一部分,属于不同的部门,它也用到了机器学习技术,和360天眼的底层算法还是有一些相似之处的。
360QVM在特征学习和模型训练流程上比较出色,其重点在于查杀识别木马病毒,而360天眼更多的是感知类似于数据内容、网络攻击形式的企业安全层面的威胁,可以说两者在应用场景上是不一样。
王占一:采用HTTP 2.0网络加密协议的网站如果是全流量加密,现在还没有通用的办法将这样的问题解决,如同恶意样本识别需要通过传统的安全方法把样本脱壳类似,如果能将流量解密,再利用机器学习算法才能达到很高的识别精度。
王占一:我们并没有针对Skype协议特征专门做识别,用的是通用的方法。
举个例子,当数据很大的时候,利用这些数据建完模型,可以看到图像的特征,流量的特征,这些特征是机器自己学出来的,可以看到在任何一个长度里的字节特征,可以判断哪些特征是有用的,权重是多少,根据权重的分布就能知道哪些数据是有用的,哪些是没用的,这样就可以把没用的删除。传统的方法是,根据每一种协议有什么特征,是否存在偏移,字符上的特点或者关联程度,需要人工来做出判别。而现在通过机器学习方法,就不需要去关注那些点,机器可以自己学出来。
王占一:解决这个问题是有套路的,一种方式就是纯人工标注,对于图像、文本的标注是有一个基础的方法的。另一种套路就是机器利用无监督或者半监督(只有一小部分的标注样本)的方法生成一批结果,这批结果是机器在分类上识别把握不大的数据,我们会把这些重要数据拿出来,专门让人工进行标注。说白了就是不会让人工标注全量,只是标注一些关键的样本,然后再结合一些主动学习的算法,让少量的标注发挥很大的作用。
我们采用360内网的数据与部分终端数据关联的方法,数据的体量完全足够用于模型训练。因为我们主要是针对安全方面的研究,所以我们的研究结果还是比较客观的。
王占一:每天新增的应用太多了,所带来的类别也越来越多。但是如果新增的和已有的某一种应用很相似,而新增的应用之前并没有被机器学习到,导致被认错。那么解决“被认错”的方案就是先利用关联的方法把它找出来,通过神经网络每天对模型进行优化,不需要重新训练。就目前的状况来看,这是一个不可忽视的挑战。
其次就是,如果加密措施做得非常好的话,对识别的精准度也是很有影响的。
另外在安全领域,对精准度的要求是很严格的,或者说是苛刻的。例如现在很多手机App可以对人脸进行识别,预测年龄,如果把年纪大的人说成小鲜肉,用户会觉得这个App很有意思,即使误报也没有实质的危害。但是在安全领域,就不能出现这样“有意思”的事情,对病毒和网络攻击的识别往往需要更高的精度才可以投入产品阶段,这也是对用户体验的一种保证。
王占一:对于这一点,其实很多工作都是可以交给机器去做的,但是,关键在于机器无法取代人的想法,机器不会主动产生想法。Google在人工智能、机器学习方面有很大的进展,在深度学习方面不但开源了第二代人工智能学习系统TensorFlow,最近也公布了全新的TensorFlow自然语言处理模型SyntaxNet,机器可以做一些基础的工作,说白了就是“苦力活”,而一些复杂的创新性的工作内容,机器就不能胜任,需要人工的给机器定义。
王占一:体会是比较多的,觉得外国技术专家的思路很开阔。同时也发现,这几年的Black Hat大会上的议题设置,数据科学研究方向的比重在不断的增加,可见数据在安全领域的重要性,360也在倡导“数据驱动安全”的理念,而且国内外的想法基本上是一致的。
美国的很多创业公司,也是秉承“数据驱动安全”的思路,他们所做的事情在我们看来只是某一种产品,或者是某一种产品的某一种功能,但是他们做的非常深入。大家的方法本身都是差不多的,区别在于两方面,一方面是数据。每个公司拿到的数据是不一样的,数据是基础,但是不同的数据产生的效果也是不一样的。其次就是对场景的分析,这个场景指的是数据和模型之间的连接纽带,数据生成的场景是什么,在什么场景下是有用的,美国公司往往把场景想的特别细。
王占一:深度学习确实存在一些难点,如果能获得海量的数据,或者是标注的数据,那么不管是什么初创公司,其价值都是很大的。例如在图像检测、人脸识别等方面,如果没有很好的标注样本,就很难实现识别目的,做人脸识别的创业公司一定要有足够的数据积累估才有可能做的出色。
对于机器学习,如果从零开始,有基础知识,搭一个平台,有相关的数据,最后做到80%还是可以达到的。但是还想达到90%或者95%的水平,在要求严格的安全领域是重点和难点。深度学习在后一阶段的研究是非常枯燥的,需要一点一点的调整优化参数。还要多关注各种领域的算法知识,考虑是否可以将别的算法应用到自己的研究范围内。360天眼团队经常会Brain-storming的方法来想一些好的点子。
王占一:深度学习和机器学习方法在实际应用过程中除了有挑战,还有很多机遇,尤其是在安全领域还是有很大的发展空间和挑战的。虽然我们平时从事数据和算法研究相关工作,但时常会有别的部门的人来和我们共同探讨,因为样本量太多而没办法人工分类,能不能帮忙想想办法利用机器学习的手段解决问题。可见,深度学习和机器学习的方法在很多领域还是可以发挥优势的。所以,我们也希望有更多的数据科学的从业者能加入到安全领域。
王占一,北京邮电大学信号与信息处理专业博士、360企业安全部研究员。目前在360天眼团队主要负责机器学习、数据挖掘、深度学习、异常检测、复杂网络分析方向的研究,并在2015年Black Hat大会上做了题为《深度学习在流量识别中的应用》的主题演讲。