[TRIBUNE de David Brook, HCC EMBEDDED] MQTT est un protocole de communication léger et polyvalent qui, lorsqu'il est utilisé avec un mécanisme de sécurité tel que TLS, peut fournir une connectivité efficace, fiable et sécurisée à une myriade de petits objets IoT. Cependant, toutes les implémentations MQTT ne sont pas identiques. Une application doit être construite sur une plate-forme de haute qualité et avec un logiciel fiable pour assurer sécurité et fiabilité. Explications de David Brook, responsable ventes et marketing de l’éditeur HCC Embedded. ...
Selon les analystes, l'Internet des objets (IoT) pourrait englober jusqu'à 50 milliards de dispositifs connectés d'ici à 2020. C’est un vrai défi pour les ingénieurs qui développent la technologie sous-jacente permettant d’intégrer tous ces objets dans l'IoT de manière transparente. La majorité de ces dispositifs sont susceptibles d'être relativement compacts et simples, comme des capteurs et/ou des actionneurs intégrés dans des systèmes plus grands tels que des machines ou des usines. Quelle que soit la manière dont l'IoT est configuré, de nombreux objets architecturés autour de microcontrôleurs seront déployés sur de vastes zones et connectés à des centres de données dans le cloud. Pour ce faire, les ingénieurs ont besoin d'un protocole de connexion qui soit à la fois léger, simple, robuste et sécurisé.
Le principal candidat pour relever ce défi est MQTT, ou Message Queue Telemetry Transport. MQTT est un protocole simple qui permet à un dispositif embarqué de publier des messages vers le cloud et d’en recevoir en retour. Il ajoute un minimum de surdébit aux paquets par rapport à des protocoles comme HTTP et s’avère donc très efficace, se prêtant à des environnements à faible consommation d'énergie. Le mécanisme de publication/abonnement de MQTT s’appuie sur de nombreux clients connectés à un serveur agissant en tant qu’agent (ou broker). Un client est à la fois producteur et consommateur de données MQTT. La figure ci-dessous illustre une simple transaction de publication/abonnement MQTT.
Le protocole de messagerie MQTT s'articule autour de plusieurs principes fondamentaux :
- Un agent de messagerie agit comme un intermédiaire entre plusieurs abonnés. Il s’agit en pratique d’un serveur qui constitue le système central au travers duquel les données client sont communiquées.
- Les éléments de publication et d'abonnement n'ont jamais besoin d'être connectés.
- Un abonné peut s'abonner à un ou plusieurs sujets d’intérêt (ou topics).
- Un message publié peut être envoyé à de nombreux abonnés intéressés à recevoir des informations sur un sujet donné.
- Un abonné peut recevoir des messages de plusieurs émetteurs de messages.
- Un abonné peut se désabonner d'un sujet d’intérêt à tout moment
En pratique un client publie des données de format libre vers un agent en utilisant un « sujet » défini par l'application. Cet agent transmet alors les données à tous les clients qui ont souscrit audit sujet. Grâce à l'utilisation de caractères génériques (wildcards), un seul abonnement peut résulter en la réception de données provenant de plusieurs clients. De même, les données provenant d'une seule action de publication peuvent être transmises à de nombreux clients. La figure ci-dessous illustre comment un téléphone mobile peut communiquer en MQTT avec une automobile pour surveiller et commander le système de verrouillage des portes d’un véhicule.
MQTT fournit trois niveaux de qualité de service (QoS) qui représentent chacun un compromis entre le surdébit au sein de la communication et l'assurance qu'un message arrivera bien à bon port. Le niveau 0 dit « Fire and Forget » implique qu'il n'y a aucune garantie que le message sera effectivement reçu. Le niveau 1 garantit que le message arrivera au moins une fois, et probablement plus d'une fois. Le niveau 2 assure que le message est reçu une et une seule fois. La sélection d'une implémentation MQTT prenant en charge les trois niveaux donnera au développeur la flexibilité d’optimiser les communications selon les exigences requises par les données transmises.
Si MQTT ne garantit pas des connexions sécurisées, le protocole peut néanmoins former un mécanisme de communication sécurisé lorsqu'il est utilisé avec TLS (Transport Layer Security). TLS gère les connexions sécurisées : le serveur et le client s'authentifient en s’échangeant des clés et négocient une suite de chiffrement mutuellement acceptable pour l'échange de données. La version MQTT 3.1 permet l'utilisation d'un nom d'utilisateur et d'un mot de passe encodés dans un paquet pour permettre à un client de s'authentifier auprès du serveur de messagerie.
Un inconvénient souvent négligé dans les stratégies de sécurité est la qualité du logiciel de messagerie MQTT lui-même. De fait, une série récente d’importantes failles de sécurité a eu lieu non pas à cause d'algorithmes piratés mais à cause d'un code source de mauvaise qualité. Des épisodes tels que Heartbleed démontrent qu'un code de mauvaise qualité peut présenter des failles qu'un pirate est susceptible d’exploiter pour s'introduire. Pour ces raisons, il est avantageux de choisir un fournisseur qui emploie et peut démontrer un processus de développement de logiciels de qualité. HCC Embedded a ainsi mis en œuvre un protocole MQTT qui s'exécute sur sa pile TCP/IP conforme aux recommandations Misra, et qui peut justifier tout au long d’un cycle de vie de la validité de ses impératifs de qualité.