Vous êtes sur la page 1sur 8

Sécurité mqtt :

En termes de sécurité, MQTT prend en charge plusieurs options de sécurité, telles que
l'utilisation de noms d'utilisateur et de mots de passe authentification, la gestion des

certificats SSL/TLS pour le chiffrement des communications, et l'autorisation basée sur des
rôles. MQTT utilise également des mécanismes de contrôle d'accès pour empêcher les

connexions non autorisées ou les attaques par déni de service. De plus, MQTT peut être
configuré pour fonctionner sur des ports sécurisés, tels que le port 8883, pour garantir une

communication chiffrée entre les appareils et les serveurs MQTT. En général, MQTT est
considéré comme un protocole sécurisé pour les applications IoT, à condition qu'il soit

correctement configuré et utilisé avec les options de sécurité appropriées.

La sécurité de la couche de transport (TLS) et la couche de sockets sécurisée (SSL) fournissent


un canal de communication sécurisé entre un client et un serveur. Au cœur de TLS et SSL se
trouvent des protocoles cryptographiques qui utilisent un mécanisme de poignée de main
pour négocier divers paramètres afin de créer une connexion sécurisée entre le client et le
serveur. Après que la poignée de main est terminée, une communication chiffrée entre le
client et le serveur est établie et aucun attaquant ne peut intercepter une partie de la
communication. Les serveurs fournissent un certificat X509 (généralement délivré par une
autorité de confiance) que les clients utilisent pour vérifier l'identité du serveur.

MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie léger


et simple conçu pour les appareils IoT qui ont une puissance de traitement et une
bande passante limitées. MQTT prend en charge plusieurs mécanismes de sécurité
pour garantir la confidentialité, l'intégrité et la disponibilité des messages échangés
entre les clients et les courtiers. Voici quelques-uns des concepts de sécurité les plus
couramment utilisés dans MQTT :

Authentification : MQTT prend en charge des mécanismes d'authentification tels que


l'authentification par nom d'utilisateur et mot de passe, l'authentification par certificat
client et l'authentification anonyme.

Autorisation : les courtiers MQTT peuvent utiliser des listes de contrôle d'accès (ACL)
pour restreindre l'accès des clients à des sujets et opérations spécifiques, tels que la
publication ou l'abonnement à des sujets.
Sécurité de la couche de transport (TLS) : MQTT prend en charge le chiffrement TLS
pour sécuriser la communication entre les clients et les courtiers. TLS peut fournir
l'authentification, la confidentialité et l'intégrité.

Chiffrement de message : les messages MQTT peuvent être chiffrés à l'aide


d'algorithmes de chiffrement symétriques ou asymétriques pour assurer la
confidentialité.

Qualité de service (QoS) : MQTT prend en charge trois niveaux de QoS pour garantir
la livraison des messages, et chaque niveau a des implications de sécurité différentes.
Par exemple, le niveau QoS 2 offre une sécurité supérieure au niveau QoS 0.

Messages conservés : les courtiers MQTT peuvent stocker des messages conservés,
qui sont envoyés aux clients lorsqu'ils s'abonnent à un sujet spécifique. Les messages
conservés peuvent être utilisés pour propager des messages malveillants, il convient
donc de contrôler leur utilisation avec précaution.

Gestion de session : les sessions MQTT peuvent être persistantes ou non persistantes,
et elles peuvent être gérées par le courtier ou le client. La gestion de session peut
avoir un impact sur la sécurité de la communication, en particulier dans le cas de
sessions persistantes.

Ce sont quelques-uns des concepts de sécurité les plus couramment utilisés dans
MQTT. Il est important de noter que le niveau de sécurité fourni par MQTT dépend de
la mise en œuvre et de la configuration du protocole. Par conséquent, il est essentiel
de suivre les meilleures pratiques et les directives pour garantir la sécurité des
systèmes basés sur MQTT.
Mqtt security finale :

En termes de sécurité, MQTT utilise également des mécanismes de contrôle d'accès pour
empêcher les connexions non autorisées ou les attaques par déni de service. De plus, MQTT
peut être configuré pour fonctionner sur des ports sécurisés, tels que le port 8883, pour
garantir une communication chiffrée entre les appareils et les serveurs MQTT. En général,
MQTT est considéré comme un protocole sécurisé pour les applications IoT, à condition qu'il
soit correctement configuré et utilisé avec les options de sécurité appropriées.

