JHU-网络安全人工智能笔记-全-

JHU 网络安全人工智能笔记(全)

001:人工智能技术背景与综述 🧠

在本节课中,我们将学习人工智能的背景知识及其简要概述。我们将探讨人工智能的定义、发展历程、核心概念及其在网络安全领域的应用前景。

概述

人工智能是一个广泛使用的流行词,但其确切含义和起源并非人人皆知。许多人可能认为它是一个新术语,但实际上它是一个相当古老的术语。人工智能领域经历了多次兴衰周期,这些周期与政府资助密切相关。当前的人工智能复兴始于2012年左右,由一种被称为深度学习的机器学习算法所推动。

人工智能的定义与范畴

人工智能是一个非常广泛的领域,这导致了许多混淆。你可能会听到人工智能、机器学习或深度学习等术语被交替使用。为了理清这些概念,我们需要从宏观视角来看:人工智能是一个涵盖多种技术的广阔领域。

一般来说,人工智能可以定义为使用计算机模拟人类智能的算法。它可以按其应用分为几个子类:行为(如机器人技术)、认知与学习(如机器学习)以及感知(如自然语言处理)。其中,机器学习是目前最流行的术语,而深度学习是机器学习的一个子领域。

强人工智能与弱人工智能

在具体讨论机器学习之前,我们需要理解强人工智能与弱人工智能的概念。

你可能没有听说过这种区分方式,但很可能见过它们的表现形式。例如,大多数人都见过或拥有具备驾驶辅助或自动驾驶功能的汽车。虽然存在许多功能强大的驾驶辅助算法,但几乎没有哪个算法能让人完全信任其可以独立完成横跨全国的驾驶。这些都是弱人工智能的例子。

在电影《全面回忆》中,汽车能够载人去任何想去的地方,这是强人工智能的例子。而在电影《我,机器人》中,人类被禁止在高速公路上驾驶,因为自动驾驶汽车是比任何人类都更出色的驾驶员,这则是超级人工智能的例子。

关键点在于:弱人工智能是我们今天已经开发出来的技术,主要通过机器学习应用来体现。我们目前尚未开发出强人工智能超级人工智能,这些概念主要存在于电影中。

聚焦机器学习

正如之前提到的,人工智能是一个广阔的研究领域,在其“认知与学习”子领域下,包含了机器学习。虽然也存在模糊逻辑等其他算法,但机器学习是目前人工智能最流行的表现形式。

这主要得益于两个因素:第一,机器学习是数据驱动的,而当前有大量数据可用于支持许多需要机器学习的领域;第二,有足够的计算能力来运行算法处理这些数据。

机器学习算法主要分为三种类型:

以下是三种主要的机器学习算法类型:

  • 监督学习:使用带标签的数据来学习如何对数据进行分类。
  • 无监督学习:根据数据的内在特征学习对数据进行分组,不需要带标签的示例
  • 强化学习:通过与数据或环境的试错交互进行学习,整个过程由一个奖励函数或矩阵来引导。

在本课程中,你将通过实践课程,在解决网络安全问题的背景下更深入地理解这些算法。

神经网络与深度学习

神经网络是一种机器学习算法,可以是监督式或无监督式的。它受到人脑生物神经网络的启发,由连接的节点层组成:一个输入层、一个输出层以及一到多个中间层(或称隐藏层)。

一种特殊版本的神经网络,其主要特征是具有多个隐藏层,被称为深度学习。深度学习需要海量的数据极强的计算处理能力。近年来这两方面的增长使得深度学习变得可行。

进一步探讨深度学习,其名称来源于其隐藏层的深度。此外,深度学习的特点是能够自主选择特征。其缺点是,深度学习在很大程度上是一个“黑箱”,我们对其如何选择特征乃至如何做出决策的内在机制知之甚少。但我们知道,它在解决复杂问题的决策方面非常有效,例如在多种复杂游戏和挑战中击败人类玩家。

自主性与保障

讨论人工智能时不能不谈自主性。人工智能可用于开发能够在不同程度上无需人类帮助而执行特定任务的系统,这意味着存在不同级别的自主性。

有许多框架试图界定人工智能系统的自主级别与人类依赖程度之间的关系。本课程采用一个简单的框架进行说明。目前,我们已经在系统层面实现了一定程度的自主性,例如在自动驾驶汽车中,这可以称为第2级:半自主(高级),也属于弱人工智能。而第3级:完全自主系统目前仅存在于电影中。

另一个重要议题是自主性的保障。一旦赋予系统一定程度的自主性,就必须有办法确保该系统是安全、可靠并能持续按预期运行的。这可以通过自主性保障来实现。J2自主保障研究所的框架采取了整体性视角,不仅关注技术本身,还关注与技术交互的整个生态系统,以及管理技术行为的法律和政策。

人工智能与网络安全问题

从这里开始,我们将触及问题的核心。首先需要明确的是:我们面临一个网络安全问题。

这个问题的根源在于,基于计算的技术被广泛应用于我们全部的16个关键基础设施部门。关键基础设施支撑着美国庞大的经济和军事实力。然而,技术的发展速度远远超过了我们保护它的能力,因此所有技术都存在被利用的漏洞。

这些漏洞之所以存在,是因为不完美的人类设计和建造了这些技术,并且在大多数情况下,这些技术通过互联网相互连接。因此,这些技术不仅存在可利用性,而且在大多数情况下是可被远程利用的

更糟糕的是,我们没有足够的人类网络防御人员来保护关键基础设施中的系统。这正是人工智能可能发挥作用的地方。

在本课程中,我们将重点探讨如何利用人工智能协助一级网络安全分析师进行网络事件分类和处置。换句话说,我们的理念是,如果设计和实施得当,人类分析师应该能够将人工智能驱动的工具作为力量倍增器,协助他们更好地保护网络、系统、应用程序,并识别内部威胁。

总结

本节课我们一起学习了人工智能的背景与综述。我们明确了人工智能是一个模拟人类智能的广阔领域,经历了多次兴衰周期。我们区分了弱人工智能与强人工智能,并指出当前应用主要为弱人工智能下的机器学习。我们介绍了监督学习、无监督学习和强化学习这三种主要的机器学习类型,以及作为其特殊形式的神经网络与深度学习。最后,我们探讨了系统自主性的级别与保障问题,并指出了当前严峻的网络安全形势,以及人工智能作为力量倍增器辅助人类分析师应对挑战的潜在价值。

002:多种机器学习算法实战演练 🚀

在本节课中,我们将通过动手实践的方式,学习几种重要的机器学习算法。我们将了解监督学习、无监督学习和强化学习的基本概念,并查看它们在网络安全问题(如垃圾邮件检测、恶意软件分析)中的应用示例。课程将引导你使用提供的Jupyter Notebook环境运行代码,并理解机器学习分析的基本流程。


环境准备与代码使用说明 💻

上一节我们概述了课程内容,本节中我们来看看如何准备实践环境并正确运行代码。

你已获得一个包含Jupyter Notebook的CAI虚拟机,其中包含了我们将讨论的AI方法的运行代码。

以下是启动和运行代码的步骤:

  1. 使用用户名和密码(均为 inLauraCaseKelly)打开虚拟机。
  2. 导航至幻灯片中所示的目录。
  3. 启动幻灯片中所示的Jupyter Notebook。

对于本讲座,所有代码都位于 chapter 1 文件夹下的 sources 子文件夹中,具体在 Chapter 1 examples notebook中。

请注意,教科书中的部分代码使用了已弃用的命令。我已进行修改以修复错误。然而,你可能仍会看到一些警告和偶尔的错误,但这不应妨碍笔记本中代码的功能。

鼓励你运行代码。为了获得最佳结果,请将代码复制到一个新的单元格中,并从新单元格运行代码。此外,在一些笔记本中,你可能会看到两个版本的代码。请始终使用第二个版本,因为第一个版本可能是教科书中的原始代码,使用了已弃用的命令。

你可能会注意到原始代码已运行并显示了结果。因此,尽量不要重新运行那些单元格,以免丢失原始代码的结果。如果你将代码复制到新的笔记本中,请确保为示例笔记本使用相同的内核版本。


监督学习算法实战 📈

上一节我们准备好了环境,本节中我们来看看监督学习算法的具体示例。这些算法通过使用带标签的数据进行训练来学习。

这些机器学习算法及其他算法可用于解决网络安全问题,例如检测垃圾邮件。为此,你需要在一个监督式机器学习算法上,使用垃圾邮件示例和合法电子邮件示例进行训练,然后在它从未见过的电子邮件上测试该算法,以确定其学习性能。

本幻灯片展示了一个线性回归监督学习算法。幻灯片左侧的代码片段说明了用于实现该算法的Python代码的主要组成部分。同时展示的还有用于训练机器学习算法的数据图,以及算法预测出的最能描述数据的最佳直线。

首先,导入几个重要的库,然后实例化一个线性回归模型并用随机线性数据对其进行训练。最后,将机器学习算法的输出可视化在训练数据之上。

这个例子说明了实例化模型、训练模型和可视化结果所需的高级步骤。

# 示例:线性回归
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt

# 生成随机数据
X = np.random.rand(100, 1) * 10
y = 2 * X + 1 + np.random.randn(100, 1)

# 实例化并训练模型
model = LinearRegression()
model.fit(X, y)

# 预测并可视化
X_new = np.array([[0], [10]])
y_predict = model.predict(X_new)
plt.scatter(X, y)
plt.plot(X_new, y_predict, "r-")
plt.show()

在此示例中,作者提供了一个自定义函数来绘制机器学习算法的决策空间。以下是关键步骤:

  1. 在此处导入重要的Python库。
  2. 作者从Python的datasets包创建了一个数据集。
  3. 然后绘制数据集中的点。
  4. 接着实例化机器学习算法并进行训练。
  5. 最后,在其训练过的数据点上绘制决策空间。

无监督学习算法实战 🧩

上一节我们实践了监督学习,本节中我们转向无需标签数据的无监督学习算法。

这些机器学习算法不需要标签数据。聚类算法可以从数据中学习特征并据此对数据进行分组,而降维算法可以减少数据集中的特征。这些机器学习算法及其他算法可用于恶意软件和欺诈检测。

在本幻灯片中,作者首先使用PCA算法减少数据集中的特征,然后使用聚类算法对数据进行分组。让我们退一步看:

他做的第一件事是导入重要的库,然后从提供的CSV文件加载数据集。接着,他实例化PCA机器学习算法并将其应用于数据。PCA算法将特征从24个减少到4个。随后,实例化高斯混合聚类算法并将其应用于降维后的数据。最后,将得到的聚类分组可视化。


强化学习简介与网络安全应用 ⚡

本章作者提供了监督学习和无监督学习的动手示例,但没有提供强化学习的例子。作为补充,我添加了一张幻灯片,更详细地介绍了这种方法。然而,你需要等到后面的模块才能获得强化学习的动手示例。

本幻灯片列出了几种强化学习方法。通常,强化学习算法通过与数据集的试错交互来学习,试图从奖励矩阵中获得最高分数。奖励矩阵被设计为对算法做出正确决策给予正分,对做出错误决策给予负分。

强化学习可用于检测多态恶意软件。


机器学习分析流程与最佳实践 📊

上一节我们介绍了各类算法,本节我们来总结机器学习在网络安全中的完整分析流程。

这张幻灯片很好地总结了网络分析师开发机器学习工具所需的机器学习分析流程。

流程首先由担任数据工程师角色的网络分析师开始,即识别适当的数据并将数据存储在某种结构中,以便为下一个角色(数据科学家)以可用的形式存储数据。这可能简单到处理一个小数据集并将其保存为CSV文件,也可能复杂到建立一个集群来存储PB级数据,并必须提取出较小的部分放入数据仓库或数据集市,供数据科学家访问。

接下来,担任数据科学家角色的网络分析师需要执行机器学习分析流程,即使用数学变换从数据中提取特征模式,以输入到监督机器学习算法中。当然,无监督机器学习算法或深度学习算法可能不需要此步骤。

然后是机器学习模型开发和优化步骤。这里的工作是为数据确定合适的机器学习算法,然后训练和测试模型,直到获得最佳结果。在优化过程中,特征工程和模型工程步骤可能是一个迭代过程。

一旦获得优化模型,网络分析师应在真实环境中测试机器学习分析工具。

幻灯片还列出了数据集准备的几个最佳实践:

  • 数据清洗:处理缺失值、异常值。
  • 特征选择/工程:选择相关特征或创建新特征。
  • 数据标准化/归一化:将数据缩放到共同尺度。
  • 数据集划分:分为训练集、验证集和测试集。

总结 🎯

本节课中,我们一起学习了多种机器学习算法的实战应用。我们首先设置了Jupyter Notebook实践环境,并了解了代码运行的注意事项。接着,我们动手实践了线性回归等监督学习算法,观察了它们如何从带标签的数据中学习并进行预测。然后,我们探索了PCA降维和聚类等无监督学习算法,它们无需标签即可发现数据内在结构。此外,我们还简要介绍了强化学习的基本原理及其在网络安全(如多态恶意软件检测)中的应用潜力。最后,我们梳理了从数据准备到模型部署的完整机器学习分析流程,并总结了数据预处理的最佳实践。这些知识为运用AI解决实际的网络安全问题奠定了基础。

003:使用人工智能检测电子邮件网络威胁 📧

在本节课中,我们将学习如何利用人工智能技术来检测电子邮件中的网络威胁,特别是垃圾邮件。我们将探讨从传统规则方法到现代AI方法的演变,并深入理解感知机这一基础神经网络模型的工作原理。

从传统规则到人工智能的演变

上一节我们介绍了本课程的主题。本节中,我们来看看电子邮件安全这个具体的网络安全问题。

电子邮件是一个巨大的攻击面。我们每个人每天都会收到大量邮件。这为构建AI分析工具以实现自动化保护提供了完美的应用场景。

我们并非孤军奋战。最早的AI自动垃圾邮件过滤器之一是SpamAssassin。建议您自行研究以加深理解。

最初,垃圾邮件过滤器可能非常简单,由静态规则和统计分析构成。其中一些可能只追踪某些关键词。单个关键词的出现可能不足以达到判定阈值,但邮件中同时出现某些特定关键词组合,就可能达到垃圾邮件或恶意意图的阈值,如顶部表格所示。

随着垃圾邮件发送者变得更聪明,过滤器也演变为更复杂的规则。这些规则追踪关键词的频率,可能应用数学变换,然后应用阈值进行判定。随着垃圾邮件发送者进一步升级,可能需要更改关键词或重新校准阈值,就像第二个表格所示。

随着攻击者变得越来越聪明,更简单的垃圾邮件过滤器将不再有效。我们今天需要的是更动态的过滤器,这正是AI能够提供的。

人工智能基础:从生物神经元到感知机

现在让我们转换话题,谈谈人工智能。我们在上一个模块提到了神经网络。这里,我们将更深入一些,尝试更明确地比较人脑神经元和人工神经网络神经元。

请看并排比较图。生物神经元通过树突接收刺激,这导致细胞体发生电变化。如果来自树突的刺激足够强,产生的信号会被发送到轴突,并沿着轴突传递到轴突末梢,触发“放电”。

