Seguridad IoT IMPlícita
Electric Imp se ha propuesto solucionar un problema creciente del Internet de las cosas a través de su módulo Imp 005. ¿Cuándo fue la última vez que escuchó algo sobre un ataque informático, una brecha en la seguridad o un robo de datos a gran escala?
Si lee cualquier tipo de prensa informática, probablemente haya sido esta misma mañana. Las repercusiones de una brecha en la seguridad son muy costosas, no solo en términos inmediatos, ya que la empresa tendrá que invertir gran cantidad de recursos para atajar rápidamente el problema y, a continuación, podrían enfrentarse a cuantiosas multas impuestas por las autoridades, sin olvidar algo más difícil de medir: los daños a largo plazo para la reputación de la empresa.
Estos titulares preocupantes salpican la reputación de los proyectos IoT, hasta el punto de que muchos potenciales clientes creen que los dispositivos IoT son brechas de seguridad en potencia. Un recelo hasta cierto punto comprensible: ¿Por qué querría nadie instalar un dispositivo susceptible de ser abducido para formar parte de una red de bots o, peor aún, ofrecer un punto débil de acceso a su red corporativa?
Electric Imp
Este es el área en el que Electric Imp considera que puede marcar la diferencia. A la cabeza de la empresa se encuentra Hugo Fiennes, que dirigió el equipo de hardware de Apple encargado de crear las cuatro primeras generaciones de iPhone antes de pasar a diseñar el termostato Nest. El kit de Electric Imp ya cuenta con el impresionante respaldo de marcas como Eaton, General Electric y Pitney Bowes.
El cambio que Electric Imp considera que puede aportar es en la seguridad de red. Es evidente que han estudiado largo y tendido todas las posibles vías de ataque a las que las aplicaciones de IoT pueden ser vulnerables. A partir de ahí, han desarrollado un enfoque ascendente para anular cada vector de ataque, teniendo en cuenta incluso la desactivación de las interfaces de hardware externas una vez que las claves y el código cifrados se han cargado de fábrica en el chip de forma segura. Confían en que los desarrolladores adopten la arquitectura totalmente integrada y probada de extremo a nube, o edge-to-cloud, de Electric Imp en lugar de pasar meses desarrollando la suya propia o integrando soluciones de varios proveedores para la conectividad.
Módulo Imp005
El módulo imp005-EZ se suministra con:
- Murata Type 1GC SoC Cortex-R4, CPU de 320 MHz hasta 1 MB de RAM para código de aplicación, que equivale a alrededor de 15.000 líneas de código de usuario
- SPI de arranque de 8 MB en placa con 4,5 MB de espacio libre para aplicaciones
Mecanismos de E/S:
- Wi-Fi de doble banda con antena integrada (aprobación FCC/IC, certificación CE)
- 3 UART, 1 SPI, 1 I2C, USB host
- 19 GPIO (I2C multiplexado, SPI)
- Ethernet RMII
Y un circuito Blinkup y cristal de RTC para puesta en funcionamiento.
Placa de evaluación
El imp005-EZ se puede comprar ya montado en la placa de evaluación, lo que proporciona los conectores físicos para esa ingente cantidad de E/S:
- Wi-Fi 802.11abgn de doble banda (2,4 GHz + 5 GHz), antena integrada
- WAN Ethernet mediante conector RJ45
- USB 2.0/1.1 host Low-Speed/Full-Speed
- Conectores compatibles con Arduino Shield (3,3 V)
Además, acceso a varios sensores:
- Temperatura y humedad HTS221 (código RS 136-0755)
- LIS2DH12 Movimiento en tres ejes (rev. 2) (código RS 878-7465)
- ADC MCP3208 conectado a través de SPI (código RS 379-2516)
Y, por supuesto, no podía faltar el LED controlado mediante aplicación:
- LED RGB APA102
Taller
Como botón der muestra de lo que significa desarrollar con un módulo imp005, y para que veamos si podría encajar en nuestras aplicaciones, repasaremos un taller que hice varias semanas atrás con los chicos de Electric Imp.
Hay algunas cosas que necesitaremos antes de continuar.
Equipo necesario
- Ordenador portátil con conectividad Wi-Fi: desde aquí controlaremos el proyecto.
- Teléfono IPhone o Android: para el aprovisionamiento del módulo con la información de inicio de sesión de Wi-Fi local.
- Kit de evaluación Arrow imp005-EZ + cable mini-USB para la alimentación del módulo.
- Punto de acceso Wi-Fi para proporcionar conectividad a Internet; ten en cuenta que no podrás utilizar una red abierta con configuración de página de inicio para conectar el módulo imp.
También necesitaremos:
- Instalar la aplicación BlinkUp en nuestro iPhone o teléfono Android. Para encontrarla, basta con buscar por "Electric Imp" en iTunes o Google Play.
- Crear una cuenta de desarrollador de Electric Imp en https://electricimp.com/docs/gettingstarted/developer/account/
- Crear una cuenta de IBM Bluemix: os mostraré cómo hacerlo más adelante en el artículo.
Lo que estamos tratando de hacer se representa en el siguiente diagrama:
Como puede ver, estamos simulando un sistema de refrigeración "inteligente". El módulo imp005 está configurado para controlar las condiciones de temperatura, humedad e iluminación de nuestro frigorífico, así como generar alertas si estos valores se desvían de los parámetros establecidos. Para ahorrar energía, el dispositivo agrupa en lotes las lecturas de datos para enviarlas de una sola vez, y se desconecta del servidor y utiliza el wi-fi en modo de ahorro de energía cuando no está transmitiendo.
El endpoint para estos datos es Watson, de IBM Bluemix. En este ejemplo, estamos utilizándolo tan solo para fines de visualización de datos, pero en realidad tiene a su alcance todas las posibilidades de los servicios de la nube Bluemix, desde poder enviar alertas a los técnicos de guardia en sus teléfonos móviles hasta agregar sus datos de tiempo de ejecución en cientos de unidades de refrigeración, y cualquier otra cosa que pueda imaginar.
Todo entre el imp005 e IBM Watson se gestiona mediante la arquitectura Electric Imp. Esto incluye:
- Verificación de identidad y alta de dispositivos de forma segura en ImpCloud.
- Establecimiento y gestión de conexión de forma segura.
- Contenedores de dispositivo y aplicaciones de máquina virtual de Cloud Agent.
- Aprovisionamiento de software de nube y dispositivo / Actualizaciones inalámbricas (OTA).
- Gestión, escalabilidad y registro de operaciones y dispositivo.
Cada una de estas funciones es la respuesta de Electric Imp a un posible vector de ataque hacia tu aplicación de IoT, por lo que si adoptas su plataforma, te librarás de tener que hacer por tu cuenta todo este trabajo de seguridad. Así pues, vamos a ver cómo podemos sacar partido de todo esto en la práctica.
Configuración de IBM Watson para IoT
- Crea una cuenta gratuita en https://console.bluemix.net/
- En tu primer inicio de sesión en Bluemix, tienes que crear una "Organización" (Organization) y un "Espacio" (Space)
- En el menú de la barra lateral, selecciona Services->internet of Things (Servicios->Internet de las cosas)
- En la ventana de la plataforma de Internet de las cosas, haz clic en el botón Get Started (Comenzar)
- En la siguiente ventana, haz clic en el botón "Create" (Crear)
- En la ventana siguiente a esta, haz clic en el botón "Launch" (Iniciar)
- Cuando llegues a la ventana del Dashboard (Panel de control), utiliza la barra lateral para seleccionar "Apps" (Aplicaciones)
- En la ventana de aplicaciones, toma nota de tu ID (identificador) (en la esquina superior derecha, bajo "Account" (Cuenta))
- Selecciona el botón "+ Generate API Key" (+ Generar clave de API) y anota (o copia y pega en el Bloc de notas) la clave de API (API Key) y el pase de autenticación (Authentication Token)
- Haz clic en el botón "Generate" (Generar)
- Copia tu clave, el pase y el ID a los ajustes API_Key, Auth_Token y Org_ID en la el código Electric Imp RefrigerationMonitor.agent code (cerca del final del archivo). Más adelante muestro exactamente cómo hacerlo en "Dispositivo y Agente Electric Imp "
Aprovisionamiento del módulo Imp
O lo que es lo mismo: conectar tu Electric Imp a Internet. Antes de que puedas hacer nada con el módulo, deberás proporcionarle la información necesaria para iniciar sesión en tu conexión wi-fi. Esto se realiza a través de la aplicación Electric Imp BlinkUp, que ya ya deberías de tener cargada en tu smartphone.
- Inicia la aplicación BlinkUp en tu dispositivo
- En la aplicación, inicia sesión en tu cuenta de desarrollador de Electric Imp
- Introduce tus credenciales de WIFI
- Sigue las instrucciones de la aplicación para aplicar BlinkUp a tu dispositivo
En este vídeo también puedes ver cómo se realiza el BlinkUp:
Cuando el BlinkUp se realiza correctamente, el LED del módulo Imp parpadeará en verde y la app te mostrará la ID única del dispositivo, así:
Un LED rojo parpadeando rápidamente indica que el dispositivo no ha podido leer la transmisión BlinkUp y tendremos que probar de nuevo, acercando más el teléfono al módulo (por ejemplo).
Dispositivo y agente Electric Imp
Puedes encontrar el código fuente completo de este ejemplo en:
Hay dos archivos: uno para el módulo y otro para el agente ImpCloud. Ambos deben copiarse y pegarse en las ventanas correspondientes de la IDE:
- RefrigeratorMonitor.agent.nut -> Ventana de agente de IDE (a la izquierda)
- RefrigeratorMonitor.device.nut -> Ventana del dispositivo de IDE (a la derecha)
El código está escrito en Squirrel, que es otro derivado de C/C++ similar a JavaScript. Se trata de un lenguaje imperativo de alto nivel orientado a objetos con recolección de basura. También hay recursos de Electric Imp para Squirrel aquí. El código de aplicación se ejecuta en una máquina virtual, tanto en el módulo como en la ImpCloud. Esta es otra forma de reducir la superficie de ataque disponible para los hackers.
No obstante, para ejecutar este ejemplo no tendremos que aprender nada de Squirrel. Todo lo que necesitamos ahora es acordarnos de copiar la información de autenticación de Watson de IoT localizada en la parte inferior de Agent Code, resaltada en la imagen anterior.
Una vez agregada esta información, haz clic en la opción "Build & Run" (Compilar y ejecutar). En el registro, deberías ver algo parecido a esto:
[Dispositivo] sending readings ([Dispositivo] enviando lecturas)
[Agente] Watson send succesful (Envío de Agente Watson correcto)
Si ves algo como: "Watson send error: Error: Invalid API Key or Authentication Method" (Error de envío de Watson: Error: clave de API o método de autenticación no válidos)
Tendrás que verificar los valores de clave, pase e ID de organización. Si el problema persiste, espera unos minutos e inténtalo de nuevo, ya que a veces Watson necesita tiempo para que se propague la autenticación interna.
Creación de vistas de datos de Watson
Ahora vamos a crear nuestras vistosas gráficas (y unos medidores, si así lo deseamos) en nuestro entorno de Watson.
En el menú de la barra lateral de la pantalla Dashboard (Panel de control), selecciona Boards (Placas). A continuación, haz clic en el botón "+ Create New Board" (+ Crear nueva placa).
Pon nombre (Name) a la placa (por ejemplo, Refrigeration Monitor (Monitor de refrigeración)) y una descripción (Description) (opcional). A continuación, haz clic en Next (Siguiente) y en Submit (Enviar). Ahora, en la ventana Dashboard (Panel de control), haz clic en la placa que acabas de crear en la sección Your Boards (Tus placas).
Para crear nuestra gráfica de línea (Line Chart) de temperatura, haz clic en el tipo de tarjeta "Line Chart". A continuación:
- Selecciona el dispositivo Arrow_Imp005-EZ y haz clic en Next (Siguiente).
- Haz clic en + Connect new data set (+ Conectar nuevo conjunto de datos).
- Como evento (Event), selecciona RefrigerationMonitor.
- Como propiedad (Property), selecciona data.0.temperature.
- Como tipo (Type), selecciona "Number" (Número). Haz clic en "Next" (Siguiente).
- Selecciona ajustes "L". Haz clic en "Next" (Siguiente).
- Añade un título (Title) y selecciona "Color Scheme" (Esquema de color). Haz clic en "Submit" (Enviar).
Repite este proceso para una Gráfica de humedad relativa (Humidity Line Chart). De forma similar, puedes crear una Tarjeta de valores (Value Card) para una alarma de puerta abierta ("Open Door Alert") seleccionando los datos.0.doorOpen como origen de datos. Para un valor de alerta de temperatura de la tarjeta de datos (Temperature Alert Value Card), selecciona data.0.tempAlert como origen de datos.
Cuando hayas terminado, los datos de RefrigerationMonitor deberían empezar a mostrarse automáticamente en el panel.
Reflexiones finales
He disfrutado con el módulo Imp 005. También me gustó lo mucho que Electric Imp se ha preocupado en potenciar la seguridad de su arquitectura de IoT. Se trata de un gran paso en la dirección correcta si el IoT va a convertirse en algo tan omnipresente como vaticinan los profetas de la tecnología. Por supuesto, la solución de Electric Imp no se puede aplicar a todas y cada una de las aplicaciones, pero en muchas situaciones, es muy valioso poder transferir todo lo relativo a la seguridad y aspectos como las actualizaciones OTA a alguien que está especializado en ese campo, y que sabe muy bien lo que se hace.
Redstone 3 de octubre de 2017 09:05
Mark finalizó su licenciatura en ingeniería electrónica en 1991, y se dedicó a trabajar en el desarrollo de aplicaciones de procesamiento de señal digital en tiempo real, para dedicarse posteriormente al marketing técnico.