保护EEPROM数据免遭修改
通常我会通过在ROM映像中放置一些独特随机的东西来解决这个问题,并使用它作为种子来加密EEPROM内容,以在映像模块之后停止提取和重新编程。保护EEPROM数据免遭修改
一个明显的缺陷似乎是,这不会停止以空白的替换EEPROM外部芯片的形式来篡改......哦,看起来回到第一次使用的状态,让我们要求钥匙保存!
选择组件不是我的选择,硬件平台已经定义好了。 EEPROM在器件的生命周期中被编程为配置和状态改变,因此断开擦除线也是不可行的。
我正在寻求有关可能的解决方案的意见,以防止伪造处女(首次运行)状态,因为这将允许功能来保存敏感数据并解锁设备。
我相信一个分组密码(ECB模式)足以保护敏感数据,也许在顶层!这种方法以及多个副本,诋毁一个而不是另一个,应该使它在经济上没有回报地方投入资金和时间来应对这些措施。
的几点思考:如果“确保对修改”你的意思是,你可以检测到这样的篡改,那么你就可以
- 产生在整个EEPROM的校验和,只启动你的应用程序如果校验是确定
- 使用额外的芯片提供一个唯一的号码,使用该号码来加密eeprom的内容
- 将您的所有信息存储在eeprom的多个位置(如果您只想检测到更改,则为两次,如果是三次你想检测和拒绝篡改值,并使用“仍然正确”的值)
但是,如果你想防止在首位篡改,你必须使用机械防护装置 - 热胶整个芯片,锁定您的PCB的住房,...
将擦除引脚和环氧树脂浮在板上?使用PROM?
如果你不想修改图像,使其无法修改。
如果硬件措施都出来了,而且你坚持使用软件方法,而读取EEPROM的东西可以处理public-key algorithms,那么你可以在EEPROM中使用一个公钥签名的数据块(把你的EEPROM数据,在它之前是一个固定块,包含数据的长度以及用私钥加密的数据的安全哈希)。
这需要任何使用EEPROM内容来验证它与相应的公钥(显然不要把它放在同一个eeprom中)。公钥算法在计算上相当昂贵,所以要证明这种方法适用于微控制器有点困难。
如果你不能从硬件篡改阻止别人,但你可以选择你使用的硬件,你也可以使用一个安全的EEPROM,如Maxim DS28CN01(虽然我得承认,我讨厌马克西姆因为它们的零件价格昂贵且交付周期长,并且在有足够的人下订单以制造其零件之前经常是汽化器)或Atmel's AT88SC series。
读作由Randomness`愚弄,你就会知道如何随机你的想法是'random`是:) – dirkgently 2009-02-26 18:28:54
我认为排位赛我的“随机”,但觉得不需要不过看来我应该有。我会看看的建议,我一定要找到一些有趣的事情。但我完全知道什么是随机的,并且在加密RANDOM。 – Oliver 2009-02-26 20:15:21