Seguridad IoT: tecnología inalámbrica Z-Wave

A menudo nos asaltan dudas sobre si es apropiado o seguro implementar un sistema de alarma implementado con tecnología Z-Wave, y más aún, si alguien podría, por ejemplo, encendernos una luz o abrir una electroválvula de riego controlada por un dispositivo Z-Wave simplemente con un emisor de radio. Vamos a intentar explicar someramente los mecanismos de seguridad que implementa el protocolo Z-Wave sin entrar demasiado en detalle. Pero antes…

Nociones de seguridad IoT

Vivimos en un mundo en el que a veces somos sobresaltados por noticias relacionadas con la seguridad IoT y de las Tecnologías de la Información (TI) en general. Nos estamos refiriendo a los temidos Virus, Phising, Worms, Troyanos, y en general todo software clasificado como Malware o Hackers, Botnets, Spammers y demás actores de nombres anglosajones inentendibles que campan por un ecosistema donde cada vez se antoja más peligroso moverse, pero que se nos impone como obligatorio si no queremos descolgarnos de la tecnología. ¿Y es en este mundo aparentemente peligroso donde queremos conectar cámaras de video, frigoríficos, termostatos o dispositivos que abran puertas o persianas?. Bien, no seamos alarmistas y vamos a ver qué riesgos entraña el usar dispositivos con tecnología Z-Wave. Pero antes vamos a describir un escenario doméstico típico en cuanto a telecomunicaciones se refiere.

 

Escenario

Antiguamente los domicilios se conectaban a Internet con un ordenador de sobremesa usando un módem y la línea telefónica. No estaba permanentemente conectado, porque no existía la tarifa plana, sino que te facturaban por tiempo de conexión. Eran tiempos en el que los virus informáticos se transferían mediante disquetes. Pero llegó el ADSL y la tarifa plana y con ello el router, de tal forma que ya teníamos nuestra casa permanentemente conectada a Internet, aunque al principio sólo fuera el router y el pc de sobremesa esporádicamente. Posteriormente se popularizó el portátil, y el WIFI para más tarde entrar en la red los móviles y tabletas. Y desde este momento empezamos a hablar de una red dentro de nuestra casa donde poco a poco han ido incorporándose más y más dispositivos como televisiones, videoporteros, cámaras o incluso aspiradoras. Normalmente el punto de conexión a la red en un entorno doméstico es el router, bien por alguna conexión física cableada o bien inalámbricamente mediante WIFI. Por lo tanto el router doméstico por lo general maneja tres redes que suelen denominarse de la siguiente manera:

  • WAN (Wide Area Network) – Es el acceso a Internet. La operadora, nos asigna una dirección IP pública (aunque esto está cambiando gracias a IPv6), el router es el único dispositivo accesible desde Internet.
  • LAN (Local Area Network) – Es la red de nuestro domicilio. Generalmente configuramos una red IP privada y el router por DHCP asigna direcciones a los dispositivos que se van conectando. Normalmente los dispositivos conectados a nuestra red lógica no son accesibles desde Internet y el router implementa un mecanismo llamado NAT para que puedan acceder a Internet. Pero para que puedan acceder a estos dispositivos desde Internet hay que hacer una configuración especial en el router, popularmente conocida como mapeo de puertos, por lo que los dispositivos detrás del router tienen cierto grado de protección.
  • WLAN (Wireless LAN) – Es la red WIFI y generalmente forma parte, a nivel lógico, de la LAN de tal forma que los equipos conectados a la LAN y a la WLAN se pueden ver entre sí. Virtualmente están en la LAN y se aplica el punto anterior.

Descrito este escenario, está claro que para que un intruso acceda a nuestra red, hay que pasar por el router. Por lo tanto el router es un elemento de vital importancia para proteger la seguridad de nuestra red, bien para que no entre un intruso desde Internet o que algún vecino o visitante se conecte a nuestra WLAN. De hecho los routers modernos suelen implementar un Firewall e incluso un IPS (Sistema de Prevención de Intrusiones por sus siglas en inglés) para además dotar de mayor seguridad al sistema.