对于本次讨论,我们将聚焦于感知机,它是最基础的神经网络。感知机没有隐藏层,它有一个传递函数,类似于树突接收输入,应用权重,处理加权输入,然后输出到一个激活函数。激活函数应用一个阈值。

感知机迭代地分配权重,以正确分类训练数据,希望这些优化后的权重能使其在未来对未见过的数据实现高性能分类。

感知机:一个线性分类器

您可能没有意识到,数据科学主要是数学。然而,好处在于,在本课程中,您将保持网络安全分析师的角色,只是为了开发AI工具来解决网络安全问题而扮演数据科学家。这意味着您可以略过复杂的数学,只专注于对AI算法的高层次理解。

因此,我们可以将感知机视为一个线性分类器。这意味着它可以通过画一条直线来分类数据,类似于我们之前讨论的示例垃圾邮件过滤器。所以,我们基本上可以使用感知机来执行与我们讨论过的示例相同的垃圾邮件过滤任务。

感知机的学习过程

在本幻灯片中,我们重点介绍设置权重的机制。如前所述,感知机在其训练过程中迭代更新其权重。需要明确的是,这描述了感知机的学习过程:它根据训练值和预测值之间的差异迭代更新权重。本幻灯片还引入了学习率的概念,它描述了权重更新的速度。

最后,感知机仅对线性可分的数据有效,如幻灯片右上角图表所示。

总结

本节课中,我们一起学习了使用人工智能检测电子邮件威胁的历程。我们从传统的基于规则的垃圾邮件过滤方法开始,看到了其局限性,进而引入了基于感知机的人工智能方法。我们了解了感知机作为线性分类器的工作原理,包括其如何接收输入、应用权重、通过激活函数做出决策,并通过迭代学习优化自身。理解这些基础概念,是构建更复杂AI网络安全工具的第一步。

004:感知机神经网络垃圾邮件过滤器实例 🧠📧

在本节课中,我们将聚焦于一个实践案例:使用机器学习感知机进行垃圾邮件过滤。这是利用真实公开数据集进行垃圾邮件过滤的首次尝试。

数据集概览

上一节我们介绍了感知机的基本概念,本节中我们来看看如何将其应用于实际问题。首先,我们需要理解所使用的数据。

幻灯片右上角展示了公开数据集的片段。该数据集的每一行都是一条被标记为“正常邮件”(ham)或“垃圾邮件”(spam)的短信文本。

数据工程步骤

以下是数据准备的关键步骤,这些步骤属于机器学习分析开发流程中的数据工程环节。

  1. 关键词筛选:我们回顾之前的简化示例,使用预设的关键词。
  2. 特征提取:根据这些关键词过滤数据集,追踪它们在每条短信中出现的频率。
  3. 新数据集构建:将关键词频率记录到一个新的数据集中,并保留原始的“正常邮件”或“垃圾邮件”标签。

在这张幻灯片中,执行了机器学习分析开发流程中的数据工程步骤。数据从一个CSV文件中读取,经过预处理,并创建了一个新的数据集。

数据科学家步骤:模型开发与训练

现在,我们进入机器学习分析开发流程中由数据科学家执行的步骤。

  1. 数据分割:将新数据集拆分为训练集和测试集。
  2. 特征说明:该数据集由两个特征组成,即两个关键词在每条短信中出现的频率。这些是原始特征,未经过任何数学变换。
  3. 模型实例化:实例化感知机模型。
  4. 初始优化:对其配置设置应用初步优化。
  5. 训练与测试:随后训练感知机,并最终对其进行测试。至此,从实用角度出发,机器学习分析模型已经开发完成。

模型评估与可视化

在这张幻灯片中,数据科学家的步骤继续进行。

  1. 决策空间可视化:将决策空间与测试数据点一同可视化。
  2. 准确性评估:评估机器学习分析模型的准确性。该模型的准确性相当不错。

虽然可以使用更多关键指标进行评估,但我们将在课程后续部分讨论这些内容。目前,我们专注于简单的准确性指标。

我们可以显式修改模型的配置设置,尝试产生更准确的结果。但同样,为了保持简洁,我们现在将一切尽可能简化。

我们承认感知机仅限于解决线性可分的问题,但它在处理这类问题时表现得非常出色。

总结

本节课中,我们一起学习了如何将感知机神经网络应用于垃圾邮件过滤的实际案例。我们从数据集的介绍开始,逐步完成了数据工程、模型训练、测试以及结果可视化的全过程。尽管感知机有其局限性,但它在解决线性可分问题方面是一个强大而直观的工具。

005:支持向量机(SVM)垃圾邮件过滤器实例 📧

在本节课中,我们将聚焦于一个实际案例:使用机器学习中的支持向量机进行垃圾邮件过滤。我们将通过一个具体的例子,了解SVM如何应用于解决非线性的分类问题。

概述

上一节我们介绍了感知机算法。本节中,我们来看看另一种监督学习算法——支持向量机。我们将使用与感知机相同的公开数据集,但处理一个更复杂、非线性可分的问题,以此展示SVM的强大能力。

支持向量机与感知机的区别

支持向量机与感知机类似,都是一种监督机器学习算法。然而,两者的目标不同。

  • 感知机的目标是通过最小化分类错误来对数据进行分类。
  • 支持向量机的目标则是最大化其用于分隔数据的超平面与离该超平面最近的训练数据点之间的距离。这个距离被称为间隔,而那些最近的数据点则被称为支持向量

此外,支持向量机能够分类非线性可分的数据,这是其相较于感知机的一个关键优势。

项目实例:垃圾邮件过滤

这是我们尝试使用人工智能进行垃圾邮件过滤的另一个案例,使用了与感知机相同的公开数据集。

数据集介绍

幻灯片右上角展示了该公开数据集的一个片段。数据集的每一行都是一条短信文本,并被标记为“ham”(正常邮件)或“spam”(垃圾邮件)。

特征工程

这次,我们使用一组关键词(称为“可疑词”或垃圾邮件词)和中性词(正常邮件词)来构建特征。我们的评分函数不能再被建模为一个线性函数,这是一个非常重要的区别。因为由此产生的数据集不再是线性可分的,从而构成了一个感知机无法解决的、更困难的问题。

接下来,数据集会根据这组关键词及其出现频率进行筛选。这些信息被记录到一个新的数据集中,同时我们保留了原始的标签。

以下是数据工程步骤:

  • 从CSV文件中读取数据。
  • 对数据进行预处理。
  • 创建一个包含关键词频率和标签的新数据集。

模型训练与测试

以下是数据科学家步骤:

  • 将新数据集拆分为训练集测试集
  • 该数据集由两个特征组成:每条短信中,预设关键词组里每个词的出现频率。这些原始特征被直接使用,没有进行任何数学变换。
  • 然后,实例化支持向量机模型,并对其配置设置进行初步优化。
  • 接着,使用训练集对支持向量机进行训练。
  • 最后,使用测试集对模型进行评估。至此,从实用角度讲,机器学习分析模型已经开发完成。

结果可视化与评估

数据科学步骤继续进行:

  • 对决策空间进行可视化,同时展示测试数据点。
  • 评估机器学习分析模型的准确性。

考虑到这已不再是一个线性可分问题,而是一个更困难的问题,该机器学习分析模型的准确性相当不错。

当然,我们可以使用更多关键指标进行评估,但目前我们只关注准确率这个简单指标。同样,我们也可以迭代修改机器学习分析模型的配置设置,尝试产生更准确的结果,但为了简单起见,我们现在保持一切尽可能简单。

支持向量机的扩展应用

支持向量机还能够通过图像检测垃圾邮件。如果你感兴趣,可以点击链接查看更多示例。

总结

本节课中,我们一起学习了支持向量机在垃圾邮件过滤中的应用。我们了解到SVM通过最大化间隔来寻找最优分类超平面,并且能够处理非线性可分的数据集。通过一个实际案例,我们走过了从数据预处理、特征工程到模型训练、评估的完整流程,看到了SVM在解决更复杂分类问题上的有效性。

006:基于回归与树算法的钓鱼攻击检测 🎯

在本节课中,我们将通过一个实践案例,学习如何应用机器学习中的回归算法和决策树算法来检测钓鱼攻击。我们将从线性回归开始,逐步过渡到逻辑回归,最后探讨决策树算法,并比较它们在处理分类问题时的表现。


线性回归算法 📉

上一节我们介绍了感知机算法,本节我们来看看线性回归算法。与感知机类似,线性回归也使用特征(如关键词)来拟合一条直线,但其输出是连续值而非离散类别。

线性回归的模型可以表示为:

公式: y = w1*x1 + w2*x2 + ... + wn*xn + b

其中,y 是预测值,x1, x2, ..., xn 是特征,w1, w2, ..., wn 是权重,b 是偏置项。

我们使用与感知机案例相同的公开数据集(SMS垃圾邮件数据集)进行实验。以下是构建线性回归分析模型的主要步骤:

  1. 数据与特征工程:筛选出预定义的关键词,并统计它们在每条短信中出现的频率。这些频率值构成了新的特征数据集,同时保留了原始的“正常邮件”或“垃圾邮件”标签。
  2. 模型工程与评估:使用新的特征数据集训练线性回归模型,并评估其准确率。

实验结果显示,线性回归模型在此任务上的表现远不如感知机。这在意料之中,因为线性回归更适合处理连续型数据,而我们面对的是一个离散的分类问题。此外,线性回归假设特征之间相互独立,且不擅长处理分类结果,这些局限性在此案例中暴露无遗。


逻辑回归算法 🔄

鉴于线性回归在分类问题上的不足,我们转向逻辑回归算法。与线性回归预测具体数值不同,逻辑回归估计样本属于某个类别的概率,这使其更适用于分类任务。

逻辑回归的函数(Sigmoid函数)为:

公式: P(y=1) = 1 / (1 + e^(-z))
其中 z = w1*x1 + w2*x2 + ... + wn*xn + b

现在,我们使用一个新的钓鱼网站数据集来开发逻辑回归分析模型。以下是构建过程:

  1. 数据与特征工程:我们应用独热编码技术,将数据集中的分类数据(如URL类型、协议类型)转换为数值型数据。处理后的数据集包含30个特征。
  2. 模型训练与测试:将数据集划分为训练集和测试集。实例化逻辑回归模型,用训练集进行训练,并在测试集上评估性能。

该方法效果良好,成功开发出了一个可用的机器学习分析模型。然而,逻辑回归同样假设特征之间线性独立,这是其一个主要限制。


决策树算法 🌳

接下来,我们探讨决策树算法。决策树通过一系列“是/否”问题对数据进行划分,结构直观易懂。

我们使用与逻辑回归案例中相同的、经过独热编码处理的数据集(30个特征)来构建决策树模型。以下是关键步骤:

  1. 模型训练:实例化决策树分类器,并使用训练数据对其进行训练。决策树会自动学习基于特征进行决策的规则。
  2. 模型评估:在测试集上评估训练好的决策树模型。

结果表明,决策树模型的表现甚至优于逻辑回归模型。此外,决策树原理简单,不需要大量的训练数据。其缺点是,决策树对训练数据中的微小变化非常敏感,这可能导致生成的树结构不稳定。


总结 📝

本节课中,我们一起学习了三种机器学习算法在钓鱼攻击检测中的应用:

  • 线性回归:因其处理连续数据的特性,在本次分类任务中表现不佳。
  • 逻辑回归:通过估计类别概率,更适合分类问题,在此任务中取得了良好效果。
  • 决策树:以直观的规则进行决策,在本案例中表现最佳,且模型简单易懂,但对数据细节较为敏感。

通过这个完整的流程——从数据工程、特征工程到模型工程与评估——我们实践了构建一个机器学习分析模型的全过程。理解不同算法的特性,对于在网络安全领域选择合适的AI工具至关重要。

007:朴素贝叶斯垃圾邮件过滤器实例 📧

在本节课中,我们将学习如何利用朴素贝叶斯机器学习算法和自然语言处理技术,来构建一个垃圾邮件过滤器。我们将通过一个实际案例,了解从数据处理到模型评估的完整流程。

上一节我们介绍了机器学习在网络安全中的应用背景,本节中我们来看看一个具体的算法实例。

朴素贝叶斯算法简介

我们现在转向朴素贝叶斯机器学习算法。这是一种非常强大的技术,它只需要很少的训练数据。它是一个概率分类器,使用贝叶斯定理来对数据进行分类。其本质是基于与类别可能相关的条件的先验知识,将数据点分配到一个类别。

其核心公式可以表示为:
P(类别|特征) = [P(特征|类别) * P(类别)] / P(特征)

项目概述:基于SMS的垃圾邮件过滤

这是利用人工智能进行垃圾邮件过滤的又一次尝试,使用的是公开的SMS文本数据集。数据集的每一行都是一条SMS文本消息,并被标记为“ham”(正常邮件)或“spam”(垃圾邮件)。

以下是本项目实现的主要步骤:

  1. 数据预处理:使用自然语言处理技术将每个单词转换为数值格式。
  2. 特征工程:对数据进行归一化处理,并应用权重。
  3. 模型训练:使用朴素贝叶斯算法动态识别可疑关键词。
  4. 流程执行:在本案例中,执行了机器学习模型开发流程的所有步骤。
  5. 结果评估:实现了数据工程、特征工程、模型工程,并获得了准确率结果。

结果与总结

最终得到的结果尚可。但是,如果使用更多的数据,可能会获得更好的效果。

本节课中,我们一起学习了朴素贝叶斯算法在垃圾邮件过滤中的实际应用。我们了解了从文本数据到分类模型的完整流程,包括数据转换、特征处理以及模型训练与评估。这个实例展示了如何将理论算法应用于解决一个具体的网络安全问题——信息过滤。

008:用户身份认证安全技术 🔐

在本节课中,我们将学习如何保护用户身份认证过程。我们将从垃圾邮件、恶意软件和网络威胁的话题稍作转换,聚焦于身份认证本身,并探讨为何需要加强其安全性。

概述:认证安全的驱动力

用户账户遭受入侵的一个主要驱动力是物联网设备的爆炸式增长。物联网设备通常内存小、计算能力有限,但具备无线互联网接入功能。这类设备不仅包括智能手机,还包括诸如Fitbits、Apple Watch、三星智能手表等可穿戴设备。这些设备的普及增加了人机交互的机会,同时也提高了未经授权用户访问的概率。

弱密码与单因素认证的风险

用户账户访问权限的泄露通常意味着用户账户保护薄弱,尤其是用户密码。仅使用密码这一种认证方式,是灾难的根源。存在其他更安全的选项。

以下是几种常见的增强认证方式:

  • 一次性密码:通过短信发送到您关联的手机号。
  • 邮件验证:发送验证链接到您账户关联的邮箱。
  • 认证器应用:如Google Authenticator,生成动态验证码。
  • 硬件安全密钥:如YubiKey,提供物理层面的认证。

识别异常行为的策略

网络安全分析师在监控托管用户账户的系统时,有多种选项来帮助识别未经授权的访问。这些方法大多围绕识别不符合人类常规行为模式的活动。

常见的异常行为指标包括:

  • 快速登录尝试:在极短时间内多次尝试登录。
  • 快速输入不同密码:连续尝试多个不同的密码。
  • 地理位置异常:从用户通常不会访问的世界区域登录。
  • 设备或系统异常:使用该用户不常用的操作系统或设备类型。

