On Adaptive Attacks to Adversarial Example Defenses(1)

有了他们改进的评估实践,这些防御真的具有很高的鲁棒性吗?

我们发现情况并非如此。具体来说,从最近的ICLR, ICML和NeurIPS会议中选择了13个防御来说明不同的防御策略,我们发现我们可以绕过所有这些防御,并大大降低了最初声称的准确性。

(知其然,而不知其所以然)

重要的是,虽然几乎所有这些防御都进行了涉及适应性攻击的评估,但这些评估结果并不充分。例如,文献中常见的做法是将现有的"自适应"攻击改头换面,绕过一些先前的防御,而不考虑如何将其改为针对新的防御。我们猜想,造成这一缺陷的部分原因可能是,以前关于规避防御的工作通常只显示了最终的、成功的攻击,而没有描述用于发起这种攻击的方法,从而留下了诸如"攻击是如何被发现的? "或"其他哪些攻击是不成功的? "等公开问题。

(会讲出来,如何产生相应攻击方法的猜想,以及推理过程,包括最终成型的攻击方式)

为了解决这个问题,我们不只是证明我们研究的13种防御可以被更强的攻击绕过,而是带领读者了解我们分析每种防御的完整过程,从最初的论文通读,到我们对规避防御所需条件的假设,再到最终成功的攻击。这种方法使我们能够更清楚地记录开发强适应性攻击所涉及的许多步骤。

我们分析的目标不是将分析模型的准确率一直降低到0 %。相反,我们想证明现有的自适应攻击评估方法存在不足,更强的自适应攻击会导致(至少部分)从原始评估报告中降低每个防御的准确率。

尽管之前的工作通常需要开发新技术来规避防御,但我们发现已经存在适当评估防御的技术工具。更好的攻击可以只使用文献中众所周知的工具来构建。因此,目前防务评估的问题是方法问题而不是技术问题。

在描述了我们的方法(第3节)和提供了从我们的评估中提取的共同主题的概述(第4节)之后,我们给出了每个防御的评估的总结(第5节),由于篇幅限制,在附录留了完整的评估。

(设计损失函数,评定原模型的损失量,损失越高说明攻击越强,攻击效果越好)

我们评估的一个首要主题是简单性。攻击不必复杂,即使在防御的时候也是如此。在复杂的防御中往往只有少量的重要组件,谨慎地针对这些组件可以导致更简单和更强的攻击。我们设计了我们的损失函数,这是成功的自适应攻击的基石,使它们易于优化和一致,从而更高的损失值导致严格更强的攻击。虽然我们的一些技术是通用的,但没有一个单一的攻击策略可以满足所有的防御。这突出了一个重要的事实,即自适应攻击无法自动化,并且总是需要对每个防御进行适当的调整。

本着负责任的披露精神,我们联系了我们在提交之前评估的所有抗辩的作者,并提出分享代码或对抗的例子,以使我们的索赔得到独立的验证。在除(其中辩护作者没有回应我们的原始信息)外的所有案例中,作者都承认我们的攻击是有效的。为了促进可重复性,并鼓励其他人执行独立的再评价防御,我们在https://github.com/wielandbrendel/adaptive_attacks_paper.发布了所有攻击的代码

3. background

对于一个分类神经网络f和一个带有真实标签y的自然输入x ( e.g. ,取自测试集),一个对抗样本是一个扰动的输入x′,使得:( 1 )对于某个距离函数‖·‖ (我们在威胁模型下对每种防御进行评估,并声称其具有鲁棒性;在所有情况下,对各种p≥0的p范数),‖x′- x‖很小,但(2)是它被错误地分类,或者是针对性不强(找不到精准的t,使得f ( x′) = t),使得f ( x′) != y,或者是针对性很强的,使得对于某个选定的f ( x′) = t时,有t != y。

(从交叉熵开始定义损失函数,使之在微小扰动下loss最大化)

为了生成对抗样本,构造一个损失函数L,使得当f ( x ) != y时L( x , y)较大,然后在保持扰动‖x-x′‖较小的情况下最大化L( x′, y)。定义合适的损失函数L是任何自适应攻击的关键组成部分。任何损失函数的典型起点都是交叉熵损失LCE。

虽然生成对抗性示例的方法有很多,但最广泛采用的方法是输入空间上的梯度下降。设x0 = x,然后反复设定

x(i+1 )= Proj(xi + α · normalize(∇xi L(xi, y)))

其中,Proj将输入投影到一个较小的域以保持失真较小,归一化在考虑的范数下强制一个单位长度的步长,α控制所采取的步长大小。经过N步(例如, 1000)后,我们令x′= xN为生成的对抗样本。关于常见对抗样本生成技术的进一步背景介绍见附录A。

在某些情况下,将分类器表示成f ( x ) = arg max z ( x )的形式是有用的,其中z ( x )是类得分向量,我们称之为logit层(例如,在任何softmax激活函数之前) (其中z(x)是我们称之为logit层的class-scores向量(例如,在任何softmax激活函数之前));因此,z ( x ) i是第i类关于输入x的logit值.通过稍微滥用符号,我们有时用f ( x )指代分类器的输出类(即f ( x )) = y )或类概率的全向量(即f ( x )) = [ p1 , … , pK] )。选择要从语境中明确。

我们在本文中研究的所有防御都声称是白盒鲁棒性:在这里,对手被假设拥有模型体系结构、权重和任何必要的附加信息的知识。这允许我们使用上述攻击技术。

4. Methodology

