技术分享
机器学习在网络安全领域的应用(一)
2019-11-14
将机器学习应用到网络安全已成为近年来安全领域的研究热点。针对安全领域的5个研究方向(指网络空间安全基础、密码学及其应用、系统安全、网络安全、应用安全),机器学习在系统安全、网络安全、应用安全三个方向有大量的研究成果,而在网络安全基础和密码学及其应用方面的研究较少涉及。其中,系统安全以芯片、系统硬件物理环境及系统软件为研究方向;网络安全主要以网络基础设施、网络安全监测为研究重点;应用层面则关注应用软件安全、社会网络安全。
从机器学习应用于网络安全的角度出发,下图右侧所示是机器学习在网络安全中的一般应用流程,左侧则是上述3个主要研究方向的典型应用。
机器学习被认为是一组能够利用经验数据来改善系统自身性能的算法集合,它包括分类、聚类、降维等问题,它在安全研究中的一般应用流程包括这六个阶段:安全问题抽象--》数据采集--》数据预处理--》安全特征提取--》模型构建--》模型验证--》模型效果评估。
安全问题抽象化
安全问题抽象是指将网络空间安全问题映射为机器学习能够解决的类别,问题映射的恰当与否直接关系到机器学习技术解决网络空间安全问题成功与否。比如,对劣质芯片或硬件木马的检测、伪基站检测、虚拟化安全、信用卡欺诈等都可以抽象为分类问题;设备身份认证、社交网络异常账号检测、网络入侵检测等可以抽象为聚类问题;用户身份认证、恶意/异常/入侵检测、取证分析、网络舆情等问题既可以抽象为分类问题也可以抽象为聚类问题。
数据采集
数据采集是机器学习应用于网络空间安全的前提条件,它主要利用各种软件(比如wireshark、Netflow、日志收集工具等),主要从系统层、网络层及应用层采集数据,系统层数据用于系统安全问题的与研究,这类数据主要有芯片信息、设备信息、系统日志信息等。网络层数据指与具体网络活动密切相关的数据,目前常用的是网络包数据或者网络流数据。应用层数据指网络空间中的各类应用软件产生及存储的数据,如web日志信息、用户个人信息。
数据预处理及特征提取
在真实网络环境中,采集的数据可能有大量的缺失值、噪音也可能由于人工录入失误而产生异常点,因此需要对数据进行清洗以及归一化处理。(比如,从企业内部采集的TCP流数据,首先需要剔除重复数据、去除噪音等规范化操作,然后对清洗的数据进行聚合、归一化处理等操作)
如果采集的数据集中某个特征缺失值较多,通常会将该特征舍弃,否则可能会产生较大的噪声,影响机器学习模型的效果。如果缺失值较少,可以采用固定值填充、均值填充、中位数填充、插值法或者随机数填充等方法。如果存在异常值则直接将该条数据删除。在一些安全问题中国,有时候异常数据样本或恶意数据样本远远少于正常样本,对于这种非平衡数据集,通常采用过采样或欠采样方法构造平衡数据集。(对数据量大的正例采用欠采样,对数据量小的负例采用过采样)。
之后,将数据集进行分割,分成三个集合:训练集、验证集、测试集。(ps;训练集和测试集大家应该都了解),验证集主要用于验证模型及参数调优。常用的数据集分割方法有随机采样和交叉验证。
特征提取指从数据中提取最具有安全问题本质特性的属性,比如从恶意网页的识别中,提取主机信息特征、网页内容特征、静态连接及动态网页行为关系等,不过,这方面,提取特征虽然比较困难,机器学习中比较火的深度学习可以实现自动提取特征
模型构建
在机器学习领域,按照数据集是否有标记,将其分为监督学习和无监督学习,对于监督学习,比如说:垃圾邮件检测中的每条数据标记为“垃圾邮件”或"非垃圾邮件"。在非监督学习中,数据不包含标签信息,但可以通过非监督学习算法推断出数据的内在关联,例如社交网络账号的检测中对好友关系、点赞行为的聚类,从而发现账号内在的关联。近几年来,深度学习凭借强大的自动提取特征的能力,被用于解决异常协议检测、恶意软件检测、网络入侵检测等方面。另外,深度学习与增强学习相结合的深度增强学习算法还可以应用于移动终端恶意检测。
将选定的算法和训练数据集用于模型训练时,往往需要面临调参的挑战,这需要依据个人的经验进行。
模型验证
模型验证主要采用K倍交叉验证法,它将数据预处理后的训练数据集划分成k个大小相似且互斥的子集,每个子集尽可能保持数据分布的一致性,然后用k-1子集的并集作为训练集,剩余子集作为验证集,从而获得k组训练数据集和验证集,可以进行k此训练和验证测试,最终返回的结果是这k次验证测试结果的均值。
模型效果评估
安全领域一般常用的有正确率、查准率、查全率,正确率是分类正确的正常样本数与恶意样本数占样本总数的比例。查准率(精度)是指被正确识别的正常样本数占被识别为正常样本的比例,查全率(召回率)则是指被正确识别的正常样本与正确识别的正常样本和被错误识别的恶意样本之和的比例(简单说即是被正确识别的正常样本占)。公式一般如下:
- 标签:
-
网络安全