Asegurar el código en un AVR / Arduino y entregar actualizaciones

9
  1. ¿Cuál es la mejor manera de proteger el código transmitido a cualquier dispositivo basado en AVR de la ingeniería inversa?
  2. ¿Cuál es una forma fácil de proporcionar actualizaciones a los usuarios finales para que se actualicen automáticamente sin revelar el código? (¿Se trata de un cargador de arranque que descifra una imagen encriptada?)

No me llames por promocionar DRM, estoy a favor de las plataformas abiertas. Solo tengo curiosidad de cómo funcionaría esto.

    
pregunta stbtra

3 respuestas

9

Primero:

Hay fusibles en el chip que pueden configurarse para evitar que las herramientas externas lean el código del chip. Busque los fusibles de protección en la hoja de datos y / o en la 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 auto-programar áreas protegidas:

enlace

Lo mejor que podría hacer es usar un lenguaje de token cifrado (como básico, o posterior) y tener el intérprete protegido en el chip con un cargador de arranque que puede programar los tokens cifrados en un área abierta. Cuando se ejecuta, el chip descifra y ejecuta las instrucciones sobre la marcha.

    
respondido por el Adam Davis
3

Si es tan importante y le preocupa especialmente que los competidores le roben su código, elimine la protección de 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 en un dispositivo). Es posible que desee consultar a un abogado de propiedad intelectual sobre este tema.

    
respondido por el Sketchy Fletchy
1

Si escribió su propio cargador de arranque que aceptó datos encriptados a través del puerto serie, los descifró y los almacenó en el área de almacenamiento de códigos, 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 cargador de arranque personalizado.

    
respondido por el AndrewJ

Lea otras preguntas en las etiquetas