安全运营场景下的机器学习算法应用

news2024/10/6 2:26:48

观测到一个有意思的现象:

假设把安全划分为 基础安全 和 业务安全,PR类的议题中,会出现分级:基础安全领域,喜欢讲纵深防御,给出一个炫酷的架构图,然后各种技术关键字往上标;业务安全领域,喜欢讲算法,给出各类数据源,然后把各种算法模型往上标。

这里面当然有很多原因,比如:搞基础安全的人通常是攻防出身,不擅长算法;业务安全的技术层面不深,所以出彩需要靠算法;等等等。

但本次的主题,尝试从安全和算法的角度来展开,为什么基础安全和算法的结合,是一件相对困难的事情。以及个人最近在尝试研究的一些解决方向和思路。

1. 安全运营场景下的算法难题

基础安全是个重运营的工作,不论技术多么炫酷,最终想要拿到结果,都必须落到运营头上。

不论部署了多少安全产品,收集了多少数据,维护了多么精密的规则,最终产出的告警仍然是以误报为主。本质原因在于,基础安全是和人在对抗,在行为特征上,存在极大的变数。正常员工可能某天心血来潮,就登录上一台新的机器,执行某个危险命令。(与之相对的,业务安全通常是和机器在对抗,各种脚本、模拟器环境。虽然代码是人写的,但业务见到的批量请求,还是机器发出的。)这个时候,就需要安全专家对告警事件的上下文进行收集和研判,依靠过往经验判断是否为一起真实入侵。

这个运营过程,可以被算法替代嘛?当然是可以的。但会带来另一个更哲学的问题,算法出现了误判,到底是谁的责任。这个问题代入到医学或自动驾驶领域会更好理解。假设“医院”引入了某“公司”开发的算法,对“医生”的病人执行了错误的治疗方案,导致病人死亡(哪怕本来就没有多大的几率救活),这个时候,应当谁去承担责任呢?

  1. 从医院的视角,算法的引入经过了严格测试,准确率达到99.999999%,超过了医生的判断水平,算法代替医生能够在全局样本下取得更好的治疗结果,应用算法看起来是个合理决策。
  2. 从公司的视角,已经把算法的准确率优化到99.999999%了,你总不能要求算法的准确率达到100%,所以算法工程师已经尽职尽责了。
  3. 从医生的视角,算法决策的过程,医生全程没有参与,自然轮不到医生去背什么锅。

病人死亡这个结果,一定是需要有人来承担责任的。但从各方视角来看,似乎谁都没错,那就只能怪病人自己倒霉了呗。

补充说明一下,这里的承担责任,未必是要惩罚,重点在于归因。

在我看来,这个责任关系的定义,是目前算法在医学、自动驾驶、安全等领域下,无法起到革命性作用的最根本原因。区别于常规领域(推荐、搜索、翻译等),少量的错误是可以被接受的,因此算法追求准召率的最大化即可。但在特殊领域,个例的频次较低,后果却极其严重。这个时候,概率是没有意义的,真正需要的是明确的责任归属

那为什么规则在特殊领域是可以被大规模使用的呢?这就是规则和算法的最大区别,算法是黑盒的。对于规则来说,其实同样不存在准召的概念,只要输入明确,输出就一定符合规则逻辑,相互对应。因此,规则的判断逻辑,是可以被明确责任和归因的。是因为写规则的人疏忽大意,还是专家没有仔细review,还是系统BUG,等等。

因此,只有可以明确归属责任的系统,才是值得信赖的。而当前的算法,因为其黑盒性,所以不值得被信赖。

除此之外,规则和算法在特殊领域的应用,还有理性和感性的抉择问题。例如,在《我,机器人》中,主角和他儿子同时落水,机器人判定主角存活的概率大于儿子,所以救了主角。而人性上来说,救儿子更符合人类情感。这个话题跟本篇关系不大,暂时不展开讨论。

2. 安全运营场景下的算法应用思路

虽然说了这么多算法的不好,但从另一个方面来说,算法替代人类的需求是十分旺盛的。自动驾驶和自动医疗,仍然是大家日思夜想的场景。释放精力、提升效率,对于人类发展来说,无疑能起到至关重要的作用。

因此,我们仍然需要探索算法的应用方式。

1940年,科幻作家阿西莫夫提出了机器人三原则。虽然其完备性饱受争议和挑战,但确实是算法应用的基本条件:必须给算法设定明确的限制。

