虽然嵌入式系统往往缺乏服务器甚至当代个人计算机的处理能力,但这种设备数量之多正使它们成为非法僵尸网络和加密货币挖矿操作等不良行为越来越有价值的目标。事实上,嵌入式系统设计人员的第一个主要安全相关警钟即包括 2016 年 Nest 恒温器受到的僵尸网络攻击。由于许多特定物联网 (IoT)都会面向普通消费者,以及它们对隐私和安全敏感性不断增加的要求,Nest 僵尸网络引发了大量讨论。这些讨论往往集中在公司应该如何在他们的低成本物联网产品中实现安全性,以及消费者如何在他们的家庭和企业中安全地操作这些设备。
随着网络攻击的威胁越来越大,开发人员必须在整个设计过程中牢记安全方面的考虑。通过遵循一些实用的提示和建议,开发人员可以防范各种攻击场景。请继续阅读下文,开发人员可以了解在嵌入式设计中使用的安全措施概要。
安全构建
虽然有许多种芯片架构、操作系统和通信协议,许多物联网设备往往是围绕基于 Arm® 的架构构建,如果它们运行操作系统,则往往是 Linux 的一个版本Linux distribution。这种共性在很多方面都有好处,可实现更低的成本和更快的开发时间,但它也会产生很多负面影响。攻击向量趋向于“一刀切”,尤其是对于运行基于 Linux 操作系统的设备。为了减轻与广泛的共享通用架构设备相关的威胁,开发人员应实施以下“速赢”安全设计原则:
- 不要将密码硬编码到固件中。此外,不要对所有设备使用通用默认密码,需要用户在设备初始化期间创建自定义用户名和密码。
- 不要默认启用HTTP、FTP 或 Telnet等不安全的协议。通过有线或无线协议发送设备的数据必须经过高度加密,避免“自制”加密解决方案。
- 以尽可能严格的配置运送设备,让最终用户主动决定减少与安全相关的设置。
- 用于访问设备的所有机制都应要求身份验证和授权控制。如果可行,应使用双重身份验证 (2FA)。
- 所有面向用户的输入都应该施加过滤,以避免注入型的攻击。
- 为最终用户实施一个安全的设备管理界面,使他们能够管理其资产、更新设备、监控设备以及安全地停用已达到其使用寿命 (EOL) 的设备。
- 必须在设备上验证无线 (OTA) 更新机制。更新文件在发送到设备的途中必须加密。最后,确保有防回滚(anti-rollback)功能,以防止设备恢复到以前的不安全固件。
- 如果您的设备在设计中使用了第三方软件库,则必须对其进行持续监控,以确保集成第三方的更新并且它们不会被弃用。废弃的软件项目可能会成为您设备的严重漏洞。在将第三方软件应用到您的项目之前,请更改默认密码。
- 限制在设备上应该存储哪些敏感数据,仅将此类信息存储在安全飞地(enclave)中。
- 请记住,对于物联网,嵌入式系统只是更大生态系统的一部分,需要确保安全性也内置于云端、桌面和移动应用程序中。生态系统的安全只取决于最薄弱的环节。
- 考虑建立漏洞赏金计划,以鼓励最终用户和安全研究人员以安全、负责任的方式提交漏洞。
对设备的物理访问往往是对于设备游戏结束的情况,但这并不意味着没有办法让物理侵入这些类型设备变得更加困难。有些整本的书都是关于制作防篡改的电路板和相关外壳,但如果想了解一些“速胜”技巧,请考虑以下物理设计经验法则来强化您的设备:
- 用于调试JTAG 和 UART等端口的引脚在开发和测试设备时非常有用。对于那些寻求恶意逆向工程设备的人来说,它们也是诱人的攻击目标。建议混淆这些引脚和/或删除生产单元的插头引脚。请注意,这样做的代价是一旦设备投入使用就很难进行故障排除,设计人员必须考虑安全性和可维护性之间的平衡。
- 使用粘合剂、超声焊接和/或专用安全螺丝会使打开设备变得更加困难。
- 在敏感元件上涂上非导电环氧树脂能够模糊它们的身份和用途。
- 您可能很想使用可能存在漏洞的旧组件,但需要注意假冒组件。如果一笔交易看起来好得令人难以置信,那它可能就存在风险。在平衡安全性和上市时间的问题上,不能做轻率的决定。
- 可使用多层板进行布线走线,使其更难以辨别电路板的功能。
以下一些建议可能更多地适用于消费类物联网设备,然而,正如我们稍后将讨论的那样,工业控制系统和国防系统同样也会受益于这些更强大的物理安全措施:
- 将安全功能内置到电路板本身,微动开关(microswitches)、水银开关(mercury switches)或磁性开关可以检测电路板是否被无意处理或打开。也可以使用镍铬合金线或光纤。如果电线或光纤受到试图篡改设备人的负面影响,那么电线的电流或通过光纤传输的光子行为将会发生可检测的变化。
- 侧通道或故障攻击(glitching attacks)可能不常见,但能够为对手提供独特的优势,因为他们使用物理定律攻击设备,因此虽然可以检测到,但却难以预防。通过攻击时序或限制电子流向 CPU,有可能使设备以意想不到的方式运行,从而降低安全功能。可以在电路板上安装电压和电流传感器,以检测是否可能发生故障攻击,但这样也存在误报的可能性。
- 一些重量级对手可以使用 X 射线机器窥探微芯片,并发现晶体管的形态以确定其功能和更多信息。可以在系统中添加能够检测 X 射线的传感器来监测这种攻击,但无法阻止对手提取有用信息。
应该指出的是,安全和开放范式之间存在相当大的区分,安全注重混淆程序,而开放硬件则注重理解程序。无论如何,请记住这句古老的格言:锁只会让诚实的人保持诚实,对于整个安全领域也是如此。有关如何构建安全 IoT 设备的更多信息,请访问开放网络应用安全项目 (Open Web Application Security Project ,OWASP) IoT 项目。
操作安全
即使制造商能够在其产品中实施所有最好的安全设计原则,如果最终用户不以安全的方式操作这些设备,结果也大多是徒劳无用。
- 将您的家庭网络分割成两个“虚拟”网络,这样物联网设备就不会被台式计算机、网络附加存储 (NAS) 设备等“看到”。要快速简捷地做到这一点,请为您的物联网采用访客网络功能。
- 大多数物联网设备依赖智能手机应用程序来控制设备,因而需使应用程序保持最新状态,并在可用时使用 2FA 登录。
- 禁用您不打算使用的 IoT 设备任何功能。
- 定期更新路由器和物联网设备的固件。
- 当物联网设备达到使用寿命并且不再接收更新时,请考虑将其替换为较新的型号。
工业应用级安全
面向消费者的物联网产品可能很多,但对于工业领域的物联网产品,可统称为工业控制系统 (ICS),它们管理着许多极其重要和具有潜在危险的工业过程。从能源生产到工厂,所有一切都使用嵌入式数字技术(称为操作技术或 OT,相对于以办公室为中心的信息技术或 IT )来控制负责执行各种流程的设施和相关机械设备。 ICS 环境与严格的 IT 环境有很大不同,因此需要特别考虑加固 OT 设备和 ICS 网络。这其中最基本的原则是 ICS 不应连接到互联网,虽然这看起来很简单,但令人惊讶的是,这条基本规则被违反的频率却是如此之高。有关如何保护 ICS 网络和设备的更多信息,请查看两个安全框架:用于 ICS 的 MITRE ATT&CK 和用于企业的 MITRE ATT&CK。
通常ICS 系统都会部署在环境严苛、化学或其他危险区域,这种性质意味着 ICS 设计中系统的可用性优先于机密性。 从更积极的角度来看,这通常要求存在冗余系统,并且这些系统发生故障时需要保证安全性。 然而,ICS 系统可能会持续运行数十年,并且可能并不总是保持最新状,而且许多协议都版本较旧,并且在构建时只考虑了效率,而不是安全性。 归根结底,ICS 或 IIoT 领域的安全性具有独特的巨大挑战,可能难以实施面面俱到的最佳部署实践。 但是,此类设备的嵌入式开发人员应该认识到需要对设计惯例进行现代化改进,并将安全性纳入未来的设计,而不是再采用事后的补充。