本文的核心部分记录了我们在十三种防御上开发的攻击。由于篇幅限制,我们的评估总结在第5节,全文在附录中提供。我们每个评估部分的结构如下:

  • 防御是如何运作的:我们首先简要描述防御,并介绍必要的组件。我们鼓励读者在阅读我们的方法之前,在本节结束后停下来思考一下如何攻击所描述的防御。
  • 我们为什么选择这种防御方式:虽然我们在本文中研究了许多防御措施,但我们不能指望评估过去几年发表的所有防御措施。我们根据两个标准选择每个辩护:(1)它已被ICLR, ICML或NeurIPS接受;表明独立审稿人认为它有趣且合理,并且(2)它清楚地说明了某些概念;如果两个防御是基于相同的想法,或者我们认为在相同的情况下会失败,我们只选择一个。
  • 最初的假设和实验:我们首先阅读每篇论文,重点是寻找防御可能仍然容易受到对抗性示例攻击的潜在原因,尽管论文中最初进行了鲁棒性评估。为了开发额外的攻击假设,我们还研究了防御的源代码,这些源代码是公开的,或者应所有防御的要求。
  • 最后的稳健性评估:鉴于我们对防御失败的候选假设,我们转而发展自己的适应性攻击。在大多数情况下,这包括(1)构造一个改进的损失函数,其中梯度下降可以成功地生成对抗性示例,(2)选择最小化损失函数的方法,以及(3)根据从攻击尝试中收集到的新见解重复这些步骤。
  • 吸取的教训:在绕过了防御之后,我们回顾并询问我们从这次攻击中学到了什么,以及如何将其应用于未来。

每个部分的流程直接反映了我们实际采取的评估防御健壮性的步骤,而没有追溯得出我们希望如何发现缺陷的结论。我们希望这将允许我们的评估策略作为如何从头到尾执行未来评估的案例研究,而不仅仅是观察最终结果。

我们强调,我们的主要目标是评估每个防御的初始鲁棒性评估是否合适,如果我们发现不合适,就说明如何对该防御建立更强的适应性攻击。重要的是,我们不希望宣称这些防御方法中的许多所使用的鲁棒性技术没有任何价值。很可能这些技术的一些实例化可以提高模型的鲁棒性。然而,要令人信服地提出这样的主张,这个防御必须得到一个强有力的适应性评估的支持- -这是我们教程的重点。

5. Recurring Attack Themes

