当在严格的模拟环境中面对复杂的网络攻击时,深度强化学习在95%的时间内有效阻止对手达到目标。测试结果为自主人工智能在主动网络防御中发挥作用提供了希望。美国能源部太平洋西北国家实验室(PNNL)的科学家在一份研究论文中记录了他们的发现,并于2月14日在华盛顿特区人工智能促进协会年会期间,在网络安全人工智能研讨会上介绍了他们的工作。项目起点是开发一个模拟环境,以测试涉及不同类型对手的多阶段攻击场景。为实验创建这样一个动态攻防模拟环境本身就是一个成果。该环境为研究人员提供了一种在受控测试环境下比较不同基于AI防御有效性的方法。这些工具对于评估深度强化学习算法的性能至关重要。这种方法正在成为网络安全专家的强大决策支持工具,DRL是一个具有学习能力、适应快速变化的环境和自主决策能力的防御模式。以往其他形式的人工智能是检测入侵或过滤垃圾邮件的标准,但深度强化学习扩展了防御者在与对手的日常对峙中协调顺序决策计划的能力。深度强化学习提供了更智能的网络安全、更早发现网络环境变化的能力,以及采取先发制人措施挫败网络攻击的机会。介绍该团队工作的数据科学家Samrat Chatterjee表示:“一个有效的网络安全人工智能代理需要根据它所能收集的信息以及它所做出的决策结果来感知、分析、行动和适应。”“深度强化学习在这个领域具有巨大的潜力,因为系统状态和可选择行动的数量可能很大。”DRL结合了强化学习(RL)和深度学习(DL),尤其适用于需要在复杂环境中做出一系列决策的情况。就像刚开始走路的孩子从磕磕碰碰和擦伤中学习一样,基于深度强化学习(DRL)的算法是通过对好决策的奖励和对坏决策的惩罚来训练的:导致理想结果的良好决策得到积极奖励(以数值表示)的支持;通过扣除奖励来阻止导致不良结果的不良选择。该团队使用开源软件工具包OpenAI Gym作为基础,创建了一个自定义的受控模拟环境,以评估四种深度强化学习算法的优缺点。同时使用了MITRE公司开发的MITRE ATT&CK框架,并结合了三个不同对手部署的7种战术和15种技术。防御者配备了23个缓解措施,试图阻止或阻挡攻击的进展。攻击的阶段包括侦察、执行、持久性、防御规避、指挥和控制、收集和过滤(当数据从系统中传输出去时)等战术。如果对手成功进入最后的过滤阶段,则攻击被记录为获胜。Chatterjee表示:“我们的算法在竞争环境中运行,这是一场与意图破坏系统的对手的竞争。是一种多阶段攻击,在这种攻击中,对手可以追求多种攻击路径,这些路径可能会随着时间的推移而改变,因为他们试图从侦察转向利用。我们的挑战是展示基于深度强化学习的防御如何阻止这种攻击。”我正在编写一个小脚本来定位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
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
我正在使用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("
我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过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
我完全不是程序员,正在学习使用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
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同
我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~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} 最佳答案