网络安全
虽然边缘在IIoT中获得了大部分焦点,但重要的是不要忽视系统的云或服务器端。测试常见的服务器端漏洞,如跨站点脚本、SQL 注入和跨站点请求伪造,并检查 API 是否存在漏洞,确保及时修补服务器上运行的软件。
通过网络传输的数据需要得到保护,否则可能会被恶意拦截和修改。TLS 或 SSH 等安全加密协议用于保护传输中的数据。理想情况下,数据应受到端到端的保护。
IIoT 网络的边界通常很模糊。IIoT传感器节点通常在空间上驻留在其网络的外围。但是,它们还提供了通过固定网关进入更大工业网络的简单门户。4将这些设备正确发送到网络有助于防止流量被恶意第三方篡改。
保护网络数据流量涉及使用安全通信协议。最佳做法应该是使用已知安全的标准协议。以太网 LAN 上的安全性可以使用 IEEE 802.1AE 网络存储提供。无线 LAN 往往风险更高,因为它们更易于访问且无处不在。WPA2 为 IEEE 802.11 无线网络提供安全性。低功耗IEEE 802.15.4标准通常用于无线IIoT解决方案,提供自己的安全协议套件。但是,这些是第 2 层协议,并且仅保护 LAN 上的流量。
保护需要在 LAN 外部路由的流量(例如通过 Internet)需要提供端到端安全性的更高层协议。TLS 通常用于保护互联网流量并提供端到端安全性。虽然 TLS 使用 TCP,并且许多物联网设备使用 UDP 进行通信,但存在通过 UDP 工作的 DTLS(数据报传输层安全性)。虽然物联网设备在功率和内存方面受到限制,但可以毫不费力地为大多数受约束的应用程序实现TLS。对于更严格约束的设备,IETF目前正在开发一种新的协议,即受约束的应用协议(CoAP)。
端点安全
虽然保护传输中的数据是重要和必要的,但攻击更经常针对端点。面向网络的接口需要针对漏洞进行强化。IIoT 安全的一种方法是直接在传感器节点设备中构建保护。这提供了第一个关键的安全层,因为设备不再依赖于企业防火墙来提供唯一的保护。这对于部署在远程位置的移动企业设备和IIoT传感器尤其重要。
IIoT设备的安全解决方案必须提供针对各种网络攻击的保护。它必须确保设备固件未被篡改,能够保护存储在设备中的数据,能够保护入站和出站通信,并且必须能够检测和报告任何尝试的网络攻击。5这只能通过在设计的早期阶段包含安全性来实现。
[图3|中间人攻击在节点和网关之间插入恶意接入点。
对于嵌入式设备,永远不可能有一个放之四海而皆准的安全解决方案。提供的解决方案为 OEM 提供了通用框架。但是,完整的安全框架必须考虑保护特定设备、网络和整个系统所需的核心功能。还必须灵活地根据任何特定要求定制解决方案,同时确保包含关键的安全功能。
自动机用高压灭菌器
在医学上,手术工具的灭菌对于在防止疾病传播的同时重复使用至关重要。高压灭菌器是灭菌的黄金标准。它用高压过热蒸汽快速灭菌仪器。它可以消灭所有细菌,并使仪器恢复到已知的良好状态。这允许外科医生使用手术刀进行手术,并在消毒后安全地重复使用手术刀。
在入侵后将系统恢复到已知良好状态的能力比使其对所有攻击都防弹更重要。弹性系统可以充满信心地快速恢复和恢复运行。
一旦系统被感染,如何对其进行消毒?当系统受到感染时,它会以某种未知的方式改变系统的状态。远程攻击控制处理器并将新的恶意代码注入系统。通常,固件以某种方式被修改或替换为恶意软件,因此系统现在以不同的方式运行。一旦发生这种情况,处理器就不能再被信任。
嵌入式系统的设计方式通常使其难以从妥协中可靠地恢复。通常,清理系统并验证系统是否干净的唯一方法是将所有非易失性内存直接物理转储到外部读取器。然后,可以根据原始固件对其进行验证,如果原始固件不完整,则将其替换为原始固件。大多数系统的设计方式都不是为了实现这一点。
保护系统完整性的一种方法是使用机械开关对非易失性存储器进行物理写保护。当交换机设置为写保护时,内存在硬件中受到物理保护。将对内存的控制转移到处理器域之外,使得在没有物理访问设备的情况下,无法在物理上将永久性恶意软件远程安装到此内存中。这将世界上任何具有互联网连接的人的潜在攻击者列表减少到只有那些在很长一段时间内可以物理访问设备的人。固件更新通常是非常罕见的事件。当需要固件更新时,用户可以将开关设置为写入,使内存能够授权更新,然后在更新完成后对设备进行写保护。
[图4|物理写保护固件(执行更新时除外)是保护设备完整性的有效方法。
许多设备还使用其非易失性存储器来存储写入访问所需的数据。在高安全性系统中,可以使用单独的非易失性存储芯片来存储数据,但不能用于存储软件。攻击者仍可能通过向此内存写入恶意数据并利用软件错误来破坏某些系统,因此应彻底分析和测试系统,因此无论此内存中存储了哪些数据,系统都不会受到损害。增加额外的内存芯片会增加成本 - 但是,一些闪存允许某些扇区进行写保护,而允许其他扇区可写。
安全启动
安全启动可防止在启动过程中将未经授权的软件加载到设备上。这是信任链的开始。安全引导从编程到节点上只读、非易失性存储器位置的第一阶段引导加载程序开始。此引导加载程序仅验证第二阶段引导加载程序的真实性。第二阶段引导加载程序通常更复杂,可以存储在可重新编程的闪存中,重复该过程。6它验证操作系统和加载的应用程序是否确实有效,这些应用程序是否确实来自受信任的源。
具有安全启动和安全固件更新功能的IIoT节点可确保设备运行授权代码,而不是更改或恶意代码,因为这可以防止永久安装恶意软件或代码。设备将仅运行未经修改的代码或无法启动。
安全启动过程通常依赖于数字签名来保护代码的真实性。代码映像由设备的 OEM 在制造组装时使用 OEM 的私钥进行签名。然后,节点使用 OEM 的相应公钥来验证固件映像的签名。
还可以使用对称加密的消息身份验证代码 (MAC) 保护代码,但这需要将私钥存储在设备上,这会使其面临风险。但是,使用 MAC 在计算上更容易。
虽然安全启动可以增强安全性,但它有时对最终用户的限制性太强,因为它可以防止他们更改在其设备上运行的软件或运行自己的软件。根据应用程序的不同,用户可能需要更大的灵活性和配置安全启动的能力,这允许它信任自己的代码。
安全固件更新(类似于安全启动)验证 OEM 是否已在升级过程中对新代码映像进行签名。如果下载的映像无效,则丢弃这些映像并暂停升级。只有有效的图像是可以接受的,并随后保存到设备内存中。
假设某个时候会发现一个漏洞。应该有一个计划,以便在发现或利用漏洞时如何解决它们。通常需要有一种方法来允许在设备上安装软件更新和补丁以修复漏洞。更新过程还需要正确实施,以免被用作允许任何人在设备上安装恶意软件的攻击媒介。使设备可以通过网络访问,仅仅是为了提供修补功能,可能会带来比缓解更多的风险。
安全通信
大多数工程师认为安全性是通信协议,例如SSL / TLS,SSH和IPsec,因为安全通信已被添加到许多嵌入式设备中。然而,虽然这是安全威胁的一部分,但其他攻击媒介提供了新的途径。许多 IIoT 传感器节点在低功耗配置中运行,具有低功耗处理器,这些处理器无法支持某些最佳选项,例如 TLS 或 IPsec。安全协议为构建安全设备提供了良好的起点。7它们旨在防止数据包嗅探、中间人攻击、重放攻击以及未经授权的尝试与节点通信。
小型IIoT边缘传感器设备通常采用无线协议,如Zigbee,低功耗蓝牙(BLE)以及其他无线和网状网络协议。这些协议具有一定程度的内置安全性。但是,它相对较弱。许多漏洞已经发布,并被复杂的黑客所熟知。小型 IIoT 设备通常运行在不支持 TLS 或 IPSec 的非常低成本、低功耗的处理器上。对于小型边缘设备,DTLS(即通过 UDP 的 TLS)可用于安全通信。
物理安全
物理攻击针对 IIoT 系统的实际边缘硬件节点或网关,可能包括前端传感器的漏洞。这些攻击通常需要对系统进行物理访问,但也可能仅涉及仅限制IIoT硬件效率的操作。攻击者可以篡改节点,以控制IIoT环境中的传感器或其他设备。然后,他们可以从源中提取机密数据和嵌入式固件代码。使用恶意节点注入策略,攻击者可以将合法节点之间的恶意节点物理部署到IIoT网络中。8
为了帮助缓解这些攻击,可以在设计阶段实施一些硬件方面的先见之明。通过引线器件、裸露的铜通孔或未使用的连接器对信号进行简单的物理探测应尽量减少,甚至从设计中放弃。应删除详细说明组件并向潜在黑客提供其他信息的丝网印刷,除非认为该设计绝对必要。虽然它会增加系统复杂性,但工业敷形涂层不仅可以缓冲硬件与元件的接触,还可以添加一个额外的步骤来防止直接探测PCB上的电子设备。
任何嵌入式非易失性存储器内容都应在组件内进行加密和写保护。微控制器和DSP器件之间的接口应位于PCB上埋设的走线层内。即使可以检索嵌入式内存的内容,该数据的加密和有效性也应使其毫无意义。
制造商通常包括调试或测试端口。这些通常是串行或JTAG,可用于访问和控制系统的大部分。确保在生产中禁用或保护这些端口,因为不填充调试标头是不够的,因为确定的个人可以只填充它们或将自己的连接焊接到引脚上。如果需要在生产设备中保持启用状态,则需要在允许使用这些接口之前进行身份验证。它们可以受密码保护,但请确保允许用户设置强密码。
随机数生成
加密函数通常需要某种随机数生成器(RNG)。随机数对于密钥生成可能需要是不可预测的,或者它们可能需要永远不重复。由于缺乏资源和熵,在受约束的嵌入式系统中生成随机数通常是一个重大挑战。
许多嵌入式系统都遭受了熵太少的问题。这可能导致灾难性的中断,例如台湾的国民身份证智能卡。研究人员发现,由于缺乏熵,许多ID卡从相同的数字中生成了相关的密钥。结果,尽管使用了强大的RNG,但它们还是能够被打破。9同样,在2012年,研究人员发现,公钥服务器上0.38%的RSA密钥共享弱随机数生成,并且能够破解它们。10
很难或几乎不可能验证RNG的强度。RNG设计在过去是相当临时的,并且知之甚少。然而,近年来,鲁棒加密随机数生成器的设计和形式分析已经取得了重大进展。
现代,坚固的RNG设计现在往往有三个阶段。8有一个熵源提供原始熵,一个熵提取器使熵均匀分布,以及一个扩展阶段以扩展少量可用的熵。
第一阶段是熵源。这可能是一些物理噪声源,例如时钟抖动或热噪声。一些处理器,如ADI Blackfin DSP,为硬件提供可用于熵生成的随机数发生器。
加密的随机数需要具有均匀的统计分布。所有熵源都有一定程度的偏差,在将其用于加密应用程序之前,需要消除这种偏差。这是使用熵提取器完成的,该提取器采用具有高熵的非均匀分布输入,并生成具有高熵的均匀分布输出。这是以一些熵损失为代价的,因为熵提取器需要更多的熵输入,而不是它可以输出的熵。因此,需要从熵源收集更多的位,并将其提炼成一个小的高熵数,该数字可用于播种加密安全的伪随机数生成器。11, 12
Exploiting 勘误表
几乎所有的IIoT节点都使用某种形式的嵌入式固件或算法进行操作。从功能上讲,该固件可以正常运行,在执行其要求的能力方面没有明显的问题。但是,所有软件都有一定程度的错误或错误,允许一小部分可能导致安全问题的异常操作。例如,99.99%无差点的固件很少(如果有的话)会导致任何操作问题。但是,入侵者可能会利用这个小的0.01%的勘误率来强制节点的操作在该特定操作模式下100%的时间失败。软件错误源于复杂性,这是任何系统做任何有用的事情所必需的。软件错误和漏洞基本上存在于所有系统中。
[图5|利用小勘误表在 100% 的时间内强制失败。
安全设计
安全性必须从一开始就考虑系统设计。它应该是设计过程的一部分,而不是在项目结束时附加的东西。安全性不是关于添加安全功能;它是关于管理风险的。安全设计方法对于任何 IIoT 系统开发都至关重要。
现有的安全设计实践仍然适用。使用威胁建模来识别风险并选择适当的风险缓解策略。标识系统的入口点,以便标识系统中风险最高的区域。大多数攻击媒介都是通过外部接口进行的,因此请查看设计实现中的安全漏洞。仔细处理未知数据并验证所有输入 - 验证和安全性不应仅限于入口点。纵深防御很重要,这意味着在外层被破坏的情况下需要安全层
许多处理器提供不同级别的特权。ARM具有信任区,ADI黑鳍DSP提供用户级执行模式和特权执行模式。以尽可能低的权限级别执行尽可能多的代码,以将最重要的代码保持在特权模式下。IIoT设备的安全要求必须考虑安全故障的成本、攻击的可能性、主要攻击媒介以及实施安全解决方案的成本。
结论
其中许多建议彼此冲突,并与系统的其他设计目标相冲突。提供安全性通常涉及某种权衡,通常涉及成本,功能或可用性。有些权衡非常有效且便宜,而另一些权衡则成本高,影响不大。安全性需要与设计的其他需求相平衡,并且应该通过安全的设计过程在特定应用的基础上确定。
为了帮助保护IIoT,ADI提供了几种处理器,这些处理器提供基于硬件的安全增强功能,可以帮助突破边缘节点的边界。ADF7023 RF、低功耗收发器通过使用具有多种不同调制方案的ISM频段提供内部AES加密。
ADuCM3029中的嵌入式收发器提供AES和SHA-256硬件加速、真随机数发生器以及多密钥保护SRAM。ADSP-BF70X Blackfin系列数字信号处理器提供嵌入式一次性可编程存储器,用于安全密钥存储和快速安全启动,为系统在入侵后恢复到已知良好状态提供了强有力的保证。
Blackfin DSP中的回滚保护具有基于硬件的仅增量计数器,允许固件更新以在出现漏洞时修复漏洞。这与密钥存储的不可变性相结合,提供了创建强大且具有弹性的边缘节点的能力。此外,Blackfin DSP还提供加密硬件加速器,基于硬件的真随机数生成器,特权和非特权代码执行的分离,MMU以及限制许多DMA通道访问的能力,以允许以低成本实现并行和高能效的安全DSP。
审核编辑:郭婷
-
传感器
+关注
关注
2548文章
50658浏览量
751824 -
处理器
+关注
关注
68文章
19156浏览量
229075 -
ADI
+关注
关注
144文章
45812浏览量
248646
发布评论请先 登录
相关推荐
评论