反应式与预测式安全策略

网络安全分析师可以采用反应式或预测式的方法来保护系统的用户账户。

反应式策略通常设定静态规则。例如,在多次密码尝试失败后锁定用户账户。这种策略的挑战在于,它可能因用户自身的失误而将合法用户锁在账户之外,并且统一的尝试次数阈值可能无法有效应对所有攻击场景。

预测式策略则更具动态性,能够纳入个体用户的行为模式,从而更有效地预测并阻止未来的攻击行为。这种策略的实现,正如您可能已经猜到的,可以借助机器学习技术。

机器学习在认证安全中的应用

我们已经讨论过机器学习分析模型的开发流程,因此您对开发预测性分析所涉及的步骤已有所了解。根据教材作者的经验和书中的示例,他针对不同情况提供了选用最佳机器学习算法的见解。

在模型工程阶段,作者指出了一些可用于识别虚假账户行为的潜在特征,例如:

  • 同一IP关联多个账户
  • 账户活动发生在极短的时间内

此外,作者还强调了有助于评估用户账户信誉的特征,这有助于确定用户账户的正常行为模式。监督学习的最佳实践应有助于减少误报,而无监督学习的最佳实践应有助于提高结果的准确性。

生物特征认证

最后,作者提到了使用生物特征进行认证。由于智能手机功能的增强,生物特征认证如今应用得越来越广泛。许多智能手机的生物特征基于面部或指纹。

还存在其他类型的生物特征,例如:

  • 步态:即您走路的方式。
  • 击键动力学:即您打字的方式和节奏。

总结

本节课中,我们一起学习了用户身份认证安全的重要性及其面临的挑战。我们探讨了物联网设备增长带来的风险、弱密码和单因素认证的局限性,以及识别异常登录行为的方法。我们比较了反应式与预测式安全策略的优劣,并了解了机器学习如何通过分析用户行为模式来实现更智能、更自适应的预测式防护。最后,我们还简要介绍了生物特征认证这一新兴且日益普及的技术。保护认证过程是构建健壮网络安全防御体系的关键一环。

009:击键动力学与人脸识别生物认证 👤🔐

在本节课中,我们将学习两种基于人工智能的生物特征认证方法:击键动力学认证与人脸识别。我们将探讨它们的工作原理、实现步骤以及面临的挑战。


击键动力学认证 ⌨️

上一节我们介绍了生物特征认证的概念,本节我们来看看一种具体的行为生物特征:用户击键模式。

击键动力学认证通过分析用户打字时的节奏、按键间隔等特征来识别身份。以下是实现该认证的机器学习流程:

  1. 数据准备:使用一个包含51名用户的公开数据集,每位用户重复输入同一密码400次。数据被划分为训练集和测试集。
  2. 特征提取:从每次击键事件中提取超过30个特征(例如,按键之间的延迟时间)。
  3. 模型训练与测试:将特征数据输入多种机器学习模型进行训练和测试,包括:
    • 多层感知器
    • 支持向量机
    • K-近邻算法
  4. 性能评估:计算每个模型的准确率。在本例中,多层感知器模型表现最佳。

注:示例中可能未对模型参数进行优化,仅使用了默认设置。


人脸识别认证 📸

了解了基于行为的认证后,我们转向一种更直观的生理特征认证:人脸识别。这种方法历史悠久,从通缉令到现代智能手机都在使用。

然而,使用人脸识别进行身份认证存在一些挑战:

  • 长相相似的人(如双胞胎、家庭成员)可能难以区分。
  • 人的面部特征会随着年龄、健康状况而变化。

为了克服这些挑战,研究人员通常专注于提取面部最独特的特征。


关键概念区分

在深入之前,我们需要区分两个术语:

  • 人脸检测:在图像中定位人脸的位置。
  • 人脸识别:将检测到的人脸与数据库中已知身份的人脸进行匹配或分类。本节我们关注的是人脸识别

人脸图像数据维度很高(每个像素都可视为一个特征)。我们只关心其中最具区分性的特征子集。为此,我们使用主成分分析(PCA)这一无监督技术来降低数据维度。


主成分分析(PCA)算法

PCA算法能识别数据中的“主成分”,即数据方差最大的方向。对于人脸,这些主成分就对应最独特的特征,或称“特征脸”。

PCA的核心步骤如下:

  1. 计算数据集的协方差矩阵
  2. 找出该协方差矩阵中最大的特征向量并保留。
  3. 舍弃其他成分。

方差衡量一组数据的离散程度。协方差衡量两个变量之间的线性关系。协方差矩阵则包含了数据集中所有维度两两之间的协方差值。

以下是一个用Python计算协方差矩阵的简单示例:

import numpy as np
# 示例数据
data = np.array([[1, 2], [3, 4], [5, 6]])
# 计算协方差矩阵,每行代表一个特征,每列代表一个样本
cov_matrix = np.cov(data, rowvar=True)
print(cov_matrix)

从PCA到特征脸

PCA的数学基础是线性代数中的特征向量与特征值。协方差矩阵的特征向量指向数据变化最大的方向(主成分),对应的特征值表示该方向上的方差大小。

“特征脸”方法就是将所有人脸图像通过PCA转换后,得到的一组代表所有人脸共同变化模式的基础图像。任何一张人脸都可以表示为这些“特征脸”的线性组合。


人脸识别系统开发流程

现在,我们将上述概念整合到一个人脸识别系统的开发流程中:

  1. 数据加载:使用sklearn库中的fetch_lfw_people函数加载公开的“Labeled Faces in the Wild”人脸数据集子集。
  2. 数据划分:将数据分为训练集和测试集。
  3. 特征工程:应用PCA算法从人脸图像中提取“特征脸”。这些特征脸将作为新的、降维后的特征。
  4. 模型训练:将PCA提取的特征输入一个分类器(如多层感知器)进行训练。
  5. 评估:根据准确率等指标评估模型性能。基于PCA和简单分类器的组合通常能取得不错的效果。

总结 🎯

本节课我们一起学习了两种AI驱动的生物特征认证技术。

  • 首先,我们探讨了击键动力学认证,它通过分析用户的打字模式来识别身份,并走过了从数据准备到模型评估的标准机器学习流程。
  • 接着,我们深入研究了人脸识别认证。我们区分了人脸检测与识别,介绍了使用PCA算法提取“特征脸”以捕获面部独特特征的核心思想,并概述了构建一个人脸识别系统的完整步骤。

这两种技术展示了AI如何将行为模式和生理特征转化为强大的安全认证手段。

010:利用人工智能检测恶意软件威胁

在本节课中,我们将学习恶意软件的基础知识以及用于检测和分析恶意软件的基本工具。我们将探讨传统检测方法的局限性,并了解人工智能技术如何作为纵深防御策略的一部分,增强网络安全防护能力。

概述:恶意软件与纵深防御

上一节我们介绍了网络安全的基本挑战,本节中我们来看看针对恶意软件威胁的防御策略。

我们对抗网络威胁的最佳策略是纵深防御。这意味着部署多层不同类型的安全措施,而非依赖单一技术。

基于签名的恶意软件检测方法,由于攻击者技术的进步,其有效性已降低。但这仅是众多方法之一。尽管不如过去有效,基于签名的检测在防御已知威胁方面仍有其价值,不应完全抛弃。

在本课程中你将遇到的、基于人工智能的更强大技术,也应作为纵深防御解决方案中的一层。例如基于异常的检测和自主网络安全。将这三类技术结合使用,能构建更强大的防御态势。

机器学习在网络安全中的角色

现在,让我们更具体地讨论机器学习应如何协助网络安全分析师。

如前所述,机器学习应协助一级分析师,他们是人类防御的第一道防线。由于恶意软件威胁的数量和种类激增,这对人类分析师而言可能是一项繁重的工作。如果机器学习技术能帮助分析师更明显地识别威胁,那么这道防线将得到加强。

恶意软件攻击阶段与检测位置

恶意软件攻击的第一阶段通常是主机文件系统。在恶意软件于整个网络扩散之前,在初始主机上检测到它是理想情况。

网络安全分析师用于恶意软件检测的基本工具分为两类:

  • 静态分析工具:用于检查处于静止状态的恶意软件。
  • 动态分析工具:用于检查正在执行的恶意软件。

常见恶意软件类型

以下是几种常见的恶意软件类型:

  • 木马:伪装成合法应用程序,但在用户最意想不到的时候进行恶意行为。
  • 僵尸网络:由一组被称为“僵尸”的受控计算机组成,完全由命令与控制计算机控制,而这些计算机又由被称为“僵尸牧人”的人类控制。
  • 下载器:用于下载其他恶意软件的恶意软件。木马和僵尸网络可能通过下载器传播。
  • Rootkit:渗透到操作系统之下的恶意软件,以实现持久驻留。
  • 勒索软件:其首要目标是找到重要信息并加密,希望系统所有者支付赎金以重新获得文件访问权限。
  • 高级持续性威胁:这是恶意软件的终极形式,拥有自己的生命周期。它很可能利用零日漏洞(即无人知晓的漏洞,甚至硬件/软件供应商也不知道)来入侵计算机。这类恶意软件最终可能达成其目标,因为它们通常有国家支持的黑客作为后盾。

恶意软件分析工具

本幻灯片列出了其他类型的恶意软件分析工具。其中一些是静态分析工具,一些是动态分析工具。另一些则是帮助逆向工程或解除恶意软件作者为躲避检测工具而应用的混淆技术的工具。

接下来,我们将更深入地探讨静态恶意软件分析的概念,并查看检查恶意软件代码的基本和高级策略。

动态恶意软件分析基础

在深入动态分析之前,我们首先需要引入系统和网络监控的概念,这为动态恶意软件分析提供了支持。

我们将了解执行动态恶意软件分析的高级步骤,以及恶意软件作者为帮助其软件躲避检测而采取的防护方法。

恶意软件样本来源

本幻灯片揭示了寻找恶意软件样本的位置。我曾多次使用VirusTotal。该公司允许教授和学生为研究目的有限访问其档案。我也曾帮助学生建立蜜罐来吸引和研究恶意软件。其他资料库看起来也很有趣。这些都将是你获取恶意软件样本用于作业或课程项目的绝佳来源。

总结

本节课中,我们一起学习了恶意软件的基本概念、常见类型以及用于检测和分析的静态与动态工具。我们认识到,单一的签名检测方法已不足够,需要结合基于异常的检测和人工智能技术,构建多层次的纵深防御体系。机器学习能够有效协助一线分析师,提升威胁检测与响应的效率。最后,我们还了解了一些获取恶意软件样本用于研究的公开资源。

011:针对Windows操作系统的恶意软件分析 🔍

在本节课中,我们将要学习分析基于Windows的恶意软件的基本方法。我们将从介绍可移植可执行文件格式开始,并探讨如何利用其结构信息作为机器学习算法的特征,以区分合法文件与恶意软件。

引入PE文件格式 📁

上一节我们介绍了课程主题,本节中我们来看看分析Windows恶意软件的基础——可移植可执行文件格式。

可移植可执行文件格式是Windows操作系统中可执行文件的标准格式。我们同时引入PEView工具,这是一个用于可视化PE结构的基本工具。

PE文件可以分解为多个主要部分,包括PE文件头、节表和节数据。这些部分被封装在WIN头部结构中,具体包含MS-DOS头部、PE签名、映像文件头和可选头部。

使用PEView分析文件结构 🛠️

上一节我们介绍了PE文件的基本结构,本节中我们来看看如何使用PEView工具具体查看这些信息。

这张幻灯片展示了PEView对某个Windows文件的可视化结果。请注意,PEView屏幕左侧枚举了PE节的详细信息。这些信息及其内容是机器学习算法潜在的良好特征来源。

因此,在我们讨论这些信息时,请记住我们正是为此而关注它们。所有这些信息都是很好的特征,可供机器学习算法学习合法文件与恶意软件之间的差异。

深入解析PE头部信息 🧩

上一节我们看到了PEView的整体视图,本节中我们聚焦于PEView枚举出的具体PE节。

这张幻灯片重点展示了MS-DOS头部、DOS Stub和PE头部,并提供了关于这两类信息的基本说明。这些同样是机器学习算法非常具有潜力的特征。

这张幻灯片聚焦于映像可选头部以及入口点地址的位置。这些信息也可能成为机器学习算法非常有用的特征。

导入表与导出表的作用 📊

上一节我们分析了头部信息,本节中我们来看看PE文件中另一个关键部分——导入表和导出表。

这张幻灯片展示了关于导入表和导出表的信息。从历史上看,合法文件和恶意软件在使用这些表的方式上存在显著差异。

正如之前所述,通过将此类信息视为特征,机器学习算法能够学会区分合法文件与恶意软件。

特征选择的重要性与挑战 ⚖️

上一节我们讨论了导入/导出表等具体特征,本节中我们来总结一下特征选择的核心观点。

这张幻灯片总结了我贯穿本讲座一直试图阐明的一个观点:存在一些特定的PE文件节,合法文件和恶意软件对它们的使用方式截然不同。正是这些特定的PE文件节构成了非常优秀的特征。

这一点对于某些特定的PE文件节是成立的,而其他一些节则被合法文件和恶意软件以大致相同的方式使用。将这些类型的PE文件节用作特征并没有太大帮助,因为它们无助于区分恶意软件和合法文件。这些信息很可能是通过恶意软件研究人员进行恶意软件分析并观察这些差异而实验确定的。

新的恶意软件完全有可能利用不同的PE节表现出不同的行为,这就需要恶意软件研究人员去重新描述其特征。这也是恶意软件研究如此重要的原因之一。

总结 📝

本节课中我们一起学习了分析Windows恶意软件的基本方法。我们从介绍PE文件格式和PEView工具开始,详细探讨了如何将PE文件的不同部分(如头部、可选头部、导入/导出表以及特定节)的信息提取为特征,并解释了为什么某些特征能有效帮助机器学习算法区分恶意软件与合法文件,而另一些则不能。理解这些基础是应用人工智能技术进行网络安全分析的关键第一步。

012:基于聚类和决策树的恶意软件威胁检测 🛡️

在本节课中,我们将运用之前恶意软件分析讲座中讨论的知识,来开发用于检测恶意软件的机器学习分析模型。我们将首先探讨无监督学习如何用于恶意软件检测,然后介绍一种具体的聚类算法,最后对比介绍有监督的决策树方法。

无监督学习与恶意软件检测

上一节我们回顾了恶意软件分析的基础,本节中我们来看看如何利用无监督机器学习来检测恶意软件。

使用无监督机器学习的一个核心理由是,某些恶意软件(如多态恶意软件)能够改变自身。因此,对于这类恶意软件,必须找出它无法改变或通常不会改变的自身特征,并专注于这些特征。

无监督机器学习不依赖于样本数据进行学习。这意味着你无需向算法提供任何示例标签。无监督机器学习基于恶意软件的某些内在特征进行学习,并可以根据这些特征对文件进行分组。因此,期望是合适的无监督机器学习算法能够将恶意软件与恶意软件分在一组,将合法文件与合法文件分在一组。

在本案例中,我们专注于聚类方法。聚类主要利用文件特征之间的距离对它们进行分类。

