软件|嵌入式开发:保护嵌入式系统的7个技巧

软件|嵌入式开发:保护嵌入式系统的7个技巧

与质量和许多其他嵌入式系统属性一样 , 安全性必须在开发周期开始时加以考虑 。 开发人员无法构建他们的系统 , 然后在最后添加安全性 。 随着越来越多的系统开始连接到 Internet , 嵌入式开发人员应该遵循最佳实践来开始保护他们的系统 。 让我们探索几个任何团队都可以实现的方式 。

开始使用ARM Trustzone
ARM Trustzone 已经在应用处理器上使用了很长一段时间 , 并且已经宣布 ARM Trustzone 在新的微控制器上可用 。 开发人员应该探索它的含义以及如何使用它来编写更安全的软件 。 如果你有一个 ARM 应用处理器 , 那么现在是开始让 Trustzone 发挥作用的时候了 。
遵循语言和行业最佳实践
嵌入式软件开发人员应该使用多种编程语言和行业最佳实践标准 。 使用 MISRA-C/C++ 可以确保遵循使用所选语言的子集的最佳实践 。 无论如何都应该使用 MISRA , 但从安全的角度来看 , 如果开发人员使用 C , 那么强烈建议熟悉并遵循 Cert-C 中的最佳实践 。 Cert-C 旨在提供推荐的编码实践 , 以防止软件中的安全漏洞 。
数字签名和加密固件更新
任何连接到 Internet 的设备都需要推送功能更新和错误修复 。 为了防止未经授权的固件更新 , 嵌入式开发人员应考虑对其固件映像进行数字签名和加密 。

在启动时验证应用程序
潜在的黑客可能会在启动期间尝试将新软件注入系统 。 使用引导加载程序来验证存储在 ROM 中的当前映像和在 RAM 中运行的代码是否应该存在始终是一个好主意 。 有很多方法可以做到这一点 , 但一个非常简单的检查是放置一个在启动时验证的 CRC 。 总比没有好!
锁定闪存空间
它当然是防篡改的 , 但要在黑客面前面临的一个额外障碍是锁定 Flash 程序空间 。 在行尾锁定闪存将有助于防止对设备具有物理访问权限的人能够读取应用程序代码并对其进行逆向工程 。 如果有足够的时间 , 他们可以找到一种方法 , 但关键是他们必须更加努力地访问代码 , 这可能足以阻止他们 。
监控堆栈和缓冲区是否溢出
【软件|嵌入式开发:保护嵌入式系统的7个技巧】溢出堆栈或缓冲区可能是开始将恶意代码注入系统的好方法 。 嵌入式开发人员应该监控他们的缓冲区和堆栈空间 , 以确保它们不会溢出 。 这可以通过监视位置指针或创建警告即将溢出的警戒区来手动完成 。 大多数 RTOS 还包括堆栈溢出监视器 。 确保它不仅处于打开状态 , 而且在出现这种状态时有代码来处理系统 。