一般情况下,我会通过在ROM映像中放置一些独特且随机的内容并将其用作种子来加密EEPROM内容以停止提取并在映像模式后重新编程。
一个明显的缺陷似乎是,这并没有停止以一个空白的替换EEPROM外部芯片的形式篡改......哦,看起来又回到了第一次使用状态,让我们要求钥匙保存! / p>
选择组件对我来说不是一个选项,硬件平台已经定义。 EEPROM在器件的使用寿命期间被编程为配置和状态变化,因此断开擦除线也是不可行的。
我正在寻求可能的解决方案的意见,以防止假冒(第一次运行)状态的伪造,因为这将允许保存敏感数据和解锁设备的功能。
我确信分组密码(ECB模式)足以保护敏感数据,可能超过顶部!这种方法连同多份副本,腌制一种而不是另一种,应该使得在经济上没有资金和时间来应对这些措施。
答案 0 :(得分:5)
一些想法:如果通过“防止修改”意味着你可以检测到这种篡改,那么你可以
但是如果你想首先防止篡改,你必须使用机械防护装置 - 热胶整个芯片,锁住你的pcb外壳,......
答案 1 :(得分:3)
将擦除引脚和整个芯片的环氧树脂浮在板上?使用PROM?
如果您不想修改图像,则无法修改。
答案 2 :(得分:2)
如果硬件措施已经完成,并且您仍然坚持使用软件方法,并且读取EEPROM的内容可以处理public-key algorithms,那么您可以在EEPROM中使用公钥签名的数据块(获取EEPROM数据,在其前面加上包含数据长度的固定块和使用私钥加密的数据的安全散列。
这要求使用EEPROM内容使用相应的公钥验证它(显然不要将它放在同一个eeprom中)。公钥算法在计算上有点贵,因此对于微控制器来说这种方法有点难度。
如果您无法阻止人们篡改硬件,但您可以选择使用哪种硬件,您也可以使用安全的EEPROM,例如Maxim DS28CN01(虽然我必须承认,我讨厌Maxim因为它们的零件价格昂贵,而且交货时间很长,并且通常是汽化器,直到有足够的人订购它们来制造零件)或Atmel's AT88SC series。