以下是三种常用的距离度量方式:

  • 欧几里得距离distance = sqrt((x2-x1)² + (y2-y1)²),即两点间的直线距离。
  • 曼哈顿距离distance = |x2-x1| + |y2-y1|,即沿轴移动的网格距离。
  • 切比雪夫距离distance = max(|x2-x1|, |y2-y1|),即各维度坐标差绝对值的最大值。

聚类算法简介

存在多种类型的聚类算法,有些甚至是有监督的。一种有监督的聚类算法是K近邻算法。用户指定聚类数量K,算法根据数据点与测试数据的接近程度进行分组。

其他算法则是无监督的,各有其特点。本幻灯片强调了一个可用于评估聚类算法效果的指标。该指标本质上测试每个聚类内部点的紧密程度、与其他聚类点的远离程度,以及所使用的聚类数量是否合适。

对于具体实现,我们将重点介绍 K均值聚类算法

K均值聚类算法详解

上一节我们介绍了聚类的概念,本节中我们来深入了解K均值算法。

K均值聚类算法是一种无监督机器学习算法。用户选择聚类数量K,算法根据数据点之间的相似性(基本上是欧几里得距离)将数据点分配到各个聚类中。

从机制上讲,算法首先在特征空间中随机选择每个聚类的初始位置。特征空间是所有变量或特征存在的n维空间。然后,算法使用质心(即聚类中心)的概念,将数据分配到各个聚类中。接着,更新聚类的位置,以确保质心尽可能地位于每个聚类组点的中心。

这种机器学习算法的优点是极其简单,并且能很好地处理大量数据。但它不适用于特征数量庞大的数据。此外,你可能需要大量探索数据集才能恰当地选择K值。

无监督学习恶意软件分析实现

现在,我们来看看作者的无监督机器学习聚类恶意软件分析实现。

幻灯片中列出的四个特征来自PE文件的映像可选头。幻灯片中还涵盖了混淆矩阵及其内容的定义。

以下是三个关键的机器学习分析指标:

  • 正确分类概率:衡量分析模型对测试数据集的整体分类效果。
  • 检测概率:衡量分析模型识别恶意软件的能力。
  • 误报概率:衡量分析模型声称检测到恶意软件但实际并未发生的频率。

此外,还有轮廓系数,这是机器学习聚类算法特有的指标,用于衡量聚类算法在选择聚类位置和正确分配数据到聚类方面的效果。

最后是分析模型本身,如幻灯片右上角所示。数据科学家执行了机器学习分析开发过程的步骤。在无监督机器学习中,不需要训练阶段。

之前提到的四个特征是从一个更大的数据集中提取的,幻灯片左下角展示了一个摘录。这些原始特征被直接使用,未应用任何数学变换。然后实例化K均值算法,对其配置设置应用初始优化,并计算轮廓系数以产生结果。至此,就我们的实际目的而言,机器学习分析模型就开发完成了。

有监督决策树算法

与上一节讨论的无监督机器学习聚类算法形成对比,本节我们讨论有监督决策树机器学习算法的实现。

决策树基于 if-then-else语句 进行决策。本幻灯片还展示了用于调整和评估决策树所做决策的性能参数和指标。

作者仅使用了PE文件映像可选头中的两个特征来确定决策树分析模型。这些原始特征被直接使用,未应用任何数学变换。接下来,数据被拆分为训练数据集和测试数据集。然后实例化决策树算法,对其配置设置应用初始优化。性能调优在此处完成并产生结果。

总结

本节课中,我们一起学习了如何应用机器学习进行恶意软件威胁检测。我们探讨了无监督的K均值聚类算法,它通过计算特征距离来分组文件,适用于发现恶意软件的固有模式。同时,我们也介绍了有监督的决策树算法,它通过if-then规则从标记数据中学习并进行分类。两种方法各有适用场景,为构建有效的恶意软件检测系统提供了基础工具。

013:变形恶意软件检测技术 🛡️

在本节课中,我们将继续探讨网络安全与恶意软件的话题。我们将重点介绍变形多态恶意软件,以及可用于检测和创建这类恶意软件的人工智能工具。

恶意软件的演变

上一节我们介绍了恶意软件的基本概念,本节中我们来看看其演变过程。在网络安全领域,防御者与攻击者之间的关系是一场持续的军备竞赛。防御者首先部署防护措施,攻击者则设法规避这些措施,随后防御者再次升级防御。这种循环似乎永无止境。

多态恶意软件是攻击者为隐藏恶意代码、伪装成良性应用程序而开发的工具。它最初使用加密技术来隐藏自身,给防御者带来了挑战。然而,当防御者找到应对方法后,攻击者又推出了变形恶意软件。这种恶意软件在每次执行时都会重写自身代码,而不仅仅是加密,这使得检测变得更加困难。

检测策略

了解了多态与变形恶意软件的基本特性后,现在我们来探讨网络分析师的检测策略。

一种检测多态恶意软件的简单方法是等待其自行解密,然后查找恶意软件的特征签名。但恶意软件通常不会在实施恶意行为前轻易暴露自己。因此,我们需要将可疑文件置于受控环境(如沙箱)中,允许其解密,然后再进行特征分析。

检测变形恶意软件则更具挑战性。我们需要通过捕获其指令流逻辑来分析其行为,判断应用程序是否在自我重写。这种方法存在一些问题,例如误报率高计算密集。这时,机器学习可以提供帮助。

人工智能的作用

人工智能既可用于检测,也可能被用于扩散变形恶意软件。

一种有前景的检测方法是使用隐马尔可夫模型来学习恶意软件的操作码序列(即指令的逻辑流),并将可疑文件的模型与已知恶意软件的隐马尔可夫模型进行比较。如果相似概率很高,则该文件很可能是恶意软件。

另一方面,恶意软件编写者未来可能会利用强化学习等人工智能技术,使恶意软件能够自我修改以规避检测。强化学习的核心是学习在环境中采取最优行为以获取最大奖励,其数学框架是马尔可夫决策过程

深入理解隐马尔可夫模型

首先,马尔可夫过程是一个基于预定概率改变状态的随机过程,其所有状态都是可观察的。相比之下,隐马尔可夫模型包含一些无法直接观察的隐藏状态。

我们通过一个简单的“抽球问题”例子来理解。有三个隐藏的瓮,每个瓮里有已知比例的不同颜色的球。随机从一个瓮中抽取球并记录颜色序列,但隐藏了是从哪个瓮抽取的。由于当前选择的瓮不依赖于之前的选择,且瓮的状态不可直接观察,这便构成了一个隐马尔可夫过程。因此,我们只能通过概率来推断瓮的选择序列。

隐马尔可夫模型实现示例

以下示例模拟了一个基本的计算机应用程序指令调用序列,类似于使用隐马尔可夫模型识别变形恶意软件的原理。

  • 隐藏状态M(恶意指令)和 L(合法指令)。
  • 可观察状态W(计算机正常工作)和 N(计算机不工作)。

问题的核心是一台处理指令的计算机,其运行状态取决于执行的指令。模型的关键部分对应于初始状态矩阵状态转移矩阵发射矩阵。在实际分析中,这些矩阵如同特征,用于训练模型。模型最终会输出观察到特定序列的概率,以及最可能产生该观察序列的隐藏状态序列。

强化学习详解

在深入探讨之前,需要重申强化学习可能被恶意软件作者用来构建规避检测的恶意软件,这也是在此介绍它的原因。

如前所述,强化学习可以通过马尔可夫决策过程实现,并使用贝尔曼方程来计算在特定环境或行为交互下获得的奖励。

以下是一个导航系统的例子:用户从节点 F 出发,希望到达节点 C。系统使用强化学习随机选择下一个节点,试图最大化其奖励。如果实现正确,系统将引导用户到达能提供最大奖励的节点 C

强化学习导航系统实现

我们使用马尔可夫决策过程实现这个导航系统,并用贝尔曼方程计算奖励(在代码片段中用红色圆圈标出)。

首先看道路图。导航系统必须规划路线,用户从 F 出发,需要导航到 C

接下来看奖励矩阵。矩阵中,任意两个相连的节点之间值为 1,不相连的节点之间值为 0。但目标节点 C 的奖励值被设为 100,这是用户和导航系统都希望到达的终极奖励点。

经过 50000 次迭代后,奖励矩阵的值发生了变化。此时,算法应已通过试错学会了最有利的路径,这也应是用户希望到达的路径。在左下角,可以看到强化学习导航系统选择的路径,这与更新后的奖励矩阵内容相符。

以下是路径选择过程的解读:

  1. F 行开始,值最大的列是 E,对应路径 F -> E
  2. 移动到 E 行,值最大的列是 B,对应路径 E -> B
  3. 移动到 B 行,值最大的列是 D,对应路径 B -> D
  4. 移动到 D 行,值最大的列是 C,对应路径 D -> C
  5. 最终到达 C

虽然这不是一个恶意软件的例子,但希望能帮助你更好地理解强化学习。关于强化学习如何用于规避恶意软件检测,我们将在后续课程中探讨。

总结

本节课中,我们一起学习了:

  1. 变形与多态恶意软件的演变及其对网络安全构成的挑战。
  2. 针对这类恶意软件的传统检测策略及其局限性。
  3. 人工智能,特别是隐马尔可夫模型在检测变形恶意软件中的应用原理。
  4. 强化学习的基本概念及其通过马尔可夫决策过程贝尔曼方程的实现方式,并认识到它可能被用于增强恶意软件的规避能力。

理解这些概念对于开发更智能的网络安全防御工具至关重要。

014:网络异常行为检测 🛡️

在本节课中,我们将学习网络异常行为检测的背景知识、核心概念以及实现策略。我们将探讨为何需要异常检测,以及如何利用机器学习技术来识别网络中的可疑活动。

概述

在之前的课程中我们提到,网络安全问题源于关键基础设施所依赖的、由人类生产并充满缺陷的软硬件系统。这些系统通过网络互联,使得攻击者可以远程利用这些缺陷。这一背景为我们描绘了当前所面临的网络安全环境。

为何需要异常检测

上述背景有助于解释为何需要异常检测。从本页幻灯片开始,我们将讨论入侵检测,特别是网络入侵检测。这引出了关于特征检测、异常检测以及自主网络安全的讨论。

目前,网络防御者与攻击者之间正在进行一场“军备竞赛”。由于高级恶意软件的出现,传统的特征检测已几乎失效。在我看来,异常检测是目前前景广阔的技术,而自主网络安全则是未来的方向。尽管这不是一个新范式,但我相信人工智能的必要进步才刚刚开始,这将使该技术的真正潜力得以展现。我们将在后续幻灯片中进一步讨论。

主机入侵检测

上一节我们讨论了入侵检测的主题,本节我们将重点关注终端系统或主机系统中的入侵检测。

主机系统通常由硬件(如CPU、内存和文件系统)、软件(如操作系统和运行中的应用程序)以及其他半硬件或半软件组件(当然也包括网络接口)组成。因此,恶意软件在主机中有许多可以藏身的地方。所以,主机入侵检测系统需要监控主机的许多不同方面。

既然我们目前认为基于异常的检测技术前景广阔,让我们再多讨论一些。当然,它是一种机器学习检测方案,但也有其简单的一面。

异常检测的核心思想

与试图学习恶意软件的复杂行为不同,异常检测旨在基于网络“无聊的”正常行为进行训练。然而,这说起来容易做起来难,因为网络所有者实际上很难观察到他们希望看到的、网络真正的正常行为。大多数时候,他们无法确定网络是否已经以某种方式被攻破。

因此,出于实际目的,基于异常的检测是在网络的正常行为上进行训练的。

我们面临的威胁

现在,让我们进一步讨论那些我们非常害怕的外部威胁。攻击者是存在的,并且可以以恶意软件的形式出现,这些软件可以进入计算机网络和我们的终端用户系统。

恶意软件本质上是恶意软件,其危害程度从“坏”到“更坏”不等。在“坏”的一端,例如广告软件和间谍软件,它们分别通过试图向你推销产品或窃取你的个人信息来烦扰你。在“更坏”甚至“可怕”的一端,是高级持续性威胁(APT)。这是攻击者的终极体现。

它们之所以如此危险,是因为这种形式的恶意软件很可能代表某个外国政府,并拥有相应的资金支持。这类恶意软件非常恶劣,它有自己的生命周期,充满了各种恶意活动。只要有足够的时间,它很可能会击败我们所有的防御方法。其主要原因是,它很可能包含针对你的网络或终端用户系统的零日漏洞利用,最终会像开罐器一样打开你的系统,因为你甚至供应商都不知道你的系统存在它将要利用的漏洞,因此得名“零日”。在这两者之间,还存在其他几种类型的恶意软件。

网络入侵检测策略与流程

现在,让我们讨论一种用于检测网络入侵的潜在策略及相关流程。首先,让我们重温我们策略的主要主题,即异常检测。

重申一下,我们的目标不是检测特定类型的威胁或恶意软件,而是识别我们的网络或终端用户系统的行为何时超出了我们通常预期的范围。关键在于,我们能够在拥有“真实情况”证明网络行为正常时,收集网络或系统数据。这将形成一个行为基线。

我刚才所说的一切,在你使用无监督机器学习以及一类监督机器学习算法时都是成立的。我们不会深入探讨这类机器学习算法,但为了让你有所了解:这类算法可以在单一类别的数据上进行训练(这应该是正常数据),然后可以在现有的网络或系统数据上进行测试,以确定网络或系统是否偏离常态。

言归正传,对于无监督机器学习,没有训练过程,因此不需要正常或异常的示例。这种算法可以直接应用于网络或系统数据,并根据数据的内在特征对其进行分组。

接下来是监督机器学习。使用这类算法,我们需要良好行为和不良行为的示例。根据我们用于训练机器学习算法的数据集,我们可以寻找特定类型的恶意软件,或者,如果在多种类型恶意软件的不良行为上进行训练,则可以寻找一般性的不良行为。

总结

本节课中,我们一起学习了网络异常行为检测的背景和重要性。我们探讨了从特征检测到异常检测的演变,了解了主机入侵检测的复杂性,并明确了异常检测的核心思想是建立正常行为基线。我们还分析了当前面临的主要威胁,特别是高级持续性威胁的挑战。最后,我们概述了利用无监督和监督机器学习进行网络入侵检测的策略与基本流程。理解这些基础是构建有效人工智能网络安全防御体系的关键第一步。

015:僵尸网络异常检测案例分析 🧠

在本节课中,我们将学习如何利用僵尸网络数据进行异常检测分析的实际操作。我们将从策略概述开始,逐步深入到具体的数据处理、算法应用、统计方法,并最终探讨一种基于自主计算理念的新型入侵检测系统。

概述

上一讲我们介绍了异常检测的基本概念。本节中,我们将通过一个僵尸网络检测的案例,来具体看看如何实现这一策略。我们的核心方法是分析网络数据,从中提取特征并寻找由僵尸网络引起的异常流量模式。

僵尸网络基础

在深入分析之前,我们需要明确几个核心概念。僵尸网络主要由三部分组成:

  • 受感染的计算机或“僵尸机”:这些计算机被恶意软件控制。
  • 命令与控制服务器:通常简称为C2,它控制着僵尸机。一个僵尸网络可能有一个或多个C2服务器。
  • 僵尸牧羊人:这是控制整个僵尸网络的攻击者。

