关于网络安全攻防演化博弈的研究小议
1. 拉高视角,从宏观看网络安全攻防
伴随着信息化的发展,网络安全的问题就一直日益突出,与此同时,网络安全技术也成为研究热点,直到今日也没有停止。
从微观来看,网络安全技术研究指的是针对某项或某几项指标的完善,例如:
- 针对WEB系统漏洞的挖掘和利用,以及与此相应的日志采集以及关键点审计技术,例如RASP和WAF,核心指标是精确率和召回率
- 恶意代码作者为了躲避病毒AV的静态和动态检测机制,通过隐写、混淆、多态等手段隐藏恶意代码的表征行为,与此对应的,病毒查杀厂商通过研究相应的反混淆、动态沙箱、插桩等技术,希望更有效地提取恶意代码的表征行为
在关注具体技术研究的同时,我们也需要意识到,网络安全策略的研究在某种程度上比技术研究更为重要,特别是对于同样的技术采用不同的安全策略会取得不同的效果。
网络安全中攻防对抗的本质可以抽象为攻防双方的策略依存性,而这种策略依存性正式博弈论的基本特征,因而可以考虑应用博弈论来解决网络安全攻防对抗的问题。
在学术界,博弈论应用于网络安全处于发展阶段,相关的学术研究脉络有:
- 国外学者 Stakhanova等人,通过随机博弈、不完全信息博弈等模型来进行入侵意图、目标和策略的推理
- Reddy指出关于入侵检测的研究主要且多数建立在一次性博弈分析的基础上
- SHEN Shi-gen认为考虑到真实场景中攻击的重复性,将其视为一个重复的多阶段博弈的过程显然更为合理
- Agaha等建立了无线传感器网络中基于重复博弈理论的攻防模型
- 朱建明提出了基于博弈论对信息安全技术进行评价的模型,其研究侧重于信息安全机制的优化配置
- 孙薇等人建立了信息安全攻防的博弈模型,分析防守方和攻击方的复制动态及进化稳定策略,其模型考虑到现实社会中的有限理性,引入了演化博弈来研究攻防对抗的规律
2. 网络安全攻防系统动力学模型
在信息网络中,由于不同的攻击者和防御者对信息安全知识的不同理解和反应,因此产生了不同的预测和决策机制。
每个参与者获得不同的收益,随着时间的推移,每个参与者通过学习成功者的经验,不断改进自己的安全策略,形成新的攻防形势。
在参与者不断改进攻防策略的内在驱使下,随着网络安全技术不断进步,企业对系统的持续调整,都会使信息安全问题呈动态进化趋势,进而形成了不断进化的网络安全体系。
用系统动力学对相关问题的演化博弈进行仿真,可以从全局整体考察博弈均衡背后的动态特性,而演化博弈论的分析则对建模和制定相应的决策起到至关重要的作用。
0x1:系统边界的定义
清晰的界定系统的边界是模型成功与否的关键步骤。界定系统的边界必须紧紧围绕建模目的以及研究对象,真正将关注点放在核心问题上,可以考虑忽略非重要的因素。研究的对象是网络中攻防双方的演化博弈系统。
从参与者结构来看,系统内存在两类个体:
- 防守方
- 攻击方
从演化的范围来看,系统演化包括:
- 防守方之间的学习
- 防守方竞品之间的互相学习
- 攻击方之间的学习
- 0day披露后,在攻击者社群中迅速传播,攻击者会竞相模仿
- 防守方和攻击方之间的对抗
- 安全攻防知识的对抗
- 信息不对称的对抗,例如防守方不知道攻击者采取了何种IDS技术
从影响因素来看,根据演化博弈模型的分析框架,系统影响因素应包括:
- 防守方收益
- 防守方成本
- 针对某个攻击向量的攻击,防守方需要投入大量的研发成本
- 防守方为了防住一个点,往往需要建设一个面
- 攻击方收益
- 攻击方成本
网络中攻防演化博弈系统的构成要素如下表所示:

0x2:基本假设
模型的基本假设如下:
- 攻防双方演化博弈系统限定在网络上的攻防双方,在根据对方的策略集采取采取策略演。不考虑攻防双方角色的转化以及蜜罐技术等其他因素。
- 攻击方和防守方对信息资产的价值认可是相同的
- 在足够长的时间内,攻击者的技术水平和防守方的技术水平没有绝对差距,即攻防技术的研究是对等的
- 攻击方和防守方通过社会网络,能够各自充分了解同质群体采取行动的效用,即攻击方和防守方都各自能够了解自己的群体,并互相学习
- 防守方采取的行动是完全有效的
0x3:模型符号系统构建
网络安全演化博弈系统动力学模型由4个流位、2个流率、13个中间变量、和3个外部变量构成,如下图所示,

