Mecanismo de autenticación de seguridad en MQTT 5.0: Introducción a la autenticación mejorada

En los artículos anteriores de esta serie , mencionamos que con la ayuda de los campos Nombre de usuario y Contraseña en el mensaje MQTT CONNECT, podemos implementar una autenticación simple, como autenticación de contraseña, autenticación de token, etc. Para garantizar aún más la seguridad del sistema IoT, en este artículo aprenderemos sobre otro mecanismo de autenticación: la autenticación mejorada.

¿Qué es la autenticación mejorada?

La autenticación mejorada es un nuevo mecanismo de autenticación introducido por MQTT 5.0. De hecho, usamos el marco de autenticación para describirlo de manera más adecuada, porque nos permite aplicar varios métodos de autenticación que son más seguros que la autenticación con contraseña.

Más seguro, por otro lado, significa más complejo, tales métodos de autenticación como SCRAM generalmente requieren más de un viaje de ida y vuelta de datos de autenticación. Esto hace que el marco de autenticación de ida y vuelta proporcionado por los mensajes CONNECT y CONNACK ya no sea aplicable, por lo que MQTT 5.0 agrega especialmente el mensaje AUTH para este propósito, que puede admitir cualquier número de ida y vuelta de datos de autenticación. Esto nos permite introducir un mecanismo SASL estilo desafío-respuesta en MQTT.

¿Qué problema resuelve la autenticación mejorada?

Antes de hablar sobre este tema, debemos saber, ¿por qué la autenticación con contraseña aún no es lo suficientemente segura?

De hecho, incluso si hemos utilizado salting y hash para almacenar contraseñas, la seguridad del almacenamiento de contraseñas se ha mejorado tanto como sea posible. Pero para completar la autenticación, el cliente tiene que transmitir la contraseña en texto claro en la red, lo que hace que la contraseña tenga el riesgo de ser filtrada. Incluso si usamos TLS para cifrar la comunicación, es posible que los atacantes roben datos confidenciales, como contraseñas, debido al uso de versiones inferiores de SSL, conjuntos de cifrado inseguros, certificados de CA ilegales, etc.

Además, la autenticación de contraseña simple solo puede permitir que el servidor verifique la identidad del cliente, pero no puede permitir que el cliente verifique la identidad del servidor, lo que hace posible que los atacantes se hagan pasar por el servidor para obtener datos confidenciales enviados por el cliente. . Y esto es lo que solemos llamar un ataque man-in-the-middle.

A través de la autenticación mejorada, podemos optar por utilizar métodos de autenticación más seguros bajo el marco SASL.Algunos de ellos pueden evitar la transmisión de contraseñas en la red, algunos pueden permitir que el cliente y el servidor verifiquen la identidad del otro, y algunos de ellos son ambos. .equipo, todavía depende del método de autenticación que finalmente elijamos.

Mecanismos comunes de SASL que se pueden usar para mejorar la autenticación

DIGESTIÓN-MD5

DIGEST-MD5 es un mecanismo de autenticación bajo el marco de la capa de seguridad de autenticación simple (SASL). Se basa en el algoritmo hash MD5 (Message Digest 5) y utiliza un mecanismo de desafío-respuesta para verificar la identidad entre el cliente y el servidor. Su ventaja es que el cliente no necesita transmitir la contraseña en texto claro a través de la red.

En pocas palabras, cuando un cliente solicita acceder a un recurso protegido, el servidor devolverá un Desafío, que contiene un número aleatorio único y algunos parámetros necesarios. El cliente debe usar estos parámetros más el nombre de usuario y la contraseña que posee. Espere los datos, genere una respuesta y devuélvala al servidor, el servidor generará la respuesta esperada exactamente de la misma manera y luego la comparará con la respuesta recibida, si las dos coinciden, se pasa la autenticación. Esto elimina el riesgo de filtraciones de contraseñas debido a escuchas ilegales en la red y, debido a que se usa un número aleatorio único al conectarse, también mejora la defensa contra ataques de repetición.

Sin embargo, debe tenerse en cuenta que DIGEST-MD5 solo proporciona autenticación de servidor a cliente, pero no proporciona autenticación de cliente a servidor, por lo que no puede evitar ataques de intermediarios. Además, dado que MD5 ya no es seguro, se recomienda usar una función hash con mayor resistencia a colisiones, como SHA-256, para reemplazarlo.

LARGARSE

SCRAM también es un mecanismo de autenticación bajo el marco SASL. Su idea central es similar a la de DIGEST-MD5. También utiliza un número aleatorio de una sola vez para requerir que el cliente genere una respuesta, por lo que el cliente no necesita transmitir la contraseña de texto sin formato en la red. Pero a diferencia de DIGEST-MD5, SCRAM presenta Salt and Iterations, y utiliza algoritmos hash más seguros, como SHA-256 y SHA-512, lo que brinda una mayor seguridad. , repetir ataques u otros ataques.

Además, SCRAM utiliza un proceso de desafío-respuesta más complejo, que agrega un proceso en el que el servidor envía un certificado al cliente. El cliente puede usar este certificado para confirmar si el servidor tiene la contraseña correcta, lo que realiza la autenticación del cliente de el servidor reduce el riesgo de ataques de intermediarios.

Por supuesto, los algoritmos hash como SHA256 que utiliza SCRAM también generan una sobrecarga adicional en el rendimiento, lo que puede tener cierto impacto en algunos dispositivos con recursos limitados.

Kerberos