Por lo tanto si se encontrase alguna vulnerabilidad en el router, podrían entrar a nuestra red. Posteriormente para acceder a alguno de nuestros dispositivos, como puede ser nuestro ordenador personal, tendría que vulnerar también la seguridad del equipo. Por lo tanto tenemos dos barreras de seguridad.

  • Seguridad Perimetral – En este caso implementada en el router.
  • Seguridad del Host – Cada dispositivo también tiene sus mecanismos de seguridad.

Nuestro controlador domótico Z-Wave por tanto estará conectado a nuestra red LAN e independientemente de la red Z-Wave debe implementar también algún tipo de seguridad en el Host.

Seguridad del Controlador Z-Wave

Conectamos el controlador Z-Wave a nuestra red doméstica para que pueda acceder a Internet de tal forma que así podamos manejarlo desde el móvil cuando estamos fuera de casa. Cuando hablábamos en el apartado anterior de la red LAN decíamos que desde Internet no se podía conectar a nuestros dispositivos. ¿Cómo sucede entonces?. ¿Debemos mapear puertos para poder acceder a nuestro controlador Z-Wave desde Internet?.

No, no debemos mapear puertos. Los fabricantes de controladores como Fibaro (HC2/HCL), eedomus, Vera (Edge/Plus), Zipato (Zipabox/Zipatile) ponen un servicio en Internet al que se conecta el controlador, y posteriormente la App del smartphone o la aplicación Web remota. Por lo tanto hay un servicio en Internet gestionado por el fabricante del controlador que facilita la administración remota. Pero en algunos de los controladores anteriores se puede deshabilitar el acceso remoto y acceder sólo localmente. Estas conexiones están cifradas y usan tecnologías de seguridad cuya efectividad está ampliamente probada y suele ser muy similar a la que emplean las aplicaciones que cualquiera de nosotros usamos cuando conectamos a nuestros bancos.

Apuntes sobre Seguridad en Comunicaciones

Cuando comunicamos mensajes de forma segura hay que garantizar los siguientes aspectos:

  • Confidencialidad. Si se intercepta el mensaje no pueda ser leido.
  • Autenticación. Identificar de forma unívoca la entidad con la que se intercambia el mensaje.
  • Integridad. Garantizar que el mensaje no ha sido manipulado durante la transmisión.

Existen dos mecanismos para garantizar estos tres aspectos en las comunicaciones: firma y encriptación.

  • Firma. Son algoritmos que al aplicarlo a un mensaje, genera una firma digital (conjunto de bytes), de la misma longitud sea cual sea el mensaje de entrada y que no tiene ningún sentido ni se puede obtener el mensaje original a partir de esa firma. Lo que sí que nos garantiza es que si cambiamos un sólo bit del mensaje original y le aplicamos el mismo algoritmo la firma cambia por completo y que hay muy poca probabilidad de encontrar un mensaje original similar que genere la misma firma. Para comprobar la firma aplico el mismo algoritmo al mensaje y tiene que salir la misma firma. Ejemplos de estos algoritmos son MD5, SHA1 o SHA256.
  • Encriptación o cifrado. Mediante un algoritmo conseguimos modificar el mensaje de tal forma que sólo pueda devolverlo a su estado original el que conozca la clave de descifrado. Existen dos tipos: Cifrado Simétrico y Cifrado Asimétrico.
    • Cifrado Simétrico. La misma clave sirve para cifrar o descifrar. Algoritmos de cifrado de este tipo son DES, 3DES, Blowfish, AES128, AES256,etc. El problema reside en que las dos partes deben tener la misma clave y se debe garantizar que la clave se transmite entre las dos partes sin que ésta sea comprometida.
    • Cifrado Asimétrico. En una comunicación entre dos, cada parte genera dos claves. Lo que se cifra con una clave se descifra con la otra clave. A la que guarda cada parte en secreto se le llama clave privada y la que se transfiere por la red, pública y puede ser conocida por cualquiera. Típicos algoritmos asimétricos son RSA o ECC. Estos algoritmos son más costosos computacionalmente que el cifrado simétrico por lo que generalmente se usa cifrado asimétrico para intercambiar la clave simétrica de forma segura y en el flujo de la comunicación se utiliza cifrado simétrico mucho más rápido. Este proceso lo veremos a continuación.

