前言
本文翻译并总结归纳自 Hands-On Machine Learning for Cybersecurity 书中的 Chapter 1: Basics of Machine Learning in Cybersecurity。该书主要着眼于机器学习在网络安全领域中的应用,介绍了多个方向的原理和解决方案,比如:包时间序列分析、垃圾邮件检测、使用 k-means 算法的网络异常检测等。总的来说,该书的动手操作很多,实战性很强。接下来我会用一个系列,整理归纳书中的各个章节。当然,除了第一章是介绍机器学习的概览之外,其他几个章节内容比较离散,所以顺序可能打乱。
背景
自诞生以来,机器学习(Machine Learning)一直是一个非常热门的话题,它的出现实实在在地解决了很多问题,比如人脸识别、自动驾驶、购物推荐系统、聊天机器人等。
而在安全领域方面,老式的威胁检测系统通过使用启发式的和静态的签名(signature)来检测威胁和异常。例如:杀毒软件会根据病毒程序的特征,生成并维持一个病毒的签名库(保持持续更新),在查杀时通过与库中的签名比对来识别病毒程序。基于签名的威胁检测技术虽然容易理解,但并不健壮,它的最大的问题之一是:在数据规模、数据流速显著增大时,如何保证签名比对过程与数据流入速度匹配。每个包需要与数据库中的每个签名比对,如果不能保持同步,那意味着只能抛弃部分数据包,由此就会产生“漏网之鱼”。
如今,基于签名的系统逐渐被智能网络安全代理(Intelligent cybersecurity agent)所取代。机器学习在识别新型恶意软件、零日漏洞攻击(zero-day attack)、高级可持续威胁(advanced persistent threats,简称 APT)方面取得积极进展。
一般来说,由于攻击的复杂特性,要做到完全预防是很难的,机器学习能做到在攻击的初期识别攻击并防止其扩散到整个系统。许多网络安全公司使用诸如用户行为分析(user behavior analytics)和预测分析(predictive analytics)的高级分析方法,在威胁生命周期的早期阶段识别 APT 攻击,这种方式能够有效预防身份数据泄漏和内部威胁。规范分析(prescriptive analytics)则更具有响应性,能够在网络攻击发生以后分析该采取什么响应措施能将损失降到最小。
![48e9cf0bd45e3630c4346d142839c8a1.png]()
机器学习中的数据
数据是机器学习的核心。数据分为结构化数据和非结构化数据,结构化数据(structured data)可以被映射为二维表结构,包含表头(Header)和表内元素,传统的关系型数据库(RDBMS)如 MySQL、Oracle 等都是以这种方式存放结构化数据;而非结构化数据(unstructured data)数据结构不规则或不完整,没有预定义的数据模型,例如图片、音频/视频等;融合了结构化和非结构化的数据称为半结构化数据(semi-structured data)。