MQTT prend en charge plusieurs options de sécurité, telles que l'utilisation de noms
d'utilisateur et de mots de passe authentification, la gestion des certificats SSL/TLS pour le
chiffrement des communications, et l'autorisation basée sur des rôles, on explique cet
dernier dans les ligne suivante :

1/Authentification :

MQTT utilise des mécanismes d'authentification tels que l'authentification par nom
d'utilisateur et mot de passe, l'authentification par certificat client et l'authentification par ‘’
l’identifiant client ‘’.

1/ l'authentification par nom d'utilisateur et mot de passe :

2/ l'authentification par l’identifiant client :

Chaque client MQTT a un identifiant de client unique. Le client fournit cet identifiant unique
au courtier dans le message MQTT CONNECT. L'identifiant de client peut avoir un maximum
de 65535 caractères, Il est courant d’utiliser l'identifiant universel unique de 36 caractères
(UUID) ou d'autres informations uniques du client, Par exemple, l'adresse MAC du module
réseau ou le numéro de série de l'appareil. Dans le processus d'authentification, les
identifiants de client sont souvent utilisés en combinaison avec le nom d'utilisateur et le mot
de passe. Une méthode courante pour confirmer si un client peut accéder au courtier MQTT
consiste à valider le nom d'utilisateur/mot de passe et l'identifiant de client qui est correct
pour cette combinaison de références. Il est également possible d'ignorer le nom
d'utilisateur/mot de passe et de s'authentifier uniquement avec l'identifiant de client ;
cependant, cette méthode n'est pas une bonne pratique de sécurité. (Pour certains systèmes
fermés, ce type d'authentification peut suffire).

3/l'authentification par certificat client X.509 :

Une autre méthode d'authentification possible consiste à utiliser le certificat client X.509.
Le client présente ce certificat au courtier lors du ‘’TLS handshake’’. Après un TLS handshake
réussie, certains courtiers permettent l'utilisation des informations de certificat pour
l'authentification de la couche d'application. Cela permet au courtier de lire toutes les
informations du certificat et de les utiliser également à des fins d'authentification. Dans le
thème d’IoT, les certificats client X509 considéré comme une très bonne source
d'authentification des clients sur le courtier MQTT.

2/Autorisation :

Sans une autorisation adéquate, chaque client authentifié peut publier et s'abonner à tous
les sujets disponibles. Cela peut être souhaitable dans un système fermé. Cependant, pour la
plupart des cas d'utilisation, des restrictions fines ont beaucoup de sens et doivent être
appliquées.

Pour restreindre un client à la publication ou à l'abonnement à des sujets autorisés


