在 ARM Cortex M0+ 上刷新或更新固件的加密策略

问题描述 投票:0回答:2

我想通过 CAN 在我的 ARM Cortex M0+ MCU 上刷新固件更新。我正在使用 MKV11 微控制器。

如何保护固件的安全,以便即使传输(从 PC 到 MCU)被嗅探,它也是安全的?

内存要求对我来说也是一个限制,但现在,我愿意接受所有建议。

另外,我应该去一些库,还是为加密算法开发裸机代码?

c encryption arm embedded can-bus
2个回答
1
投票

您在这个问题中涉及的主题可以写一本小书。但该网站无意成为咨询服务或博客条目网站,因此我将尝试简洁地回答您的问题。在这里,我无法(不会)解决所有细微差别,例如内存限制、CAN 总线特定的内容、保护 MCU 内的内容——太多了,无法解决。

为了保证固件更新的安全,必须对其进行加密身份验证。单独使用其中之一是不够的。使用对称密钥加密技术进行加密,并使用公钥加密技术(例如 RSA 或椭圆曲线)通过数字签名进行身份验证。

您应该使用公认的加密原语(例如 AES-256 和 ECDSA),而不是自行开发。而且您不应该实现(编码)您自己的加密货币,而应使用经过验证的库(太多,无法在此处命名/推荐)。


0
投票

有多种方法可以构建固件以实现具有加密功能的引导加载程序。通信必须是私密的,即 CAN 数据必须加密。但在您开始下载加密图像有效负载之前,您的 MCU 必须能够验证其通信伙伴的身份。在对称认证中,MCU 必须向 CAN 节点发送随机质询。 CAN 节点使用其密钥(例如 AES-256)对其进行加密,并返回摘要,在使用相同密钥对质询进行加密后,MCU 必须将摘要与该摘要进行比较。 一旦通过身份验证,CAN 节点就可以开始发送使用相同或不同密钥加密的有效负载消息。这些可能会被链接在一起并伴随着随机挑战,以使每一帧都是独一无二的。

© www.soinside.com 2019 - 2024. All rights reserved.