如何用微控制器简化嵌入式安全

如何用微控制器简化嵌入式安全,第1张

  物联网IoT) 继续成为现实,每天有数百万设备连接到互联网。尽管这可能令人兴奋,但随着许多创新机会的开放,物联网设备和系统的开发人员面临着许多挑战,其中最关键的是保护他们的设备并确保最终用户的隐私。值得庆幸的是,新的微控制器 (MCU) 不断涌现,大大简化了安全任务,但这些功能与开发人员使用它们的能力一样好。

  对于许多开发人员来说,安全性一直是并且仍然是事后的想法,这有点令人惊讶。这是一个错误,因为它使房屋、车辆、制造、零售和关键基础设施容易受到攻击。然而,尽管历史上不愿解决安全问题,但物联网现在正迫使设计人员在开发嵌入式系统时更加认真地考虑安全问题,幸运的是,他们发现并不是唯一一个解决安全问题的人。

  微控制器的制造商和供应商是众多物联网系统和设备的基本元素,现在也认识到安全性的重要性,并在他们的硬件软件库中构建挂钩,以简化开发并减轻开发人员的安全负担。

  一个典型的例子是瑞萨电子美国公司的 Synergy 平台。这不仅包括一系列基于 ARM® 的微控制器,例如S1、S3和S7系列,还包括一个完整的软件包,旨在通过提供驱动程序、RTOS、中间件、框架和库来为开发人员提供快速入门。盒子。

  Synergy 软件包 (SSP) 中包含一个安全和加密模块,开发人员可以利用它来正确保护他们的设备。虽然拥有这些软件组件是件好事,但开发人员仍然需要了解如何将这些资源应用于嵌入式安全的三个主要元素:身份验证、完整性和可用性。

如何用微控制器简化嵌入式安全,pYYBAGLo0q2AcrpyAAJj_4zkUwc351.png,第2张

  图 1:Renesas Synergy 平台的 Synergy 软件包 (SSP) 包括平台中包含的驱动程序、RTOS、中间件、框架、库和开发工具。可以在此处查看平台中包含的所有不同软件组件。(来源:瑞萨电子美国)

  身份验证和加密是一项棘手的业务

  身份验证最关注安全性,这是正确的。身份验证是系统验证固件更新和通信是否来自合法来源的能力,而不是试图混淆或覆盖默认系统行为。开发人员可以在他们的设计中使用的常见技术可以在任何微控制器上工作,从最简单和资源限制最少的开始,包括:

  •   密码
  •   握手
  •   数字签名
  •   校验和
  •   循环冗余校验 (CRC)

  CRC 应包含在重要数据中,例如存储在闪存中的应用程序映像和通过网络或通信接口进行通信的数据包。微控制器上的 CRC 可能是一项棘手的工作,尤其是在没有浮点硬件单元的情况下。对于开发人员来说,一个很棒的技巧是使用类似于 fletcher16 算法的校验和。

  fletcher16 算法检测数据流中是否有任何数据被更改。它通过本质上将数据流分解为 8 位块,然后将这些块相加以生成两个唯一的 8 位值,这些值重新组合成 16 位校验和。fletcher16 算法被限制为不大于 255 的模数,因此插入到数据流中的随机数有 1/255 的机会未被检测到。Fletcher16 的有效性与最低的 CRC 相当。

  为了保护嵌入式系统,开发人员可能需要采用多种技术组合,其中还包括加密。如果您没有选择正确的设备,MCU 上的加密可能会是一项艰巨的任务。每个应用程序都需要自己独特的加密需求,但您至少应该在 MCU 上寻找几种硬件资源:

  •   唯一的设备标识符
  •   有限的 JTAG 访问
  •   真正的随机数生成器 (TRNG)
  •   对称密码加速

  请特别注意使用 TRNG 的微控制器的数据表。所有的 TRNG 都不是平等的,如果它们没有通过 NIST SP 800-90(最新和最伟大的熵规范)的认证,那么潜在的黑客就有可能通过影响系统熵来 *** 纵生成器,然后生成可预测的熵结果。

  熵是系统中存在的随机性或混沌性的量度。TRNG 通常会使用熵来计算随机数。如果黑客能够控制系统的熵,例如 *** 纵时间或温度(伪随机数生成器使用的属性),那么随机数就变得可预测了。一个可预测的数字允许黑客做出有根据的猜测,最终破坏系统安全性并将其打开以进行攻击。

  Renesas Synergy MCU 具有上述所有硬件资源,使用 Synergy 工具链访问 TRNG 几乎是微不足道的。只需进入 Synergy 配置文件,然后从线程选项卡中添加 TRNG 组件。该组件完全通过可视化界面添加,必要的步骤如图 2 所示。在此示例中,使用了Renesas S1 开发套件来部署 TRNG。添加 TRNG 驱动程序后,以下 API 调用将生成随机数:

  R_SCE_TRNG_Read ( trng_ctrl_t *const p_ctrl , uint32_t *const p_dest ,uint32_t nwords )