僵尸网络的用途多样,例如比特币挖矿、发送垃圾邮件或发起分布式拒绝服务攻击。另一个重要术语是僵尸网络杀伤链,它描述了僵尸网络恶意软件行为特征的一系列网络活动。

数据分析与机器学习实现

以下是僵尸网络分析开发的核心代码流程。

首先,准备好已标记的数据集,并将其分割为训练集和测试集。特征已从数据中提取出来。用于生成这些特征的数学变换细节在此不赘述,我们直接使用特征数据。

我们在此代码片段中训练并测试了三种监督学习算法:K近邻、决策树和高斯朴素贝叶斯。这里使用的唯一评估指标是准确率,三种算法都表现良好。

转向统计分析方法

现在让我们转换一下思路,在本节中我们将聚焦于统计分析,特别是高斯分布

我们可以用平均值(μ)和方差(σ²)来描述正态分布的特性。了解这一点很重要,因为我们可以假设数据集的特征(如吞吐量和延迟)服从正态分布。如果这个假设成立,那么提取这些特征的系统所产生的网络流量应始终符合此分布。否则,就很可能表明系统出现了异常行为,进而提示可能存在恶意软件。

本节内容体现了上一节所述的理论。我们展示了一个用Python实现的、用于检测网络流量中异常行为的统计过程。这是一个很好的例子,它凸显了非机器学习方法的优点(复杂度较低)和缺点(能力较弱)。

统计方法可以用很少的代码快速产生结果,这有利于进行初步的静态分析。但如果你需要更持续和动态的解决方案,那么开发基于机器学习的分析模型可能更合适。

统计方法的局限性

本节重点说明了上一节提到的统计方法的缺点。请注意,静态阈值必须被确定。此实现的核心是一个自定义类,它利用数据来生成这个阈值。然而,我并不认为这是一种机器学习方法,因为它基于所用数据集中包含的统计关系,并且用于预测的阈值仅在非常有限的情况下(主要是使用此数据集时)是准确的。相比之下,使用机器学习算法开发的模型会更加动态,适用场景也更少受限。

引入新的评估指标

本节主要介绍了可用于描述所开发的统计或机器学习分析模型质量的新指标。我们引入了:

  • 召回率灵敏度,也有人称之为真正例率
  • 精确率
  • 假正例率
  • F1分数

基于自主计算的入侵检测系统

现在,我们转向基于自主计算理念的新一代入侵检测系统。这类系统被认为是具有自我意识的,其基础是至少四个自我实现的属性。该系统的理论和MAP-K架构被认为是自主网络安全的基础。

这里我们引入了自主网络安全的概念。它植根于自主性,很可能对应于我们之前讨论过的2级自主性或半自主性。在这个自主级别上,系统是主动的,会在执行规则之前自行制定规则供用户批准。

本质上,这种入侵检测系统由许多微入侵检测系统组成,它们监控受保护网络资产的小方面。例如,为网络上使用的每个协议、主机上使用的每个应用程序、击键、鼠标移动以及网络资产的其他可能方面都设置一个微IDS。然后,这些微IDS不断将结果发送给一个聚合器。这个聚合器可以是一个机器学习算法,它接收所有微IDS的输出,并判断是否发生了入侵,同时制定缓解入侵的计划。自主网络安全系统可以直接执行此计划,也可以将其计划发送给人类批准,具体取决于所实现的自主级别。

如果自主网络安全系统是可解释的,它还会解释它建议或决定采取的行动。本节提到的例子仅能判断入侵是否发生并解释其决策,但并未提供任何缓解建议。

数据集与威胁模型

本节我们关注数据集和威胁模型。工业控制系统环境包括一个在虚拟机上运行的PLC设备,该设备与代表工程工作站的虚拟机联网。工业控制系统仿真负责一些工业任务,其中PLC设备从某些物理过程获取输入、执行计算并产生输出。工程工作站仿真代表一台执行人机界面应用程序的PC,该程序通常向用户提供PLC设备的运行状态和健康状况。

出于数据收集目的,自主网络安全系统包含可以从PLC设备提取CPU、运行进程信息和内存数据,以及从工程工作站提取用户鼠标移动的脚本。威胁模型模拟了对工业控制系统的基本攻击。自主网络安全系统的微IDS持续监控PLC虚拟机、工业控制系统网络和工程工作站中的异常活动,并将响应反馈给聚合器,由聚合器决定网络资产是否已受到入侵。

系统的可解释性

本节重点介绍我们的示例自主网络安全系统的可解释性。如果微IDS使用决策树机器学习算法,那么用于决定分类的逻辑可以被提取出来,并用于解释整个自主网络安全的警报决策逻辑。这在AI开发中是一个非常重要的概念,因为像深度学习这样非常强大的机器学习方法缺乏这种能力,开发人员必须花费很大力气才能尝试从这类算法中获取决策逻辑信息。

系统实现与展望

本节聚焦于自主网络安全的实现。我们在前面讨论的自主网络安全系统的所有方面都已实现,除了可解释性和主动缓解方面。所有的微IDS都使用五种不同的机器学习算法实现,此处展示了部分结果摘录。

如果这个实现是一个测试或原型,则需要进一步开发,以尝试在运行的系统上测量其真实性能。表现最好的机器学习算法需要使用类似Python的pickle功能导出为模型,并监控真实系统的各个方面。提取出的特征将被发送给这些导出的模型,然后模型会产生结果。最后,需要将系统的真实情况与导出模型所做的决策进行比较。

总结

本节课中,我们一起学习了僵尸网络异常检测的完整案例分析。我们从基础的僵尸网络概念和机器学习实现入手,探讨了统计分析方法及其局限性,并引入了更全面的评估指标。最后,我们展望了一种基于自主计算理念的、具有可解释性的新型入侵检测系统架构,并讨论了其实现与评估方法。希望本教程能帮助你理解如何将AI技术应用于网络安全中的异常检测任务。

016:基于人工智能的信用卡反欺诈系统 💳

欢迎来到《网络安全的AI》课程。在本节课中,我们将讨论信用卡欺诈以及如何利用人工智能进行预防。

信用卡欺诈对犯罪分子而言,可能是一种低风险、高回报的犯罪活动。

信用卡欺诈的基础是身份盗窃,而伪造文件是完成身份盗窃的简单途径。

犯罪分子可以伪造一些文件,然后便开始实施欺诈。

目前,对这种行为的威慑力有限。事实上,与其他许多传统犯罪相比,被抓获的风险更低。

只要他们将盗刷金额控制在某个阈值以下,金融机构就缺乏追查的动力。

此外,在大多数情况下,金融机构担心报告此类犯罪会削弱其在公众眼中的形象。

实施者很可能是利用信用卡欺诈来支持洗钱或其他非法活动的有组织犯罪。

预防所有这些欺诈所需的工具可能很复杂,因此需要云资源。

信用卡欺诈造成的损失以数十亿美元计,主要可分为以下三种情景:

  1. 犯罪分子盗取一张合法信用卡,并刷爆其额度。
  2. 犯罪分子盗取一张合法信用卡的卡号和/或PIN码,并持续进行小额盗刷。
  3. 犯罪分子盗取一个人的身份信息,基于虚假信息申请一张合法信用卡,然后持续进行无限制的盗刷。

金融机构试图通过两种方式来缓解这一问题:在低端使用双因素认证,在高端使用机器学习和预测分析。

上一节我们提到了欺诈检测和预防,现在我们来讨论一下两者的区别。欺诈检测发生在欺诈行为发生之后,而欺诈预防则旨在从一开始就阻止欺诈发生。

接下来,让我们聚焦于欺诈预防,特别是基于专家规则的预测模型。

顾名思义,这种模型是专家根据特定规则建立的,通过对交易进行评分,然后根据交易的某些特征来标记或阻止交易。

这种方法易于实施,但可能无法有效应对新型的欺诈模式。

与基于规则的预测模型不同,基于数据的预测模型是动态的,并且当然基于数据。

这正是机器学习可以发挥作用的地方,因为它可以从数据中学习,从而能够关联数据集中的多个特征。

这种方法的一个缺点可能是缺乏可解释性。但归根结底,在一个良好的欺诈预防解决方案中,结合使用基于规则和基于数据的预测模型可能更为实用。

正如上一张幻灯片提到的,一个平衡的解决方案将是基于规则和基于数据的预测模型的结合。

这也将使解决方案能够受益于两种方法的优势,从而弥补各自方法的不足。

例如,基于规则的模型通常会减少漏报(False Negatives),但会增加误报(False Positives)。因此,一个常见的组合解决方案可以降低误报率。

同时,组合解决方案也将具备动态更新的能力。

正如之前提到的,合适的信用卡预防工具可能需要云资源。

这类解决方案提供按需资源,例如基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)和认知计算。

本节课中,我们一起学习了信用卡欺诈的常见模式、金融机构的应对策略,以及如何结合基于规则的模型和基于数据的机器学习模型来构建更有效的反欺诈系统。一个平衡的、动态的解决方案,并利用云资源,是应对这一复杂挑战的关键。

017:IBM Watson信用卡反欺诈案例研究 💳

在本节课中,我们将学习如何使用IBM Watson平台来实施信用卡欺诈检测与预防的机器学习解决方案。我们将探讨该平台如何通过提供多种资源(如采样技术、装袋法、提升法和堆叠法算法)来实现预测性集成学习。

概述

在开始之前,请注意,本讲涉及动手操作部分,需要您设置一个IBM Watson账户。这需要一张您名下的信用卡,但不会产生任何费用。此步骤并非强制要求,因为幻灯片和提供的虚拟机中第7章的Jupyter笔记本已包含所有输出结果。

账户与项目设置

上一节我们介绍了课程目标,本节中我们来看看如何设置环境。

对于愿意设置账户的学习者,请按照以下步骤操作:

  1. 访问幻灯片中提供的链接。
  2. 按照步骤设置账户,并为您的信用卡欺诈检测项目创建Jupyter笔记本和数据的存储位置。

在开始本步骤前,请先下载Jupyter笔记本和信用卡欺诈数据集,其位置已在幻灯片中给出。下载完成后,请将这些文件上传到您在上一步创建的信用卡欺诈项目的资产位置。请确保您的屏幕界面与幻灯片中的截图完全一致。

运行分析与理解数据

此时,您可以像在本地虚拟机中一样运行Jupyter笔记本。随后,您将看到笔记本中的单元格开始填充Python代码的输出结果。

请注意,数据集的摘录会显示在此处。您可以看到数据集中31个特征的示例。幻灯片中列出了对这些特征的说明。需要指出的是,大部分特征是由经过PCA算法转换的机密客户信息组成。这很可能用于降低原始特征集的维度,同时也有助于掩盖数值,使其不易被识别。

接下来,我们查看一个特征子集。其中,合法交易以绿色显示,欺诈交易以红色显示。合法交易的数量远多于欺诈交易,但这在一定程度上反映了现实情况。这是一个不平衡的数据集,但此处的要点是,存在相当数量的欺诈数据点。

机器学习开发流程

在查看随机森林算法的结果之前,让我们先回顾一下此欺诈预防解决方案的机器学习开发流程。

以下是该流程的主要步骤:

  1. 加载数据:首先,加载欺诈检测数据集。
  2. 数据探索:随后,进行数据统计和可视化。这些步骤有助于数据科学家确定需要对数据应用何种数学变换以提取模式,并判断数据集在标签类别上是否不平衡(即某一类别的样本量显著大于另一类别)。即使这种情况反映了现实,出于提升机器学习性能等考虑,仍可能尝试重新平衡数据集,您将在后面的幻灯片中看到相关示例。
  3. 数据分割与模型训练:接着,作者为数据创建了训练集和测试集,并训练了随机森林算法。他还对模型应用了优化参数。
  4. 性能评估:最后,使用多种指标评估分类器的性能。基于F1分数和ROC指标,结果表现尚可。

不同算法与处理方法的实验

上一节我们介绍了基础开发流程,本节中我们来看看使用不同算法和处理方法的效果对比。

实验一:极端梯度提升算法

在此幻灯片中,遵循了相同的分析开发流程,但使用了极端梯度提升机器学习算法。该算法使用数据集中加权的样本,其权重会根据误差进行调整以减少偏差。

  1. 加载数据:首先,加载欺诈检测数据集。在此示例中,作者没有对数据应用任何数学变换,因为PCA算法已应用于必要的特征。
  2. 数据分割与模型训练:接着,作者从数据中创建了训练和测试数据集,并训练了极端梯度提升机器学习算法。他也对模型应用了优化。
  3. 性能评估:最后,使用多种指标评估分类器的性能。基于F1分数和ROC指标,结果优于随机森林算法。

实验二:随机森林算法(使用较少特征)

在此幻灯片中,遵循了相同的分析开发流程,但使用了随机森林机器学习算法。

  1. 加载数据:首先,加载欺诈检测数据集。然而,与之前的幻灯片相比,此处使用的特征数量少得多。这是本次使用随机森林算法与第一次使用的关键区别。
  2. 数据分割与模型训练:同样,作者没有应用数学变换。接着,他从数据中创建了训练和测试数据集,并训练了随机森林机器学习算法。他也对模型应用了优化参数。
  3. 性能评估:最后,使用多种指标评估分类器的性能。基于F1和ROC指标,结果比之前的随机森林结果更差。

实验三:随机森林算法(使用欠采样)

在此幻灯片中,遵循的开发流程与上一张使用随机森林算法的幻灯片相同。

  1. 加载数据:首先,加载了包含所有特征的欺诈检测数据。然而,数据集经过了随机欠采样,通过减少合法交易实例的数量来降低欺诈实例的不平衡性。此处的关键区别在于对数据集进行了随机欠采样以处理不平衡问题。
  2. 数据分割与模型训练:作者没有应用数学变换。接着,他为数据创建了训练和测试数据集,并训练了随机森林机器学习算法。他也对模型应用了优化参数。
  3. 性能评估:最后,使用多种指标评估分类器的性能。基于F1和ROC指标,结果是我们讨论过的所有实验中最优的。

实验四:随机森林算法(使用过采样)

在此幻灯片中,遵循的分析开发流程与上一张使用随机森林机器学习算法的幻灯片相同。

  1. 加载数据:首先,加载了包含所有特征的欺诈检测数据集。此处我们没有减少特征数量,而是加载了所有特征。同时,我们进行了随机过采样,通过使用合成数据增加欺诈实例的数量来减少欺诈实例的不平衡性。因此,这里的重大区别是:第一,我们使用了所有特征;第二,在此特定场景中,我们进行了过采样。
  2. 数据分割与模型训练:作者没有应用数学变换。接着,他为数据创建了训练和测试数据集。
  3. 性能评估:最后,使用多种指标评估分类器的性能。基于F1和ROC指标,结果优于使用不平衡数据集的分类器,但不如使用欠采样的分类器。

实验五:极端梯度提升算法(使用较少特征)

