草庐IT

网络安全保卫者正在扩展他们的AI工具箱

AI情报室 Ai时代前沿 2023-03-28 原文
科学家正利用一种称为深度强化学习(DRL:Deep Reinforcement Learning)的人工智能技术来保护计算机网络,并迈出了关键一步。

当在严格的模拟环境中面对复杂的网络攻击时,深度强化学习在95%的时间内有效阻止对手达到目标。测试结果为自主人工智能在主动网络防御中发挥作用提供了希望。

美国能源部太平洋西北国家实验室(PNNL)的科学家在一份研究论文中记录了他们的发现,并于2月14日在华盛顿特区人工智能促进协会年会期间,在网络安全人工智能研讨会上介绍了他们的工作。

项目起点是开发一个模拟环境,以测试涉及不同类型对手的多阶段攻击场景。为实验创建这样一个动态攻防模拟环境本身就是一个成果。该环境为研究人员提供了一种在受控测试环境下比较不同基于AI防御有效性的方法。

这些工具对于评估深度强化学习算法的性能至关重要。这种方法正在成为网络安全专家的强大决策支持工具,DRL是一个具有学习能力、适应快速变化的环境和自主决策能力的防御模式。以往其他形式的人工智能是检测入侵或过滤垃圾邮件的标准,但深度强化学习扩展了防御者在与对手的日常对峙中协调顺序决策计划的能力。

深度强化学习提供了更智能的网络安全、更早发现网络环境变化的能力,以及采取先发制人措施挫败网络攻击的机会。

介绍该团队工作的数据科学家Samrat Chatterjee表示:“一个有效的网络安全人工智能代理需要根据它所能收集的信息以及它所做出的决策结果来感知、分析、行动和适应。”“深度强化学习在这个领域具有巨大的潜力,因为系统状态和可选择行动的数量可能很大。”

DRL结合了强化学习(RL)和深度学习(DL),尤其适用于需要在复杂环境中做出一系列决策的情况。就像刚开始走路的孩子从磕磕碰碰和擦伤中学习一样,基于深度强化学习(DRL)的算法是通过对好决策的奖励和对坏决策的惩罚来训练的:导致理想结果的良好决策得到积极奖励(以数值表示)的支持;通过扣除奖励来阻止导致不良结果的不良选择。

该团队使用开源软件工具包OpenAI Gym作为基础,创建了一个自定义的受控模拟环境,以评估四种深度强化学习算法的优缺点。

同时使用了MITRE公司开发的MITRE ATT&CK框架,并结合了三个不同对手部署的7种战术和15种技术。防御者配备了23个缓解措施,试图阻止或阻挡攻击的进展。

攻击的阶段包括侦察、执行、持久性、防御规避、指挥和控制、收集和过滤(当数据从系统中传输出去时)等战术。如果对手成功进入最后的过滤阶段,则攻击被记录为获胜。

Chatterjee表示:“我们的算法在竞争环境中运行,这是一场与意图破坏系统的对手的竞争。是一种多阶段攻击,在这种攻击中,对手可以追求多种攻击路径,这些路径可能会随着时间的推移而改变,因为他们试图从侦察转向利用。我们的挑战是展示基于深度强化学习的防御如何阻止这种攻击。”

DQN优于其他方法

该团队基于四种深度强化学习算法:DQN(深度Q-Network)和其他三种变体来训练防御性代理,接受了有关网络攻击的模拟数据训练,然后测试了他们在训练中没有观察到的攻击。

DQN表现最好:

低等复杂的攻击:DQN在攻击阶段中途阻止了79%的攻击,在最后阶段阻止停止了93%的攻击。

中等复杂的攻击:DQN在中途阻止了82%的攻击,在最后阶段阻止了95%的攻击。

最复杂的攻击:DQN在中途阻止了57%的攻击,在最后阶段阻止了84%的攻击,远远高于其他三种算法。

Chatterjee说:“我们的目标是创建一个自主的防御代理,它可以了解对手最有可能的下一步行动,并对其进行规划,然后以最佳方式做出反应,以保护系统。”

尽管取得了进展,但没有人愿意将网络防御完全交给人工智能系统。相反,基于DRL的网络安全系统需要与人类协同工作,前PNNL的合著者Arnab Bhattacharya说。“人工智能可以很好地防御特定的战略,但不能很好地理解对手可能采取的所有方法。我们离人工智能取代人类网络分析师的阶段还很远。人类的反馈和指导很重要。”

除了Chatterjee和Bhattacharya,研讨会论文的作者还包括PNNL的Mahantesh Halappanavar和前PNNL科学家Ashutosh Dutta。这项工作由能源部科学办公室资助,推动这项具体研究的一些早期工作是由PNNL的“科学中的人工推理数学”计划通过实验室指导研究与开发计划资助的。

有关网络安全保卫者正在扩展他们的AI工具箱的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  4. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  5. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  6. jquery - 如何将 AJAX 变量从 jQuery 传递到他们的 Controller ? - 2

    我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam

  7. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  8. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  9. ruby - 如何测试正在使用 RSpec 和 Mocha 调用的混合类方法? - 2

    我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案

  10. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

随机推荐