Seguridad en proyecto Nodemcu ESP8266-Firebase

Buenas noches a todos.

Hace unos días he hecho algunas consultas sobre distintos temas para un proyecto que estoy realizando con un NODEMCU ESP8266 y FIREBASE + APPINVENTOR. La realidad es que lo tengo bastante avanzado gracias a ayudas que he recibido en el foro. Agradecerles nuevamente por ello.

En este caso quería consultarles si alguien sabe de algún método para proteger los datos de la conexión a la base de datos de firebase, es decir, como hacer para que si alguien agarra mi NODEMCU, y mira el código pueda entrar libremente a mi base de datos. No me interesa el codigo de funcionamiento, ya que no tiene nada de novedoso y es simple, pero si los datos de conexion (URL de la base de datos, etc)

Una opción creo que seria directamente proteger todo el código, pero por lo que entiendo (al igual que con arduinos) es muy difícil esto. No se si estoy en lo correcto. Habia leido sobre arduinos, pero no sobre estas placas nodemcu.
Y otra seria con la parte de autenticacion de Firebase, pero por mas que lo haga con código secreto, si alguien lee el programa puede ver ese mismo código ingresado alli.

Desde ya agradecería si alguien sabes de algun metodo seguro para lograrlo.

Saludos a todos, y gracias por la ayuda de siempre!!!

Con el esp8266 no es posible. Creo que el esp32 si puede mantener la flash externa cifrada, aunque creo que no en el entorno de ardunio, no estoy seguro.

La única solución que queda es guardar la claves cifradas aunque ante un ataque de ingeniería inversa al código se podrá sacar en claro las claves y usuarios...

Hola Harkonnen.

Desde ya muchas gracias por tu respuesta.

Cuando te refieres a claves cifradas, eso seria? Puedes indicarme algun post aqui, o algun tutorial en alguna pagina externa que pueda orientarme un poco a como hacerlo?

Y cuando dices ingeniería inversa, estamos hablando de algo sofisticado? Realmente no busco estar exento de un ataque por gente experta, ya que no creo poder lograr eso, pero si de cualquiera que pueda conectar el cable usb y leer todos los datos de la base de datos.

Agrego una consulta mas: en caso de cambiar a un ESP32, mantener la flash externa cifrada seria?

Desde ya muchísimas gracias por tu ayuda, y disculpa mi escaso conocimiento en estos temas.

Saludos.

Hola, para esp32 puedes leer aquí, pero no parece que sea un método fácil. Además es para el entorno de programación propio de expressif ESP-IDF.

Para arduino, en general, para cifrar el password y usuario puedes usar cualquier algoritmo de clave simétrica. Clave simétrica es que se cifra y descifra con la misma clave.

Guardaras el password cifrado. Cuando lo vayas a usar con la clave lo descifras y lo usas.
Si alguien coge el código al menos las cadenas no se verán en blanco, dificultando un poco el ataque...
Puedes usar cualquier librería de clave simétrica, busca AES ARDUNIO GITHUB o cualquier otro tipo de cifrado. Por supuesto que la clave tambien estará en el código y de ahí la debilidad de proceder de esta forma.

Saludos

Hola nuevamente Harkonnen!
Gracias por la nueva información!

Intentare meterme un poco en el tema, para ser sincero, no entiendo todavía como es el cifrado, ni que produce. Pero sera cuestión de investigar un poco ahora que se que existe. En los próximos días estaré averiguando y viendo como puedo resolverlo. Enviare novedades en caso de que pueda lograrlo para ayudar a alguien que lo necesite también.

Saludos y nuevamente gracias!!!

Aparte de cifrar el firmware en el dispositivo, también es muy importante proteger la comunicación, para mitigar el riesgo de que con un simple analizador de protocolos puedan interceptar la información mientras el micro se comunica con el servidor, puede ser muy facil y no hay necesidad de manipular el dispositivo, solo conectarlo y ver el trafico de red.

Saludos y éxito.

Me parece que el enfoque esta equivocado.

El nuevo ESP32-S2 (flash encryption) tiene encriptación. Usalo.
Sino usa un micro que la tenga.

El ESP32 tambien lo tolera

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/security/flash-encryption.html

Pero según el foro de esp32 no es posible en el entorno de arduino.

Pienso que se deben cuidar todas las aristas, sobre todo porque lo que quiere proteger son los datos de acceso más que el código fuente del micro, si la comunicación no está protegida, esto se puede vulnerar con otro tipo de ataque externo al micro.

Saludos y éxito :wink:

Estoy con Surbyte, el ESP32-S2 es la única solución viable ahora mismo para entorno arduino. Yo estoy a la espera que me lleguen unos de muestra para empezar a trastear con ellos.