这是一个没有明确答案的问题。答案只是基于意见或取决于具体情况。
如果您有一家公司/组织将进行评估或认证,您应该询问他们(编辑澄清:)您的方法是否可行。据我了解安全关键设备的开发标准,您必须记录您考虑了所有可能的风险以及您如何检测或预防可能的故障。
在一个要被认证为符合类似标准的项目中,我们将所有与安全相关的数据和代码放入特定的内存部分,并在离开安全相关功能后通过计算 CRC 来“锁定”安全相关数据部分并检查 CRC在再次进入之前。
此外,我们仅通过检查返回地址来检查从安全相关代码部分调用“锁定”数据的函数。任何对安全相关数据的意外修改都会被检测到,并且设备将进入安全状态。
在我们的案例中,这种方法足以说服负责检查我们软件开发的人员。
编辑(回答评论)
当然,我们确信该解决方案足以满足受影响设备中所述的目的。
这种机制只是设备安全概念的一部分。
此处描述的CRC机制用于保护 RAM 中的安全相关数据免受非安全功能的不必要修改,以确保安全相关功能与非安全功能的独立性。(这与保护闪存中的二进制程序不被修改无关。当然我们也使用ECC闪存和CRC来做到这一点。)
另一个编辑:
我们还定期检查与安全相关的外设寄存器没有被意外修改。
我们在硬件和软件方面还有很多其他的安全措施,但这些与如何在没有 MPU 的情况下证明软件部分的独立性的问题无关。
使用此处描述的技术的设备符合不同的标准,其安全等级约为 SIL 1 和 SIL 2 之间。
当然,每个用户都必须检查此解决方案对于特定设备是否足够。