En cifrado asimétrico existe una clave pública que hay que enviar a la parte con la que queremos comunicarnos. Pero, alguien puede interceptar el mensaje y dar el cambiazo. ¿Cómo puedo confiar en que la clave pública que me llega pertenece realmente a la parte con quien quiero hablar?. Evidentemente si alguien en quien confío me garantiza que esa clave realmente pertenece a la otra parte. Este mecanismo se articula mediante certficados y autoridades certificadoras en las que confío.

  • Certificado. Es una clave pública firmada por una Autoridad Certificadora (CA). Además lleva más datos firmados, entre otros una fecha de caducidad, un dato identificativo (CN) como el DNI o el nombre de un host como pueda ser blog.domoticalia.es.
  • Autoridad Certificadora. Es un ente en quien confiamos, como por ejemplo en España la Fábrica Nacional de la Moneda y Timbre. Informáticamente hablando y muy por encima, es un certficado autofirmado o dicho de otra manera, es la clave pública (con otros datos) y adjunta va la firma cifrada por la privada. La privada no se transfiere pero sí podemos desencriptar la firma con la pública, que va en el certificado, y posteriormente comprobar la firma. Estas autoridades certificadoras (certificados de autoridades certificadoras) vienen instaladas en nuestros sistemas y confiaremos en certficados (claves públicas) siempre y cuando vengan firmados por una CA en la que confiemos. Ni que decir tiene que es de vital importancia no instalar CA’s en las que no confiemos.

Como dijimos anteriormente cuando implementamos este tipo de seguridad utilizamos algoritmos de clave asimétrica para intercambiar una clave simétrica, de tal forma que el flujo de datos va cifrado por un algoritmo de cifrado de clave simétrica mucho más eficiente. Como protocolo de intercambio de claves simétricas se suele utilizar el algoritmo de Diffie-Hellman o la variante ECDH (Eliptive Curves Diffie-Hellman) que no describiremos para no extendernos en exceso.

Tanto en los algoritmos de clave simétrica como de clave asimétrica su fortaleza radica en la imposibilidad de descubrir una clave secreta. Pero por fuerza bruta, es decir, probando todas las combinaciones posibles de la clave secreta, es posible desencriptar los mensajes. Pero estos ataques, con la tecnología actual y empleando Super Ordenadores puede llegar a conseguirse empleando gran cantidad de tiempo que incluso podrían llegar a contabilizarse por siglos.

Seguridad IoT en el Protocolo Z-Wave

Las redes PAN (Personal Area Network) como es el caso de las redes Z-Wave, también deben implementar mecanismos de seguridad. Las primeras versiones del protocolo apenas implementaban mecanismos de seguridad y era relativamente sencillo vulnerar tanto la confidencialidad, la autenticación como la integridad. Pero a medida que se han ido desarrollando versiones, la seguridad se ha convertido en uno de los ejes más importantes de la evolución del protocolo. Al ser un protocolo inalámbrico no hace falta tener acceso físico sino que con un emisor y receptor de radio adecuado podremos tener acceso a la red si dicha red no implementa ningún tipo de seguridad. Por eso, en el protocolo Z-Wave, la seguridad es un aspecto crítico.

Los principales ataques a los que debe enfrentarse el protocolo Z-Wave son los siguientes:

  • Jamming o Flooding. El atacante intenta que el nodo no pueda comunicarse inyectando tráfico y saturando la red. Estos ataques los controladores Z-Wave son capaces de detectarlos en cuestión de minutos desde que se inicia el ataque dado que notan la ausencia de comunicación regular o señales de Heartbeat con el nodo.
  • Rogue Node. En este caso un dispositivo ya introducido en la red puede introducir inadvertidamente al atacante en la red y posteriormente ir capturando claves de ese nodo. Para evitar que un atacante se introduzca en la red los controladores suelen emplear autenticación OOB (Out Of Band).
  • Replicación de paquetes. Un atacante puede usar un sniffer para capturar paquetes y luego posteriormente introducirlos (transmitirlos) en la red de nuevo. Para evitarlo no sólo se encriptan los comandos Z-Wave, sino que además se evita con marcas de tiempo que puedan ser usados posteriormente.

Seguridad Avanzada Z-Wave S2

