Llevo una semana buscando sobre esto pero no he encontrado absolutamente nada. Estoy interesado en poder añadir una contraseña a cualquier Arduino para que no pueda ser re-programado sin la introducción de una contraseña, pero no se como o si es posible.
Seguramente es posible, modificando el bootloader para que sólo acepte una reprogramación con una contraseña. Sin embargo, esto sólo funcionaría cuando se reprograma por medio de USB, no por las patillas que tiene para reprogramar (las cuales, por cierto, hay que usar para poder cambiar el botloader). Sin embargo, hacer esto implicaría cambiar también el programa de la computadora que reprograma, que es parte del IDE de arduino, cosa que es más compleja. Caso contrario nunca se podría reprogramar por USB (con o sin contraseña)
Sólo estoy especulando. En realidad no sé si es posible como digo, nunca lo intenté.
Pero por otro lado: ¿Cuál es el objetivo de esto?
Si se tiene acceso para reprogramar, igual se puede hacer cualquier otra cosa para sabotear su función, aunque no se posea una contraseña.
Entiendo que al ser un sistema Open Source no permita esto pero mi idea la oriento a la seguridad, me explico. Si en un ejemplo de sistema domótico, sea lo que sea, todo actúa por medio del puerto USB y alguien consigue acceder a la interfaz de arduino por ahí y cambiar el código, para sus intereses, podría dar problemas de seguridad graves.
El sistema domótico es solo un ejemplo, pero si algún proyecto importante puede ser vulnerado por medio de su puerto USB es un problema. El uso de una contraseña es el método más sencillo de añadir seguridad a un proyecto, pero como desconozco si es posible. ¿Alguna otra idea/forma de añadir seguridad a un proyecto el cual usa el puerto USB para funcionar?
Tu idea obviamente apunta a un equipo comercial. Porque no aprovechas las ventajas que te dan algunos dispositivos como por ejemplo los DALLAS con sus ID MAC. Solo lo consultas y lo guardas en la EEPROM y ese equipo funcioinará solo para ese sensor.
Claro que no siempre usaras Sensores con MAC pero si en tu sistema domótico tienes algun dispositivo WIFI, entonces tendrá MAC y ahi tienes tu respuesta simple.
Solo tendrias que pasar cada equpo por un sketch que lea la mac y la guarde en la eeprom y el resto sería similar.
Se comprende la idea? No tienes nada que alterar y todo funcionaría bien.
Cambiar el bootloader y el IDE no es problema. EL IDE es open source asi que su código puede recompilarse y agregar lo que dices.
El bootloader tmb asi que la suma de ambos es factible.
EL tema es el que detallo antes. Tiene que pedir autorización a Arduino.cc para hacer lo que pretendes desde el punto de vista comercial. Para aprender puedes hacer lo que gustes.
La explicación de ejemplo con el sistema domótico era simplemente eso, un ejemplo. Mi proyecto envía datos por el puerto USB mediante software hacia la placa arduino, la cual después ejecuta el código correspondiente. No hay sensores ni nada, simplemente ejecuta el código y manda una simple señal digital por las salidas del Arduino.
Implantar un sistema de seguridad anti re-programado como el que planteo es solamente un añadido al proyecto, ya sea por software o hardware, pero desconozco totalmente como podría hacerse.
El punto de vista comercial no lo había planteado por que es un proyecto de fin de curso, pero está bien saber las legalidades necesarias. Gracias Surbyte.
Para ser más claro, el proyecto se basa en un sistema de disparo pirotécnico el cual sincroniza la música con el encendido de los artefactos pirotécnicos, algo que ya existe, pero a nivel profesional.
Aun así, si alguno conoce alguna manera de implantar algún sistema de seguridad como el que pregunto sería de gran ayuda.
Para mi es mucho mas fácil y menos trabajoso usar esto. DS2401
Te instala un ID de 64 bits único.
Lo lees, lo guardas en EEPROM lo comparas si quieres en varias partes del código para asegurarte que no te lo plaguien facilmente y listo. Asunto terminado. Simple y muy fácil.