【论文阅读】基于强化学习的网络安全防护策略

article/2025/9/21 13:04:35

【论文阅读】基于强化学习的网络安全防护策略

本篇文章将介绍一篇针对网络安全问题,运用强化学习方法寻找最优的网络防御策略。

Finding Effective Security Strategies through Reinforcement Learning and Self-Play

  • 前言
    通过强化学习和 自对弈(self-play) 寻找有效的安全策略
    • 主要思想
      提出一种针对入侵防御案例的安全策略自动查找方法,将攻击者和防御者之间的交互建模为一个马尔可夫博弈过程,让攻击和防御过程在没有人干预的情况下通过强化学习和自对弈进行
    • 创新点
      建立了安全策略的自对弈模型,并解决了强化学习一直存在的问题:1、利用建立模型的结构来减小动作空间的额大小,将动作分解为两个动作,首先选择哪个节点进行攻击或防御,接着选择对该点采用什么攻击或防御策略,将动作空间 N×(m+1) 变成了 N+(m+1) 2、避免过拟合情况,在训练期间从策略池中抽取对手策略,增加了策略的多样性
    • 存在的问题
      与所有自对弈问题一样,存在 训练难以收敛 的情况,在基础防御较弱时结果容易发生震荡,震荡表明防御者对对手策略的变化做出了应对,并且出现了过拟合情况。
🔥 这篇文章主要贡献是将攻击者和防御者之间的互动建模为一个马尔可夫博弈过程,以及为减小计算量和增加算法的收敛性使用的两个小trick,创新点没有那么突出,但对网络攻击防御的过程建模值得看看。
  • 摘要
    提出了一种针对入侵防御用例的安全策略自动查找方法。将攻击者和防御者之间的互动建模为一个马尔可夫博弈,在没有人为干预的情况下,让攻击和防御策略通过强化学习和自演来进化
    在这里插入图片描述

  • 模型
    将入侵防御建模为一个零和马尔可夫博弈(Zero-sum Markov game),涉及攻击者代理和防御者代理 在这里插入图片描述

    • 入侵防御博弈过程
      上述图包括四个网络部分, N s t a r t N_{start} Nstart代表着攻击者,剩下的代表防御者设备,其中 N d a t a N_{data} Ndata是攻击者想要达到的部分即攻击者的目标组件。攻击者为破坏目标组件,攻击者通过侦察来探索基础设备,并在获取目标组件的路径上破坏组件;同时防御者进行监视,并增加防御,以防止攻击者访问目标组件。
      【开始阶段】对于攻击者整个基于设施是个黑盒,相反,防御者完全了解网络的拓扑结构和网络漏洞(即每个节点有多种面对不同攻击的防御方法以及防御强度),但无法观察攻击的状态。所描述的对抗过程是一款基于回合的游戏。
    • 入侵防御博弈模型
      建立零和马尔可夫博弈模型,确定状态、动作以及奖励。
      状态:每个节点 N k N_k Nk有与之相关的节点状态 S k = ⟨ S k A , S k D ⟩ S_k=\langle S^A_k,S^D_k\rangle Sk=SkA,SkD,其中防御状态 S k D S^D_k SkD只对防御者可见,包括 m + 1 m+1 m+1的属性,前 m m m个属性代表着防御者面对前 m m m种攻击时防御的强度,以及一种特殊的属性即当前节点能检测出攻击的能力;同时防御状态 S k A S^A_k SkA只对攻击者可见,包括 m m m种的属性,各个属性分别代表着不同攻击类型的强度,例如拒绝服务攻击、跨域脚本攻击等。
      动作:攻击者有两种动作,一种是侦察使防御状态 S k D S^D_k SkD对攻击可见,一种是为某种攻击属性加1,如果节点的某种攻击属性大于防御属性,即认定攻击改节点有效,并且该节点的邻居节点对攻击者可见。同时如果攻击者采取了攻击动作但是达不到攻击要求,此时攻击可能被防御者以一定概率 p = S k , m + 1 D ω + 1 p=\frac{S^D_{k,m+1}}{\omega+1} p=ω+1Sk,m+1D检测到。防御者也有两种动作,一种监控动作,提高节点的检测能力,增加 S k , m + 1 D S^D_{k,m+1} Sk,m+1D值,另外一种是防御动作,提高某种防御能力的防御质量。
      奖励:当攻击者破坏目标节点,攻击者获胜,或者当攻击者被检测到,防御者获胜。博弈双方的赢家获得+1的奖励,反之对手获得-1。
    • 入侵防御博弈场景
      总共三个场景,场景1、2模型有较强的防御能力但是较弱的检测能力,在场景1种每个节点都包含着一个脆弱属性( S k , j D ≤ 1 S^D_{k,j} \le 1 Sk,jD1),同时场景2每个节点至少包含着一个脆弱属性;场景3中防御能力和检测能力都较弱。
      在这里插入图片描述
  • 方法

    • 自对弈方法学习策略
      攻击者和防御者的动作从策略中采样,这些策略不是由专家定义,而是通过自我发挥的过程发展而来的。首先,随机策略初始化攻击者和防御者,接下来进行一系列的模拟,攻击者和防御者使用它们当前的策略相互竞争,并使用强化学习更新策略,直到两个策略充分收敛。
      但自对弈的策略不容易收敛,主要原因是环境是非平稳的,对于每个代理来说,当对手更新它的策略时,环境就会发生变化
      【解决方法】在训练期间从策略池中抽取对手策略,对手池增加了策略的多样性,从而减少了过度拟合,为了填充攻击防御池,在训练过程中定期将当前的攻击防范策略添加到攻击防御池中。

