Gartner prévoit qu’il y aura 20,8 milliards d’appareils connectés dans le monde d’ici 2020. Le nombre croissant d’appareils connectés dans l’Internet des objets (IoT) offre aux fournisseurs de services l’opportunité de développer de nouvelles sources de revenus. Pour les utilisateurs finaux, l’IoT a le potentiel de fournir des solutions qui peuvent améliorer considérablement la productivité et la qualité dans les domaines de la sécurité, de la santé, de l’éducation et de nombreux autres domaines. Pour tirer parti de cette opportunité, les fournisseurs de services doivent offrir une expérience client optimale tout en garantissant une protection absolue des données, de la confidentialité et de la sécurité des utilisateurs.
Cependant, ce grand nombre d’appareils divers augmentera également la vulnérabilité du réseau, de nombreux appareils étant susceptibles de devenir la cible de pirates informatiques et d’attaques par déni de service. Les appareils IoT sont souvent limités en termes de mémoire, de stockage et de ressources de calcul. Ces limitations rendent difficile la prise en charge d’algorithmes de sécurité complexes et évolutifs, car ceux-ci nécessitent une puissance de traitement plus élevée avec des cycles CPU faibles. Les appareils connectés pourraient également survivre à l’efficacité du cryptage.
Dans une enquête et un rapport de février 2016 sur l'avenir de la fourniture de services mobiles, Jim Hodges, analyste senior chez Heavy Reading, a souligné que la principale préoccupation des fournisseurs de services en matière de sécurité concerne les pannes causées par les attaques par déni de service distribué (DDoS) et les attaques de botnet. Cette peur est suivie de menaces liées à l’intégrité du système dans lesquelles le trafic est manipulé par des attaquants externes tout en usurpant l’identité d’un utilisateur.
Trois concepts sont fondamentaux pour la sécurité de l’IoT : l’identité, l’authentification et l’autorisation. L’identité consiste à nommer et à donner une autorisation au client. L'authentification signifie prouver l'identité du client, et l'autorisation fait référence à la gestion des droits qui sont accordés au client. Pour permettre davantage la collecte de données sur les appareils pour une analyse intelligente en temps réel, des protocoles de communication IoT doivent également être convenus.
Les protocoles de messages IoT doivent inclure les fonctions de haut niveau suivantes :
Aujourd’hui, le protocole de messagerie IoT le plus populaire est MQTT (Message Queue Telemetry Transport). MQTT est utilisé comme protocole de transport principal dans tous les secteurs d'activité, notamment la fabrication, l'expédition/le suivi des actifs, l'énergie et les maisons connectées . Des entreprises telles qu'IBM, Microsoft, Amazon Web Services et Facebook Messenger utilisent toutes MQTT pour une livraison rapide des messages et pour économiser la batterie des appareils.
Les protocoles IoT comme MQTT sont utilisés pour une communication sécurisée et fiable entre les appareils. MQTT est basé sur le protocole de contrôle de transmission (TCP) et peut être sécurisé avec Transport Layer Security (TLS). Le protocole MQTT a été conçu avec de faibles besoins de calcul et de mémoire qui sont optimisés avec une taille de paquet beaucoup plus simple et plus petite que HTTP pour certaines applications IoT.
MQTT a été créé à l'origine en 1999 pour les capteurs distants, mais a trouvé une nouvelle vie avec diverses applications IoT basées sur un modèle de publication et d'abonnement. Les appareils/capteurs « publieront » des données sur une plateforme IoT (broker) et l’ application IoT « s’abonnera » ensuite aux données pertinentes pour son cas d’utilisation. Les données publiées et souscrites sont appelées « sujet », et peuvent être organisées dans une structure hiérarchique basée sur des cas d'utilisation et la catégorie du type de données. La connectivité et les communications entre les appareils et leur plate-forme influencent la charge, le contrôle et la sécurité requis par chaque cas d'utilisation.
Afin de maintenir le protocole aussi léger que possible pour les appareils IoT aux ressources limitées, MQTT offre une sécurité minimale au-delà de TCP. MQTT recommande uniquement d'utiliser le protocole TLS pour les applications nécessitant des niveaux d'authentification supplémentaires. Par conséquent, les communications MQTT qui reposent uniquement sur TCP ne sont pas chiffrées et sont susceptibles d’être victimes d’attaques de type « man-in-the-middle ».
Le protocole MQTT comporte un certain nombre de vulnérabilités potentielles. Par exemple, les ports ouverts peuvent être utilisés pour lancer des attaques par déni de service (DoS) ainsi que des attaques par dépassement de mémoire tampon sur les réseaux et les appareils. En fonction du nombre d'appareils IoT connectés et des cas d'utilisation pris en charge, la complexité de la structure du « sujet » peut augmenter considérablement et entraîner des problèmes d'évolutivité. Les charges utiles des messages MQTT sont codées en binaire et les types application/appareils correspondants doivent pouvoir interagir. Un autre problème concerne les noms d’utilisateur et les mots de passe des messages MQTT, qui sont envoyés en texte clair.
Bien que cela ne fasse pas spécifiquement partie de la spécification MQTT, il est devenu habituel pour les courtiers de plateformes IoT de prendre en charge l'authentification client avec des certificats côté client SSL/TLS. Le cryptage du transport avec SSL et TLS peut protéger les données lorsqu'il est mis en œuvre correctement. Pour se protéger contre les menaces, les données sensibles, y compris les identifiants d’utilisateur, les mots de passe et tout autre type d’informations d’identification, doivent toujours être cryptées.
L’inconvénient de l’utilisation de TLS, SSL et d’autres méthodes de cryptage est qu’elles peuvent entraîner une surcharge importante. Cependant, des techniques telles que la reprise de session TLS peuvent compenser certains des coûts de connexion de TLS. L’accélération matérielle est une autre méthode permettant de réduire la pénalité de taille liée au chiffrement. Pour les applications complexes sur des appareils contraints, une bibliothèque de chiffrement optimisée peut être très utile. Lorsque le code application est volumineux, une bibliothèque de chiffrement peut réduire la mémoire de traitement et augmenter les performances.
L’architecture de MQTT dépend de la haute disponibilité des courtiers. L’utilisation de certificats X.509 pour l’authentification client peut économiser des ressources côté courtier lorsque de nombreux clients tentent d’utiliser les services du courtier, tels que les recherches de base de données ou les appels de services Web. La combinaison de MQTT avec des normes de sécurité de pointe telles que TLS et l’utilisation de certificats X.509 peuvent également contribuer à améliorer la sécurité et les performances.
L’IoT représente une nouvelle opportunité commerciale importante pour les fournisseurs de services. Bien que la sécurisation du protocole de messagerie MQTT avec TLS soit une considération de sécurité importante, de nombreux autres vecteurs d’attaque peuvent également être exploités. Les fournisseurs de services doivent garantir une sécurité de bout en bout avec une authentification stricte des appareils, une autorisation et une politique appliquée par le réseau pour l’accès aux chemins de communication. Le cryptage des données à des fins de sécurité et de confidentialité est également essentiel aux flux de revenus des fournisseurs de services afin de fournir une expérience client optimale.