Utilisez SSL/TLS pour renforcer la sécurité des communications MQTT

Dans les articles précédents , nous avons exploré les mécanismes d'authentification et de contrôle d'accès. Ensuite, nous présenterons le rôle important de Transport Layer Security (TLS) dans l'amélioration de la sécurité de la communication MQTT. Cet article se concentrera sur TLS et comment il garantit l'intégrité, la confidentialité et l'authenticité des communications MQTT.

explication du concept

Avant de commencer, passons en revue quelques concepts clés.

  • Poignée de main : La poignée de main TLS est un processus qui établit une connexion sécurisée entre un client et un serveur. Au cours de ce processus, le client et le serveur échangent des informations pour déterminer les paramètres de la connexion sécurisée, tels que les algorithmes de chiffrement, les clés de session et les méthodes d'authentification.
  • Suite de chiffrement : une suite de chiffrement est un schéma de sécurité qui combine des algorithmes de chiffrement, de hachage et d'échange de clés pour sécuriser une connexion. TLS prend en charge plusieurs suites de chiffrement, et le client et le serveur peuvent négocier pour sélectionner une suite de chiffrement lors de la poignée de main.
  • Certificat : Un certificat est un fichier numérique utilisé pour prouver l'identité d'un serveur ou d'un client. Un certificat contient la clé publique du serveur ou du client et est signé par une autorité de certification (CA) de confiance.
  • Session : Une session est une communication entre un client et un serveur. Au cours d'une session, le client et le serveur échangent des données via une connexion sécurisée. Les sessions peuvent être terminées par le client ou le serveur.

Présentation de TLS

TLS est un protocole de cryptage conçu pour fournir des communications sécurisées sur Internet. TLS peut protéger les données sensibles telles que les mots de passe, les informations de carte de crédit et les informations personnelles contre l'accès ou l'interception par des personnes non autorisées. TLS est largement utilisé dans les applications réseau, la messagerie électronique, la messagerie instantanée et d'autres scénarios d'application nécessitant une communication sécurisée sur Internet.

TLS assure la sécurité grâce au chiffrement, à l'assurance de l'intégrité des données et à l'authentification.

  • Cryptage : TLS crypte les données transmises entre le client et le serveur à l'aide d'un algorithme de cryptage pour garantir que son contenu ne peut pas être lu par des utilisateurs non autorisés.
  • Intégrité des données : TLS utilise des mécanismes de vérification de l'intégrité des données, tels que des algorithmes de hachage, pour s'assurer que les données n'ont pas été falsifiées ou endommagées pendant la transmission.
  • Authentification : grâce à l'utilisation de certificats et d'une infrastructure à clé publique, TLS garantit que le client communique avec le serveur prévu et évite de communiquer avec un imposteur.

TLS utilise une combinaison de cryptographie à clé publique et à clé symétrique pour obtenir ces fonctions de sécurité.

Un client et un serveur doivent effectuer une poignée de main avant d'établir une connexion sécurisée. Pendant la prise de contact, le client et le serveur s'envoient des informations pour déterminer les paramètres de connexion sécurisée tels que les algorithmes de chiffrement, les clés de session et les méthodes d'authentification. TLS peut utiliser une variété de suites de chiffrement, et le client et le serveur négocient pour choisir une suite de chiffrement lors de la poignée de main. Un certificat est un fichier numérique utilisé pour prouver l'identité d'un serveur ou d'un client. Un certificat contient la clé publique du serveur ou du client et est signé par une autorité de certification de confiance. Une relation de confiance est établie entre le client et le serveur via une infrastructure à clé publique (PKI).

Pourquoi TLS est-il essentiel à la sécurité MQTT ?

Pour la sécurité MQTT, TLS joue un rôle important. Il peut garantir la confidentialité, l'intégrité et la non-répudiation des messages MQTT. Il peut empêcher l'acquisition, la falsification et l'interception de données sensibles par des utilisateurs non autorisés, et établir un canal de communication sécurisé et fiable entre les clients MQTT et Broker.

