嵌入式开发:揭开嵌入式世界安全性的神秘面纱
嵌入式系统在我们的日常生活中越来越丰富。它们存在于汽车、机器、建筑以及任何可以连接到互联网的设备中。事实上,随着物联网(IoT)的发展,全球估计有100亿台联网设备,其中包括从智能家居设备到联网医疗设备的各种设备。随着互联设备的快速增长,围绕这些设备的安全性也有许多担忧。
安全性正在成为嵌入式社区中最重要的话题之一。一般来说,嵌入式开发人员必须了解三个要点,以便正确保护他们的系统。这些是:
1.黑客可能想要控制他们系统中的哪些类型的数据和资产?
2.黑客危害系统的攻击媒介有哪些类型?
3.有哪些类型的功能可以帮助开发人员保护他们的系统免受黑客攻击?
入侵者可能在寻找数据,如个人数据或公司知识产权(IP)。此外,他们可能会攻击设备本身。攻击媒介的类型因系统而异。但是,攻击媒介主要有三类:
基于软件的攻击
基于网络的攻击
旁道攻击
嵌入式开发人员还可以遵循一些最佳实践来帮助系统从一开始就保持安全。第一步是始终跟上当前安全实践的行业标准和趋势。当前积极发布嵌入式安全信息的组织包括IEEE、开放Web应用程序安全项目(OWASP)和国家标准与技术研究所(NIST)。此外,在下面,我们将介绍一些当前普遍接受的最佳实践。
编码指南
遵循编码指南来开发更安全、可靠的代码是一个很好的起点。许多嵌入式系统都是用C/C++开发的。专门为更安全的系统开发的指南的例子有SEICERTC、MITRECWE和MISRAC。
安全启动
使用安全引导也是常见的行业惯例。安全引导是一种在系统启动时保护系统免受恶意软件攻击的功能。在启动过程中,处理器将开始执行代码来配置设备、内存和外设。安全引导通过检查固件中的签名来确保正在执行的代码是正确的代码。
禁用不必要的功能
在嵌入式开发中,嵌入式系统可以有多种方式与设备通信。这可以通过以太网端口、COM端口、USB端口、串行端口和各种其他通信端口,用于产品开发期间的测试和调试。关闭和禁用这些访问方法是保护系统的重要的第一步。这可能涉及到在产品开发完成后,减少用于调试的头,或者消除通信通道,如Telnet和文件传输协议。
智能内存管理
对于黑客来说,嵌入式系统的内存可能是一个很有吸引力的攻击媒介。它们会使内存缓冲区溢出,从而导致系统将数据写入相邻的内存位置。因此,系统可能会覆盖可执行代码,导致系统行为不稳定、不可预测或完全崩溃。缓冲区溢出攻击还可用于故意将恶意代码写入包含可执行代码的内存区域,从而使攻击者能够获得对系统的部分控制权。尽可能将内存设为只读是最佳实践。此外,对存储器系统进行分区使得关键部分彼此隔离可以帮助保护系统。
安全通信渠道
许多嵌入式系统在开发后都会有一些访问点。这可以用于固件更新或操作期间的数据通信(任何物联网设备都需要接入互联网)。通过数据加密来保护所有通信渠道是非常重要的。这包括通信、固件更新、凭证以及设备可能存储或传输的任何数据。软件混淆也是一种帮助嵌入式系统更加安全的方法。软件混淆包括编写人类难以理解的代码。这样做是为了隐藏代码的真实目的,并使逆向工程更加困难。这可以由嵌入式开发人员手动完成,也可以通过自动化工具来完成。
生命周期支持
新的黑客和攻击方法不断被发现。因此,对于公司来说,保持产品最新以抵御最新的攻击媒介是非常重要的。这可以通过固件更新和补丁来实现,使公司能够保护其产品免受最新威胁的侵害。此外,在产品开发期间,有必要进行研究并了解产品整个生命周期所需的支持,以及完整的安全评估,以了解攻击者可能如何攻击产品、成功的可能性以及攻击者可能想要的资产。
总的来说,嵌入式系统的开发者面临着许多挑战。他们不仅必须设计、测试和制造系统,还必须确保安全可靠地完成。此外,随着嵌入式系统的数量呈指数增长,它们越来越多地成为黑客的目标。威胁可能以各种各样的方式出现,所有这些都必须在开发过程中加以考虑。嵌入式开发从来没有像现在这样具有挑战性和重要性。