在AVR / Arduino上保护代码并交付更新


9
  1. 保护闪存到任何基于AVR的设备的代码免受逆向工程的最佳方法是什么?
  2. 有什么简单的方法可以向最终用户提供更新,使其自己闪烁而不公开代码?(它是使用引导加载程序来解密加密的映像吗?)

不要因为推广DRM而惹怒我,我赞成开放平台-我只是很好奇这将如何工作。


别。有NO WAY,以完全防止逆向工程的硬件/软件有恶意的人的可能性。Anti-RE措施所做的只是使恢复时间更长。
康纳·沃尔夫,

Answers:


9

第一:

可以在芯片上设置保险丝,以防止外部工具从芯片上读取代码。在数据表和/或编程器文档中查找保护保险丝。

它并不完美,但是可以保护您免受简单攻击。

第二:

您无法安全下载固件。AVR无法对保护区进行自我编程:

http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf

您可能要做的最好的事情就是使用加密的令牌语言(例如基本语言或类似语言),并使用引导加载程序将解释器保护在芯片上,该引导加载程序可以将加密的令牌编程到开放区域中。运行时,芯片将即时解密并执行指令。


3
如果保险丝有点不完善,什么样的吸引力可以绕开呢?

1
@Anonymous-化学蚀刻掉芯片的盖子,并使用电子显微镜,激光和微探针观察,接触硅并编辑硅。成本至少为$ 500美元,但可以比strbra投入设备的任何工作都要便宜。
凯文·维米尔

@KevinVermeer你的意思是500美元吗?在我看来,这将比这贵得多。
NickHalden 2012年

亚当,发生错误,因此我删除了我的评论
hulkingtickets 2013年

3

如果这很重要,并且您特别担心竞争对手窃取您的代码,请对代码段进行IP保护。无论如何,如果您要尝试从项目中赚钱,就应该研究一下。

某些代码元素可以申请专利(用于特定的处理方法和新颖的算法),也可以注册为工业品外观设计(代码在设备上的外观,布局和应用)。您可能希望就此咨询知识产权律师。


1

如果编写自己的引导加载程序,该引导加载程序通过串行端口接受加密的数据,然后解密并将其存储到代码存储区中,则可以进行安全的代码固件更新。每个设备甚至可以在您的自定义引导程序中拥有自己的唯一解密密钥。


1
我认为@Adam Davis的意思是,如果您使用引导加载程序(甚至您编写的引导加载程序),则无法编程锁定受保护的区域。因此,如果您确实编写了自己的加密的引导加载程序,则无法防止读取芯片(问题1)。无论如何,这似乎是我从链接和数据表中得到的。

如果引导加载程序和代码被加密,它将解决第二个问题,如果他使用足够安全的加密,第一个问题将几乎解决。(uC的速度可能是瓶颈)。
Rick_2047 2010年

真正。@Adam Davis在上面建议了一种加密的令牌语言。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.