- ¿Cuál es la mejor manera de proteger el código actualizado en cualquier dispositivo basado en AVR de la ingeniería inversa?
- ¿Cuál es una manera fácil de proporcionar actualizaciones a los usuarios finales para flashear por su cuenta sin revelar el código? (¿Es con un gestor de arranque que descifra una imagen cifrada?)
No me critiquen por promover DRM, estoy a favor de las plataformas abiertas, solo tengo curiosidad por saber cómo funcionaría.
Respuestas:
Primero:
Hay fusibles en el chip que se pueden configurar para evitar que las herramientas externas lean el código del chip. Busque los fusibles de protección en su hoja de datos y / o documentación del programador.
No es perfecto, pero te protege de ataques simples.
Segundo:
No puede descargar el firmware de forma segura. El AVR no puede autoprogramar áreas protegidas:
http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf
Lo mejor que puede hacer es utilizar un lenguaje de token cifrado (como básico o posterior) y tener el intérprete protegido en el chip con un gestor de arranque que pueda programar los tokens cifrados en un área abierta. Cuando se ejecuta, el chip descifraría y ejecutaría las instrucciones sobre la marcha.
fuente
Si es tan importante y le preocupa especialmente que los competidores roben su código, elimine la protección IP en sus segmentos de código. Debería estar investigando esto si va a intentar ganar dinero con un proyecto de todos modos.
Ciertos elementos del código pueden ser patentados (para métodos de procesamiento específicos y algoritmos novedosos) o registrados como diseños industriales (la apariencia, el diseño y la aplicación de su código a un dispositivo). Es posible que desee consultar a un abogado de propiedad intelectual sobre esto.
fuente
Si escribió su propio gestor de arranque que aceptaba datos cifrados a través del puerto serie, los descifraba y los almacenaba en el área de almacenamiento de código, podría tener una actualización segura del firmware del código. Cada dispositivo podría incluso tener su propia clave de descifrado única en su gestor de arranque personalizado.
fuente