在此幻灯片中,遵循了相同的分析开发流程,但使用了极端梯度提升机器学习算法。

  1. 加载数据:首先,加载了欺诈检测数据集。然而,与之前的幻灯片相比,此处使用的特征数量少得多
  2. 数据分割与模型训练:作者没有应用数学变换。接着,他从数据中创建了训练和测试数据集,并训练了极端梯度提升算法。他也对模型应用了优化参数。
  3. 性能评估:最后,使用多种指标评估分类器的性能。基于F1和ROC指标,结果优于他们的过采样实验。

总结

本节课中,我们一起学习了如何利用IBM Watson平台实施信用卡反欺诈的AI解决方案。我们详细探讨了从数据加载、探索性分析到模型训练与评估的完整机器学习开发流程。通过对比随机森林与极端梯度提升等不同算法,以及欠采样、过采样等处理不平衡数据集的技术,我们观察到适当的采样技术(如欠采样)结合有效的算法(如随机森林)可以显著提升欺诈检测模型的性能。这为在实际网络安全场景中构建高效的欺诈预防系统提供了宝贵的实践见解。

018:生成对抗网络(GAN)基础入门 🧠⚔️

在本节课中,我们将开始讨论生成对抗网络,简称GAN。完整的讨论将跨越两个模块。重申一下,本课程的目标是以一种让你理解其网络安全应用性的方式介绍人工智能方法。因此,这绝不是对GAN的详尽研究。

让我们从GAN的一些背景知识开始讨论。

背景介绍

GAN的理论提出至今大约已有十年。Ian Goodfellow在十年前发表了他的论文《生成对抗网络》。据我所知,目前还没有针对其使用的“杀手级应用”。黑帽黑客们仍在探索。然而,其潜力确实存在,这就是我们研究它的原因。我指出这一点是为了帮助你理解我为何采用这种方式来呈现这些信息。

在之前的模块中,有使用AI应对我们每天都知道和听到的威胁的明确例子。而在本模块中,我们将主要关注做一些具体的事情,向你展示这项技术的能力。在讨论结束前,我会谈谈理论如何应用于现实世界的情况。

回到幻灯片。关于GAN,最核心的一点是:本质上,你有两个相互竞争的神经网络。它们会一直竞争,直到达到一个平衡状态,这一点我们稍后会详细讨论。

继续这个核心观点,GAN提醒我们:AI可以被用来攻击AI

神经网络回顾

既然我在上一张幻灯片提到了神经网络,请允许我澄清一下,我们指的是深度神经网络。再次强调,深度学习是机器学习的一个子集,旨在专门模仿大脑的架构。它建立在人工神经元的概念之上,以至于我们可以将深度学习视为层层相连的神经元,或者简单地说,是深度连接的神经元。

这些人工神经元的深层连接,赋予了深度学习创建自身特征、甚至组合这些自定义特征的能力,最终使其能够获得比机器学习方法更好的准确性。然而,一个缺点是深度学习本身不具备可解释性。换句话说,没有清晰的推理来说明它是如何获得那些优于机器学习的结果的,这主要是由于其复杂性。

现在让我们回顾一下之前讨论过的一个话题:感知机。单个感知机或罗森布拉特感知机只能解决线性可分问题,这非常有限。随后它被多层感知机(MLP)改进,MLP本质上是感知机的层叠。这种新的感知机可以解决非严格线性可分的问题。事实上,由于MLP的激活函数,只要有足够的感知机,它可以近似任何连续的数学函数。

回想一下,一旦感知机的刺激超过阈值,其激活函数就会提供响应。常见的激活函数是修正线性单元(ReLU)及其变体,称为泄漏修正线性单元(Leaky ReLU)。这些激活函数能够将线性关系转换为非线性响应,从而实现了前面提到的近似行为。

请耐心听我继续回顾人工神经元的背景知识,作为更详细讨论GAN的前奏。你可以创造性地将神经网络视为重建数学函数的一种不同方法。本质上正在发生的就是这样。神经网络的输入层接收输入数据,激活函数在被刺激后,会向下一层感知机提供响应,这基本上在整个神经网络中引发连锁反应。在这个过程中,神经网络正在从数据集中重建关键方面或特征,并可能创建新的特征来帮助分类数据。

我们之前提到的这个微小反应,在神经网络内部都是正向发生的。在神经网络内部,或者简单地说,存在前向传播,这与反向传播不同。在本次讨论中,我们谈论的是训练神经网络,而不是数据流。

前向与反向传播

让我们继续这个思路:反向传播用于训练。它发生在获得初始输出响应之后,并且该输出与期望值存在显著差异时。我们知道期望是什么,因为训练数据中有我们应该看到的示例。现在,如果你戴着人工智能的“帽子”,这个讨论可能会很快变得非常复杂。然而,正如我之前所说,我们戴着网络安全的“帽子”。因此,我们只想深入探究AI,直到足以理解如何用它来帮助网络安全分析师完成威胁分类和处置工作。

既然如此,我们将坚持对反向传播进行高层次的讨论,只需知道它是用来训练神经网络的,目的是在给定神经网络中神经元数量和其他性能参数的情况下,使输出结果在数学上尽可能接近训练数据集。这是通过基于误差函数的偏导数(该误差函数基于神经网络输出与训练数据之间的差异)来重新调整神经网络的权重实现的。因此,你可能会注意到,在教材中,作者在谈论反向传播时似乎有点混淆。所以,让我们坚持幻灯片以及我们刚刚进行的讨论,它们为你提供了关于反向传播、其用途以及在此上下文中所指含义的非常好的高层次理解。

现在,让我们重新审视前向传播和反向传播的讨论。在上一张幻灯片中,我小心地区分了数据流和训练。在那个讨论中,我谈论的是最常见的神经网络形式,即前馈神经网络,其数据流仅沿正向传播。从技术上讲,卷积神经网络也是一种前馈神经网络,因为数据流仅沿正向传播。然而,它确实有一些使其特殊的细微差别,例如,其特定层或内核的过滤器允许它专注于数据集中的特定特征。

在之前提到的幻灯片中,我确实提到了反向传播。但再次强调,仅从训练神经网络的角度,而非数据流的角度。在这一点上,我准备讨论另一种允许数据反向流动的神经网络类型。这就是循环神经网络。循环神经网络的架构类似于前馈神经网络,但其神经元之间的连接允许在网络内部进行前后通信。


本节课总结

本节课我们一起学习了生成对抗网络(GAN)的基本概念及其在网络安全领域的潜在应用。我们回顾了神经网络的基础知识,包括感知机、多层感知机、激活函数(如ReLU)以及深度学习的核心思想。我们区分了神经网络中的前向传播(数据流动)和反向传播(训练过程),并简要介绍了允许信息双向流动的循环神经网络。这些知识为我们下一节深入探讨GAN的工作原理奠定了坚实的基础。

019:生成对抗网络技术剖析 🧠

在本节课中,我们将深入学习生成对抗网络。这是一种由两个相互竞争的神经网络组成的独特架构,在网络安全等领域有广泛应用。

概述

上一节我们介绍了神经网络的基础知识,本节中我们将深入探讨生成对抗网络。GAN的核心在于两个神经网络——生成器和判别器——相互竞争、共同学习,以达到一种平衡状态。

GAN的高层概念

正如之前提到的,GAN的核心理念是两个相互竞争的神经网络协同工作,以达到一个平衡的结果。

这两个神经网络分别被称为生成器判别器

  • 生成器的目标是创建或生成人工数据,这些数据与原始数据极其相似,以至于另一个神经网络(即判别器)无法区分人工生成的数据和真实数据。
  • 与我们之前讨论的神经网络不同,生成器并不关心减少训练误差。相反,它专注于试图“欺骗”判别器。
  • 判别器则专注于尝试辨别或区分人工生成的数据与真实数据之间的差异。

生成器与判别器的深入解析

现在,让我们更深入地探讨生成器和判别器的概念。它们以不同的方式相互学习。我们暂时不展开这一点,而是将讨论置于一个网络安全问题的框架中。

考虑我们在之前课程中讨论过的垃圾邮件和正常邮件。这里的目标不是区分垃圾邮件和正常邮件,而是双重的:

  1. 区分垃圾邮件和伪造的垃圾邮件,这是判别器的目标。
  2. 创建与真实垃圾邮件无法区分的伪造垃圾邮件,这是生成器的目标。

在尝试优化其目标函数时:

  • 判别器基于可疑词汇的出现,计算给定电子邮件是垃圾邮件的概率
  • 生成器计算给定的垃圾邮件包含可疑词汇的概率。

生成器希望通过最小化其生成数据与原始数据之间的相似性,来最小化其目标函数。而判别器则希望通过最大化其对生成数据与原始数据的辨别能力,来最大化其目标函数。

这反过来被称为零和博弈,即一方的损失是另一方的收益,反之亦然。当两种策略都达到最优时,两者就达到了纳什均衡

以下是Goodfellow提出的著名公式,用于描述判别器和生成器目标函数之间的最小-最大关系:

min_G max_D V(D, G) = E_{x~p_data(x)}[log D(x)] + E_{z~p_z(z)}[log(1 - D(G(z)))]

再次说明,判别器希望最大化这个方程,这意味着它最大化与真实数据相关的输出,并最小化与伪造数据相关的输出。另一方面,生成器希望最小化与创建伪造数据相关的误差,并最大化与判别器能够辨别真实数据相关的误差。

当判别器只有大约50%的信心区分真实数据和伪造数据时,就达到了理想的平衡状态。

GAN的训练过程

如前所述,训练GAN与训练单个神经网络进行数据分类不同。这里有两个具有竞争性目标函数的神经网络,因此你不仅仅是输入数据、产生输出并应用反向传播算法来最小化误差。这个过程更加复杂和相互交织。

达到均衡所需的计算资源通常相当高,因此训练可能需要数小时到数天。你可能需要先对判别器进行预训练,让它了解真实数据的样子,并将两个神经网络的学习率设置为适当的值,以便它们能够轻松匹配。

以下是训练步骤:

  1. 向生成器输入随机噪声加上一点原始数据的“一瞥”。
  2. 生成器将结合噪声和真实数据的“一瞥”,尝试生成与真实数据无法区分的副本。
  3. 判别器将继续在真实数据上训练,并产生自己的损失函数,以试图越来越地学习真实数据。
  4. 同时,判别器会将生成器生成的数据副本与真实数据进行比较,并向生成器提供损失函数,希望这能帮助生成器下次生成更好的数据副本。

这个过程持续进行,直到达到均衡状态。

实战示例:手写数字生成

以上是训练理论,现在让我们使用一个实际的GAN来尝试复现手写数字,数据集是MNIST手写数字数据集(右上角是数据集的摘录)。

在中间,我们输入带有一些原始数据特征的噪声数据。将其输入生成器。现在,在训练几个小时后,可以在右下角看到输出。GAN尚未达到均衡,但你可以开始看到生成器在模仿原始数据集方面已经变得相当熟练。

通过分析开发流程看GAN示例

整体上,让我们尝试通过分析开发流程的视角来看这个例子。

我们从数据工程开始。这是一个大型数据集,称为MNIST手写数字数据集。这些数据已经为GAN的使用做好了准备。

接下来是特征工程。然而,我们已经了解到深度学习会创建自己的特征,因此我们真的不知道或不清楚这里使用了哪些特征。

然后是模型工程。在这里,我们可以调整性能参数以尝试改进GAN。但我们必须小心,确保没有让两个神经网络能力失衡,即确保它们具备同等能力来执行各自的任务。注意,这两个神经网络都使用了Leaky ReLU激活函数

接下来是训练。我们在上一张幻灯片中深入讨论了训练,因此我们只对训练进展说几句。我们看到了一张生成器初始状态的图片,以及几小时后的更新图片。我们可以很容易地看到,在早期阶段,判别器很容易区分真实数据和伪造数据。

请注意,在幻灯片右下角的图中,判别器的损失函数被最小化,而生成器的损失函数被最大化。这与博弈的期望状态相反。但随着GAN训练的进行,在后面的周期中,判别器越来越难区分真实数据和伪造数据。到那时,生成器的损失函数将最小化,而判别器的损失函数将最大化。

总结

本节课中,我们一起学习了生成对抗网络的核心原理。我们了解到GAN由生成器和判别器两个神经网络组成,它们通过对抗性训练达到动态平衡。我们探讨了其目标函数的数学表达、独特的训练过程,并通过手写数字生成的实例,观察了GAN从初始噪声到生成逼真数据的演变过程。理解GAN是掌握现代人工智能生成能力的关键一步。

020:对抗性攻击原理详解 🛡️

在本节课中,我们将开始讨论基于生成对抗网络理论的对抗性攻击。我们将主要探讨这些攻击的理论基础,并在下一讲中通过实际例子进行动手操作。

概述

上一讲我们提到,生成对抗网络提醒我们,人工智能可以被用来攻击人工智能。本节我们将更深入地探讨这个概念。神经网络容易受到生成对抗网络的攻击,或者至少,容易受到其理论思想的攻击。这意味着,生成对抗网络可以创建出与真实数据无法区分的合成数据,从而欺骗神经网络。这种方法可用于欺骗在3D医学成像等应用中使用的神经网络。

然而,一些对抗性攻击甚至不需要一个实际的生成对抗网络,只需要运用其背后的逻辑。例如,人类可以对图像进行微小的扰动,导致神经网络将图像错误分类为其他东西,而这些扰动对人眼来说几乎无法察觉。在这种情况下,人类扮演了生成器的角色,而神经网络则扮演了判别器的角色,无法区分被扰动的图像和真实图像。

这些论述非常有力,它让我们所有关于人工智能的创新和应用都受到了质疑。我们刚刚讨论了将人工智能用于生物特征认证,而我也刚买了一辆具备自动驾驶功能的电动汽车。突然间,将这些人工智能技术用于此类应用似乎不再是个好主意。使用人工智能处理关键基础设施,其风险可能不亚于当年使用联网计算机来运行美国的关键基础设施。

问题的核心在于,网络安全问题始于在关键基础设施中使用易受攻击的计算机。而当我们试图赋予这些计算机模拟人类智能的能力时,问题变得更加严重,因为这项技术本身也容易受到攻击。这是一种观点。

另一种观点是,计算机的发展及其在关键基础设施中的应用,使我们的文明实现了飞跃式发展。计算速度、能力和数据可用性的新进展,为我们带来了全新的未来潜力。本质上,我们面对的是一把双刃剑。技术一方面为我们提供了更广阔的未来,另一方面也带来了在任何时候都可能因网络攻击而遭受破坏的巨大风险。

在结束本讲之前,我们将讨论如何保护人工智能免受此类攻击。

攻击类型

对抗性攻击可以分为两类。

  • 白盒攻击:攻击者完全了解目标人工智能模型的内部参数、输入和输出。
  • 黑盒攻击:攻击者只能访问目标模型的输入和输出。

不幸的是,针对人工智能的攻击类型有很多。在接下来的幻灯片中,我们仅列举几种最常见的攻击。在下一讲中,我们将通过动手实践来讨论快速梯度符号法攻击和投影梯度下降攻击。

白盒攻击示例

这两种攻击都是白盒攻击,并且基于生成对抗网络的理论,即人类攻击者扮演生成器,试图欺骗作为判别器的神经网络。