Kerberos presenta un servidor Kerberos de terceros de confianza para proporcionar servicios de autenticación. El servidor Kerberos otorga vales a los usuarios autenticados y los usuarios utilizan los vales para acceder a los servidores de recursos. Uno de los beneficios que esto genera es que los usuarios pueden obtener acceso a múltiples sistemas y servicios siempre que pasen una autenticación, es decir, se realiza la función de inicio de sesión único (SSO).

El ciclo de vida del ticket otorgado por el servidor Kerberos es limitado, y el cliente solo puede utilizar este ticket para acceder al servicio dentro de un tiempo limitado, lo que puede evitar problemas de seguridad causados ​​por la fuga de tickets. Por supuesto, aunque un período de validez más corto puede mejorar efectivamente la seguridad, puede no ser amigable en términos de conveniencia de uso, y debemos equilibrar los dos por nosotros mismos.

El núcleo de Kerberos es un algoritmo de cifrado simétrico. El servidor utiliza el hash de contraseña almacenado localmente para cifrar los datos de autenticación y luego se los devuelve al cliente. El cliente codifica la contraseña que posee y luego descifra los datos de autenticación. La ventaja de esto es que no necesita transmitir la contraseña en texto claro en la red, y permite que el servidor y el cliente verifiquen mutuamente que cada uno tiene la contraseña correcta. De esta forma de intercambiar datos a través del cifrado simétrico, el servidor y el cliente también pueden completar de forma segura el intercambio de la clave de sesión, que se puede utilizar para cifrar los datos de comunicación subsiguientes para brindar protección de seguridad a los datos de comunicación.

Si bien Kerberos proporciona una gran seguridad, también conlleva una complejidad considerable. Hay ciertos umbrales en su implementación y configuración. Además, hasta seis protocolos de enlace también presentan requisitos relativamente altos para el retraso y la confiabilidad de la red. Por lo general, Kerberos se usa principalmente en el entorno de intranet empresarial.

¿Cómo funciona la autenticación mejorada en MQTT?

Tomando el mecanismo SCRAM como ejemplo, echemos un vistazo a cómo se realiza la autenticación mejorada en MQTT. En cuanto a los principios específicos de SCRAM, este artículo no se extenderá aquí, solo necesitamos saber que SCRAM necesita transmitir cuatro mensajes para completar la autenticación:

  • cliente-primer-mensaje
  • servidor-primer-mensaje
  • mensaje-final-cliente
  • servidor-final-mensaje

Autenticación mejorada MQTT

En primer lugar, el cliente aún debe enviar un mensaje de CONEXIÓN para iniciar la autenticación, pero debe establecer el atributo Método de autenticación en SCRAM-SHA-256 para indicar que desea utilizar la autenticación SCRAM, donde SHA-256 indica la función hash. para ser utilizado y, al mismo tiempo, utilizar datos de autenticación. El atributo contiene el contenido del primer mensaje del cliente. Método de autenticación determina cómo el servidor debe analizar y procesar los datos en Datos de autenticación.

Si el servidor no admite la autenticación SCRAM o descubre que el contenido del primer mensaje del cliente no es válido, devolverá un mensaje CONNACK que contiene el código de motivo que indica el motivo de la falla de autenticación y luego cierra la conexión de red.

De lo contrario, el servidor continuará con el siguiente paso: devolver un mensaje AUTH y establecer el código de motivo en 0x18, lo que significa continuar con la autenticación. El método de autenticación en el mensaje será el mismo que en el mensaje CONECTAR, y el atributo de datos de autenticación contendrá el contenido del primer mensaje del servidor.

Después de confirmar que el contenido del primer mensaje del servidor es correcto, el cliente también devuelve un mensaje AUTH con el código de motivo 0x18 y el atributo de datos de autenticación contendrá el contenido del mensaje final del cliente.

Una vez que el servidor confirma que el contenido del mensaje final del cliente es correcto, el servidor ha completado la verificación de la identidad del cliente. Entonces, esta vez, el servidor ya no devolverá un mensaje AUTH, sino un mensaje CONNACK con un código de motivo de 0 para indicar una autenticación exitosa, y pasará el mensaje final del servidor final a través del atributo de datos de autenticación en el mensaje. El cliente necesita verificar la identidad del servidor según el contenido de este mensaje.

Si se verifica la identidad del servidor, el cliente puede comenzar a suscribirse a temas o publicar mensajes, y si no, el cliente enviará un mensaje DISCONNECT para terminar esta conexión.

epílogo

La autenticación mejorada ofrece a los usuarios la posibilidad de introducir más métodos de autenticación. Puede elegir un método de autenticación que se adapte a sus necesidades específicas, mejorando aún más la seguridad del sistema.

Como un bróker MQTT ampliamente utilizado, EMQX es conocido por su alta escalabilidad y disponibilidad, pero también siempre pone la seguridad del usuario en primer lugar. Además de la autenticación basada en contraseña, EMQX también admite autenticación mejorada. Los usuarios pueden habilitar la autenticación SCRAM a través de EMQX para aumentar el nivel de seguridad de su infraestructura MQTT.

Para obtener más información, consulte: MQTT 5.0 Autenticación mejorada

Declaración de derechos de autor: este artículo es original de EMQ, indique la fuente para la reimpresión.

Enlace original: https://www.emqx.com/zh/blog/leveraging-enhanced-authentication-for-mqtt-security

Supongo que te gusta

Origin blog.csdn.net/emqx_broker/article/details/131559084
Recomendado
Clasificación