jjzjj

网络物理系统安全之​横切安全性之缓解攻击

铸盾安全 2023-04-13 原文

保护CPS的第一步是识别这些系统可能存在的风险,然后确定如何通过深度防御方法解决这些风险的优先级。风险评估包括识别CPS中的资产[74],了解其安全风险,并实施对策以将风险降低到可接受的水平[13,75,76,77,78].渗透测试可能是了解系统风险级别的最常见方法,可用于设计漏洞管理和修补策略。供应链也是另一个风险因素,在风险管理与治理CyBOK知识领域[79]中进一步讨论。

CPS中的一个新领域是识别执行器或传感器,如果它们受到损害,它们为攻击者提供CPS的最大可控性[80,30,81,82,83],然后优先保护这些设备。

识别风险后,一般的纵深防御方法包括预防、检测和缓解机制。在本节中,我们将介绍用于防止、检测和缓解攻击的跨领域安全工作,下一节将介绍特定的CPS域,例如电网以及智能交通系统。本节分为三个部分:(1)防止攻击(第2.1节),(2)检测攻击(第2.2节)和(3)缓解攻击(第2.3节)。

2.3缓解攻击

减轻CPS故障的大多数工作都集中在安全性和可靠性(保护系统免受随机和/或独立故障的影响)上。攻击缓解是安全性和可靠性保护的扩展,适用于系统中的故障不是由自然随机创建的,而是由对手创建的。

攻击缓解与弹性控制系统的概念有关,弹性控制系统定义为保持状态感知和可接受的操作正常水平以响应干扰(包括意外和恶意威胁)的系统[131]。

缓解技术主要有两种类型:i)主动和ii)被动。主动缓解会在发生任何攻击之前考虑在CPS中部署的设计选择。另一方面,反应性响应仅在检测到攻击后才会生效,并且它们会在线重新配置系统,以最大程度地减少攻击的影响。我们首先描述主动方法。

保守控制:减轻攻击影响的最初想法之一是以足够的安全裕度操作系统,以便在发生攻击时,它会攻击者更难到达不安全的区域。这种类型的控制算法的一个直观想法是使用模型预测控制(MPC)来设计一种控制策略,该策略预测攻击将从下一个时间步长开始发生[37],因此计划一个最佳控制操作,在攻击发生时尝试保持系统安全。保守地运行CPS通常以次优操作和系统未受到攻击时的额外成本为代价。

弹性估计:弹性估计算法试图获得系统的这种状态,即使传感器的子集受到损害[132,133]。基本思想是使用CPS的知识以及所有传感器值的相关性。在传感器测量中具有足够的冗余,弹性估计算法可以拒绝尝试的攻击,并仍然获得准确的状态估计。这个想法类似于信息论中的纠错码,其中传输的比特的子集可能会被破坏,但纠错代码重建原始消息。然而,缺点是并非所有CPS都有各种相关传感器来检查其他传感器的一致性,因此这种方法取决于系统的属性。

传感器融合:弹性估计算法通常假设各种多模态传感器来实现其安全保证。这也是传感器融合背后的想法,不同类型的传感器可以帮助“确认”其他传感器的测量[134,135,136].汽车系统中传感器融合的一个基本示例是验证LiDAR读数和摄像头测量值是否报告一致的观测结果。

虚拟传感器:当我们使用物理定律异常检测系统时,我们实际上拥有了系统物理演变的模型。因此,减轻对CPS传感器的攻击的一种方法是使用系统的物理模型来提出预期的传感器值,然后可以将其提供给控制算法[30,137,117]。通过去除传感器值及其从系统模型获得的期望值,我们正在使用开环控制有效地控制系统,这可能在短期内有效,但作为长期解决方案可能存在风险,因为所有物理模型并不完美,真实世界和模型仿真之间的误差会随着时间的推移而增加。在将虚拟传感器设计为攻击-响应机制时,另一个重要的考虑因素是,每当系统由于误报[30]。

约束致动:保守操作的类似原则是物理约束CPS的执行器,以便如果攻击者成功获得对系统的访问权限,则其更改系统操作的速度受到限制。例如,这种方法可以保证车辆队列行驶系统的安全性,即使攻击者完全控制了其中一辆车[138]。

惯性复位:减轻攻击的另一个想法是尽可能频繁地重置和多样化系统,以便攻击者无法获得对系统的持续控制[139,140]。基本思想是,系统的完整软件重置将使系统再次以受信任状态启动,从而消除攻击者的存在。这要求系统具有受信任的计算基础,可以在尚未加载恶意软件的安全状态下启动系统。但是,关闭正在运行的系统是一种潜在的危险行为,目前尚不清楚该提案是否可行。

反应控制补偿:当传感器或控制器受到攻击时,会产生新的动作以维护系统的安全。受容错控制的文献的启发,一种想法是尝试估计攻击信号,然后生成补偿动作以消除它[141].这种方法的问题在于它不考虑战略对手;然而,博弈论方法可以解决这一限制。在博弈论模型中,攻击者破坏一组控制信号

一个∈R但防守方使用剩余的控制器ud∈R医学博士部署防御

攻击者和防御者之间的博弈可以是同时的(零和或最小极大博弈)[142,143,144]或顺序的(例如,斯塔克尔伯格博弈)[145,146,147]。博弈论的挑战之一是,为了建模和证明结果,公式需要简化,此外,模型需要添加一些在实践中可能不成立的额外假设。

安全控制操作:另一种反应性方法是更改甚至阻止潜在的恶意控制操作作用于系统。将高保证控制器(HAC)作为高性能控制器(HPC)的备份的想法早于CPS安全性的工作,并被提议作为安全性防止复杂且难以验证的HPC将系统驱动到不安全状态的机制[148]。一种更新的、以安全为导向的方法是使用参考监视器的概念来检查控制动作是否会导致任何不安全的行为,然后再允许它进入现场[39]。所提出的方法依赖于控制器的控制器(C2),该控制器调解控制器发送到物理系统的所有控制信号。特别是,C2尝试保留三个主要属性:

1)安全(该方法不得引入新的不安全行为,即,当操作被拒绝对工厂进行“自动化”控制时,不应导致工厂采取不安全行为);2)安全性(调解保证应在威胁模型允许的所有攻击下成立);3)性能(控制系统必须满足实时期限,同时施加最小的开销)。

本节中介绍的用于预防、检测和响应攻击的所有安全建议通常适用于CPS。但是,每个CPS应用程序都有独特的属性,这些属性可以改变这些解决方案的实施方式。此外,特定CPS域的一些独特属性可以带来新的解决方案(例如为植入式医疗设备提出的触摸访问原理[149])。在下一节中,我们将重点从一般和抽象的CPS描述更改为特定于领域的问题和解决方案。

有关网络物理系统安全之​横切安全性之缓解攻击的更多相关文章

  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. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

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

  7. 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} 最佳答案

  8. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  9. ruby - 使写入文件线程安全 - 2

    我在一个ruby​​文件中有一个函数可以像这样写入一个文件File.open("myfile",'a'){|f|f.puts("#{sometext}")}这个函数在不同的线程中被调用,使得像上面这样的文件写入不是线程安全的。有谁知道如何以最简单的方式使这个文件写入线程安全?更多信息:如果重要的话,我正在使用rspec框架。 最佳答案 您可以通过File#flock给锁File.open("myfile",'a'){|f|f.flock(File::LOCK_EX)f.puts("#{sometext}")}

  10. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

随机推荐