第一条:机器人不得伤害人类,或看到人类受到伤害而袖手旁观.
第二条:机器人必须服从人类的命令,除非这条命令与第一条相矛盾。
第三条:机器人必须保护自己,除非这种保护与以上两条相矛盾。

个人认为,安全领域(或者其他特殊领域),算法应用必须符合以下几个原则:

2.1 可以被手动调整

业内通常会讨论可解释性,但在我看来,算法仅仅是可解释是不够的,它要能够支持手动的调整优化。

在这一点上,ChatGPT是个比较有意思的中间态,因此借其说明一下这个原则。

我们都知道,ChatGPT可能会生成相当危险的答案,比如教唆犯罪、种族歧视、网络攻击等。那么OpenAI是怎么去优化这个问题的呢?在GPT-4的文档中,明确说明了,OpenAI会训练安全相关的奖励模型,从而避免模型输出有害的内容。

GPT-4 incorporates an additional safety reward signal during RLHF training to reduce harmful outputs (as defined by our usage guidelines) by training the model to refuse requests for such content. The reward is provided by a GPT-4 zero-shot classifier judging safety boundaries and completion style on safety-related prompts. To prevent the model from refusing valid requests, we collect a diverse dataset from various sources (e.g., labeled production data, human red-teaming, model-generated prompts) and apply the safety reward signal (with a positive or negative value) on both allowed and disallowed categories. 

从这个优化模式,可以探讨几个问题:

1)为什么不直接优化初始模型:一方面算法黑盒程度较高,另一方面大模型时代,每一次训练都是需要投入较大成本的。

2)奖励模型是如何生成的:原文中提到了一个zero-shot classifier。大体逻辑是GPT已经学习完了文本特征,然后再基于这个特征,去拼接一个单独的分类模型。最后将两者的特征向量相匹配,就能够利用GPT对语言的理解,去快速判断一个输出是否是安全的。(大模型下的文本分类,通常都会使用这个方法。)

3)这个模式的安全性如何:我评价它是大模型场景中,一个比较高效的解决方案,但黑盒属性仍然很重。因为还是不确定模型到底是如何理解和运算语言特征的,没办法针对性的去让模型按希望的方向调整,可控的只是训练集的分布而已。

综上,ChatGPT通过奖励模式,实现了一定程度上的“可调整性”。但这个调整过程,仍然是黑盒的,只能通过调整训练集、调整模型参数等,去观测最终结果。 因此,并不符合我心目中的“可以被手动调整”。

与之相对的,大部分基础的机器学习模型,贝叶斯、逻辑回归、决策树等,其特征和权重都是很简单明了的。通过分析特征权重、参数分布等,能够知道模型为啥会产生误判。(比如决策树没有把你心目中的特征作为第一层分类特征,那你可以去回溯这个特征在样本空间中的分布,看是否对于分类结果有强相关性。)

2.2 不参与最终决策

在算法责任边界不明晰的情况下,human in the loop显然是当前阶段最适用的应用模式。在安全领域下,我认为需要更加强调由人做出最终决策

可以从自动驾驶领域来进行类比。通常业界将自动驾驶分为5个等级,并认为当前处于L2技术相对成熟的阶段。

L1级,辅助驾驶。代表性功能如自适应巡航、车道保持辅助、制动刹车等。
L2级,部分自动化。代表性功能如全速自适应巡航、自动泊车、主动车道保持、自动变道、限速识别等。
L3级,条件自动化。能应付大部分路面情况,但驾驶员依然得始终保持注意力,在出现紧急情况时需要随时接管车辆。
L4级,高度自动化。在部分场景下(如城市道路、高速路)车辆几乎可以完成所有的操作,驾驶员变成了辅助。
L5级,完全自动化。无需驾驶员,完全自动化,适用于任何场景。

尽管汽车的自动驾驶迭代时间较短,航天领域的自动驾驶确是上个世纪就已经出现了。航天操作虽然复杂,但胜在容许的反应时间相对宽裕,所以门槛略低一些。但即便如此,经验丰富的驾驶员,仍然是给人们带来安全感最主要的因素,算法的瓶颈可见一斑。

因此,安全领域下,尤其是基础安全领域,经验丰富的专家决策,仍然是不可缺失的一环。

