代码之家  ›  专栏  ›  技术社区  ›  Oliver

防止修改EEPROM数据

  •  4
  • Oliver  · 技术社区  · 17 年前

    一般来说,我会把一些独特和随机的东西放在只读存储器图像中,然后用它作为种子来加密EEPROM内容,以停止图像修改后的提取和重新编程。

    一个明显的缺陷似乎是,这并没有停止篡改的形式,取代EEPROM外部芯片空白一个…哦,看回到了第一次使用的状态,让我们要求钥匙保存!


    选择组件对我来说不是一个选项,硬件平台已经定义好了。EEPROM是在设备的使用寿命内,随着配置和状态的变化而编程的,因此断开擦除线路也是一个不可行的方法。

    我在寻求可能的解决方案,以防止假造处女(首次运行)状态,因为这将允许功能保存敏感数据和解锁设备。

    我相信一个分组密码(ECB模式)足以保护敏感数据,可能是在顶部!这种方法加上多份副本,一份而不是另一份,应该使它在财政上没有回报,投入金钱和时间来对付这些措施。

    3 回复  |  直到 17 年前
        1
  •  5
  •   Stefan    17 年前

    一些想法:如果通过“防止修改”,你的意思是你可以检测到这种篡改,那么你可以

    1. 在整个EEPROM上生成校验和,仅当校验和正常时才启动应用程序。
    2. 使用提供唯一号码的附加芯片,使用该号码加密EEPROM的内容
    3. 将您的所有信息存储在EEPROM中的多个位置(如果您只想检测更改,则存储两次;如果您想检测和拒绝被篡改的值,则存储三次,并使用“仍然正确”的值)

    但是,如果你想在第一时间防止篡改,你必须使用机械保护-热胶整个芯片,锁定你的印刷电路板外壳,…

        2
  •  3
  •   greyfade    17 年前

    把擦除针浮起来,把整个芯片涂上环氧树脂。使用毕业舞会?

    如果不想修改图像,请使其无法修改。

        3
  •  2
  •   Jason S    17 年前

    如果硬件措施不起作用,并且你坚持使用软件方法,那么读取EEPROM的东西就可以处理。 public-key algorithms ,然后您可以在eeprom中使用公钥签名的数据块(以eeprom数据为例,在其前面放一个包含数据长度的固定块,以及用私钥加密的数据的安全哈希)。

    这需要任何使用EEPROM内容的东西用相应的公钥来验证它(显然不要把它放在同一个EEPROM中)。公钥算法在计算上有点昂贵,因此很难为微控制器证明这种方法的合理性。


    如果你不能阻止人们篡改硬件,但是你可以选择你使用的硬件,你也可以使用一个安全的EEPROM,比如 Maxim DS28CN01 (尽管我必须承认,我讨厌马克西姆,因为他们的零件价格昂贵,交货期长,而且经常是汽化器,直到有足够的人订购他们的零件为止)或者 Atmel's AT88SC series .