TLS protège la confidentialité en cryptant les données entre les clients MQTT et les courtiers. Sans TLS, les messages MQTT sont envoyés en clair, ce qui signifie que toute personne ayant accès au réseau peut intercepter et lire les données. L'utilisation de TLS peut crypter le contenu du message, auquel il est impossible d'accéder sans autorisation.

TLS assure la protection de l'intégrité des données. Il empêche les messages MQTT d'être falsifiés ou détruits pendant la transmission. Chaque message est signé numériquement sur TLS, garantissant qu'il n'a pas été modifié en transit sans autorisation. Si des modifications non autorisées se produisent, le contrôle d'intégrité échouera, indiquant que les données ont été falsifiées.

TLS implémente la fonction d'authentification pour s'assurer que le client MQTT et le Broker peuvent s'authentifier mutuellement. Les clients peuvent utiliser des certificats SSL/TLS pour vérifier s'ils ont établi une connexion avec un courtier légalement autorisé. Cela empêche les entités malveillantes de se faire passer pour le courtier et établit une relation de confiance entre le client et l'infrastructure MQTT.

TLS fournit la non-répudiation. En utilisant des signatures numériques, TLS empêche les expéditeurs de refuser la transmission de leurs messages. Une signature numérique confirme l'authenticité et l'origine d'un message, de sorte qu'il peut être prouvé qu'un client particulier a envoyé un message particulier.

Enfin, TLS protège également les communications MQTT contre les attaques d'écoute clandestine, où un attaquant intercepte et écoute les messages MQTT. Il empêche également les attaques de l'homme du milieu, où les attaquants tentent d'intercepter et de falsifier les messages transmis entre les clients et les courtiers.

Méthode d'authentification TLS

authentification unidirectionnelle

L'authentification unidirectionnelle est la méthode d'authentification la plus simple dans TLS. Dans l'authentification unidirectionnelle, le serveur présente un certificat numérique au client, et le client vérifie le certificat pour s'assurer qu'il est valide et signé par une autorité de certification approuvée. Si le certificat est vérifié, le client peut établir une connexion sécurisée avec le serveur. Lorsqu'il n'est pas nécessaire d'authentifier le client, l'authentification unidirectionnelle peut répondre aux besoins.

authentification bidirectionnelle

L'authentification mutuelle, ou mTLS, est une forme d'authentification plus sécurisée dans TLS. Dans l'authentification mutuelle, le client et le serveur s'authentifient mutuellement. Le client présente le certificat numérique au serveur, et le serveur vérifie le certificat pour s'assurer qu'il est valide et signé par une autorité de certification approuvée. Le serveur présente également le certificat numérique au client, qui vérifie le certificat pour s'assurer qu'il est valide et signé par une autorité de certification de confiance. Si les deux certificats sont vérifiés, le client et le serveur peuvent établir une connexion sécurisée. L'authentification bidirectionnelle est utilisée lorsqu'il est nécessaire de vérifier l'identité du client et du serveur.

Authentification PSK

La clé pré-partagée (PSK) est une méthode d'authentification des clients et des serveurs à l'aide d'un secret partagé. Le client et le serveur se mettent d'accord sur une clé avant de se connecter. Lors de la poignée de main, le client et le serveur utilisent cette clé pour s'identifier. PSK peut être utilisé lorsque la cryptographie à clé publique ne peut pas être utilisée. Cette méthode est moins sécurisée que les autres méthodes car la même clé est utilisée pour chaque connexion.

Cryptage sans certificat

La cryptographie sans certificat utilise des accords de clé, tels que Diffie-Hellman, pour que le client et le serveur génèrent un secret partagé. De cette façon, ils peuvent établir un canal de communication sécurisé entre eux. Ce secret partagé n'est pas transmis sur le réseau, ce qui le rend difficile à intercepter ou à espionner. Dans le même temps, la cryptographie sans certificat simplifie la mise en œuvre et la gestion de TLS en éliminant le besoin de s'appuyer sur un tiers de confiance pour émettre et gérer les certificats numériques. Cependant, la principale limitation de cette approche est qu'elle nécessite que le client et le serveur aient les mêmes paramètres d'accord clés, ce qui peut poser des problèmes dans certains cas. De plus, en raison de la popularité limitée de la cryptographie sans certificat dans les implémentations TLS, son applicabilité dans la pratique peut être quelque peu limitée.

