我正在为嵌入式系统(微控制器)编写固件。固件可以由引导加载程序更新(也是由我编写的)。
现在有一个要求采取措施,以防止操纵固件,所以系统必须执行下载的固件,如果它有某种有效的签名。
固件文件加密了。它被引导加载器解密(在微控制器中),然后被编程到闪存中。
由于固件是加密的,在我看来,一个简单的CRC检查闪存内容应该足以证明固件的有效性。但我不是网络安全专家所以..。我需要更多吗?
我假设加密足够强,闪存无法读出。
发布于 2019-06-13 14:23:55
由于固件是加密的,在我看来,一个简单的CRC检查闪存内容应该足以证明固件的有效性。但我不是网络安全专家所以..。我需要更多吗?
如果您选择了一种健全的加密方法,并且正确地保护您的加密密钥,并且您还保证固件在传输之后不能被读取,并且引导加载器拒绝固件,如果它不能成功地解密它,那么您已经保证了固件的有效性。除非违反上述假设之一,否则只有拥有加密固件的密钥的人才能生成将被引导加载程序接受的固件。
正如其他人所指出的,CRC不是用来防止故意修改的,因为您只需将垃圾数据附加到任何文件中以生成所需的CRC。但是,我仍然建议至少在固件升级过程的两个阶段设置一个CRC:
https://stackoverflow.com/questions/56578405
复制相似问题