3. 安全运营场景下的算法应用示例

一不小心写了太多理论,下面结合具体算法,分享一下个人的部分思路。

结合上面提到的原则:1)算法需要具备可控性;2)算法需要参与最终决策。将算法在安全运营场景(或者应该更明确定义为告警运营)下的应用目标,定义为:提升运营人员决策的效率。

3.1 告警运营模式分析

我一直认为,算法的本质是,是对人类思维的具象化实现。因此,先来分析一下一起入侵事件是如何被告警并运营出来的。

首先,一次入侵事件是由一系列的异常动作构成的完整路径。参照ATT&CK的模版,效果大致如下:

告警运营的过程大致如下:

1)某几个异常动作触发了告警。如异常派生的进程。

2)运营人员关注到告警后,对动作的威胁等级进行判定。如派生的进程是否是恶意的探测、种马等。

3)如果存在潜在威胁,则关联找到找到其他动作,形成事件路径图。如exp的发送方,是否存在下一跳等。

4)通过事件的源头、动机、最终影响等,判断是一次真实入侵还是业务自身的操作。如是由业务人员发起,最终运行了一个开源java组件,那通常是业务自身的操作。

整个过程和相关的技术,可以通过下面这个模式进行抽象:

其中,前两个环节依赖的是对各类数据的收集处理能力和对攻击手法的理解程度,从而制定出相应的规则和检测算法。不属于本篇关注内容,暂不展开。

到了最后这个环节,通常开始交由运营人员开始进行分析和研判。比如判断是否是SQL注入,可能会去看被规则检测出来的异常语句,是否有恶意操作(如条件查询中,是否包含类似“or 1=1”拖取整张表的语义);判断RCE派生进程,可能会去看进程是否在尝试收集信息、提权、横移等;判断某个文件下载是否恶意,可能会去看看目标网站是否正常等。

这个过程往往相对直接,但又极度依赖经验。大体可以抽象成一个比较经典的文本分类场景,输入是各种事件相关数据,输出是是否异常。

3.2 传统机器学习算法

 回顾一下目标,提升运营人员决策的效率。遇到的问题则是,基于告警数据的文本分类。所以,算法需要提供的能力是,帮助运营人员更高效的分类。

而运营人员分类的依据大致有两个:1)是否存在能够实锤正常或者异常的关键词;2)同类型的事件历史是否发生过。而文本分类算法基本也是基于这个逻辑去实现的(算法就是人类思维的具体实现),所以直接套用即可。不同的是,我们需要更加关注过程,把算法的分类依据提取出来,而结果是否准确,则相对不重要。

下面以经典贝叶斯算法展开如何实现这个过程:

在训练集的样本分布中,malicious、keyword是只在异常样本中出现的词,在贝叶斯分类方式中,会成为贡献最大的概率特征。

 假设在另外一个告警中,出现了一些正向特征,使得模型分类错误。但在输出的特征因子排序中,能够表明模型是基于哪些特征判定的正常。对于运营人员来说,仍然是一个有增益的信息。

事实上,不论预测结果如何。上述两个特征因子的排序结果,都是可以被呈现出来的。在和预测样本中实际出现的特征做交集之后,能够呈现出,当前样本有哪些特征可以支撑该样本为异常,哪些为正常。大抵效果如下:

3.3 大语言模型

基于贝叶斯的实现,大部分情况下还是好用的。但会有几个问题:

1)无法提取多特征之间的关联性特征:大部分传统机器学习都会默认特征之间相互独立。如果存在关联关系,则需要通过特征空间转化(如PCA),把关联关系去除,才能够达到理想的效果。但特征空间转化,会消除可解释性,因此不能直接使用。

2)对于没见过的特征无法处理:传统机器学习依赖人工进行特征工程,它本身不理解特征具体是什么含义,只是一个符号而已。所以,当一个新的特征出现的时候(比如某个新的Bash命令),是无法进行处理的,只能忽略掉。

这个时候,在传统机器学习领域下,需要进行精巧的特征工程优化和样本选取,来提升模型的效果。但是大模型是可以通过大量的样本去学习这部分信息的,因此,也可以尝试引入大语言模型来解决这个问题。

