Protección de firmware en controladores AVR y PIC


23

¿Alguien puede extraer el archivo HEX que grabo en un microcontrolador que les proporciono?

Si eso es posible, ¿cómo puede alguien asegurarse de que su código esté protegido en sistemas integrados? En el caso de los microcontroladores PIC y AVR, ¿cómo se puede proteger su firmware para que no se reproduzca?



1
En el caso n. ° 1, parece sugerir que proporcione el archivo hexadecimal a sus clientes, en ese caso pueden escribirlo en varios dispositivos clonados, sin necesidad real de descompilar el código, aunque es posible. En el caso de un dispositivo bloqueado (# 2), generalmente es una cuestión de qué tan determinados están a obtener el código (en otras palabras, cuánto están dispuestos a gastar), pero generalmente es posible.
alexan_e

1
solía ser dos años, pero la protección en estos días tiende a ser derrotada en un día o dos en promedio para dispositivos populares. básicamente, una vez que alguien ha decidido que vale la pena hacerlo. Si realmente desea la seguridad que necesita para entrar en el negocio de los chips, no obtendrá ninguno con piezas comerciales disponibles.
old_timer

Respuestas:


33

La mayoría de los microcontroladores en estos días tienen métodos específicos de parte o del fabricante para proteger el código de firmware incorporado. Esto generalmente se realiza bloqueando los circuitos que normalmente permiten leer la memoria de código. (Deberá buscar detalles específicos de la pieza en la hoja de datos o en el sitio web del fabricante en las notas de aplicación correspondientes).

Una vez bloqueado, no es posible leer la memoria del código utilizando técnicas normales. Esto proporciona un nivel razonable de protección para evitar que la mayoría de los hackers vean el código de la máquina para su aplicación integrada.

En la actualidad, muchos dispositivos MCU tienen memoria FLASH integrada para almacenar el código del programa. Un programa previamente almacenado y protegido almacenado en FLASH generalmente se puede reemplazar con un nuevo código, pero se necesita una operación de borrado de FLASH de chip completo para desbloquear el mecanismo de protección. Una vez borrada, la pieza funcionará como lo hizo antes del bloqueo de protección original. Si se carga un nuevo programa, generalmente es posible volver a bloquear la pieza para proteger el código de máquina recién cargado.

Cualquier discusión sobre la protección de código en microcontroladores no estaría completa sin mencionar que generalmente no hay garantía de que ningún esquema de protección ofrecido por el fabricante de la pieza sea infalible. Los fabricantes incluso declararán que los sistemas de protección no son 100% infalibles. Una de las razones de esto es que hay toda una industria del mercado negro donde, por una tarifa, los hackers diligentes leerán el código de una parte protegida para cualquiera que quiera pagar. Han ideado varios esquemas que permiten leer el código de las ROM o FLASH en microcontroladores protegidos. Algunos de estos esquemas son increíblemente inteligentes, pero funcionan para tener más éxito en algunas familias que en otras. Así que tenga en cuenta este hecho y luego intente proteger su programa de miradas indiscretas.

Una vez que alguien tiene en sus manos la imagen binaria del código de la máquina que ha sido leída de un microcontrolador, ya sea que se trate de un microcontrolador protegido o no, puede procesar el código de la máquina a través de una herramienta llamada desensamblador. Esto convertirá los datos binarios nuevamente en código de lenguaje ensamblador que se puede estudiar para tratar de aprender cómo funcionan los algoritmos de su programa. Hacer un desmontaje preciso del código de la máquina es un trabajo minucioso que puede requerir grandes cantidades de trabajo. Al final, el proceso puede conducir al código del ensamblador como lo describí. Si su programa fue escrito en algún lenguaje de alto nivel como C, C ++ o Basic, el código de ensamblaje solo representará el resultado compilado y vinculado de su programa. Por lo general, no es posible realizar ingeniería inversa del código robado hasta el nivel de lenguaje de alto nivel.

Lo que esto significa es que en realidad hay un beneficio al escribir el firmware de su aplicación integrada en un lenguaje de alto nivel. Proporciona otra capa que dificulta que su programa tenga ingeniería inversa completa. Se puede obtener un beneficio aún mayor al utilizar el estado de la técnica más avanzado en la optimización de compiladores para compilar la aplicación incrustada porque los optimizadores de rendimiento más altos pueden literalmente convertir el programa en un enorme recipiente de espagueti lleno de docenas de llamadas a subrutinas cortas que son muy difíciles descifrar en un desensamblador.

Los desarrolladores integrados más experimentados le dirán que siga adelante y use cualquier esquema de protección que se ofrece en el MCU en su aplicación ... pero que no dependa de él hasta el final del camino para su producto. Le dirán que la mejor manera de mantenerse a la vanguardia de la competencia es actualizar constantemente su producto para que las versiones anteriores estén desactualizadas y no sean interesantes cuando los piratas informáticos hayan clonado su código. Cambie el código, agregue nuevas funciones, gire las placas de su PC de vez en cuando para intercambiar todas sus E / S y cualquier otra cosa que pueda pensar. De esta manera puedes ganar la carrera cada vez.


Muchas gracias @Michael Karas Esa fue una respuesta completa
Rookie91

12

Creo que la respuesta de Michael es suficiente para esta pregunta, pero agrego estos dos enlaces: pirateando el PIC 18F1320 y todo lo que hacen, ¡podemos romper! Estos dos fueron muy interesantes para mí.


El EE diligente debe estudiar ese último enlace e investigar / comparar / seleccionar los dispositivos que faltan en la lista. La complejidad siempre es más disuasoria, como agregar un DS3641 o ATSHA204 . Aunque ninguna seguridad adicional será 100% irrompible, la complejidad adicional podría hacer que no valga la pena.
rdtsc
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.