- 流位变量
- defensenoinvest:防守方放弃信息安全投资的概率
- defenseinvest:防守方选择进行信息安全投资的概率
- attacknoaction:攻击方放弃攻击的概率
- attackaction:攻击方选择采集攻击的概率
- 流率变量
- 中间变量
- 外部变量
- P1:信息安全资产价值,同时也是防守收益
- P2:攻击方收益,根据前面的攻防等效假设,P1=P2
- C1:防守方信息安全投入成本,表示防守方投入设备、人力和无形资产等全部的价值
- C2:攻击方成本,表示攻击方在人力、设备和法律惩罚方面产生的投入
0x4:博弈系统演进动力方程分析
根据上述流图,构建的博弈树如下图所示:

计算防守者的期望收益和平均收益:

当投入效益和不投入效益不相等时,效益差的防守者会模仿效益好的防守者。
设采取投入策略与采取不投入策略人的比例是时间的函数,分别表示为 p(t) 和 1-p(t)。
投入策略的动态变化速度可以用如下复制动态方程表示:
![]()
同理,计算攻击者的情况:

![]()
模型稳定性分析,令:

求出博弈系统的平衡状态,得到:

其中,X1、X2、X3、X4为鞍点,X5为中心点,系统不存在演化稳定均衡,只要有微小的变化,系统就会受到重大的影响。
这说明网络安全问题仅靠技术的投入是无法得到彻底解决的。攻防双方两大阵营永远在不断的动态博弈中,而驱动这种博弈的源动力,就来自于攻击者攻击收益的变化,这常常伴随着某些黑产变现手段的出现和繁盛,例如:
- 加密货币
- 基于非对称算法的勒索病毒
- 简易有效的0/Nday漏洞披露
- SEO污染的买房市场繁荣
- 挖矿收益
因为源源不断地收益诱惑这个源动力的存在,会让攻击者群体不断升级演进己方的技术,自然这会打破某一时期存在的短暂纳什均衡。
攻击方通过打破纳什均衡在获得超额收益后,会有一小部分防守者率先升级防御技术,投入防御产品研发,进而获得了更好的防御效果,之后,防守群体中的其他个体会进行学习与模仿,最终,攻防群体重新达到一个新的纳什均衡。
此后,下一轮的新的扰动与动态演化又开始了。
0x5:模型检验
系统动力学模型是对真实世界系统抽象和简化的结果,并不是真实世界系统的复制品,所以从再现客观世界真实情况来看,任何模型都不是完全正确的。只要模型在既定的假设下有效接近真实世界的系统,完成既定条件下的目标,那么就可以认为模型的构建具有客观性、合理性和实用性。
1. 系统边界检验
系统边界测试主要是检查系统中重要的概念和变量是否为内生变量,同时测试系统的行为对系统边界假设的变动是否敏感。
用系统动力学对演化博弈建立的目的,是研究网络攻防演化过程中系统内部影响因素的动态特征,并通过这些影响因素找出网络攻防的优化策略集。
模型的边界是在继承前期网络攻防博弈的相关研究成果基础上,根据建模目的和现实系统的实际情况而确定的。该模型包含了与所研究问题密切相关的重要因素,并摒除了对系统影响较小的因素,因此对网络攻防演化博弈的系统边界是合理、有效的。
2. 有效性检验
有效性检验是为了验证模型所获信息与行为是否反映了实际系统的特征与变化规律,通过模型的分析研究能否正确认识与理解所要解决的问题。在现实的网络环境中,攻防双方都根据对方的行动采取相应的策略。
1)攻防处于均势初始状态的演化
如果初始状态为:
- 防守方都进行有效安全投资
- 攻击方都进行攻击
那么经过一段时间演化,攻防对抗不断交替升级,防守方始终处于滞后循环的状态。


2)守强攻弱的初始状态的演化
如果初始状态时,防守方都进行了有效安全投资,攻击方没有相对收益,那么经过一段时间演化,攻击方攻击概率都将降为0。
通过仿真实验,假设攻击方初始状态为0.9,经过演化攻击方进行攻击概率迅速降至0,


初始防守概率为1,攻击概率为0.9,之后的概率演进
3)攻强守弱的初始状态的演化
如果初始状态为攻击方都采取攻击行动,防守方受到损失,经过一段时间演化,防守方都将进行安全投资。
系统仿真中假设所有攻击方都进行攻击,防守方初始状态为0.1时,经过有演化迅速达到1的均衡状态,