大语言模型提取关键词已经是一个有比较多研究的场景了,比较成熟的KeyBERT。大致原理是,认为关键词的embedding和整个文本的embedding在分布上应该比较相近,直接计算余弦相似度取最大值即可。

 但在告警运营场景上,其实不希望是纯粹无监督模式的关键词提取,而是针对分类任务产出的关键词,这样才能给出倾向性建议。因此,应用上会更复杂一些。

大体会分为几个步骤:1)对训练好的大语言模型进行Fine-Tuning,让它学会告警分类;2)提取其中的embedding或者attention层;3)假定结果为异常或正常,分别做对应关键词提取。

这块暂时还只是设想,没有深入研究。本章篇幅也比较多了。因此,计划下篇再做展开。

4. 总结

本篇主要对安全和算法的定位做了展开讨论,废话也比较多。。。

总结来说,个人认为,在基础安全这类“后果严重”的领域,目前是不具备交由算法来完成决策的。与之相对的,业务安全领域下,追求的是对抗平衡,算法是可以发挥较大作用的。

举个例子,“10次入侵漏过了1次”和“100万资损降低到了50万”,前者会被认为是基础安全的失误,而后者会被认为是业务安全取得的收益。

 但这也并不意味着算法在安全领域中无法使用(毕竟提效的需求是强烈的)。因此,本篇做了一些细分场景下的简单尝试,后续会进一步探索更多的场景和不同类型的算法应用(少废话,多实践)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Doris集群的安装部署

目录 安装与部署 软硬件配置​ 1、机器选择 2、软件选择 3、环境信息修改和部署架构 4、安装部署Doris 5、启动FE 6、在FE节点启动MySQL客户端 7、在BE节点启动be 8、查看BE状态 8、查看FE状态是否正常 WEBUI 官方建议 安装与部署 该文档主要介绍了部署 Doris 所…

如何压缩Outlook数据文件大小

由于 Outlook 需要管理大量的电子邮件,Outlook 偶尔会出现问题是很正常的。 但是,如果你注意到 Outlook 打开或加载的时间过长,这可能是一个严重的问题。此外,你还可能面临其他问题,比如收件箱加载时间过长&#xff0…

WebWorker、ThreeJs的渲染和控制

在 ios16.4 版本中已经开始支持了 OffscreenCanvas ,那看样子,是时候再把Three做一波优化了 背景介绍 在之前的项目经验中,如果使用threejs加载比较大的3d场景,那么在创建 threejs 的对象和绘制的时候,会占用浏览器线…

认识C++《共、枚、指1》

目录 前言: 1.共用体的基本知识 2.匿名共用体 3.枚举 3.1设置枚举值 3.2枚举的应用场景 3.3枚举变量的取值范围 4.地址和自由存储空间 5.指针的思想 6.指针的声明和初始化 前言: 指针内容比较多,还需要再出一篇。久等了!!我看了我的…

数据库中的视图及三级模式结构

文章目录一、视图二、数据库三级模式结构一、视图 简单地说,视图可以看成是一个窗口,它所反映的是一个表或若干表的局部数据,可以简化查询语句。视图一经定义,用户就可以把它当作表一样来查询数据。 但视图和基本表不同&#xf…

Python算法设计 - Karatsuba乘法

版权声明:原创不易,本文禁止抄袭、转载,侵权必究! 目录一、Karatsuba 乘法二、算法思路三、Python算法实现四、作者Info一、Karatsuba 乘法 当你在纸上做两个数字的乘法时,一般我们都是用小时候学到的方法&#xff1a…

22.SSM-JdbcTemplate总结

目录 一、JdbcTemplate对象。 (1)Spring产生JdbcTemplate对象。 (2)JdbcTemplate常用操作。 (3)知识要点。 一、JdbcTemplate对象。 (1)Spring产生JdbcTemplate对象。 这个是Sp…

AIGC大模型时代下,该如何应用高性能计算PC集群打造游戏开发新模式?

ACT | SIM | ETC | FTG | RAC AVG | RPG | FPS | MUG | PUZ ACT、SIM、ETC、FTG、RAC、RTS、STG、AVG、RPG、FPS、MUG、PUZ、SLG、SPG等游戏类型,需要高性能的计算机来支持运行。为了满足这些游戏的需求,国内服务器厂商不断推出新的产品,采用…

定点数加减运算

定点数加减运算 文章目录定点数加减运算格式相同位宽相同但不同格式运算位宽不同的定点数运算1.转换为S5.10格式的相同位宽2.统一转换为S10.5格式的相同位宽定点数运算可直接通过处理器内置的整数单元实现格式相同 加减法就是对应二进制形式的有符号整数的加减运算 例如 2.71…