我们确定了6个主题(和一个元主题),它们是多个评估共有的。下面我们分别进行讨论。表1给出了与我们所研究的每个防御相关的主题的概述。

  • (元主题)T0:力求简单。 我们的自适应攻击始终比每篇论文中评估的自适应攻击更简单。在所有情况下,我们的攻击都尽可能接近具有适当损失函数的直接梯度下降;只有当简单的攻击失败时,我们才会增加额外的复杂性。更容易诊断简单攻击的失败,以便迭代更强大的攻击。下面的主题主要是各种方法,使攻击更简单,但更强大。
  • T1:攻击(一个功能接近)完全防御。如果一个防御是端到端可微的,那么整个防御应该被攻击。除非必要,否则应避免附加损失条款;相反,如果可能的话,应该包括任何组件,特别是预处理功能。
  • T2:识别和瞄准重要的防御部分。一些防御以复杂的方式组合了许多子组件。通常,检查这些组件会发现,只需要一两个组件就足以使防御失败。只针对这些组件可以导致更简单、更强大和更容易优化的攻击。
  • T3:调整目标以简化攻击。 有许多目标函数可以被优化以生成对抗性示例。选择“最佳”策略并非无关紧要,但可以极大地提高攻击成功率。例如,我们发现目标攻击(或“多目标攻击”有时比非目标攻击更容易制定。我们还表明,特征攻击[SCFF16]是规避检测对抗性示例的许多防御的有效方法。这里,我们从x以外的另一个类中选择一个自然输入x *,并生成一个与x *在某个内层的特征表示相匹配的对抗示例x '。
  • T4:确保损失函数一致。 先前的工作表明,由于损失函数难以优化,许多防御评估失败。我们发现许多防御评估受到正交和更深层次问题的影响:所选择的损失函数实际上并不是攻击成功的良好代理。也就是说,即使有一个保证找到损失最优的全能优化器,攻击也可能失败。这样的损失函数是不一致的,应该避免。
  • T5:用不同的方法优化损失函数。 给定一个尽可能简单的有用损失函数,应该选择合适的攻击算法以及正确的超参数(例如,足够多的迭代或重复)。特别是,基于白盒梯度的攻击并不总是优化损失函数的最合适算法。在某些情况下,我们发现应用基于分数的“黑盒”攻击或基于决策的攻击可以优化难以区分的损失函数。
  • **T6:在对抗性训练中使用强适应性攻击。**许多论文声称,将他们的防御与对抗性训练相结合比单独使用任何一种技术都能产生更强的防御。然而,我们发现许多这样的组合防御导致比单独的对抗训练更低的鲁棒性。这揭示了弱自适应攻击的另一种失败模式:如果用于训练的攻击无法可靠地找到对抗性示例,则模型将无法抵抗更强的攻击。
6. Our Adaptive Evaluations

我们评估并规避了13种防御。在这一节中,我们简要地描述了每种防御是如何运作的,以及我们需要做些什么来规避它。防卫的排序具有任意性。由于篇幅限制,对每一道防线的完整评价见附录。

(1)k-Winners Take All

防御方式:用不连续的k- winner - take - all函数替换标准的ReLU激活来有意掩盖梯度。

攻击:使用EOT,寻找连续光滑可导的近似函数。

这种防御通过用不连续的k- winner - take - all (k- wta)函数替换标准的ReLU激活来有意掩盖梯度,该函数将层中除k个最大激活外的所有激活设置为零。因此,即使输入的微小变化也会极大地改变网络中的激活模式,并导致预测的大幅跳跃。由于模型不是局部光滑的,很难找到标准的基于梯度攻击的对抗例子。

每当防御会导致模型预测中出现这样的半随机的不连续跳变时,我们的第一个假设是,我们需要找到模型的决策面的光滑近似,使得梯度下降能够成功。尽管这种防御是确定性的,但我们采用了一种类似于EOT技术 (见附录A)的策略,该技术常用于平滑随机防御中的变异。我们从输入的20,000个小扰动中通过有限差分估计平滑梯度,并运行PGD 100步。这使得在k - WTA激活下对抗训练的CIFAR - 10模型的准确率从50.0 %降低到0.16 %。因此,与对抗训练基线相比,添加k - WTA激活实际上降低了鲁棒性。

(2)The Odds are Odd

防御方式:基于分类器的logit值的分布来检测对抗性示例,即加入噪声不影响原来分类。

攻击:结合EOT,多次计算求平均值来针对防御的随机性。采用“特征对手”。

这种防御基于分类器的logit值的分布来检测对抗性示例。在输入x上,防御方将logit向量z(x)与“噪声”logit向量z(x + δ)进行比较,其中δ ~ N在测试时从某个分布N(例如多项高斯分布)中采样。假设对于干净的例子,z(x)≈z(x + δ),而对于对抗的例子,两个logit向量将显著不同。第5.13节中的辩护也有类似的理由。

作者评估了结合EOT的标准攻击,以平均防御的随机性。然而,通过设计,与干净的输入相比,许多攻击找到的对抗性示例要么对噪声不鲁棒,要么对噪声过于鲁棒。为了创建与干净输入具有相似噪声鲁棒性的对抗性示例,我们使用“特征对手”:我们从x以外的另一个类中选择一个干净输入x *,并最小化||z(x ') - z(x *)||2^2,以匹配干净输入的logits。此攻击将CIFAR-10的防御精度降低到17% (ε = 8/255)。进一步包括EOT将精度降低到0%。

(3)Are Generative Classifier More Robust?

这种防御是基于变分自编码器框架。它相当复杂,并且显示了许多使评估具有挑战性的特征,例如使用多个模型、多个损失的聚合、随机性和额外的检测步骤。

防御首先通过一组随机编码器-解码器模型运行输入。然后计算每个类的四个损失项,并将这些损失项组合起来形成每个类的似然得分。最后,根据KL -散度测试,防御拒绝具有"异常"类分数的输入。

作者评估了对所有防御组件进行优化的攻击,即使在大扰动下也找不到对抗性的例子。通过检查模型的四个损失项,我们发现只有一个项对类分数有很强的影响。只优化这种损失就能产生更简单的攻击,并且成功率更高。为了避免检测步骤,我们使用“特征对手”,并创建敌对示例,其类别得分与其他类别的干净示例相匹配。此攻击将CIFAR-10的防御精度降低到1% ( ε = 8/255)。

(4)Robust Sparse Fourier Transform 稳健的稀疏傅里叶变换

这种防御通过“压缩”每个图像并投影到离散余弦变换的前k个系数来防止 0对抗性示例。本文没有分析其对自适应攻击的鲁棒性。因此,我们发现以一种直接可微的方式实现防御,然后在这个组合函数上生成’ 0个对抗示例是成功的。我们的攻击在被防御的分类器上生成对抗性示例,其中值失真为14.8像素,与报道的未防御模型的15像素相当。

(5)Rethinking Softmax Cross Entropy

防御模型:使用新的损失函数MMC & l2。

攻击:不同于以往的直接使用交叉熵作为损失函数,我们直接优化f(x)和目标向量 μy之间的l2损失。

这种防御在训练期间使用了一个新的损失函数,以增加对抗鲁棒性。作者提出了Max-Mahalanobis中心(MMC)损失和l2损失,其中每个类标签都有一个目标向量μy,并且分类(大致)由arg miny(f (x)−μy)2给出。

一般来说,每当防御改变用于训练模型的损失函数时,我们的初始假设是新模型具有不太适合具有标准softmax交叉熵损失的攻击的损失面。我们发现这就是这里的情况。我们不是间接优化softmax交叉熵损失,而是直接优化f (x)与目标向量μy之间的l2损失。这种攻击在CIFAR-10上失真 ε = 0.031时将分类器精度降低到0.5%以下。

(6)Error Correcting Codes

防御方式:采用非常多的分类器,进行“投票”,票数最多的分类则被输出。这是一种典型的梯度掩码防御。

攻击:先去除让梯度信号变脆弱的部分(说明攻击的成功不是因为这些部分异常),之后运行多目标攻击。

这一防御提出了一种训练具有足够多样性的模型集合的方法,冗余可以作为纠错码,从而实现鲁棒分类。与集成中的每个模型具有相同的输出标签分布不同,所有模型都是基于类的随机划分的二元分类器。集合的输出是集合的多数投票。

本文不包含适应性评价。这在强声明中显示:在ε = 0.5的l∞失真下,本文报告了近40 %的精度- -梯度掩盖的一个明显符号。为了攻击该防御,我们首先去除一些使梯度信号变脆弱的不分(例如,连续的sigmoid函数和log操作)。通过运行多目标攻击,在ε = 0.031时,我们将集成精度降低到5 %,而在该失真下,报告的精度为57 %。

(7)Ensemble Diversity 一系列的多元化

防御模型:利用正则项,使模型有多样性。

攻击:增加步数和重复次数,可将准确率降到很低。

这种防御训练了一个具有正则化项的模型集合,该正则化项鼓励模型预测之间的多样性。不同模型的集成被认为比单一模型或较少多样化的集成更健壮。其基本原理类似于第5.6节中的防御。

由于防御依赖于似乎不会引起梯度掩盖的训练目标的变化,因此似乎不需要对标准的梯度下降攻击进行自适应的改变。作者评估了PGD 、BIM和MIM 等广泛的攻击,但这些攻击都非常相似。此外,攻击只运行了10步,步长为ε/ 10,因此很可能无法收敛。我们发现,将PGD的步长乘以3将准确率从48 %降低到26 %。将步数增加到250步,精度进一步降低到10 %。在每个样本上重复攻击三次,准确率降低到7 %。最后,对剩下的样本使用20步5次的B & B攻击(这在这篇辩护文发表时是没有的),将准确率降低到0 (在CIFAR - 10上,ε = 0.01)。

(8)EMPIR

防御模型:构建模型集合,权重和激活值的精度是混合的。三个模型,采用投票方式进行分类。

攻击:对整个模型集合进行梯度下降,信息在模型中正确传播…100次PGD迭代可降低准确率。

这个防御是我们研究的第三个构建模型集合来防御对抗性示例的防御方法,但这次使用了混合精度的权重和激活。本文训练了三个模型{fi},每个模型在权重和激活上具有不同精度水平,并返回输出作为模型的多数投票

本文没有明确分析其对自适应攻击的鲁棒性,但对集成进行了标准的基于梯度的攻击分析。在研究作者的代码时,我们发现他们的攻击确实包含了一个BPDA-style的梯度估计。我们最初的假设是,对整个模型集合执行梯度下降,并确保梯度信息在模型中正确传播,就足以绕过这种防御。

由于多数投票可能在数值上不稳定,我们取三个模型fi(x), f2(x), f3(x)的概率向量,并对它们进行分量平均,以获得一个模型f,其对i类的预测由f(x)给出ˆ f (x)i= (f1(x)i+ f2 (x)i+ f3(x)i)/ 3。然后,我们在f的交叉熵损失上运行PGD。通过100次PGD迭代,我们在ε = 0.031时将防御的准确率降低到1.5%(原始评估报告的准确率为13.5%,在ε= 0.1时进行40次PGD迭代)。

(9)Temporal Dependency 时序依赖

防御模型:语音识别。检测样本的前半部分的分类与整段文本的前半部分的分类相近。

攻击:① 最小化前缀输入f(x pre)和全输入f(x)的转录损失(成功率低); ② 改变前缀函数的计算方式。

这个防御检测语音识别的对抗样本。它检查一个音频样本的前半部分的分类是否与整个音频样本的前半部分的分类相似。也就是说,如果xpre是序列x的前缀,那么这个防御检查f ( x ) pre≈f ( xpre )。

本文进行了广泛的适应性评估,尝试了三种不同的攻击技术。其中一种攻击类似于我们自己的一个成功攻击的初始假设:选择一个目标序列t,并最小化前缀输入f ( xpre )和全输入f ( x )上的转录损失,其中前缀输入上的损失是在f ( xpre )的分类和目标序列t的前缀之间计算的。然而,我们确信,在原始评估中存在一些错误,因为对于无界攻击,攻击的成功率很低:即使没有对对抗失真进行约束,攻击在欺骗检测器时也没有100 %成功。

我们发现了一些细节,当它们结合在一起时,以很小的失真将攻击成功率显著提高到100 %。我们做的最重要的改变是在前缀函数的计算方式上。具体地,优化损失函数L ( x′) = L ( f ( x′),t ) + L ( f ( x′pre ),tpre ),其中t pre为真实预测t的前l个字符,l = len ( f ( x′pre ) )。重要的是,这不仅仅是f ( x′)的前l个字符:这个值在任何时间点都可能不是正确的输出。

在基线分类器上,我们要求中位数l∞失真为41 (在65536的16位整数范围内)。对于该防御的分类器,我们要求失真为46,略有增加,但不显著高于基线防御(例如,比特量化)。

(10)Mixup Inference

防御模型:推理时的随机插值过程来减轻对抗扰动的影响。

攻击:采用一种自适应性攻击,结合PGD和EOT来对抗防御的随机性;每个PGD步骤中,多次计算求随机差值样本梯度的平均值作为整个防御梯度的近似值。

这种防御通过推理时的随机插值过程来减轻对抗扰动的影响。在输入x上,防御计算K个线性插值^xk = λx + ( 1-λ ) sk和其他随机样本sk,并平均模型对所有K个插值的预测。

作者最初的评估确实考虑了一种适应性攻击,然而,它的性能并不优于其他非适应性攻击。考虑的自适应攻击将多个非自适应攻击产生的对抗样本进行平均,因此不直接考虑防御方的特殊推理过程。我们提出了一种自适应攻击,将PGD与EOT过程相结合,以考虑防御的随机性:在每个PGD步骤中,我们通过平均从多个随机插值样本中获得的梯度来估计整个防御的梯度。我们的攻击使得最强防御模型(它与对抗训练相结合)在CIFAR - 10上的准确率从57 %下降到43.9 %,接近基线模型的鲁棒性( 42.5 % )。

(11)Mixup Inference

防御模型:预处理图像时,随机丢弃像素,再矩阵估计(BPDA的方法)像素补全重建图像,降低图片对微小变化的敏感度。

攻击:采用EOT+BPDA (但是发现,即使没有预处理,攻击效果也不会进一步++,说明有一定的鲁棒性)。

这种防御方法使用随机丢弃图像中像素的预处理步骤,然后使用矩阵估计来重建图像。防御在这些预处理的输入上训练模型,目的是学习对小输入变化不太敏感的表示。

作者的评估使用BPDA通过矩阵估计步骤来近似梯度。我们表明,攻击也可以通过使用EOT来加强,以解释丢弃像素的随机选择。同时使用BPDA和EOT将CIFAR-10的防御精度降低到15% (ε= 8/255)。但是即使我们完全去除预处理步骤,攻击也不能进一步改进,从而表明学习的模型确实具有一定的鲁棒性。

作者还将他们的防御与对抗训练相结合。我们发现该模型的鲁棒性不如单独使用对抗训练的模型- -这可能是因为原始的BPDA攻击(没有EOT )在训练时也没有在模型上找到强对抗样本。

(12)Asymmetrical Adversarial Training 不对称对抗训练

防御模型:集成分类器,先输出一个分类,然后检测是否高于阈值,防止其他扰动对输入造成影响。

攻击:构造多目标攻击。最大化一个错误分类的可能,欺骗检测器。

这种防御方法使用对抗训练的模型来检测对抗样本。在"集成分类器"模式下,防御方首先使用一个基分类器f输出一个预测f ( x ) = y。然后,输入x被送到该类别的检测器,hy,如果hy ( x )低于某个阈值,则拒绝。对每个检测器hi进行对抗训练,以拒绝来自除i以外的类的扰动输入。

防御非常简单,因此不太可能遭受梯度掩盖。作者提出了一种自然自适应攻击,旨在联合欺骗基分类器f和所有检测器hi。问题是,这种攻击"过度优化",试图欺骗所有检测器,而不是只欺骗预测类的检测器。我们证明,构造"多目标"攻击非常简单且更有效:对于每个目标类t != y,我们联合最大化f ( x ) t (以得到一个错误的分类为t)和ht ( x ) (为了欺骗t类检测器)。然后,我们为每个输入选择最佳的目标类。

我们在CIFAR - 10 ( = 8 / 255 )上将防御的准确率从30 %降低到11 %。作者还提出了一种简单组合鲁棒检测器和输出y = arg maxi hi ( x )的防御方法。我们将这种防御的准确率从55 %降低到37 %,略低于(标准)对抗训练。

(13)Turning a Weakness into a Strength 化弱为强

防御模型:有两个检测,一个是噪声不干扰输入的分类;另一个是输入的最近对抗样本距离某个阈值较远。

攻击:生成一个高置信度的对抗样本x′,然后在x′和输入x之间执行二分搜索。

这个防御通过两个测试来检测一个输入是对抗的:①用噪声干扰输入不会导致分类的改变;②输入的最近对抗样本距离某个阈值较远。这种抗辩在概念上与第5.2节中的抗辩非常相似。

虽然防御在概念上是简单的,但原始的评估方法是复杂的,构建编码攻击者目标的单一统一损失函数是具有挑战性的。特别地,作者开发了一个具有两个不可微分量的四维加权损失,因此本文应用BPDA 。我们认为,BPDA并不是一种在遭遇不可微损失时应该作为首次尝试的方法,而是一种不得已而为之的方法。

防御依赖于这样的假设:没有输入( a )对随机噪声有很高的置信度,但( b )在进行对抗攻击时仍然接近决策边界。我们显式地构造具有这两种性质的输入,首先生成一个高置信度的对抗样本x′,然后在x′和输入x之间执行二分搜索。该攻击在CIFAR - 10和ImageNet上以0 %的检测率将防御的准确率降低到< 1 %,与原文中相同的威胁模型。

7. conclusion

与之前的研究工作相比,我们看到防御评估有了明显的改进:而在过去,论文根本不会使用强适应性攻击进行评估,我们研究的几乎所有防御评估都执行旨在逃避提议防御的自适应攻击。然而,我们发现,尽管存在自适应攻击评估,我们分析的所有13个防御都可以通过改进的攻击绕过。

我们已经描述了许多攻击策略,这些策略被证明可以有效地绕过不同的防御。然而,我们敦促社区不要使用这些自适应攻击作为模板,以便在未来的评估中复制。为了说明原因,我们提出以下非正式的“无免费午餐定理”:

对于任何提出的攻击,都有可能构建一个非健壮的防御来阻止该攻击。

这样的防御一般不具有趣味性。因此,我们鼓励将针对先前攻击的鲁棒性评估(包括对先前防御的适应性攻击)仅作为有用的健康检查。鲁棒性评估的主要重点应放在开发全面的自适应攻击,明确地揭露并瞄准防御最薄弱的环节(只有在适当的情况下,利用已有的技术)。特别地,我们鼓励作者将评估的重点放在自适应攻击(并将基于非适应性攻击的评估延迟到附录中)上。然而,重要的是要包括一个非适应性的评估,以证明简单的方法是不够的。我们希望本文能对此类自适应攻击的实施和评估起到一定的指导作用。

至关重要的是,自适应攻击是针对特定的防御而手工设计的。任何一个自动化的工具都不可能全面地评估一个防御的健壮性,无论多么复杂。例如,自动化攻击中的最新技术" AutoAttack " [ ? ]评估了我们所做的四种相同的防御。在两种情况下,当我们完全攻破这些防御时,AutoAttack只能部分成功地攻击所提出的防御。此外,现有的自动化工具,如AutoAttack,不能直接应用于我们研究的许多防御,如检测对抗样本的防御。

从我们的分析中也许最重要的教训是,自适应攻击应该尽可能简单,同时解决任何潜在的优化困难。在直接梯度下降的基础上添加的每个新分量是另一个可能产生误差的地方。总的来说,过去几年在防御评估方面的进展是令人鼓舞的,我们希望更强的自适应攻击评估将为更稳健的模型铺平道路。

8. broader impact

研究机器学习安全的研究,特别是那些主要目的是制定攻击防御建议的论文,必须小心做得比伤害更多。我们相信,在我们的论文中也会出现这种情况。经过数十年的争论,计算机安全界在很大程度上已将"负责任披露"作为披露漏洞的最优方法:在发现漏洞后,负责任披露要求首先通知受影响的各方,并在合理的时间后将披露公之于众,以便整个社会都能从中学习。

研究机器学习安全的研究,特别是那些主要目的是制定攻击防御建议的论文,必须小心做得比伤害更多。我们相信,在我们的论文中也会出现这种情况。经过数十年的争论,计算机安全界在很大程度上已将"负责任披露"作为披露漏洞的最优方法:在发现漏洞后,负责任披露要求首先通知受影响的各方,并在合理的时间后将披露公之于众,以便整个社会都能从中学习。

然而,我们构建攻击的方法仍然有可能被用来攻破一些已经部署的或将要部署的其他系统。这是不可避免的,然而我们坚信,我们的论文可以为设计新防御的研究人员提供的帮助明显大于它可能提供的实际恶意行为者的帮助。我们的论文致力于帮助研究人员进行更深入的评估,并诊断评估中的故障- -而不是攻击真实的系统或用户。

概念

1. adaptive attack

“Adaptive attack” 是一个广泛用于描述计算机安全领域的术语,它指的是攻击者根据其目标系统的反应和防御措施,灵活地调整攻击策略和技术的能力。这种攻击方式是为了增加攻击成功的机会和减少被检测的风险。Adaptive attacks 的特点包括:

  • 动态性:攻击者会不断地调整其策略和技术,以适应目标系统的变化或对抗措施的加强。这种灵活性使得攻击者可以更好地规避检测和防御。
  • 目标定制:攻击者可能会对不同的目标系统采用不同的攻击方法,根据目标系统的弱点和防御措施的不同来调整攻击策略。
  • 持续性:Adaptive attacks 可能是长期进行的,攻击者会持续监控目标系统的状态,以便随时调整攻击策略,以确保攻击的成功。
  • 多样性:攻击者可能使用多种不同的攻击技术,包括恶意软件、社交工程、网络渗透等,以适应不同的情况和目标。

为了应对adaptive attacks,安全专业人员需要不断升级防御和检测机制,以及实施安全最佳实践,以最大程度地减少系统受到攻击的风险。此外,安全教育和培训也对帮助员工警惕潜在的攻击尤为重要,以减少社交工程攻击的成功率。

2. meta-theme

“Meta-theme” 是一个术语,通常用于描述或指代一个更高级别的主题、概念或范畴,它可以包含一系列相关的次级主题。它表示对主题的更广泛或更抽象的理解,通常用于分析或讨论研究领域中的核心思想、趋势或问题。

举例来说,如果在一篇关于环境问题的研究中,讨论了气候变化、生物多样性丧失、资源管理和可持续发展等多个次级主题,那么"环境问题"可以被视为这些次级主题的"meta-theme"。这意味着"环境问题"是一个更大范围的主题,涵盖了这些具体的次级主题,而这些次级主题则是构成了这一更大主题的一部分。

“Meta-theme” 有助于组织和理解各种相关主题之间的关系,帮助研究者或作者更全面地探讨某个领域或主题的多个方面。这个概念常用于学术研究、文学分析和讨论复杂主题的文档或讨论中。

3. end to end

“End-to-end” 是一个概念,它描述了一个系统或流程的设计和实现方式,其中数据或信息从起始点传递到最终点,经过的步骤和中间处理尽可能少或不存在。这个概念的目标是简化系统,减少中间环节,提高效率和直观性。下面是更详细的解释:

  • 直接传递:在 “end-to-end” 的系统或流程中,数据或信息在整个过程中直接传递,从一个端点到另一个端点,中间没有复杂的中间步骤或中断。这意味着数据不需要在不同的阶段进行转换或处理,而是以原始形式连续传递。
  • 最小中间处理: “end-to-end” 的方法旨在最小化中间处理或转换的数量。中间处理是指对数据进行某种形式的修改、转换或计算,通常需要额外的资源和时间。 “End-to-end” 试图减少或消除这些中间处理步骤,使整个流程更加简单和高效。
  • 系统的连续性: “end-to-end” 通常关注整个系统的连续性,确保数据或信息可以在系统中无缝流动,而不会在不同阶段中断或需要额外的干预。
  • 适用性: “end-to-end” 方法在某些情况下可能不适用,特别是在需要特定中间处理步骤的情况下。然而,当一个系统或流程可以被设计为 “end-to-end” 时,它通常会带来许多优势,包括更低的复杂性、更高的效率和更容易理解和维护的特点。
4. feature adversaries

“Feature adversaries” 是一个术语,通常用于机器学习和深度学习领域,特别是与对抗性示例攻击相关的研究。它指的是攻击者针对模型中的特征或特征提取器进行攻击的情况。特征在这里指的是用于描述数据的属性或特性,这些特征可以被用于训练机器学习模型。

在对抗性示例攻击中,攻击者试图修改输入数据,以使机器学习模型做出错误的预测。在 “feature adversaries” 中,攻击者专注于修改数据的特征,而不仅仅是数据本身。这种攻击方式的目标是欺骗模型,通过修改数据的特征来误导模型,使其做出不正确的决策。

“Feature adversaries” 的重要性在于,它们可以用来检测机器学习模型中的弱点,特别是对于那些对特征非常敏感的模型。攻击者可以尝试找到模型对特征的脆弱性,然后利用这些脆弱性来制造对抗性示例,从而绕过模型的防御。

总之,“feature adversaries” 是一种攻击方式,它专注于修改数据的特征,以干扰机器学习模型的预测,从而暴露模型的脆弱性,有助于改进对抗性示例的防御策略。

5. k-Winners-Take-All

“k-Winners-Take-All (k-WTA)” 是一种函数或神经网络结构,通常在机器学习和神经网络领域中使用。它是一种用于选择在输入数据中具有最高响应值或激活的 k 个元素的函数。这个函数的核心思想是,在给定的输入中,只有 k 个最大的元素将被选中,其余元素将被抑制或忽略。

k-WTA 函数通常用于以下情况:

  1. 特征选择:在特征选择或特征映射中,k-WTA 函数可以用来选择输入数据中最重要的 k 个特征,以减少数据的维度并保留最有信息的特征。
  2. 稀疏编码:在稀疏编码中,k-WTA 函数可以用来生成稀疏编码,其中仅 k 个元素被激活,其余元素被置为零。
  3. 神经网络:在神经网络中,k-WTA 函数可以用于实现一种竞争性层,其中 k 个神经元竞争并激活,而其他神经元被抑制。这种结构可以帮助网络学习对输入数据的稀疏表示。

k-WTA 函数通常采用以下步骤实现:

  1. 对输入数据中的元素进行排序,找到最大的 k 个元素。
  2. 将这 k 个元素保留,其他元素置为零或抑制它们。
  3. 输出经过 k-WTA 函数处理后的数据。

k-Winners-Take-All 函数在处理稀疏性和特征选择等问题时非常有用,因为它可以帮助减少数据的冗余性,提取最重要的信息,或者实现稀疏编码,从而在机器学习和神经网络任务中发挥重要作用。

6. EOT (Elastic-Weight Consolidation)

EOT 是指 “Elastic-Weight Consolidation”,是一种用于增强神经网络的鲁棒性的技术。它是一种用于对抗性训练的策略,目的是增强神经网络模型对对抗性示例的抵抗能力。这种技术通过平滑模型的决策面,使其更具鲁棒性,以便更好地应对对抗性攻击。 Elastic-Weight Consolidation (EOT) 通常用于对抗性训练的上下文中,通过在训练期间引入正则化或其他技术,使神经网络更难受到对抗性示例的影响。作者提到,尽管它通常用于处理随机化的防御方法中的波动性,但在这种情况下,他们采用了类似的策略,以平滑模型的决策面。 总之,EOT(Elastic-Weight Consolidation)是一种用于增强神经网络鲁棒性的技术,可以用于对抗性训练,以使模型更难受到对抗性示例攻击的影响

7. PGD

“PGD” 是 “Projected Gradient Descent” 的缩写。PGD 是一种用于生成对抗性示例的迭代优化算法。它通常用于评估机器学习模型的鲁棒性,特别是在面对对抗性示例时。

PGD 的工作原理如下:

  1. 首先,选择一个原始输入数据点,这是模型要对其进行分类的数据点。
  2. 然后,计算当前输入数据点的梯度,即模型预测的输出相对于输入数据的变化。这个梯度表示了模型对输入数据的敏感度。
  3. 接下来,沿着梯度的方向,对输入数据进行微小的扰动。这个扰动通常是在合理的范围内,以不过分改变输入数据的情况下,引入一些噪音。
  4. 然后,将扰动后的输入数据输入模型,计算模型的输出。
  5. 如果模型的输出不是目标类别(例如,不是正确的分类),则继续优化扰动,重复步骤 2 到步骤 4,直到满足特定的条件或达到一定的迭代次数。
  6. 最终,生成的扰动后的输入数据点就是一个对抗性示例,它被设计为迷惑模型,使其做出错误的分类。

PGD 是一种强大的对抗性示例生成方法,因为它通过迭代寻找最佳的扰动来欺骗模型。在上文提到的上下文中,PGD 被用于测试模型对于防御方法的鲁棒性,评估模型在存在对抗性示例的情况下的性能。

8. Generative Classifier

“Generative Classifier” 是一个结合了生成模型和分类模型的概念的方法。这个术语通常用于机器学习领域,特别是在生成对抗网络(GANs)和生成模型分类任务中。

一般来说,机器学习中的分类模型用于将输入数据分为不同的类别或标签。生成模型用于生成新的数据,通常用于生成与给定数据分布相似的数据。

“Generative Classifier” 结合了这两个概念,它尝试使用生成模型来生成新的数据样本,并将这些生成的样本用于分类任务。这种方法的目标是提高分类模型的性能,特别是当训练数据很有限或类别之间的边界模糊时。

在 “Generative Classifier” 中,生成模型可以是各种类型的,例如生成对抗网络(GANs)或变分自动编码器(VAEs)。生成模型用于生成模拟数据,而分类模型则用于对这些数据进行分类。

这种方法的优点在于可以生成具有多样性的数据,有助于提高分类模型的鲁棒性,尤其是在面对对抗性示例或数据不平衡问题时。 “Generative Classifier” 是一个有趣的研究方向,可以提供更好的分类性能,同时也是生成模型与分类任务的结合应用的示例之一。

9. Variational Auto-Encoder framework

变分自动编码器(Variational Auto-Encoder,VAE)是一种生成模型框架,用于学习数据的潜在表示和生成新的数据样本。它结合了自动编码器(Autoencoder)和概率生成模型的思想,具有强大的生成和潜在空间建模能力。

以下是 Variational Auto-Encoder 框架的主要组成部分和工作原理:

  • 编码器(Encoder) :编码器部分将输入数据映射到潜在空间中。它将原始数据(例如图像、文本等)转换为潜在变量的均值和方差。这些参数用于定义潜在空间中的概率分布,通常是多维高斯分布。
  • 潜在空间(Latent Space) :潜在空间是一个低维度的空间,其中编码器将输入数据映射。在这个空间中,每个点表示一个潜在特征或属性,它捕获了数据的重要信息。VAE 的目标是学习如何从潜在分布中采样,以生成新的数据点。
  • 解码器(Decoder) :解码器部分将从潜在空间中采样的点转换为数据样本。它负责生成与输入数据相似的数据。通常,解码器采用潜在点和噪声,生成与原始数据具有相似分布的新数据样本。
  • 损失函数(Loss Function) :VAE 的训练过程基于最大化似然估计。模型的损失函数包括两部分:一部分用于最大化数据的似然性,另一部分用于最小化潜在分布与标准正态分布之间的差异,这部分通常被称为 KL 散度(Kullback-Leibler divergence)。这两部分损失函数协同作用,使得模型能够学习有效的潜在表示。
  • 生成新数据 :一旦模型训练完成,可以通过从潜在分布中采样,然后将采样的点传递给解码器,来生成新的数据样本。这使得 VAE 成为一种强大的生成模型,可以生成与训练数据相似但不完全相同的新数据。

Variational Auto-Encoder 框架的主要优点在于它能够学习数据的连续、结构化表示,并且可以生成新的数据,适用于多种应用领域,包括图像生成、文本生成、数据压缩、异常检测等。它是生成模型和自动编码器的结合,提供了强大的概率建模和数据生成能力。

10. 自动编码器

自动编码器(Autoencoder)是一种无监督学习的神经网络模型,用于学习数据的有效表示。它的基本目标是将输入数据转换为潜在表示,并尽可能精确地重建原始输入数据。自动编码器通常由两个主要组件组成:编码器(Encoder)和解码器(Decoder)。

下面是自动编码器的主要组成部分和工作原理:

  • 编码器(Encoder) :编码器部分负责将输入数据映射到潜在表示空间。这个映射过程通常是非线性的,编码器会将输入数据压缩为潜在表示,通常比原始数据的维度要低。编码器的任务是捕获输入数据的关键特征和结构。
  • 潜在表示(Latent Representation) :潜在表示是编码器生成的低维度特征向量,它捕获了输入数据的关键特征。这些特征通常是数据的抽象表示,其中每个维度对应于某种特征或属性。
  • 解码器(Decoder) :解码器部分负责将潜在表示转换回原始数据的形式。它将潜在表示解码为与输入数据尽可能接近的重建数据。解码器的任务是还原输入数据,同时保持潜在表示的信息。
  • 损失函数(Loss Function) :自动编码器的训练过程涉及最小化输入数据与重建数据之间的差异,通常使用均方误差(MSE)或其他适当的损失函数。训练过程的目标是使编码器和解码器共同学习如何生成能够准确重建输入数据的潜在表示。

自动编码器的一个主要应用是降维,其中它可以学习数据的低维度表示,以便更好地可视化或理解数据。此外,自动编码器还可用于特征提取、去噪、图像生成、异常检测等任务。其变种包括卷积自动编码器(Convolutional Autoencoder)和循环自动编码器(Recurrent Autoencoder),适用于不同类型的数据和任务。自动编码器是深度学习中的一个重要工具,有助于学习数据的有用表示。

11. KL-divergence test

KL-divergence test(KL 散度检验)是一种统计测试,用于比较两个概率分布之间的差异。KL 散度(Kullback-Leibler divergence)是一种测量两个概率分布之间差异的指标,它通常用于信息理论和统计学中。

KL 散度测试的基本思想是比较两个概率分布之间的信息损失,或者在某种程度上,一个分布与另一个分布之间的“不同程度”。KL 散度通常用符号 “D(P||Q)” 表示,其中 “P” 和 “Q” 是要比较的两个概率分布。

在 KL 散度测试中,如果 “D(P||Q)” 的值较小,意味着分布 “P” 与分布 “Q” 相似,差异较小。如果 “D(P||Q)” 的值较大,意味着分布 “P” 与分布 “Q” 差异较大,信息损失较多。

KL 散度测试在各种应用中都有用,包括:

  • 概率模型比较 :在概率建模中,可以使用 KL 散度来比较两个模型的拟合质量。较小的 KL 散度值表示模型拟合得更好。
  • 信息检索 :在信息检索中,可以使用 KL 散度来比较查询与文档之间的相似性,以便为查询提供最相关的文档。
  • 概率分布比较 :在统计学和机器学习中,可以使用 KL 散度来比较观测数据的分布与模型预测的分布之间的差异。
  • 特征选择 :在特征选择中,可以使用 KL 散度来评估不同特征之间的相关性和差异,以选择最具信息量的特征。

需要注意的是,KL 散度不是对称的,即 “D(P||Q)” 与 “D(Q||P)” 可能不相等。因此,在使用 KL 散度进行比较时,需要考虑其方向。此外,KL 散度要求分布 “Q” 在分布 “P” 的支撑集(非零概率的区域)上具有正概率值。否则,KL 散度可能无法正确计算。

12. l0 adversarial examples

“L0 adversarial examples” 是指对深度学习模型的一种特殊类型的对抗性攻击。在这种攻击中,攻击者的目标是在输入数据中引入尽可能少的扰动,以欺骗模型,使其做出错误的预测。L0 表示使用的范数,即 L0 范数衡量向量中非零元素的数量。

具体来说,L0 对抗性攻击的目标是最小化输入数据中的非零元素的数量,同时使模型的输出发生错误。这意味着攻击者只能修改极少数的像素或特征,以使模型误分类。与其他对抗性攻击方法(如L2或L∞攻击)不同,L0攻击专注于最小化扰动的数量,而不考虑扰动的强度。

L0 对抗性攻击具有挑战性,因为它要求攻击者非常精确地选择要修改的像素或特征,以使攻击尽可能地难以察觉。这种攻击通常需要更多的计算资源和计算时间,因为它需要搜索最佳的像素位置进行修改。

总之,L0 对抗性攻击是一种在深度学习中用于欺骗模型的技术,其特点是最小化输入数据中非零元素的数量,以达到误导模型的目的。

13. Max-Mahalanobis center (MMC) loss

Max-Mahalanobis Center (MMC) Loss 是一种损失函数,通常用于深度学习中的分类问题,旨在提高模型对类别间距离的鲁棒性。这个损失函数的名称源自马哈拉诺比斯距离(Mahalanobis distance),它是一种用于测量特征空间中点之间距离的统计度量。

Max-Mahalanobis Center Loss 的主要思想是,在特征空间中,每个类别应该有一个"中心",表示该类别的特征分布的核心位置。MMC Loss 的目标是最大化各个类别中心之间的马哈拉诺比斯距离,以确保它们在特征空间中具有足够的分离度。这有助于提高分类模型对不同类别的鉴别能力。

MMC Loss 的公式通常基于以下思路:

  • 对每个类别计算其在特征空间中的中心(通常使用类别内样本的均值表示)。
  • 计算每个类别中心之间的马哈拉诺比斯距离,这是一种考虑了特征空间中协方差结构的距离度量。
  • 最大化这些马哈拉诺比斯距离,以促使类别中心在特征空间中更远离彼此,从而提高分类的鉴别性。

MMC Loss 的应用通常涉及深度学习中的监督学习任务,特别是在训练神经网络进行分类时。通过将 MMC Loss 与传统的交叉熵损失或其他损失函数结合使用,可以提高模型的性能,尤其是在具有重叠类别或类别不平衡的情况下。这种损失函数有助于模型学习更有鉴别力的特征表示,提高了分类任务的鲁棒性和准确性。

14. BIM (Basic Iterative Method)

BIM (Basic Iterative Method) 是一种用于生成对抗性样本的迭代算法,用于攻击深度神经网络(DNNs)和其他机器学习模型。BIM是白盒攻击的一种形式,攻击者在此类攻击中可以访问目标模型的结构和参数。

BIM算法的基本思想是通过多次迭代地对输入样本进行微小的扰动,生成对抗性样本。这些扰动是基于目标模型的梯度信息计算的,旨在使对抗性样本被误分类,即被模型错误地归为其他类别。

以下是BIM算法的详细步骤:

  1. 输入样本选择:选择要攻击的原始输入样本,通常是一个图像。
  2. 初始化对抗性样本:将原始输入样本作为初始对抗性样本。
  3. 迭代扰动:重复以下步骤多次(通常是几十次):
    a. 前向传播:将对抗性样本输入目标模型,计算输出概率分布。
    b. 目标类别选择:选择攻击的目标类别,即希望模型将对抗性样本误分类为的类别。
    c. 梯度计算:计算目标类别对于对抗性样本的梯度。这可以通过反向传播算法计算目标模型的损失函数关于对抗性样本的梯度。
    d. 扰动计算:根据梯度信息计算对抗性扰动,将其添加到当前对抗性样本中。扰动的大小通常受限制,以保持对抗性样本与原始样本的感知相似性。
    e. 对抗性样本更新:将扰动添加到当前的对抗性样本中,得到新的对抗性样本。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

如何自学黑客&网络安全

黑客零基础入门学习路线&规划

初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
img

网络安全工程师企业级学习路线

img
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

img
一些笔者自己买的、其他平台白嫖不到的视频教程。
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

网络安全工程师企业级学习路线

img
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

img
一些笔者自己买的、其他平台白嫖不到的视频教程。
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-sSxDQA9o-1712853564895)]

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值