保护 AVR/Arduino 上的代码并提供更新

电器工程 Arduino avr 加密 逆向工程
2022-01-24 06:15:46
  1. 保护闪存到任何基于 AVR 的设备上的代码免受逆向工程的最佳方法是什么?
  2. 有什么简单的方法可以在不泄露代码的情况下向最终用户提供更新以自行更新?(是否带有解密加密图像的引导加载程序?)

不要因为宣传 DRM 而抨击我,我支持开放平台——我只是好奇这将如何运作。

3个回答

第一的:

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

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

第二:

您无法安全下载固件。AVR 不能自编程保护区:

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

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

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

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

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