Choisissez la méthode d'authentification appropriée

Le choix de la méthode d'authentification est très important pour assurer la sécurité de TLS. Lors du choix d'une méthode d'authentification, tenez compte des exigences de sécurité, de la complexité de la mise en œuvre et des contraintes de ressources.

  • L'authentification unidirectionnelle convient aux situations où l'identité du client n'est pas importante.
  • L'authentification bidirectionnelle nécessite à la fois le client et le serveur pour s'authentifier.
  • PSK est une alternative lorsque la cryptographie à clé publique ne peut pas être utilisée, mais est moins sécurisée que la cryptographie à clé publique.
  • Le chiffrement sans certificat est une solution efficace lorsque les certificats numériques ne peuvent pas être obtenus ou approuvés.
  • L'utilisation d'une clé privée par appareil est particulièrement utile lorsque les appareils du réseau ont des besoins de sécurité différents ou lorsque la sécurité de l'ensemble du réseau dépend de la sécurité de chaque appareil.

Lors de la sélection d'une méthode d'authentification, une analyse approfondie des besoins et des risques doit être effectuée afin de prendre une décision éclairée.

Les meilleures pratiques

Lors de la mise en œuvre de TLS, une planification et une exécution minutieuses sont nécessaires pour garantir la sécurité des communications. Voici quelques bonnes pratiques pour la mise en œuvre de TLS :

  • Utiliser la dernière version de TLS : sélectionnez la dernière version du protocole TLS pour utiliser les algorithmes de chiffrement et de hachage les plus sécurisés.
  • Utilisez une suite de chiffrement forte : choisissez une suite de chiffrement forte pour garantir un chiffrement et une intégrité des données à haute résistance.
  • Utiliser un certificat de confiance : utilisez un certificat numérique signé par une autorité de certification de confiance pour vérifier l'identité du serveur ou du client.
  • Mettre en œuvre la révocation des certificats : établissez un mécanisme de révocation des certificats pour révoquer les certificats compromis ou expirés.
  • Surveillez l'expiration du certificat : surveillez l'expiration du certificat numérique pour garantir un renouvellement en temps voulu.
  • Secure Key Management : créez un système de gestion de clés sécurisé pour gérer les clés utilisées pour l'authentification.
  • Mettre régulièrement à jour et corriger les logiciels : le logiciel utilisé pour la mise en œuvre de TLS est régulièrement mis à jour et corrigé pour corriger toute vulnérabilité connue.

épilogue

TLS nous permet de communiquer en toute sécurité sur Internet. La sécurité TLS peut être améliorée en attribuant des clés uniques à chaque appareil et en choisissant une méthode d'authentification appropriée. En suivant les bonnes pratiques de mise en œuvre fournies dans cet article, vous pouvez tirer pleinement parti des fonctionnalités de TLS et créer une plateforme IoT plus sécurisée.

EMQX prend en charge l'authentification unidirectionnelle/bidirectionnelle des certificats X 509. Vous pouvez activer SSL/TLS pour tous les protocoles pris en charge par EMQX et activer SSL/TLS pour l'API HTTP fournie par EMQX. L'API HTTP fournie par EMQX peut également être configurée pour utiliser TLS.

Pour plus d'informations sur EMQX, veuillez consulter notre documentation , GitHub , Slack et les forums .

Déclaration de droit d'auteur : Cet article est original par EMQ, veuillez indiquer la source pour la réimpression.

Lien d'origine : https://www.emqx.com/zh/blog/fortifying-mqtt-communication-security-with-ssl-tls

Je suppose que tu aimes

Origine blog.csdn.net/emqx_broker/article/details/132226180
conseillé
Classement