以下是两种具体的白盒攻击方法:

  • 快速梯度符号法攻击:这种方法相对简单。攻击者利用深度神经网络的反向传播算法,获取能最大化损失函数的梯度方向信息。然后,攻击者根据这个方向对图像的每个像素进行微小修改。最终结果是生成一个对抗性图像,该图像在人眼看来与原始图像无异,但深度神经网络会将其错误分类为其他类别的图像。
  • 投影梯度下降攻击:这种攻击与快速梯度符号法攻击类似,但它是迭代进行的,缓慢地修改每个像素。这类攻击的一些变体甚至可以指定深度神经网络最终错误分类的类别。

黑盒攻击原理

现在,我们将转向讨论针对人工智能的黑盒攻击。

假设我们的模型部署在网络的某个地方,攻击者可以向模型发送输入并获取其输出。攻击者向目标模型发送合成生成的数据,并观察其分类结果。这为攻击者提供了一个带有标签的数据集,他可以用这个数据集来训练一个本地模型。

本质上,这个带有目标深度神经网络标签的合成生成数据集,将目标深度神经网络的决策逻辑转移到了新训练的本地人工智能模型中。

对抗性样本是指那些经过FGSM或PGD等方法修改过的图像,它们对人来说看起来像是一类东西,但会被目标深度神经网络错误分类为另一类东西。因此,这些对抗性样本可以使用本地人工智能模型来创建,并且也应该会被目标深度神经网络错误分类。

论文《针对机器学习的实用黑盒攻击》的作者通过成功使用这种攻击方法攻击了几个知名的托管模型,证明了对抗性攻击的可迁移性原理。

黑盒攻击的最佳实践

为了使黑盒模型替换攻击有效进行,应遵循一些最佳实践。

本质上,在构建目标标签数据集时,应尽可能减少与目标模型的交互。这意味着只应向目标深度神经网络发起少量查询。关键在于选择最少数量的目标模型输入,以正确捕获目标深度神经网络的决策逻辑。

防御策略

现在,让我们来谈谈如何防御这些攻击。

作者讨论了三种不同类型的防御方法。

  • 统计防御:尝试利用已知图像的统计知识来检测对抗性样本。
  • 梯度掩蔽防御:试图通过将真实的梯度信息隐藏在随机噪声中,来阻止攻击者利用反向传播算法。
  • 对抗训练:这是一种“如果无法击败他们,就加入他们”的方法。数据科学家会提前生成对抗性样本,并用这些样本来训练他们的模型。这样,如果模型后来遇到这些样本,它就能对这些扰动免疫。

总结

本节课我们一起学习了对抗性攻击的基本原理。我们了解到,基于生成对抗网络的理论,人工智能系统可能被精心设计的输入所欺骗。我们探讨了白盒攻击和黑盒攻击的区别,并简要介绍了快速梯度符号法攻击和投影梯度下降攻击这两种白盒攻击方法。我们还分析了黑盒攻击中通过查询构建替代模型的核心思想。最后,我们了解了统计防御、梯度掩蔽和对抗训练这三种主要的防御策略。理解这些攻击与防御机制,对于构建更安全、更健壮的人工智能系统至关重要。

021:对抗性攻击实战演练 🛡️💻

在本节课中,我们将学习对抗性攻击的实战演练。我们将探讨几种具体的攻击方法,理解其背后的逻辑,并观察它们如何导致深度学习模型做出错误判断。

概述

上一节我们介绍了对抗性攻击的基本概念。本节中,我们来看看几种具体的攻击方法,包括FGSM、PGD和对抗性补丁攻击,并探讨如何将GAN的逻辑应用于攻击恶意软件检测器和面部识别系统。

FGSM攻击实战

FGSM攻击本质上利用了反向传播算法的梯度信息。攻击者使用此信息,沿着最大化模型错误的方向修改图像的每个像素,试图导致深度神经网络对图像进行错误分类,尽管在人眼看来图像并未改变。

从逻辑上看,这类似于GAN的架构。攻击者充当生成器,而深度神经网络则充当判别器。

以下是此攻击的各个层面:

  • 攻击者提供数据,这些数据本质上是合成的对抗性数据。
  • 攻击者运用GAN逻辑,充当生成器。虽然GAN本身未被直接使用,但其背后的逻辑被应用了。
  • 创建扰动图像的实际代码位于幻灯片右上角。

这种合成的对抗性图像被应用于已经训练好的深度神经网络。该网络是一个经过优化的分析器,用于识别一组图像。它从图像中提取自己的特征,并利用这些信息,根据其训练结果决定将图像归入哪个类别。

在GAN逻辑下,深度神经网络就像判别器,试图判断图像是否是真实数据。如果攻击成功,深度神经网络将错误分类图像,攻击者(生成器)就成功地欺骗了判别器做出了错误判断。此处的逻辑与标准GAN不完全相同,但总体目标相似,即生成器要欺骗判别器。

现在,让我们看看A列中的图像及其相关结果。训练好的分析器在攻击前,对识别这四张图像表现出非常高的置信度。

在B列中,合成的对抗性图像被创建并提交给训练好的分析器后,可以看到该分析器已无法准确识别正确的图像。在至少一个案例中,训练好的分析器有超过80%的把握认为自己的判断是正确的,然而在人眼看来,它显然犯了错误。

PGD攻击实战

接下来是PGD攻击的实战示例。我们定义PGD攻击与FGSM攻击类似,但它以迭代和缓慢的方式修改像素,与FGSM的单步攻击形成对比。

你甚至可以在左下角看到PGD代码中包含一个循环,该循环会迭代指定的次数,而在FGSM代码中则没有这样的循环。

我们在上一张幻灯片中详细讨论了FGSM攻击的细节。为了避免重复,我们仅说明这里同样使用了GAN逻辑,攻击者(生成器)能够欺骗深度神经网络(判别器)。

如果我们查看幻灯片中的实战结果,在A列中,预训练的分析器能够正确识别提交给它的18张手写数字图像中的17张。

在B列中,PGD攻击发动后,预训练的分析器只能识别出提交的18张手写数字图像中的8张。在这个例子中,虽然你仍然可以清楚地看到攻击图像中的数字,但也能观察到其中的扰动。

对抗性补丁攻击

另一种技术,同样与FGSM攻击类似,但将扰动局限于目标图像的一小片区域,这被称为对抗性补丁攻击。梯度的计算方式与FGSM攻击相似,但仅针对补丁区域。此外,生成的补丁需要在大量图像上进行训练才能有效。

这种攻击可能比FGSM和PGD攻击构成更大的威胁,因为它可以应用于目标的一小部分,并且该补丁可以强制模型将图像错误分类到指定的类别。

设想有人在汽车后部放置一个红色交通灯或停车标志的补丁。如果你的汽车中用于自动驾驶功能的深度神经网络容易受到这种攻击,那么事故就迫在眉睫了。

请看A列中的图像,这些是不同分辨率的补丁示例。如果仔细观察,有些补丁可能看起来像它们的标签。

现在看B列中的图像,注意这些补丁只占大图像的很小一部分,但在每种情况下,补丁都以非常高的置信度驱使模型错误分类到特定的类别。

GAN在攻击企业系统中的应用

我们已经讨论了使用GAN逻辑对深度神经网络发动对抗性攻击。现在让我们转回实际的GAN,看看它如何被用于攻击企业系统。

题为《生成对抗性恶意软件示例以进行针对GAN的黑盒攻击》的论文揭示了GAN如何被用来击败恶意软件检测器。这是一种针对深度神经网络恶意软件检测器的黑盒攻击,类似于我们之前讨论的针对深度神经网络图像检测器的黑盒攻击。

一个替代的本地恶意软件深度神经网络检测器,在由GAN创建并由目标深度神经网络恶意软件检测器标记的合成恶意软件示例上进行训练。生成器和替代的深度神经网络检测器共同学习创建难以检测的对抗性图像。

同样,GAN也可用于规避网络异常检测器。这里也使用了黑盒对抗性攻击策略。在这种方法中,没有替代模型,而是判别器由来自目标异常检测器的标记流量进行训练。

生成器从噪声和恶意流量的指示开始。然后,合成的恶意流量以及正常流量被输入到目标入侵检测系统深度神经网络中,产生的标记流量用于训练判别器。一旦判别器学会了目标深度神经网络入侵检测系统的决策逻辑,它就可以指导生成器产生能够规避目标深度神经网络入侵检测系统的网络流量。

针对面部识别系统的攻击

我们本讲的最后讨论将围绕如何对深度神经网络发动对抗性攻击以击败面部识别技术。

在开始之前,请允许我介绍孪生神经网络的概念。这些网络被用于面部识别系统。本质上,孪生神经网络使用相似性学习,来找出该网络中使用的两个不同神经网络的输入之间的相似性。

接下来,计算面部特征(称为输出嵌入)之间的距离。最初会创建一个基线。如果输出嵌入超过某个阈值,则认为面部识别失败。

白盒对抗性攻击需要知道输出嵌入,并会利用这些信息,结合合成的对抗性图像来击败面部识别。

总结

本节课中,我们一起学习了多种对抗性攻击的实战方法。我们探讨了FGSM、PGD和对抗性补丁攻击的原理与效果,并了解了如何将GAN的逻辑应用于攻击恶意软件检测器、网络异常检测器乃至面部识别系统。理解这些攻击手段对于认识和构建更健壮的AI安全防御至关重要。

022:强化学习技术原理 🧠

在本节课中,我们将对强化学习进行一次非常实用的讨论。我们将了解其核心概念、工作原理,以及它如何通过与环境互动来学习最优策略。


概述

机器学习主要分为三种类型:监督学习无监督学习强化学习。在监督学习中,算法使用带标签的训练数据进行学习;在无监督学习中,算法则从数据的内在特征(如点之间的距离)中学习。这两种学习方式的共同主题是数据。然而,强化学习则完全不同,它采用了一种全新的范式。

强化学习的基本范式

上一节我们提到了机器学习的不同类型,本节中我们来看看强化学习的独特范式。它主要包含以下几个核心概念:

  • 智能体:一个在环境中执行动作的实体。
  • 环境:智能体所处并与之交互的世界。
  • 动作:智能体在特定状态下可以采取的操作。
  • 奖励/惩罚:环境对智能体动作的反馈。推动智能体接近目标的动作会获得正反馈(奖励),而使其远离目标的动作会获得负反馈(惩罚)

智能体最初并不知道如何正确行动,它通常通过试错随机的方式开始探索。强化学习方法非常适用于解决迷宫问题或玩积分制游戏。事实上,最近有很多关于使用强化学习来精通经典雅达利2600风格游戏的激动人心的成果。

状态、奖励矩阵与目标

在上一节中,我们描绘了智能体随机与环境交互的图景。本节中,我们尝试将这个场景公式化,使其更清晰。

我们可以将环境视为一系列状态的集合。当智能体执行一个动作时,它实际上是在不同的状态之间转移。智能体会因到达特定状态而获得奖励,或因远离特定状态而受到惩罚。

智能体的目标是赢得游戏,而赢得游戏意味着它必须学会一个制胜策略。这个策略本质上就是最大化其获得的总奖励

让我们用一个迷宫的例子来具体说明。迷宫有各种状态,其中最重要的状态是出口。为了量化智能体在状态间转移时获得的反馈,我们引入奖励矩阵的概念。

奖励矩阵有多种表达方式,但其最基本的功能是覆盖环境的状态空间,并标明状态之间的连接以及相应的奖励或惩罚值。在课程幻灯片的示例中,奖励矩阵使用数字来表示:

  • 1 表示状态间存在连接(通常是一个小的正奖励或中性奖励)。
  • 0 表示惩罚或无效转移。
  • 100 表示到达目标状态(如出口)时获得的高额奖励。

这个奖励矩阵本身并不偏好任何通往出口的具体路线。例如,出口节点C显示有两个连接(到D和到A),奖励都是100。因此,需要依靠强化学习算法的内部机制,来正确利用奖励矩阵找到能获得最大奖励的路径。

Q学习与策略收敛

现在,是时候将奖励、惩罚和智能体的学习过程联系起来了。智能体的目标是通过最大化奖励来获胜。它如何做到这一点呢?这依赖于一个核心的目标函数,通常称为 Q函数

状态转移表(或称Q表)是应用Q函数到奖励矩阵后产生的结果。这个表包含了智能体在特定状态下采取特定动作所能获得的预期未来总奖励(Q值)

以下是智能体利用Q表进行决策的步骤:

  1. 智能体从初始状态(如节点F)开始。
  2. 查看Q表中对应状态(F)的那一行,选择Q值最大的动作所指向的下一个状态。
  3. 移动到该状态(如节点B),并重复步骤2。
  4. 持续此过程,最终将引导智能体沿着Q值最高的路径走向出口(节点C)。

随着智能体不断尝试,Q学习算法会迭代更新Q表中的值。当这个算法开始收敛时,就意味着它已经学会了如何最大化其奖励,从而能够赢得它正在进行的“游戏”。我们可以在幻灯片左下角的两个矩阵中看到这种收敛现象——经过学习后,最优路径上的Q值会显著高于其他路径。

强化学习的网络安全应用视角

我们已经讨论了强化学习的基本原理,目的是为了能够理解并将其用于解决网络安全问题。我鼓励大家从编排器任务管理器的角度来思考强化学习。

这样一个智能体可以负责一系列较小的任务(例如,检查系统日志、分析网络流量模式、评估漏洞扫描结果),但它并不亲自执行这些任务。相反,它通过在不同的“状态”(如“初始扫描”、“深度分析”、“威胁确认”)间转移,并根据接收到的“奖励”(例如,成功识别威胁)或“惩罚”(例如,产生误报)来检查所有任务是否有效完成。

智能体可以负责做出一系列小决策,并且只有在以特定顺序做出了每个最佳决策时才会获得奖励。基于这种逻辑和一点创造力,我们可以创建一个智能体,让它学会在有效管理一系列较小任务或决策的基础上,完成更大的任务或做出更复杂的决策。这里的可能性实际上是无穷的。


总结

本节课中,我们一起学习了强化学习的核心原理。我们了解到强化学习不同于依赖数据集的监督或无监督学习,它通过智能体与环境的交互来学习。核心机制包括基于奖励和惩罚的反馈,以及通过Q学习等算法来迭代优化策略,最终目标是最大化累积奖励。我们还探讨了如何将这种“试错-优化”的范式,类比为网络安全的智能任务编排器,为解决复杂安全挑战提供了新的思路。

023:使用强化学习绕过恶意软件检测器 🚀

在本节课中,我们将要学习一种不同于监督神经网络的攻击方式——基于强化学习的对抗攻击。我们将探讨其原理、优势,并通过一个具体的研究案例,了解如何利用强化学习来生成能够逃避恶意软件检测器的新型恶意软件。

概述

上一节我们介绍了基于神经网络的对抗攻击。本节中我们来看看另一种强大的攻击范式:基于强化学习的对抗攻击。与需要了解目标模型内部信息的神经网络攻击不同,强化学习攻击者可以在对目标模型一无所知的情况下,通过与环境交互来学习如何有效规避检测。

强化学习攻击的优势

监督神经网络并非针对人工智能模型的唯一攻击来源。在某些情况下,强化学习已被证明是更具挑战性的对手。

回想之前关于针对AI模型的对抗攻击的讨论,攻击者都是基于神经网络的,因此属于监督机器学习。但在这里,我想介绍基于强化学习的对抗攻击的概念。