Actualmente para que un dispositivo reciba la certificación Z-Wave es obligatorio que todos los dispositivos implementen el Framework de Seguridad Avanzada Z-Wave S2. Este sistema provee a la tecnología Z-Wave nuevos niveles de impenetrabilidad.

Este macanismo está basado en tres clases de seguridad cada una con una clave de red distinta. Cada una de estas clases dictan la manera en la que un nodo es incluido en la red y por tanto su funcionamiento posterior.

  • S2 Access Control. Es la clase más segura entendida para incluir dispositivos como seguros de apertura de puerta o aperturas de garaje.
  • S2 Authenticated. Está pensada para dispositivos comunes como sensores o interruptores de luz.
  • S2 Unauthenticated. Es la menos segura y está pensada para dispositivos tan sencillos que no sean capaces de implementar un sistema de autenticación mínimo cuando se unen a la red Z-Wave. Un ejemplo podría ser un llavero que controla un par de lamparas en una casa de campo.
  • S0 compatible. Por último hay una clave para compatibilidad con dispositivos antiguos que no implementen S2. Los nodos S2 transportan entre ellos la clave S0 como “S2 Unauthenticated”; usando la clave ECDH para el intercambio de claves en lugar del intercambio de claves S0.

Tanto S0 como las clases S2 usan AES-128 como algoritmo de encriptación. AES-128 es considerado algoritmo de encriptación suficientemente seguro para información clasificada, el nivel inferior a información secreta, por el Gobierno de Estados Unidos. Combinada con la autenticación S2 y S0 compatible, no se conoce forma de romper este sistema de protección, incluso con la ayuda de Super Ordenadores. Además los nodos siempre aceptarán sólo los comandos de dispositivos que usen la clase S2 más segura.

