嵌入式开发:保护嵌入式软件的5个步骤

更新时间: 2023-04-10 14:37:02来源: 粤嵌教育浏览量:6702

  在嵌入式开发中,随着越来越多的功能嵌入到越来越小的设备尺寸中,安全性问题也随之增加。通常,新功能会排挤基本的安全性问题,因为供应商将越来越多的功能打包到软件包中,而很少进行整体系统工程设计,并且只进行粗略的安全性测试。

  嵌入式环境已经发展成熟,安全性必须像20世纪90年代PC发展时一样,成为重中之重。随着物联网(IoT)的爆炸式增长,毫无疑问,任何安全漏洞都会被利用。物联网设备使非常有用的商业案例成为现实。同时,它们也带来了失控的风险。今天的嵌入式系统要强大得多,也脆弱得多。如果嵌入式系统要避免20世纪90年代的陷阱,在它们成为新一代黑客的切入点之前,协议和方法必须到位。

  IT标准组织,如IT软件质量联盟(CISQ)、MITRE公共弱点列举(CWE)、ISO 9000和ISO 25000,发布指导方针和软件质量标准。CISQ公布了安全性、可靠性、性能效率和可维护性的自动化质量措施。这些度量提供了一些特定的属性,这些属性应该被用作嵌入式系统可能需要完成其业务/使命功能的证据。在检查嵌入式系统的状态时,很明显安全性应该在前面进行设计。

  实施安全策略

  当考虑安全性时,大多数嵌入式开发工程师会立即关注保护数据的问题。系统不仅应该保护数据(在应用程序中),还应该保护接口不被滥用。这五个步骤代表了开发嵌入式安全策略的合理起点。

  l 中没有未经测试的程序执行空间——除了执行功能所必需的程序之外,任何程序都不应该存在于可以执行它们的地方

  l 数据必须是私有的——程序不应该无意中向彼此或网络暴露信息

  l 确认两端的数据–所有信息必须能够验证,并且必须在预期范围内,超出范围的信息将被拒绝

  l 安全设备——设备应该能够在启动时验证其完整性;设备应该在发送或接收数据之前进行自我验证

  l 遵循标准——看看IT软件质量联盟(CISQ)的质量特征测量,这些测量可以自动进行持续的安全性和软件质量分析和缓解

  l 采取行动——如果出现异常,程序必须在处理问题的同时继续运行

  

  执行空间中没有未经测试的程序

  在嵌入式开发中,随着嵌入式供应商努力使他们的产品与众不同,他们将程序添加到他们的标准发行版中。其中许多都不会被使用,并且存在潜在的安全风险。这些程序必须被删除,或者更好的是,永远不要安装。要求一个操作系统发行版,里面除了操作系统工作和手动安装程序的基本要素之外,没有任何东西。极简策略对代码来说是最好的。如果供应商不提供剥离的发行版,操作系统可以限制对这些程序和敏感API的访问权限,或者可以删除未使用的代码。

  更好的方法是为自定义和第三方应用程序提供一个沙箱来执行,然后通过API推送通信,API提供了必要的隔离。

  硬件本身应该是“干净”的,没有安装任何程序。关键是设备上的任何程序都是由开发人员安装的。每一段代码必须来自一个值得信赖的嵌入式开发人员,不能在安装前修改。

  数据必须是私有的

  程序不应该无意中向彼此或网络公开信息。相信一个设备在互联网上不会被黑客攻击是很诱人的,但这根本不是事实。随着程序中模块的增长,数据工件也随之增长,数据也变得越来越暴露。

  嵌入式设备收集敏感数据(如医疗保健、企业数据),数据流量很有可能在到达目的地之前被重新路由和修改。应该有防止复制和粘贴的检查,以及在设备落入坏人之手时远程擦除数据的能力。

  面临期限压力的嵌入式开发人员倾向于从自己和同事那里借用代码和例程。任何安全缺陷都会被传播。第一次就正确地设计和构建代码。

  确认两端的数据

  所有信息都必须在预期范围内得到验证,并被清楚地识别。在两端使用相同的例程来验证内容是至关重要的。接口应该对输入的内容敏感,并且能够在数据不正确时采取行动。当一个设备从一个“可信”的设备接收到坏数据时,这种入侵很可能是黑客行为。对于直接硬件接口也是如此。

  像隐私一样,所有与外部世界的联系都需要被视为可疑。应该验证接口并检查数据。

  

  安全设备

  设备应该能够在启动时验证其完整性,并且应该在发送或接收数据之前进行自我验证。知道谁在发送数据是很重要的,一个简单的方法是替换未经验证的设备。

  启动时,嵌入式开发设备必须使用加密生成的数字签名。资源受限的设备可以使用独特的硬件特征而不是计算密集型算法来生成用于认证的数字签名。未通过检查的设备应该有计划的响应。默认操作可能不适合任何给定的设备。

  每个设备都应该有一个密钥,并且每个设备都应该知道其类型可接受的密钥。当接收到未识别的密钥时,应该计划响应,而不是简单地忽略。如果信息的接收对设备的功能至关重要,则不止一次接收错误的ID应被视为攻击。针对此故障进行规划至关重要。

  遵循标准

  CISQ发布了一项安全标准,旨在识别IT应用软件中的25个已知安全弱点,由MITRE在常见弱点枚举(CWE)中维护。cwe是一组可衡量的项目,可用作弹性、安全性和安全性的证据。CAST等代码分析器可以从复杂的环境中挑选出这些。开发人员应该经常接触这些重要的标准。

  采取行动

  如果出现异常,程序必须在处理问题的同时继续运行。嵌入式开发人员通常关注收到好数据时会发生什么,但错误处理通常很简单。开发人员培训假设坏数据是编程的产物,而不是黑客,这是需要审查的政策。对所有关键组件进行保证案例测试。保证案例支持实现的迭代审查和修订,直到系统显示正确的行为。

  在某些情况下,设备可能有办法通知另一个设备它受到了攻击。在其他情况下,它可能会简单地选择忽略或避开威胁。无论哪种情况,沟通都是避免黑客攻击的有力武器。

  保护嵌入式设备

  嵌入式安全性正成为嵌入式设备的一项关键需求。通过遵循这些建议,你的嵌入式开发解决方案可以专注于解决其设计要解决的问题,而不会为新一代黑客打开闸门。

免费预约试听课