正如我们之前提到的,基于神经网络的对抗攻击有两种类型:白盒攻击和黑盒攻击。白盒攻击需要完全访问目标模型,而黑盒攻击虽然需要的访问权限较少,但仍需要获取目标模型的一些信息,特别是攻击模型必须学习目标模型的特征空间。

由于强化学习的设置方式,使其能够与环境随机交互,接收奖励和惩罚,同时试图最大化奖励,因此它能够学会如何规避一个从未见过的模型检测器,而无需了解其结构或特征空间。

理论到实践:案例研究

上一张幻灯片我们从高层次讨论了基于强化学习的攻击者,在无需神经网络攻击者所需信息的情况下,规避其他AI检测模型的潜力。

这里我们希望将理论付诸实践。HS Anderson及其合著者提出了一种基于强化学习的对抗攻击方法,将这一理论付诸实践。他们甚至制作了一个开源环境,允许其他人能够试验这种方法。

让我们首先关注他们在Black Hat(黑帽大会)上的演示。这是一篇非常有趣的论文,其成果与基于神经网络的对抗攻击相当,在某些情况下甚至更好。

攻击方法详解

如果你回想一下我们之前关于Windows PE文件格式及其内部所有适用头部和章节的讨论,这些头部和章节中的某些字段通常被用作特征来构建AI恶意软件检测器。因此,这是创建Windows恶意软件检测器的典型方法。

给定这样一个模型作为目标,HS Anderson及其合著者并未与目标模型直接交互。相反,他们使用一个大型数据集训练了一个本地恶意软件检测模型,并将其用作强化学习智能体的环境。但在这样做之前,他们为特定的恶意软件片段开发了一组功能保持性修改

本质上,这些是对恶意软件代码的修改,不会改变恶意软件的实际功能,但会改变其PE文件格式。这组功能保持性修改成为了强化学习环境的允许状态。

因此,强化学习智能体与此环境交互,基本上每次都在构建新的恶意软件。这些恶意软件具有相同的功能,但其PE文件格式在某些方面是新的。每个新构建的恶意软件都会被提交给本地恶意软件检测器,强化学习智能体会根据本地模型的检测水平获得相应的奖励。

强化学习智能体的目标是最大化其奖励,这意味着它需要构建与旧恶意软件功能相同,但PE文件格式足够不同以逃避目标恶意软件检测器检测的新恶意软件。如果本地恶意软件检测器构建得足够好,它将能代表目标检测器,甚至更好。规避本地恶意软件检测器也就意味着能够规避目标恶意软件检测器。

作者通过能够使用此过程最终规避公开托管的恶意软件检测器,验证了这一点。

开源框架与影响

作者不仅在Black Hat上展示了他们的发现,还向公众发布了他们自己的强化学习恶意软件规避框架。他们工作的影响可以更广泛地被认可,因为任何用户都可以下载并使用这个框架。

这也使用户能够更具体地理解强化学习环境的状态空间范围。例如,状态空间可以是PE头部、PE节、导入和导出表或ASCII字符串中的位置。而强化学习智能体可以采取的行动,例如,可以是向导入地址表添加新函数、修改现有节的名称、添加新节或在节末尾添加空间。

同样,这个规避框架也需要允许环境为强化学习智能体在遍历环境状态空间时所采取的行动提供反馈。同样,智能体在正确的状态空间中采取正确的行动应该获得适当的奖励。这回到了我们之前关于智能体行动由定义为最大化奖励的目标函数驱动的讨论。

总结

本节课中,我们一起学习了基于强化学习的对抗攻击方法。我们了解到,强化学习智能体通过与环境(一个本地恶意软件检测模型)交互,学习如何对恶意软件进行功能保持性修改,从而改变其PE文件特征以逃避检测。这种方法无需了解目标检测器的内部结构,展示了强化学习在生成对抗性样本方面的强大能力和灵活性。通过开源框架,这一研究不仅推动了攻击技术的发展,也促进了防御策略的进步。

024:人工智能在网络安全应用中的挑战 🛡️🤖

在本节课中,我们将探讨使用人工智能解决网络安全问题时面临的一些主要挑战。

概述

我们最初的设想是,人工智能可以通过协助处理入侵检测系统产生的警报,来减轻网络安全分析师的工作负担。随后,我们也将其应用扩展到了系统和网络检测的几乎各个方面。本讲旨在讨论在推广这种应用方法时所伴随的挑战。

无人工智能辅助的警报处理流程

首先,我们来看看在没有人工智能辅助的情况下,警报处理工作是如何进行的。

一名初级网络安全分析师会在其安全信息与事件管理平台中收到警报。这些警报来自遍布网络和机构内各系统的传感器,例如:

  • 基于网络的入侵检测系统,如 Snort。
  • 基于主机的入侵检测系统,如 Symantec Endpoint Protection。
  • 主机应用程序白名单或黑名单系统,如 Bit9(现称为 Carbon Black)。
  • 以及其他许多可能的传感器。

我们假设这些传感器都不是基于人工智能的,而是基于统计或签名规则的。这意味着分析师清楚,基于签名的工具对已知威胁有效,但会完全漏掉未知威胁;而统计工具则存在一定程度的误报和漏报。因此,每一条警报都需要分析师进行人工核查,以确定其实际有效性。

其工作范围如下:

  1. 分析师对每条警报最初都没有建议的调查路径,必须完全依赖警报本身的元数据。
  2. 分析师需要对几乎每一条警报,都遵循自己制定的警报验证流程。
  3. 分析师必须承认,未知威胁是完全无法检测的,甚至没有调查此类潜在威胁的建议路径。
  4. 分析师需要制定长期计划以防范未来的威胁,并制定内部及外部的信息沟通计划。

人工智能辅助警报验证

现在,考虑使用人工智能来辅助网络安全分析师完成其警报验证流程。

在这种情况下,网络安全分析师无需独自完成所有工作。人工智能会使用其自身选择的流程,对网络警报进行初步验证。例如,如果有一条来自 Snort 的网络警报,分析师可以将相关的网络流量数据包或标记输入人工智能工具。该工具将对流量及其包含的任何文件进行分析,并给出判断。这可能包括工具对网络流量进行异常检测,或对附件进行多种不同类型的恶意软件分析。

随后,网络安全分析师仍需对人工智能完成的初步分类进行自己的验证,但希望这比原先完全手动的流程工作量要小。

前端集成人工智能的传感器

接下来是人工智能被集成到所有前端传感器中的情况。

如果采用这种方式,前述的所有分析工作很可能都在前端完成。当警报到达网络安全分析师时,人工智能执行各步骤所产生的元数据都可以包含在警报信息中。

因此,现在网络安全分析师对每条警报都有了建议的调查路径。分析师不再需要完全依赖自己的验证流程,但可以选择性地使用。此外,前端已经完成了一定程度的未知威胁分析,并为进一步调查未知威胁提供了建议路径。最后,人工智能的反馈可用于快速生成行动计划及内部或外部报告。

上一节我们探讨了人工智能在警报处理流程中的不同集成方式,本节中我们来看看它在网络传感器中的具体应用与挑战。

人工智能与网络传感器

在网络传感器中使用人工智能的一个基本方式是通过异常检测器。

正如之前提到的,误报和漏报是任何人工智能工具都面临的问题,异常检测器也不例外。这说明了人工智能工具的一个局限性。然而,这并不意味着这些工具做出的所有判断都不可信,它只表明人工智能无法完全取代人类网络安全分析师。相反,分析师的工作性质发生了变化。

正如上一张幻灯片详细讨论的,人工智能可以极大地帮助网络安全分析师提高生产力、简化工作。但是,引入人工智能后的工作内容是不同的,因为现在分析师需要有能力验证人工智能的发现。

异常检测器的可解释性

现在,让我们更深入地讨论异常检测器的可解释性方面。

正如前面提到的,在传感器前端使用人工智能工具(如异常检测器)的好处是,能为网络安全分析师提供关于警报中潜在威胁的元数据。这里指的是那些采用人工智能的初始工具。此类工具利用人工智能识别异常行为,并基于支持性技术(如统计分析、入侵指标、捕获的专家领域知识等)创建分析结果,这形成了一种制衡机制,有助于验证人工智能的原始判断。

因此,人工智能模型本身的决策可能是一个“黑箱”。然而,诸如网络流量可视化图、警报通知、威胁情报集成信息、策略违规记录等分析结果,都是网络安全分析师可以用来验证潜在威胁的具体依据,直到他们对工具建立起足够的信心。尽管如此,可解释性以及误报和漏报问题仍然是局限性和挑战。

我们研究可解释的自主网络安全,其目标就是提供更低的误报率和漏报率,达到可以对威胁采取主动响应有意义的程度,并提高人工智能模型决策的透明度。

人工智能模型的通用挑战

在网络领域之外,人工智能也可用于其他方面来帮助网络安全分析师,例如系统级检测器、后端警报验证器或其他用途。尽管如此,让我们泛泛地关注一下人工智能模型及其相关挑战。

回顾一下,我们在讨论分析开发过程中的“人工智能模型工程”步骤时,曾从高层次提到:在这里,应选择适合分类问题的人工智能算法,并且必须对该算法进行优化。这部分可能很复杂,更像一门艺术而非精确的科学。我这么说,是因为没有一套确切的流程能保证在任何情况下都完美完成这一步。相反,专业知识才是关键。这不仅包括对人工智能算法的了解,还包括对特定领域的知识,以及特定算法如何处理或解释不同类型数据的理解。

此外,还需要确保人工智能模型的性能和可扩展性适合其应用场景,并确保托管人工智能模型的系统在机密性、完整性和可用性方面得到妥善保护,免受攻击。

数据质量的重要性

最后,我们来谈谈数据质量。这是模型质量的关键,因为二者密不可分。尽管流行的观点认为,拥有优质数据比拥有非常优秀的模型更重要。避免数据质量问题的方法之一是避免各种类型的偏差。另一种方法是避免错误标记的数据、不平衡的数据集和缺失值。当这些情况发生时,应使用适当的方法来缓解。我们已经讨论过几种这样的方法。

总结

本节课中,我们一起学习了人工智能在网络安全应用中的主要挑战。我们从无AI的警报处理流程出发,探讨了AI在辅助验证和前端集成中的不同角色。我们分析了网络传感器中异常检测器的局限性与可解释性问题,并概述了AI模型在算法选择、优化、性能及安全方面的通用挑战。最后,我们强调了数据质量对于构建可靠AI模型的根本性作用。理解这些挑战,是有效部署和利用人工智能增强网络安全防御能力的重要前提。

025:人工智能模型评估方法 🧠

在本节课中,我们将学习分析开发流程中各个步骤的评估方法,特别是如何正确使用数据训练AI模型,以及如何通过特征工程和模型工程来优化模型性能。

数据准备与模型训练 📊

上一节我们介绍了分析开发流程的整体框架,本节中我们来看看如何使用数据来训练AI模型。这听起来简单,但要做得恰到好处,需要考虑很多因素。

你可以训练模型,但可能会训练过度,导致模型在训练数据上表现良好,而在未见过的数据上表现糟糕。这种情况被称为过拟合,可能是由于训练数据过少或包含过多不必要特征导致的。

为了正确训练AI模型,通常需要采取以下方法:

  • 取一个足够大的数据集,将其分成两部分。其中约70%至80%的数据用于训练AI模型,剩余的20%至30%用于测试模型。
  • 如果数据集不够大,可以使用K折交叉验证来正确训练模型。其核心思想是:将数据分成K份,每次用其中K-1份(约90%)训练,用剩余的1份(约10%)测试,重复K次。最后,将K次测试的性能结果取平均值,以评估算法在未知数据上的表现。

最后请注意,在获取更多数据和选择更好算法之间,多数情况下,获取更可靠的更多数据可能是更好的选择。

特征工程 🔧

我们已经学习了数周课程,内容可能有些令人困惑。别担心,分析开发流程是指引我们的明灯。这个流程将所有部分联系起来,并建立了各部分之间的关系。因此,可以说,这个流程中的任何单一环节本身都不是完全有用的。

没有算法和特征的数据(当然,如果你不使用深度学习)是无用的,反之亦然。机器学习算法需要特征来有效利用数据集。那么,特征到底是什么呢?

之前提到,特征工程是开发数学变换以从数据中提取模式的过程。这在大多数情况下是正确的。然而,在某些情况下,特征可能只是数据中的列标题,无需数学变换。这通常由数据科学家根据情况决定。

假设需要数学变换,以下是构建特征的三种基本方法:

  • 数据二值化:最可能适用于图像处理,因为它本质上将原始数据转换为二进制数,随后可被可视化为图像。
  • 数据分箱:一种将数据分组到一定范围集合中的方法,可用于缩小数据的尺度。
  • 对数变换:也可用于缩小数据的尺度,同时能凸显较小值相对于较大值的贡献。

特征缩放与编码 🔄

延续特征工程的主题,一旦确定了从数据中提取必要模式的合适特征,接下来该怎么办?你可能需要考虑某些特征相对于其他特征的尺度。如果你认为所有已识别的特征都重要,可能需要想办法防止某些特征被其他特征掩盖。实现这一点的一种方法是通过特征归一化

本幻灯片提到了两种不同的归一化方法:

  • 最小-最大缩放
  • Z分数标准化

并非所有数据集都由数值数据组成。如果你想使用需要数值数据集的AI算法,那么有以下选择。本幻灯片列出了研究选项,具体使用哪种选择取决于数据集本身。

模型工程与泛化误差 ⚙️

现在,我们从特征工程的讨论转向模型工程的讨论。开始讨论时,先谈谈学习过程及其相关的误差。

这里我们讨论AI算法的泛化误差,即它在尝试分类未见数据时可能遇到的误差。这种误差由三部分组成:偏差、方差和噪声。

噪声是你总想消除的东西,但由于某些原因,部分噪声总是存在并残留下来。因此,让我们关注偏差和方差。

  • 算法参数中的假设错误越多,由于偏差导致的泛化误差就越大。
  • 算法对数据变化越敏感,由于方差导致的泛化误差就越大。

模型复杂度也会影响偏差和方差误差。你总是在寻找一个中间地带,如下图所示。模型工程步骤的主要目标,即分析开发流程的一部分,是找到具有适当复杂度、正确假设以及对所讨论数据具有适当敏感度的优化模型。

模型性能评估 📈

说到AI模型性能,如前所述,使用指标来评估AI模型性能。本幻灯片提到了几个这样的指标。

我们将重点关注接收者操作特征曲线ROC曲线。该曲线说明了真阳性率与假阳性率之间的关系,但更精确的性能衡量指标是ROC曲线下面积AUC


本节课中我们一起学习了如何评估AI模型开发的关键步骤。我们了解了避免过拟合的数据拆分方法(如训练集/测试集、K折交叉验证),认识了特征工程的基本技术(二值化、分箱、对数变换)以及特征缩放的重要性。最后,我们探讨了模型工程中偏差与方差的权衡,并介绍了使用ROC曲线和AUC来评估模型性能的核心指标。掌握这些评估方法是构建有效、可靠AI模型的基础。

posted @ 2026-03-29 09:18  绝不原创的飞龙  阅读(2)  评论(0)    收藏  举报