[Date structure]时间/空间复杂度

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现,有时候有C/C代码。 ⭐如果觉得文章写的…

手写锚点,且随着滚动屏幕自动高亮

入上图效果 通过判断几个id对应的dom离滚动区域上方的高度跟滚动区域高度对比高亮锚点 <template><div v-loading"totalLoading" class"define-target-container"><el-radio-group v-model"ucatsType" class"ucats-setti…

AUTOSAR Gateway介绍

概述 熟悉整车电子架构的朋友们都知道,Gateway(网关)在整车网络架构中协调不同物理链路数据的交换,发挥着数据中枢作用。本文为大家介绍AUTOSAR架构中Gateway的应用方式。 在AUTOSAR架构中,Signal、Signal Group或者PDU从一个源总线接收可以发送到一个或相同或不同协议的总…

ChatGPT可以做WebRTC音视频质量性能优化,惊艳到我了

摘要 随着GPT-4的发布&#xff0c;AI的风越吹越旺。GPT-4可以回答问题&#xff0c;可以写作&#xff0c;甚至可以基于一张草图生成html代码搭建一个网站。即构社区的一位开发者倪同学就基于目前在研究的WebRTC QoS技术点对GPT-3.5跟GPT-4进行一场实验&#xff0c;ChatGPT会取代…

HTTP与HTTPS的区别;TLS握手过程

一、HTTP协议与HTTPS 我们都知道当客户端与服务端需要进行通信时&#xff0c;需要根据一套协议来进行通信。 HTTP全程是超文本传输协议&#xff08;Hyper Text Transfer Protocol&#xff0c;HTTP&#xff09;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指…

Redis应用问题及解决

目录 一.缓存穿透 1.1 问题描述 1.2 解决方案 二.缓存击穿 2.1 问题描述 2.2 解决方案 三.缓存雪崩 3.1 问题描述 3.2 解决方案 当数据库压力变大&#xff0c;导致服务访问数据库响应变慢&#xff0c;导致服务的压力变大&#xff0c;最终可能导致服务宕机。 一.缓存穿透 1.1 …

Linux编译器——gcc/g++使用

前言&#xff1a; 在上一篇&#xff0c;我们学习了关于文本编辑器 vim 的全部知识&#xff0c;今天给大家带来的是关于Linux编译器—gcc/使用的详细介绍。 本文目录 &#xff08;一&#xff09;温习程序的产生的过程 1、前言 2、程序的产生过程 3、&#x1f31c;初步认识 gc…

深度学习中的算法学习与记忆,利用故事联想帮助大家记忆,每个人都会

大家好&#xff0c;我是微学AI&#xff0c;大家看过我的文章&#xff0c;想必是对深度学习有了一定的了解了&#xff0c;但是对于初学者来说&#xff0c;深度学习中有很多名词和数学知识、原理还是不太清楚&#xff0c;记忆的不牢固&#xff0c;用起来不熟练&#xff0c;今天就…

网络安全 - Web应用防护墙(WAF)

什么WAF Web应用防护墙&#xff08;Web Application Firewall&#xff09;简称WAF。是一种特定形式的应用程序防火墙&#xff0c;用于过滤、监控和阻断通过网页服务的HTTP流量。通过监察HTTP流量&#xff0c;它可以防止利用网页应用程序已知漏洞的攻击&#xff0c;例如SQL 注入…

适配器模式C++用法示例

五.适配器模式一.适配器模式1.原理2.适用场景3.代理、桥接、装饰器、适配器区别4.分类&#xff08;类适配器模式、对象适配器模式&#xff09;二.C程序示例1.类适配器2.对象适配器一.适配器模式 1.原理 适配器模式的原理是将一个类的接口转换成客户希望的另一个接口。适配器模…

权威认证!腾讯云数据安全中台入选工信部商用密码典型应用方案

近日&#xff0c;工业和信息化部、国家密码管理局发布了《关于公布工业和信息化领域商用密码典型应用方案名单的通知》&#xff0c;腾讯云“基于商用密码的数据安全中台”在众多方案中脱颖而出&#xff0c;成功入选工业和信息化领域商用密码典型应用方案名单。 密码可以实现信息…