La seguridad de IoT es un gran desafío para los desarrolladores de hoy. La gran cantidad de datos confidenciales recopilados e intercambiados a lo largo de las redes de dispositivos inteligentes en la nube los convierte en objetivos atractivos para los ciberdelincuentes. Los desarrolladores deben tomar este problema en serio y crear características de seguridad más confiables en todas las soluciones de IoT.
Contenido proporcionado por AspenCore e IBM
La seguridad de IoT es un gran desafío para los desarrolladores de hoy. La gran cantidad de datos confidenciales recopilados e intercambiados a lo largo de las redes de dispositivos inteligentes en la nube los convierte en objetivos atractivos para los ciberdelincuentes. Los desarrolladores deben tomar este problema en serio y crear características de seguridad más confiables en todas las soluciones de IoT.
Esta serie de artículos se centra en la seguridad en las tres capas arquitectónicas de las aplicaciones de IoT: dispositivo, datos y aplicación. parte 1 En esta serie, le presentaré los conceptos básicos de la seguridad de IoT y analizaré diferentes enfoques para proteger su dispositivo o puerta de enlace. La Parte 2 (este artículo) se centrará en los aspectos de seguridad de la red y las capas de transporte, incluida IBM Watson IoT Platform. parte 3 Proporciona requisitos de seguridad de capa de aplicación y enfoques de implementación para aplicaciones analíticas de IoT creadas en la plataforma IBM Bluemix.
Protección de datos en la red
Transport Layer Security (TLS) proporciona seguridad para transferir datos a través de redes. Los datos están encriptados y nadie puede oír ni entender el contenido. TLS (también conocido como SSL) se usa ampliamente para brindar acceso seguro a muchos sitios web. TLS garantiza que se establezca la confianza entre el servidor y el cliente antes de que se produzca cualquier transferencia de datos. Esto se hace mediante un certificado de servidor que el cliente debe verificar. En algunos casos, el servidor también valida certificados específicos del cliente.
MQTT se basa en TCP como protocolo de transporte y, de forma predeterminada, las conexiones no utilizan comunicaciones cifradas. La implementación de TLS afecta el rendimiento de la transferencia de datos y la carga del servidor, pero la mayoría de los intermediarios de MQTT (incluido IBM Watson IoT Platform) admiten el uso de TLS para permitir que las aplicaciones protejan los intercambios de datos confidenciales.
Sin embargo, puede aumentar la seguridad cifrando los datos enviados y recibidos por su aplicación IoT. Por ejemplo, una aplicación IoT puede usar MQTT PUBLISH para cifrar los datos que envía. Esta implementación es especialmente importante en entornos no confiables y conexiones de red inseguras entre dispositivos y corredores.
Si estás usando username
y password
Si usa campos en los paquetes MQTT CONNECT para autenticación y autorización, debería considerar seriamente usar TLS. El puerto 8883 está estandarizado para conexiones MQTT seguras.
cifrado de datos
La mayoría de las implementaciones de MQTT utilizan Transport Layer Security (TLS), que cifra sus datos y verifica su integridad. La plataforma IBM Watson IoT admite TLS 1.2 para proteger los datos en tránsito a través de la red. Este artículo describe cómo las aplicaciones pueden proporcionar mecanismos de seguridad adicionales al admitir el intercambio de mensajes cifrados, ya sea que la red subyacente admita o no TLS.
Solo se deben cifrar los datos de la carga útil (información del sensor privado) del mensaje. El campo de mensaje del mensaje MQTT PUBLISH no se modifica. Dado que la información útil es binaria, no se requiere ningún mecanismo de codificación especial durante la transmisión del mensaje. Además, el formato del mensaje MQTT sigue siendo el mismo, por lo que no se requieren cambios específicos en el lado del intermediario. Solo la aplicación que interpreta la carga útil del mensaje debe descifrar el mensaje para comprender su contenido.
TLS brinda seguridad en la capa de red y el cifrado de carga útil MQTT brinda seguridad en la capa de aplicación, por lo que se pueden usar juntos sin conflicto. El cifrado de las cargas útiles de MQTT solo resuelve el problema de proteger los mensajes de la aplicación de los intrusos y los clientes de MQTT que no son de confianza (a menos que exista un mecanismo de autenticación). Incluso sin un canal de comunicación seguro sobre TLS, un atacante puede reproducir el mensaje o cambiar partes del mensaje, como el tema.
El cifrado de carga útil MQTT es útil cuando no puede usar TLS, pero no desea enviar los datos de su aplicación en texto sin formato. Esta implementación proporciona una capa adicional de seguridad ya que todos los datos de la aplicación están protegidos. El cifrado de carga útil puede ser adecuado para dispositivos restringidos que no pueden usar TLS, pero el cifrado y el descifrado pueden usar una potencia de procesamiento considerable, por lo que sin agotar los recursos Use algoritmos que brinden alta seguridad.
Como se mencionó anteriormente, el uso de MQTT sobre TLS tiene un impacto en el rendimiento en términos de comunicación y uso adicional de la CPU. Este costo de rendimiento no es significativo para los intermediarios, pero puede ser un problema para los dispositivos con recursos limitados. Aquí hay algunas técnicas probadas para mejorar el rendimiento de TLS:
- Evite las conexiones a corto plazo.
Establecer una nueva conexión TLS para cada transferencia de datos puede aumentar innecesariamente el ancho de banda. Utilice conexiones de larga duración en su lugar. - Incorporar la reanudación de la sesión.
Las técnicas de reanudación de la sesión TLS permiten la reutilización de una sesión TLS ya negociada después de volver a conectarse al servidor para que el cliente y el servidor no necesiten el protocolo de enlace TLS completo nuevamente. - Utilice la última versión de TLS disponible.
Se han producido varios ataques conocidos contra TLS 1.0 y 1.1. Utilice TLS 1.2 cuando sea posible.