初始攻击概率为1,防守概率为0.1,之后的概率演进
现实世界中第三种情况占了绝大多数,网络安全中防守技术的的起步比攻击技术要晚,防守技术以及防守产品落地时,攻击方往往已经处于上峰优势地位很久了。这个时候防守方会呈现追赶的态势,在经过一段时间后,攻防达到平衡,此后就回到第一种状态,即防守方会持续处于滞后循环中。
Relevant Link:
http://xueshu.baidu.com/usercenter/paper/show?paperid=eb82da16d21916df568789de58231e7e&site=xueshu_se
3. 网络安全攻防对抗治理策略
0x1:所谓的提供攻击者成本说法是否合理?
研究信息攻防博弈的最常见治理策略就是:提高攻击者成本,或加大对攻击者的惩罚力度。
针对类似问题,有学者已经证明混合战略博弈中提高惩罚力度,其实无法改变被惩罚者违规概率的均衡点。
实践中通过防御手段提高攻击者攻击成本的应用,是因为其在短期内可以以降低被惩罚者的均衡点,而从长期来看,该策略忽视了惩罚力度的加大实际上对于双方的支付矩阵都是有影响了。
一般来说防守者投入概率越高,攻击者采取行动的成本越高,或者被发现的概率越大,导致受到惩罚的可能越大。
系统仿真中设 C2 = 2+p*2,在短期内,攻击者的攻击概率可以下降至0,但从长期来看,由于防守方策略也受影响,攻击者的概率不会稳定在较低点,而是波动起伏的,


双方演化博弈过程
随着博弈次数和时间的变化,波动振幅也会加大,博弈无法达到演化均衡点。
所以,依靠防守方加大投资,是无法达到演化均衡的,最终呈现攻防双方反复波动的状态,并且防守方还是是滞后波动的。
0x2:引入第三方惩罚机制
当加入动态惩罚策略,如:
- 第三方监管部门对攻击者的惩罚力度
- 国家法律对攻击行为的定罪和制裁
- 相关部分对攻击者的追溯和惩罚
考虑对整个博弈模型的稳定性影响,系统中假设当 C2=2+2*q 时,随着博弈次数和时间的增加,攻击者采取攻击的概率逐渐收敛,稳定在纳什均衡点。