如何用微控制器简化嵌入式安全,pYYBAGLo0r-AT7HQAAGewZ_jdzk786.png,第3张

  图 2:要将真随机数生成器 (TRNG) 驱动程序组件添加到 Synergy 项目,只需选择添加,然后按照从右上角到左下角的菜单查找 TRNG 驱动程序。(来源:瑞萨电子美国,E2 Studio Synergy Project)

  高级应用程序需要的不仅仅是简单的 TRNG 或对称密码加速。为了利用最新的加密技术,开发人员应该在他们的微控制器中寻找额外的硬件,例如:

  •   非对称密码加速
  •   哈希加速
  •   非对称密钥生成器
  •   安全密钥存储

  如果没有这些关键组件,开发人员会发现他们的系统很容易受到攻击,并且可能在现场受到损害。事实上,最终用户可能会发现他们的隐私受到侵犯。隐私是最终用户的数据被隐藏而不对其他人可见的能力。缺乏良好加密方法的系统将导致用户甚至可能不知道的隐私侵犯,或者可能导致身份盗用等网络犯罪。上面列出的高级功能有助于保护隐私,但可能并不包含在每个微控制器中。例如,您不会在 Renesas S1 设备上找到 HASH 加速,但您会在 Renesas S7 上找到一个。

  确保系统完整性

  开发人员通常非常关注身份验证和加密,以至于很多时候他们没有考虑系统完整性的重要性。完整性是衡量软件可信度的指标。许多开发人员会在启动时假设应用程序没有损坏或被注入恶意软件。对于不断连接到 Internet 的设备,这是一个糟糕的假设。

  开发人员可以使用一些技术来验证其系统的完整性。首先,您可以将 CRC 或校验和添加到存储在闪存中的应用程序映像中。启动系统时,引导代码会计算校验和或 CRC,并验证它是否仍与预期值匹配。或者,您可以使用 Renesas SSP 中包含的软件组件,例如安全启动框架 (QSA)。它不仅提供安全启动功能,还提供受保护的内存位置,防止恶意软件或其他代码访问整个系统。这使您可以为不同的应用程序组件创建沙箱以确保它们的安全。

  可用性

  嵌入式系统应该几乎 100% 可用,但有时黑客可能会执行分布式拒绝服务 (DDoS) 攻击,导致线程不足或内存溢出,进而导致系统停机。为了保护嵌入式系统并防止这种情况发生,但一定要使用能够启用内存保护和管理应用程序的 RTOS,以确保霸道的任务不会导致整个系统瘫痪。

  安全入门

  嵌入式安全可以被认为是一个利基领域,因为在物联网之前安全并不是一个问题。设备曾经被断开连接,这极大地限制了它们的攻击区域。但是,连接的设备随时可能在各种情况下受到攻击。学习嵌入式安全的最佳方式是从板凳上开始。有两个开发套件,即前面提到的瑞萨 S1 和瑞萨 S7,可用于快速启动安全工作。

如何用微控制器简化嵌入式安全,pYYBAGLo0tSABm66AAGlL6eNE74010.png,第4张

  图 3:在缩​​小硬件加密选择范围之前,瑞萨电子 SK-S7G2 开发套件是开始探索安全概念的最佳场所。(来源:瑞萨电子美国)

  每个开发套件都有 Arduino 接头分线器,因此可以轻松地将蓝牙模块等硬件屏蔽添加到开发套件中,以进行定制设计工作。Renesas S7 包括一个以太网端口,当与 SSP 结合使用时,您可以在短时间内启动并运行物联网设备。

  当第一次开始探索安全概念时,您可能希望首先关注 S7,因为它拥有所有的花里胡哨并且功能最强大。一旦您了解了平台的功能和终端系统的要求,那么考虑降低您的硬件加密功能才有意义。

  结论

  设计人员在保护其嵌入式系统方面面临的挑战,从身份验证到系统完整性和高可用性,乍一看似乎难以承受。然而,具有内置功能、挂钩和库的微控制器正在兴起,可帮助开发人员应对这些挑战并简化流程。一个很好的例子是本文研究的 Renesas Synergy 微控制器及其相关评估平台。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2710933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存