Profundizando un poco más en su funcionamiento desde el punto de vista de la seguridad, destacamos los siguientes puntos.

  • Autenticación de dispositivos. En un entorno inalámbrico existe el riesgo de que un atacante introduzca un dispositivo de forma fraudulenta en la red en el momento en el que el instalador introduce un dispositivo autorizado. La especificación S2, para los dos métodos más seguros y siempre y cuando la interfaz del usuario lo permita, permitirá autenticar mediante un código DSK (Device Specific Key) que debe introducir el instalador manualmente o por código QR en el controlador. Este código son los primeros 16 bytes de la clave pública ECDH del dispositivo que el instalador está uniendo a la red.
  • Intercambio de claves. Para el intercambio de claves entre dispositivos se utiliza una optimización del algoritmo de Diffie-Hellman dado que usando Curvas Elípticas reducimos la longitud de las claves. Pero ECDH (Eliptic Curves Diffie-Hellman) generó ciertas dudas y la industria se ha movido a Curve25519 que además requiere menos cálculo computacional. Los nodos S2 usan una clave compartida ECDH con Curva25519 para derivar clave temporal de enlace. La clave temporal permite que un controlador que está incluyendo un nodo le transfiera una o más claves de red. Guardando las claves de enlace entre todos los nodos de la red requeriría mucha más memoria no volátil y no podría implementarse tráfico multicast seguro. S0 y S2 usa AES-128 usando una clave de red simétrica. Por lo tanto todos los nodos podrán intercambiar tráfico usando la misma clave de red.
  • Integridad de clave. Las claves asimétricas ECDH se usan temporalmente para establecer un canal seguro y sólo algunas tramas se intercambian para compartir las claves de red. Actualmente no se conoce ningún ataque para romper ECDH con Curve25519. Luego toda la comunicación se realiza encriptando con AES. Se usan bloques de 128 bits y se ha calculado que para un tráfico permanente de 100 kbit/s de datos se necesitarían 750 millones de años el poder desencriptarlo por fuerza bruta.
  • Dispositivos perdidos. ¿Qué pasa si un dispositivo se pierde?. Si el controlador lo detectase porque hace tiempo que no se comunica con él una solución sería distribuir nuevas claves de red a todos los demás dispositivos de la red pero esto implicaría que habría un tiempo en que convivirían la antigua y la nueva hasta que se hubiese desplegado la nueva clave. S2 tiene la capacidad de meter en lista negra claves de dispositivo de tal forma que si luego se encuentra el dispositvo se podría volver a sacar de dicha lista negra.
  • Multicast seguro sin sobrecoste de direcciones. El multicas nativo de Z-Wave usa campos de direcciones indexados para identificar los receptores de una transmisión particular. Esta técnica tiene el atractivo de que los receptores no tienen que guardar el estado de los miembros de un grupo multicast. Para garantizar la seguridad los multicast incluyen un número aleatorio (Nonce) autoactualizable que todos los miembros del grupo deben conocer y estar sincronizados. Cada nodo para enviar el ACK lo hace en dos fases. Primero manda un multicast seguido de un singlecast a cada miembro del grupo. El número aleatorio se actualiza durante las siguientes transmisiones simples (singlecast) entre el transmisor y un miembro del grupo.
  • Sondeo de estado no necesario. Clasicamente Z-Wave usaba polling (sondeo) para actualizar el estado de los dispositivos. Esto afectaba muy negativamente al rendimiento de la red, sobre todo cuando estaba formada por muchos nodos. Con S2 los dispositivos soportan la clase de comando Supervision (Supervision CC) de tal forma que si se envía un comando con Supervision CC el dispositivo informará del estado después de recibirlo con un Supervision Report.
  • Entrega Acelerada. En los ACK de Supervisión se pueden enviar errores de Nonce Out of Sync (Numero aleatorio no sincronizado) que son mutuamente excluyentes: si la trama puede ser desencriptada se envía un Supervision Report, sino se envía un error Nonce Out of Sync. Después de la resincronización se vuelve a enviar el comando. De esta manera se pueden seguir enviando comandos sin tener que esperar a errores Nonce Out of Sync.
  • Eficiencia de energía. S2 comparado con S0 tiene un rendimiento mucho más óptimo en cuanto a consumo se refiere.
  • Protección Activa contra ataques via Nonces. Usando Nonces (número aleatorio sincronizado entre nodos) que van incluidos en cada comando S2 consigue que si un atacante retransmite un comando que ha capturado con un sniffer, el receptor detecte que es ilegítimo. Un ataque aún más avanzado sería usando dos técnicas: por un lado el atacante escucha la transmisión de un nodo de la red, usando técnicas de jamming evita que le llegue al receptor. Posteriormente envía el comando al objetivo y su respuesta también usando jamming evita que llegue al emisor inicial. Dado que S2 usa Supervision CC necesita ACK de cada comando por lo que el atacante nunca podrá construir mensajes de respuesta válidos por lo que se detectará el ataque.
  • Comunicación segura con el Gateway. S2 obliga a que las comunicaciones con el portal que da el servicio, o la aplicación móvil, use certificados RSA de al menos 1024 bits y túneles TLS para encriptar todas las comunicaciones que viajen a nivel IP.

 

Conclusiones

Las especificaciones de seguridad para productos certificados Z-Wave obliga a cumplir con los más altos estandares en cuanto a seguridad se refiere. Las tecnologías usadas para proteger la información de las comunicaciones entre dispositivos Z-Wave y hacia Internet pueden equipararse a las usadas por las aplicaciones que usamos todos los días cuando realizamos transacciones bancarias.

Pero la seguridad en sistemas no aislados no puede ser algo estático sino que tiene que poder actualizarse cuando se descubren nuevas vulnerabilidades que el diseñador no había tenido en cuenta. Los fabricantes de controladores que comunican nuestra red Z-Wave con Internet están permanentemente actualizando para ofrecer nuevas funcionalidades como para parchear posibles nuevas vulnerabilidades descubiertas. Pero además los dispositivos Z-Wave también pueden actualizar su firmware via OTA (Over the Air) de una manera fácil y fiable.

Por todos estos aspectos podemos, concluir que dentro de las tecnologías de IoT o Internet de las Cosas (Internet of Things), los sistemas basados en tecnología Z-Wave tienen impresa en su ADN la seguridad IoT como una de las características fundamentales, lo que la hacen una de las más fiables en cuanto a seguridad se refiere.

Sobre la mítica pregunta inicial, de si es fiable un sistema de alarma basado en Z-Wave, en nuestra modesta opinión, sin dudarlo.

 

Compártelo!