This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:由于 ECC、OTP 可互操作

Guru**** 2573695 points
Other Parts Discussed in Thread: TMS570LC4357

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/876394/tms570lc4357-otp-mutability-due-to-ecc

器件型号:TMS570LC4357

我正在使用 TMS570LC4357客户 OTP 闪存尝试创建安全的永久布尔值。 也就是说、开关可以翻转一次、永远不会翻转。 但是、以下因素使这一工作具有挑战性:

  • 此器件上的所有 OTP 闪存似乎都是 ECC 闪存
  • 无法 在此 型号 MCU 上禁用 ECC 校正
  • 闪存 API 允许我将 ECC 字节中的任何1清零

我的印象是、具有任意代码执行的攻击者可以通过对 ECC 位进行零操作来取消对某个数据位的零操作。 我在测试中确认了这一点。 这表示我们预期设计的潜在安全漏洞。

是否有有关 ECC 算法的文档? 看到这些方程将会很有洞察力。  

我当前的权变措施涉及对64位数据及其对应的 ECC 字节进行零操作、这样最终结果既是永久性的、也是确定性的(即使错误校正返回错误数据、也会始终以不可改变的方式出现错误)。 然后、算法将分析这些64位数据和/或8位 ECC 并返回布尔值、以解决错误校正问题并模拟我们的永久开关。 我想我可以检查 ECC 字节是否为0 (假设 错误更正逻辑 本身不会更正错误代码), 或者,我可以计算数据中的高位数并检查其是否低于某个阈值(假设错误校正逻辑只能更正有限的位数)。  

我想知道我是否正确地解释了这种情况,以及 TI 是否有更好的建议来解决这一问题。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    ECC 根据修改后的汉明码进行编码。 TRM (SPNU563)中的表7-1说明了如何针对包括29个地址位[31:3]的64位数据执行八位 ECC。 组内单个地址线的故障将导致总线主控上的不可纠正的错误。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢! 该文件具有深刻的见解。 我将使用具有额外缓解措施的 ECC。