在这里插入图片描述

  • 强化学习算法
    使用REINFORCE、PPO和PPO-AR(Autoregressive Policy Representation)算法,并且参数化策略,PPO-AR是在PPO的基础上做出了一定的改进:
    原本的状态空间为 ∣ N ∣ ⋅ ( m + 1 ) |\mathcal{N}|\cdot(m+1) N(m+1)简化为 ∣ N ∣ + ( m + 1 ) |\mathcal{N}|+(m+1) N+(m+1)
    第一步选择哪个节点进行进攻或防御,第二步选择哪种攻击或防御方式。

  • 实验
    本文中已给出了源代码:https://github.com/Limmen/gym-idsgame

    • 学习对抗静态对手的策略
      在对弈过程中,保持一方的策略固定,另一方学习它的策略对抗静态对手。研究了两个针对静态对手学习的案例,在第一种情况下,攻击者通过对抗一个称DEFENDMINIMAL的静态防御策略来学习自己的策略,用所有节点上最小的防御值更新属性;在第二种情况下,防御者通过对抗一个名为ATTACKMAXIMAL的静态攻击策略来学习自己的策略,用攻击者可见的所有节点上的最大攻击值更新属性。
      REINFORCE、PPO和PPO-AR方法: 上部分显示训练攻击者对抗DEFENDMINIMAL,下部分显示训练防御者对抗ATTACKMAXIMAL
      在这里插入图片描述

    PPO-AR超出基准算法,攻击者在场景1和场景2的胜率低于场景3,反映了场景1和场景2的初始防御较强,而场景3的初始防御较弱。同样,在图3最左边两列的相似曲线上,可以看到场景1和场景2有相似的防御。
    检查学习到的攻击策略:我们发现学习到的攻击策略是确定性的,一般由两个步骤组成:(1)进行侦察,收集邻近节点的信息;(2)、利用识别出的漏洞。此外,学习到的防御策略也大多是确定性的,包括加固关键节点 N d a t a N_{data} Ndata和修补所有节点识别出的漏洞。最后,我们还发现防御者学会了利用可预测的攻击模式,并在攻击者可能下一次攻击的地方进行防御。
    在这里插入图片描述

    • 学习对抗动态对手的策略
      研究攻击者和防御者同时学习的场景。策略有时在迭代中收敛,有时在迭代中振荡,并且发现这种行为依赖于特定的场景。场景2中,表示具有良好防御的基础设施,获得稳定的策略;相比之下,场景3捕获了具有较弱防御的基础设施,获得振荡的策略。
      在这里插入图片描述

    PPO-AR在场景1、2之后策略收敛,然而,在场景3中,方法随着振幅的增加而振荡。振荡表明防御代理对对手策略的改变和超拟合做出了反应。尽管经验池池技术已经被引入来缓和振荡,但从结果中很明显,这在某些场景中是不够的。
    最终,实现了将威胁识别与攻击预测结合起来的随机防御策略,以及将侦察与目标利用结合起来的随机攻击策略


