Práctica 6: Almacenamiento Remoto
Objetivo: Conocer la forma de almacenar información de un dispositivo de IoT en un servidor.
Forma de trabajo:
Planteamiento del Problema:
- ¿Cómo envíar y almacenar información en la nube de manera segura?
Desarrollo:
- El "PROGRAMA1" y "PROGRAMA2" serán realizados en Python.
- El "PROGRAMA1" se encuentra en el Raspberry Pi.
- El "PROGRAMA1" lee un registro del DBMS.
- Luego se genera el "certificado", aplicando la siguiente fórmula:
- certificado1 = md5 ( firma digital + hora )
- Donde:
- md5: Es una función hash (puede sustituirse por otra que genere cadenas mas grandes).
- firma digital: Es la firma que se había creado y asignado al sensor que estamos usando.
- hora: Es la hora que se tiene almacenado en el registro.
- El "certificado1" nos servirá para autenticar nuestro sensor con el "Servidor".
- Se envía los datos que se leyeron de la base de datos al "Servidor" más el certificado (la firma NUNCA SE ENVIA).
- El "Servidor" recibe los datos (puede ser a través de una página PHP) y los almacena localmente en su DBMS.
- El "PROGRAMA2" que se encuentra en el "Servidor" extrae el "id" del sensor, y con este dato consulta la "Tabla de Firmas de Sensores" para extraer la firma que le corresponde al "id" que se recibió.
- Luego el "PROGRAMA2" genera el "certificado2" utilizando la misma fórmula que el "PROGRAMA1" (que corre en el Raspberry).
- Por último, se comparan ambos certificados, el que se envió ("certificado1") y el que se generó en el "Servidor" ("certificado2"), y si son iguales, nos indica que fueron generados con la misma "firma digital" y por lo tanto son confiables.
- En caso de que no coincidan los certificados, se tendrá que marcar el registro como "no confiable" (agregar un campo de tipo Booleano en la tabla), o puede proceder a borrar el registro de la base de datos del "Servidor".
Generación de un certificado digital usando MD5 (hacer click para hacer mas grande):
(hacer click sobre la imagen para hacer mas grande):
Esquema básico a bloques de un sistema de IoT (Cliente):
Esquema básico a bloques de un sistema de IoT (Cliente - Código):
Material de apoyo para realizar la práctica:
Internet de las Cosas
Reporte del alumno (resultados):
- Transferir la información del Raspberry Pi al Servidor, por medio del "PROGRAMA1" y "PROGRAMA2" en Python, además de una página en PHP en el Servidor para recibir los datos.
FECHA DE ENTREGA LÍMITE:
Portal de Tecnología desarrollado por: Rogelio Ferreira Escutia