Answers:
第一:
可以在芯片上设置保险丝,以防止外部工具从芯片上读取代码。在数据表和/或编程器文档中查找保护保险丝。
它并不完美,但是可以保护您免受简单攻击。
第二:
您无法安全下载固件。AVR无法对保护区进行自我编程:
http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf
您可能要做的最好的事情就是使用加密的令牌语言(例如基本语言或类似语言),并使用引导加载程序将解释器保护在芯片上,该引导加载程序可以将加密的令牌编程到开放区域中。运行时,芯片将即时解密并执行指令。
如果编写自己的引导加载程序,该引导加载程序通过串行端口接受加密的数据,然后解密并将其存储到代码存储区中,则可以进行安全的代码固件更新。每个设备甚至可以在您的自定义引导程序中拥有自己的唯一解密密钥。