uniquement, des autorisations de sujet doivent être implémentées dans le courtier. Ces
autorisations doivent être configurables et réglables pendant l'exécution du courtier. Voici
une autorisation de sujet possible :

 Sujet autorisé (sujet exact ou sujet générique)


 Opération autorisée (publier, s'abonner, les deux)
 Niveau de qualité de service autorisé (0, 1, 2, tout)

Ce type d'autorisation de sujet permet au courtier de spécifier des politiques d'autorisation


pour les clients et de limiter leur capacité à s'abonner et à publier des messages. Par
exemple, donnez à un client l'autorisation de s'abonner à un seul sujet et d'utiliser
uniquement un certain niveau de qualité de service (QOS).

Une fois que les politiques d'autorisation sont définies, alors il faut informer le client qu'il
n'a pas l'autorisation de publier ou de s'abonner à un certain sujet.
Publier :

Lorsqu'un client publie sur un sujet sans la permission correcte, le courtier a deux options :

Le courtier peut déconnecter le client car la publication sur un sujet qui est restreint n'est
pas autorisée.

Le courtier peut accuser réception de la publication auprès du client de manière normale.


En QoS 1 ou 2, avec des paquets PUBACK ou PUBREL, et décider de ne pas envoyer le
message publié aux abonnés.

S'abonner :

Lorsqu'un client s'abonne à un sujet, le courtier doit accuser réception de chaque


abonnement avec un code de retour. Les codes de retour comprennent 4 codes

3/Tls :

Transport Layer Security (TLS) and Secure Sockets Layer (SSL) provide a
secure communication channel between a client and a server. At the core,
TLS and SSL are cryptographic protocols which use a handshake
mechanism to negotiate various parameters to create a secure connection
between the client and the server. After the handshake is complete, an
encrypted communication between client and server is established and no
attacker can eavesdrop any part of the communication. Servers provide
a X509 certificate (typically issued by a trusted authority) that clients use to
verify the identity of the server.

Sécurité de la couche de transport (TLS) : MQTT prend en charge le chiffrement TLS


pour sécuriser la communication entre les clients et les courtiers. TLS peut fournir
l'authentification, la confidentialité et l'intégrité.
Mqtt générale :

6.2. Le protocole MQTT

MQTT permet concrètement aux objets d’envoyer des informations sur un sujet donné à un serveur
qui fonctionne comme un broker de messages. Le broker pousse ces informations vers les clients qui
se sont précédemment abonnés [26] Nous avons choisi le protocole MQTT pour de nombreuses
raisons : Le MQTT échange les données en temps réel ce qui nous aide à créer et à envoyer des
notifications en même temps qu’une chose anormale détectée.  Il fonctionne pour les appareils à
faible puissance, dans notre cas c’est l’Arduino.  Un protocole facile à utiliser en raison du principe
de publication / abonnement. Publication / abonnement Le protocole MQTT est basé sur le principe
de la publication de messages et de l'abonnement à des sujets, ou "pub / sub". Plusieurs clients se
connectent à un courtier et s'abonnent aux sujets qui les intéressent. Les clients se connectent
également à courtier et publier des messages sur des sujets. De nombreux clients peuvent s'abonner
aux mêmes sujets et faire avec les informations comme ils veulent. Le courtier et MQTT agissent
comme une interface simple et commune pour tout ce à quoi se connecter [27]. Qualité de service
MQTT définit trois niveaux de qualité de service (QoS). La QoS définit à quel point le courtier / client
essayera d'assurer qu'un message est reçu. Les messages peuvent être envoyés à n'importe quel
niveau de qualité de service, et les clients peuvent tenter de s'abonner aux sujets à n'importe quel
niveau de QoS. Cela signifie que le client choisit la QoS maximale qu'il recevra. Par exemple, si un
message est publié à QoS 2 et qu'un client est abonné à QoS 0, le message sera livré à ce client avec
QoS 0. Si un deuxième client est également abonné au même sujet, mais avec QoS 2, il recevra le
même message mais avec QoS 2. Pour un deuxième exemple, si un client est abonné à QoS 2 et
qu'un message est publié sur QoS 0, le client recevez-le sur QoS 0. Des niveaux plus élevés de QoS
sont plus fiables, mais impliquent une latence plus élevée et ont des exigences de bande passante
plus élevées[27]. 0: Le courtier / client remettra le message une fois, sans confirmation. 1: Le courtier
/ client remettra le message au moins une fois, avec confirmation requise. 2: Le courtier / client
livrera le message exactement une fois en utilisant une poignée de main en quatre étapes Mosquitto
Mosquitto est un courtier de messages open source (sous licence BSD) qui implémente le protocole
de transport MQ Telemetry version 3.1. MQTT fournit une méthode légère d'exécution de la
messagerie à l'aide d'un modèle de publication / abonnement. C le rend approprié pour la
messagerie «de machine à machine» comme avec des capteurs de faible puissance ou des appareils
mobiles tels que des téléphones, des ordinateurs embarqués ou des microcontrôleurs comme
l'Arduino[27]. Le serveur 1883 : MQTT, unencrypted Internet des objets (Internet Of Things) 28
8883 : MQTT, encrypted 8884 : MQTT, encrypted, client certificate required 8080 : MQTT over
WebSockets, unencrypted 8081 : MQTT over WebSockets, encrypted Les ports cryptés prennent en
charge TLS v1.2, v1.1 ou v1.0 avec des certificats x509 et requièrent le support du client pour se
connecter. Dans tout cas, vous devez utiliser le fichier d'autorité de certification mosquitto.org.crt
pour vérifier la connexion au serveur. Port 8884 exige que les clients fournissent un certificat pour
authentifier leur connexion. Si vous souhaitez obtenir un certificat client, S'il vous plaît, faites-le
toucher [27]. Principe de fonctionnement : Contrairement au principe du client/serveur utilisé sur le
Web, MQTT utilise celui de la publication/souscription : plusieurs clients se connectent à un serveur
unique (appelé broker) pour soit publié des informations, soit souscrire à leur réception [27].
Avantages de MQTT [27] :  Légèreté : Beaucoup moins verbeux que HTTP, avec un côté asynchrone
natif.  Flexibilité : MQTT est basé sur la couche réseau TCP/IP, utilisée par les protocoles internet
dont http .On peut donc le trouver sur n’importe quelle plateforme matérielle, que ce soit un
Arduino, un Raspberry Pi, un PC ou même un Cloud Microsoft Azure ou Amazon AWS.De plus, on
peut faire passer n’importe quel message sur les topics, par exemple du binaire ou du JSON, selon les
besoins.  Sécurité : De nombreuses possibilités de sécurisation sont disponibles. Mot de passe,
authentification par certificats client et serveur, chiffrement SSL/TLS, listes de contrôle d’accès…C’est
une qualité à ne pas négliger dans un monde où les objets connectés constituent un vecteur
d’attaque important.  Intégrité des données : MQTT introduit la notion de qualité de service (QOS)
qui permet à un client de s’assurer qu’un message a bien été transmis, avec différents niveaux de
fiabilité. Il y a aussi une fonctionnalité assez formidable : le will message, qu’on pourrait traduire par
“testament”. Il s’agit d’un topic qui est envoyé automatiquement lorsqu’un client se déconnecte.
Cela permet à n’importe quel client d’être notifié post mortem de la déconnexion d’un autre client et
d’agir en conséquence. Inconvénients [27]  Arborescence des topics : Comme nous l’avons vu, les
topics forment une arborescence dont les éléments sont séparés par des “/”. Cette arborescence doit
être conçue correctement a priori afin de pouvoir supporter toute évolution des nouveaux topics
susceptibles d’apparaître dans la vie du projet. Cela permettra de garantir la rétrocompatibilité des
clients amenés à se connecter en MQTT.  Prix de la sécurité : Il n’y a pas de miracle : comme partout
ailleurs, l’utilisation du protocole SSL/TLS a un coût non négligeable en termes de performances sur
de l’embarqué contraint. On ne peut déployer du MQTT sécurisé qu’avec un matériel suffisamment
puissant. Pour donner un ordre d’idée, il faut l’équivalent de la puissance d’un Raspberry Pi 2 pour
que les performances soient suffisantes. Un Arduino permettra de mettre en place du MQTT non
sécurisé mais les couches de sécurité additionnelles seront trop lourdes pour lui. De plus, l’échange
de certificats client/serveur est relativement compliqué à mettre en œuvre. Un couche de sécurité
propriétaire est donc la bienvenue, mais complexifie le développement. Internet des objets (Internet
Of Things) 29 Implémentations MQTT depuis sa version 3.1.1 est maintenant un standard OASIS,
(Consortium mondial qui travaille pour la standardisation de formats de fichiers ouvert). Il existe de
nombreuses implémentations dans la plupart des langages de programmation (C, C++, Java, Python,
…).La plus connue est nommée mosquitto (avec deux t), mais des implémentations propriétaires
existent aussi comme HiveMQ, qui propose de meilleures performances et une plus grande facilité
de passage à l’échelle sur des serveurs positionnés dans le Cloud par exemple [27]. MQTT est donc
un protocole léger, facile à appréhender, très souple et sécurisable. Il est de plus en plus au cœur des
projets IoT et supporté par la plupart des services de Cloud. MQTT est un protocole dynamique qui
continue à évoluer. Par exemple, il intègre dorénavant les Web Sockets qui lui ouvrent une porte sur
le monde du Web [27]. 7. Conclusion Ce chapitre a fait l’objet d’une étude sur la technologie d’IoT.
Nous avons présenté les différents concepts et composants ainsi que les caractéristiques des
systèmes d’IoT, leurs domaines d’applications et leurs défis. En particulier, nous avons étudié la
communication et les plateformes de gestion des systèmes d’IoT qui facilitent, aux développeurs, la
mise en œuvre de la communication, ainsi, elles permettent d’accélérer et de réduire le coût de
développement des produits et des applications IoT. D’après l’étude des domaines d’applications,
nous pouvons dire que les villes intelligentes englobent presque tous les domaines d’application
d’IoT. De ce fait, le chapitre suivant fera l’objet d’une étude générale des Smart Cities.

Vous aimerez peut-être aussi