草庐IT

网络物理系统安全之​横切安全性之防止攻击

铸盾安全 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.1 防止攻击

保护第一个基于计算机的控制系统的经典方法是将它们与互联网和资产所有者的公司网络隔离。随着业务实践的变化,以及效率原因使控制系统与其他信息技术网络之间的互连越来越多,子网络区域隔离的概念被几个CPS行业采用,尤其是在核能领域。能源部门。这种网络隔离通常是在防火墙和数据二极管的帮助下实现的[84]。

另一方面,有几种方法可以打破气隙,包括内部攻击,或通过移动设备向网络添加新连接。因此,为了防止现代CPS中的攻击,设计人员和开发人员必须遵循与传统IT系统相同的最佳安全实践;即,他们需要遵循一个安全的开发生命周期,以最大限度地减少软件漏洞,实施访问控制机制,并提供强大的加密保护以及安全密钥管理系统[85]。

虽然经典IT系统的最佳安全实践可以为控制系统的安全性提供必要的机制,但仅靠这些机制不足以进行深入防御。的CPS。在本节中,我们将讨论如何通过了解CPS系统与物理世界的相互作用,我们应该能够

1. 更好地了解攻击的后果。

2. 设计新颖的攻击检测算法。

3. 设计新的攻击弹性算法和架构。

在本小节的其余部分,我们将重点说明在CPS中实施经典IT安全最佳实践所面临的挑战,包括多个CPS由遗留系统组成,由嵌入式设备操作资源有限,并面临模拟攻击等新漏洞。

保护遗留系统:CPS设备的生命周期可能比常规计算服务器、台式机或移动系统大一个数量级。消费者希望他们的汽车比笔记本电脑使用寿命更长,医院希望医疗设备可以使用十年以上,大多数工业控制系统的资产至少可以使用25年[86],并且这些设备中的大多数在完全折旧之前不会更换。其中一些设备的设计和部署假设不再存在的受信任环境。此外,即使这些设备当时部署了安全机制,最终也会出现新的漏洞,如果制造商不再支持这些设备,然后它们不会被修补。例如,在发现Heartbleed漏洞后,主要制造商推动更新以缓解此问题;但是大多数监视或控制物理世界的嵌入式设备不会被修补(修补一些安全关键系统甚至可能违反其安全认证)。因此,即使供应商最初使用OpenSSL在CPS设备之间创建安全通信通道,他们也需要考虑长期支持该设备。

因此,为了防止CPS中的攻击,我们必须处理(1)设计可以不断更新安全性的系统,以及(2)为现有的遗留系统改造安全解决方案[87]。

某些设备无法使用这些新的安全标准进行更新,因此为传统网络增加安全性的一种流行方法是添加在线碰撞[88]。通常,线路碰撞是一种网络设备,用于为旧设备之间交换的网络数据包添加完整性、身份验证和机密性。因此,传统设备发送未加密和未经身份验证的数据包,网络设备将通过安全通道将它们隧道传输到通信通道另一端的另一个在线碰撞系统,然后删除安全保护并将不安全的数据包提供给最终目的地。请注意,线路碰撞只能保护系统免受网络上不受信任方的侵害,但如果端点受到损害,则线路碰撞将无效。

对于植入式医疗设备等无线设备,也提出了类似的概念。由于其中一些无线设备通过不安全的通道进行通信,因此攻击者可以侦听或注入恶意数据包。为了防止这种情况,可以在易受攻击的设备附近使用无线屏蔽[89]。无线防护板将干扰与易受攻击设备的任何通信尝试,但来自防护板所有者授权的设备除外。无线屏蔽也被用于其他领域,例如保护使用BLE设备的消费者的隐私[90]。由于其破坏性,目前尚不清楚无线屏蔽是否会在消费类应用中找到实际应用。

轻量级安全性:虽然一些嵌入式设备支持经典加密,但对于某些设备,加密算法在能耗或延迟方面的性能可能不被接受[91]。对于对称密码学,NIST计划对轻量级加密算法组合进行标准化[92],而当前CAESAR对认证加密标准的竞争正在评估其在资源受限设备中提交的性能[93]。对于公钥算法,椭圆曲线加密通常提供性能和安全保证的最佳平衡,但根据系统的要求,其他轻量级公钥算法可能更合适[94]。在漏洞利用缓解方面,解决方案不太清楚。

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

  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 - Rails 3.2 防止使用错误保存对象 - 2

    我有一个ActiveRecord对象,我想在不对模型进行永久验证的情况下阻止它被保存。您过去可以使用errors.add执行类似的操作,但它看起来不再有效了。user=User.lastuser.errors.add:name,"namedoesn'trhymewithorange"user.valid?#=>trueuser.save#=>true或user=User.lastuser.errors.add:base,"myuniqueerror"user.valid?#=>trueuser.save#=>true如何在不修改用户对象模型的情况下防止将用户对象保存在Rails3.2中

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

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

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

  9. 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

  10. ruby - 防止SQL注入(inject)/好的Ruby方法 - 2

    Ruby中防止SQL注入(inject)的好方法是什么? 最佳答案 直接使用ruby?使用准备好的语句:require'mysql'db=Mysql.new('localhost','user','password','database')statement=db.prepare"SELECT*FROMtableWHEREfield=?"statement.execute'value'statement.fetchstatement.close 关于ruby-防止SQL注入(inject

随机推荐