防守方和攻击方概率变化
可以看到,引入第三方动态惩罚策略的系统博弈是存在演化均衡的。
现实中,防守方投入如果侧重于攻击者攻击的追踪,为第三方监管部门进行动态惩罚提供网络攻击行为的审查线索,是有效遏制网络攻击的重要途径。
0x3:关闭或者减少攻击者获得收益的渠道
解决问题的另一个思路是减少攻击者获取收益的渠道,正常情况下,攻防双方在持续投入的情况下,攻防概率是处于一个纳什均衡中的,这个时候,如果没有新的变现和盈利渠道,那么攻击方就不会有动力去打破当前的均衡点。
相关文章:
关于网络安全攻防演化博弈的研究小议
1. 拉高视角,从宏观看网络安全攻防 伴随着信息化的发展,网络安全的问题就一直日益突出,与此同时,网络安全技术也成为研究热点,直到今日也没有停止。 从微观来看,网络安全技术研究指的是针对某项或某几项…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(7)
1.问题描述: 推送通知到手机,怎么配置拉起应用指定的页面? 解决方案: 1、如果点击通知栏打开默认Ability的话, actionType可以设置为0, 同时可以在.clickAction.data中,指定待跳转的page页面…...
远程桌面防护的几种方式及优缺点分析
远程桌面登录是管理服务器最主要的方式,于是很多不法分子打起了远程桌面的歪心思。他们采用暴力破解或撞库的方式破解系统密码,悄悄潜入服务器而管理员不自知。 同时远程桌面服务中的远程代码执行漏洞也严重威胁着服务器的安全,攻击者可以利…...
ASP.NET|日常开发中连接Sqlite数据库详解
ASP.NET|日常开发中连接Sqlite数据库详解 前言一、安装和引用相关库1.1 安装 SQLite 驱动1.2 引用命名空间 二、配置连接字符串2.1 连接字符串的基本格式 三、建立数据库连接3.1 创建连接对象并打开连接 四、执行数据库操作4.1 创建表(以简单的用户表为例…...
python的自动化seleium安装配置(包含谷歌的chromedriver)
目录 前言介绍 一、下载谷歌浏览器chromedriver (一)查看谷歌浏览器版本 (二)去官网下载谷歌驱动(chromdriver) (三)谷歌浏览器安装位置解压 (四)配置环境变量 二、pychram里下载安装selenium 三、测试selenium是否成功 前言介绍 Selenium是一个开源的自动化测试工具&…...
QT requested database does not belong to the calling thread.线程中查询数据报错
QT requested database does not belong to the calling thread.线程中查询数据报错 QString name "ttx"; QSqlQueryModel* sql_model; QString sql_comm QString("select * from dssb_moddve_loddt_tab where name%1").arg(name); sql_model->set…...
服务器一般装什么系统?
在服务器管理中,操作系统的选择是一个关键因素,它直接影响到服务器的稳定性、性能和可维护性。那么为什么有些服务器选择Linux,而不是Windows?选择合适的操作系统对服务器的性能和安全性有多么重要? 在众多操作系统中…...
Linux vi/vim 编辑器使用教程
Linux vi/vim 编辑器使用教程 引言 Linux 系统中的 vi 和 vim 是非常强大的文本编辑器,它们以其高效性和灵活性而闻名。vim 是 vi 的增强版,提供了更多的功能和改进的用户界面。本文将详细介绍 vi/vim 的基本用法,包括打开文件、编辑文本、…...
JavaEE多线程案例之阻塞队列
上文我们了解了多线程案例中的单例模式,此文我们来探讨多线程案例之阻塞队列吧 1. 阻塞队列是什么? 阻塞队列是⼀种特殊的队列.也遵守"先进先出"的原则. 阻塞队列是⼀种线程安全的数据结构,并且具有以下特性: 当队列满的时候,继续⼊队列就会…...
梳理你的思路(从OOP到架构设计)_基本OOP知识04
目录 1、 主动型 vs.基於被动型 API 1)卡榫函数实现API 2)API的分类 3)回顾历史 4)API >控制力 2、 结语&复习: 接口与类 1)接口的表示 2)Java的接口表示 1、 主动型 vs.基於被动…...
nginx反向代理(负载均衡)
nginx的代理 代理 四层代理 七层代理 正向代理和缓存的配置方式 🐭🐮🐯🐰🐉🐍🐴🐑🐒🐔🐶🐷 反向代理》负载均衡 负载均衡ÿ…...
Android系统应用主要模块
设置 Android Settings开发总结 Launcher Android Launcher开发学习总结 System UI Android SystemUI 学习总结...
【万字详解】三维重建(二)——NeRF、NeuS、MeshUDF、NeuralUDF、3DGS、GShell
文章目录 一、NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis(推荐读)1.1 式1 神经网络的输入和输出1.2 式2 体素渲染算法1.3 式3 损失函数1.4 位置编码1.5 基本原理二、经典的重建流程2.1 传统的三维重建pipeline2.2 神经网络回归2.3 可微渲染最优…...
【RK3588 Linux 5.x 内核编程】-内核线程与Seqlock
内核线程与Seqlock 文章目录 内核线程与Seqlock1、Seqlock介绍2、Seqlock相关API2.1 初始化2.2 写操作2.3 读操作3、驱动实现4、驱动验证在前面的文章中,我们介绍了 Mutex、Spinlock、Read/Write Spinlock 的使用及其实现。 它们都用于保护共享资源不被两个或多个进程同时修改…...
访问者模式的理解和实践
在软件开发过程中,设计模式为我们提供了解决常见问题的最佳实践。访问者模式(Visitor Pattern)是行为设计模式之一,它将数据操作与数据结构分离,使得在不修改数据结构的前提下,能够定义作用于这些元素的新的…...
在Scala中对Map函数的使用
package pp28{object cscc {def main(args: Array[String]): Unit {val m1 Map("马云 — 阿里巴巴" -> 1964,"马化腾 — 腾讯" -> 1971,"李彦宏 - 百度" -> 1968,"雷军 - 小米" -> 1969,"丁磊 - 网易" -> …...
PyTorch基本使用-张量的索引操作
在操作张量时,经常要去获取某些元素进行处理或者修改操作,在这里需要了解torch中的索引操作。 准备数据: data torch.randint(0,10,[4,5]) print(data--->,data)输出结果: data---> tensor([[3, 9, 4, 0, 5],[7, 5, 9, …...
OpenCV实验:图片加水印
第二篇:图片添加水印(加 logo) 1. 实验原理 水印原理: 图片添加水印是图像叠加的一种应用,分为透明水印和不透明水印。水印的实现通常依赖于像素值操作,将水印图片融合到目标图片中,常用的方法…...
sql server log文件
确定 SQL Server 实例中具有大量 VDF 的数据库 SELECT [name], COUNT(l.database_id) AS vlf_count FROM sys.databases AS s CROSS APPLY sys.dm_db_log_info(s.database_id) AS l GROUP BY [name] HAVING COUNT(l.database_id) > 100; 在收缩日志文件之前确定事务日志中…...
Elasticsearch 集群部署
Elasticsearch 是一个分布式的搜索和分析引擎,广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置,包括节点间的通信、客户端访问、安全设置等关键步骤。我…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...