强化学习具有对策略进行广泛探索的特性,能找到对未知网络攻击的防御和恢复的最佳策略,促进网络安全方面的发展

✔️ 网络安全研究小白,如有问题和建议,欢迎一起讨论🥺


http://chatgpt.dhexx.cn/article/UlwXnpTq.shtml

相关文章

还在为不知道怎么学习网络安全而烦恼吗?这篇文带你从入门级开始学习网络安全—认识网络安全

随着网络安全被列为国家安全战略的一部分,这个曾经细分的领域发展提速了不少,除了一些传统安全厂商以外,一些互联网大厂也都纷纷加码了在这一块的投入,随之而来的吸引了越来越多的新鲜血液不断涌入。 不同于Java、C/C等后端开发岗…

[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例

最近开始学习网络安全相关知识,接触了好多新术语,感觉自己要学习的东西太多,真是学无止境,也发现了好几个默默无闻写着博客、做着开源的大神。准备好好学习下新知识,并分享些博客与博友们一起进步,加油。非…

码农翻身,卧虎藏龙

写公众号是很不容易的,在现在信息爆炸的情况下,好文章也很容易被标题党埋没,在我的知识星球“码农翻身”中,我发起了一个活动:免费给写公众号的球友们做个推广。 这个不是互推,就是我单方面的推广&#xf…

现在转行码农的成本已经非常高了,别盲目转行..

转行码农一直是个比较火热的话题,也有很多读者咨询过这个问题,转成功的也不少,比如下面这位香港的同学: 这位朋友半年前就跟我聊过,他不太想干没有技术含量的体力活,一直在坚持自学,这也算如愿…

农村出身的 90 后程序员,如何逆袭为中产阶级?| 程序员有话说

作者 | 阿文 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 小蔡, 90 年 10 月出生,Java开发工程师,目前就职于杭州滨江某知名互联网公司从事云计算开发工作,2013 年毕业就从山东来到了杭州。 …

【一哥闲聊】程序员如何打破35岁魔咒

公众号推文规则变了,点击上方 "数据社"关注, 设为星标 后台回复【加群】,申请加入数据学习交流群 大家好,我是一哥。今天跟大家聊聊程序员35岁以后的方向怎么选? 作为程序员,行业内一直流传着35岁的魔咒&…

码农翻身(随笔)

书一直都有在读,我会一直更新博文,欢迎大家前来阅读、指教! XML和注解 xml:应用于集中配置的场合,比如数据源的配置; 注解:像Controller、RequestMapping、Transactional这样的注解&#xff…

读《码农翻身》有感

前几日偶得一本《码农翻身》,闲来品读,收获颇丰。 作者刘欣老师可能是码农中故事讲得最好的人,能把线程,进程,死锁这种概念讲成计算机内部王国漫游记,能把分布式事务这种高级概念讲成java王国中的权贵大臣勾…

告别码农,成为真正的程序员

本文是我借助 Google 从网上拼凑的文章,可能条理不是很清晰,希望对广大程序员们有些帮助。 一、成长的寓言:做一棵永远成长的苹果树 一棵苹果树,终于结果了。 第一年,它结了10个苹果,9个被拿走,…

达到年薪百万,就算码农翻身了吗?

上周末有个小伙伴问我:码农怎么样才能真正地翻身? 我自己都没有翻身,更没有达到财务自由, 回答这样的问题显然是力不从心的。 (郑渊洁对财务自由的定义:从现在开始不工作,能保持现在的生活水平不…

《码农翻身》之技术之路

《码农翻身》读书笔记之技术之路 这是我的后端读书笔记系列文章的第四三篇,选取的是最近刚刚圈粉的知名博主刘欣创作的《码农翻身》。这篇文章只是最后一部分内容。 本文内容主要根据知名博主刘欣一作《码农翻身》的内容总结而来,本书的内容风趣幽默&a…

给大忙人看的码农翻身记

码农翻身记个人读后感 文章目录 码农翻身记个人读后感本书介绍大纲启发分享个人的能力欠缺的地方书中比较棒的建议 本书介绍 《码农翻身》用故事的方式讲解了软件编程的若干重要领域,侧重于基础性、原理性的知识。 非常适合刚入门大学生或者 计算机领域入行 一两年左…

码农翻身之编程语言的巅峰

“哇塞,怎么可能这么简单!” 当C语言老头儿还是小伙子的时候,第一次见到了汇编,发出了这么一声感慨。 在C语言看来,这汇编的指令实在是太简单了,简单到了令人发指的地步,只有这么几类指令&…

《码农翻身》

大话编程 我是一个线程 我是一个Java class Javascript: 一个屌丝的逆袭 Java:一个帝国的诞生 JSP:一个装配工的没落 TCP/IP 之 大明王朝的邮差 TCP/IP 之 大明内阁 TCP/IP 之 蓟辽督师 CPU 阿甘 CPU 阿甘之烦恼 CPU 阿甘:函数调用的秘密 我是一个网卡 …

码农翻身 各章节链接

大话编程 我是一个线程 我是一个Java class Javascript: 一个屌丝的逆袭 Java:一个帝国的诞生 JSP:一个装配工的没落 TCP/IP 之 大明王朝的邮差 TCP/IP 之 大明内阁 TCP/IP 之 蓟辽督师 CPU 阿甘 CPU 阿甘之烦恼 CPU 阿甘:函数调用的秘密 我是一个网卡 …

读书笔记(一)《码农翻身》

好久都没有写技术博客了,大概有一年左右没有开始写了,原因是自己弄了一个日志博文,当然这不是重点,重点是心态发生了改变,从心里上感觉技术兴趣不大了,后来又发现,并不是对技术失去了兴趣&#…

写给初学者:编程的本质

俗话说,开卷有益, 前几天又翻了下《计算机程序的构造和解释》,看到一个采用牛顿法求平方根的例子,产生了点新的感想,和大家分享下。 平方根的数学定义是这样的,对于一个数x , 如果有另外一个数r, r大于等于…

码农翻身全年文章精华

在码农翻身公众号写了一年多, 最大的体会就是:原创真心不易! 每天思考的最大问题就是: 下一篇文章写啥? 在大家的支持和鼓励下,还是坚持了下来, 回头看看走过的路,这一年过得还算…

如何还原保存的训练模型

训练模型的还原 之前把训练模型存盘,实际上保存的是模型里所有变量当前运行的值。这相当于是训练模型的快照,把保存的时间点的所有变量都变成存盘文件保存起来。如果要还原这个模型,我们需要从存盘的模型中把所有变量的值读取出来&#xff0…

VisionPro 9.5中的工具调用和工具组(ToolBlock)调用

VisionPro是Cognex的机器视觉算法软件,通常的做法是使用VS做二次开发。 这里主要分享VisionPro中通过ToolBlock实现一个视觉检测,以及通过调用单个Tool实现一个视觉检测。 最终实现一个硬币数量检测以及坐标位置输出的应用: 使用ToolBlock的…