gpt4 book ai didi

encryption - 嵌入式固件的代码签名: Is a CRC enough when the firmware is encrypted?

转载 作者:行者123 更新时间:2023-12-02 16:20:59 38 4
gpt4 key购买 nike

我正在为嵌入式系统(微 Controller )编写固件。固件可以通过引导加载程序(也是我编写的)进行更新。

现在需要采取措施防止固件被操纵,因此系统必须仅执行具有某种有效签名的下载固件。

固件文件已加密。它由引导加载程序(在微 Controller 中)解密,然后编程到闪存中。

由于固件是加密的,因此我认为对闪存内容进行简单的 CRC 检查应该足以证明固件的有效性。但我不是网络安全专家,所以...我需要更多吗?

我认为加密足够强并且闪存无法读取。

最佳答案

Since the firmware comes encrypted, in my opinion a simple CRC check on the flash content should be sufficient to prove the firmware validity. But I'm no expert for cyber security, so... do I need more?

如果您选择了良好的加密方法,并妥善保护您的加密 key ,并且还保证固件传输后无法读取,并且引导加载程序如果无法成功解密则拒绝固件,那么您已经保证了固件的有效性。除非违反上述假设之一,否则只有拥有加密固件 key 的人才能生成引导加载程序接受的固件。

正如其他人指出的那样,CRC 并不用于防止故意修改,因为您只需将垃圾数据附加到任何文件即可生成所需的 CRC。不过,我仍然建议在固件升级过程的至少两个阶段进行 CRC:

  • 在传输过程中对加密数据进行 CRC 校验,最好是在每个传输的数据包上进行校验,这样您就可以重新传输单个数据包,而无需重新启动整个过程(即对加密数据的 256 字节 block 进行 CRC 校验)
  • 第二个是固件(减去引导加载程序)占用的闪存区域,与成功解密后引导加载程序生成的解密固件的 CRC(或静态、固定 CRC,某些 µC-IDE 支持此内置)相比,以确保没有发生闪存写入错误。通常的做法是将此 CRC 值保护到不属于 CRC 一部分的某个闪存区域,以便引导加载程序可以在每次设备重置时验证应用程序的完整性。

关于encryption - 嵌入式固件的代码签名: Is a CRC enough when the firmware is encrypted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56578405/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com