Des protocoles IoT Smart Home et leurs faiblesses

Dany Goncalves
INSA TC
Published in
9 min readJan 5, 2020

INTRO

Les SmartHome ( = maisons connectés ) sont en plein essor. L’envie des gens de connecter leurs maisons est grandissante. Mais cela est il totalement sans risque ? Peut on faire confiance aux protocoles IoT dans le cadre de notre environnement privé (domicile) ? Pour répondre à cette question, nous avons décidé d’étudier 2 protocoles répandus dans le domaine de l’IoT : RFID et ZigBee, afin de découvrir leurs fonctionnement global et leurs potentielles faiblesses qui peuvent nous porter préjudice.

RFID

Définition

RFID (Radio Frequency Identification) est une méthode de récupération, d’envoi et d’identification de donnée par le biais de liaisons radios. Pour fonctionner un système RFID a besoin de divers éléments :

· Tag RFID ou radio étiquette en français

· Readers RFID ou lecteur RFID

· Antennes (envoi/réception des signaux radios)

· Réseaux Informatiques (traitement des informations radios reçues)

Schéma architecture RFID ( https://www.researchgate.net/figure/Schema-illustrant-un-systeme-RFID-Les-etiquettes-sont-aussi-appelees-transpondeur-ou_fig1_283349710)

Comme nous pouvons le voir sur le schéma ci-dessus les lecteurs RFID peuvent émettre et/ou recevoir des signaux radios à destination des radio-étiquette, qui elles vont répondre au lecteur RFID dans différents but : envoyer de l’information ou encore être identifier…
Côté lecteur, ces informations peuvent être envoyé, par le biais d’un réseau informatique, à un ordinateur pour être traitées.

Tag RFID

Exemple de puces RFID et tableau montrant les classification des gammes de fréquences RFID (img 1 : https://sbedirect.com/fr/blog/article/comprendre-la-rfid-en-10-points.html & img 2 : source [1])

Les tags RFID sont composés de 3 principaux composants :

· Une antenne

· Un récepteur radio

· Un modulateur radio à qui gère la gestion de la mémoire, les réponses aux lecteurs RFID, et parfois l’énergie du système en lui même

Cette méthode est utilisée dans divers domaines et diverses applications, mais en ce qui concerne l’IoT et les smart homes, nous pouvons distinctement noter son utilisation pour les serrures connectées à déverrouillage par smartphone ou badge. Utilisé ici le RFID permet d’identifier des équipements et donc des personnes spécifiques pour leur permettre l’accès ou non à la maison équipée de ce type d’équipement, mais cela est-il réellement plus sûr que les serrures traditionnelles ?

Lecteurs RFID

Le rôle du lecteur RFID est d’envoyer un signal radio pour « réveiller » les tags à proximité de lui afin que ceux-ci répondent et se fassent identifier ou envoient des données. Habituellement, ils émettent un signal radio de manière continuelle afin de mettre en écoute n’importe quel tag passant à proximité. Un lecteur RFID est donc équipé d’une antenne pour pouvoir capter les réponses des tags. Ces communications peuvent se faire sur différentes bandes de fréquences (cf tableau ci-dessous)

Classification des gammes de fréquences RFID (source [1])

Types d’attaque sur RFID

Classification des attaques sur RFID (source [2])

Nous nous intéressons ici principalement aux attaques sur la couche physique et réseaux qui sont propres à la méthode RFID. Celle-ci sont basées sur les « faiblesses » du RFID : le fait que les communications soient radios et donc qui peut être intercepté par tous, son manque de sécurité certain ou encore son manque de résistance aux manipulations.

Perturbation des communications RFID

Il est assez simple pour un attaquant de rendre une communication RFID impossible en détruisant physiquement le lecteur RFID (cela implique qu’il y a accès). Une autre manière plus spécifique pour un attaquant de parvenir à son but est d’interférer avec les signaux radios des communications RFID en émettant des signaux de même gamme de fréquence, ajouté au bruit cela peut rendre la communication entre les systèmes RFID compliqué voire impossible.

Copie d’un tag RFID

Un autre type d’attaque plus basé sur la couche réseau mais aussi sur la couche physique consiste à copier, ou imiter le tag RFID d’un objet afin d’en usurper l’identité ou falsifier les informations attendues par le lecteur. La copie d’un tag RFID peut passer par plusieurs moyens, l’un d’eux est d’avoir accès à la puce RFID en question physiquement et de la copier grâce à un lecteur RFID et un logiciel de copie de tag. La réalisation d’une copie dans ce cas là implique que l’on a accès physiquement à l’étiquette RFID qui nous intéresse et dépend beaucoup de la complexité du système RFID mis en place qui sont désormais souvent renforcé par des systèmes de challenges afin de protéger les tags. Ces mécanismes de challenges peuvent s’avérer efficaces, ils consistent à ne jamais envoyer l’identifiant de la puce sur le réseau et de le conserver dans une zone mémoire sécurisé. Cet identifiant peut ensuite être utilisé pour chiffrer des données reçues depuis le lecteur RFID pour prouver la possession de la clé en question et ainsi prouver son identité. Ce mécanisme apporte une réelle couche de sécurité et est beaucoup plus difficile à attaquer. En effet, cela nécessite des mécanismes beaucoup plus complexes pour extraire la clé de la zone mémoire sécurisé ou de long temps de calculs pour retrouver la clé à partir de possibles interceptions d’échanges.

ZigBee

Comment ça marche (network architecture)

ZigBee est un standard de la ZigBee Alliance construit par-dessus le standard 802.15.4. Ce-dernier est responsable de l’implémentation des couches physique (PHY) et MAC qui s’occupent de la bonne transmission des trames en évitant le bruit et les collisions. Là où ZigBee intervient c’est au niveau des couches supérieures. Il va implémenter 5 couches supplémentaires représentées dans le schéma ci-dessous.

Schéma couches Zigbee (NWK, APS, APF, SSP, ZDO) (source [6])

La couche NWK permet de découvrir et de rejoindre des réseaux ZigBee, elle décide des routes à prendre et définit des adresses ZigBee. La couche APS est responsable d’éviter la duplication de paquets et gère la table de liaison des nœuds du réseau. La couche SSP établit des mécanismes de sécurité pour les couches NWK et APS. La couche ZDO gère tous les équipements du réseau ZigBee, notamment leur découverte et leur initialisation. Enfin la couche APF gère l’application côté utilisateur et les données échangées entre applications.

Il y a trois type de nœuds dans un réseau ZigBee : le coordinateur, le routeur et le terminal (ou end device en anglais). Le coordinateur crée le réseau, choisit sa fréquence, et permet aux autres nœuds de rejoindre ou quitter le réseau. Les routeurs, qui sont optionnels, sont responsables de transmettre les messages entre les terminaux et le coordinateur. Les terminaux sont ce que l’utilisateur connait le mieux puisqu’il s’agit des objets connectés dont il se sert.

La couche NWK supporte 3 topologies différentes : en étoile, en arbre ou maillé. Dans un réseau en étoile tous les messages passent par le coordinateur, qui se gère de router les paquets aux bons nœuds. Dans une topologie en arbre les routeurs transmettent les données de manière hiérarchique. Dans un réseau maillé les routeurs ont plusieurs possibilités de chemins et calcul donc la meilleure route pour chaque message, permettant au réseau de se reconfigurer dans le cas de l’arrêt d’un nœud.

Schéma des différentes topologies (source [6])

Comment c’est sécurisé

Bien que ZigBee soit un standard léger à implémenté, il procure quand même beaucoup de services de sécurité. Certains sont extraits du standard 802.15.4 mais d’autres sont directement ajoutés par ZigBee.

Tout d’abord tous les messages échangés sont chiffrés avec des clefs symétriques, qu’on explicitera juste après. Ce chiffrement est exécuté avec l’algorithme de chiffrement sécurisé AES-128 bits en mode CBC (cryptographic block ciphers) permettant l’authentification et la confidentialité des messages. L’intégrité quant à elle est assurée par un MIC (Message Integrity Check) correspondant à un hash du message. Dans l’entête de la couche NWK se trouve un compteur de trames augmenté et vérifié par chaque équipement. Cela permet notamment d’éviter les attaques par rejeu où un attaquant retransmet une ancienne trame dans un but malicieux.

ZigBee détermine aussi un Trust Center (TC), qui correspond très souvent au nœud coordinateur, permettant de gérer l’ensemble du réseau. Il s’occupe d’intégrer les nouveaux équipements au réseau, de configurer les routeurs et gère globalement la sécurité avec notamment l’habilité de changer la fréquence du réseau s’il détecte une attaque de brouillage. Le TC c’est aussi et surtout l’équipement qui distribue et gère les clefs de chiffrements.

Il existe 3 principales clefs de chiffrement définies par ZigBee :

- La Link Key : utilisée entre une paire d’équipement pour communiquer de manière sécurisée au niveau des couches APS et APF.

- La Master Key : permet de chiffrer l’échange initial de la Link Key entre deux équipements

- La Network Key : assure le chiffrement au niveau de la couche NWK, elle est utilisée entre le TC et tous les nœuds du réseau.

Ces clés peuvent être préinstallées sur les équipements ou bien échangées via le réseau. Il en existe d’ailleurs d’autres types sur la version 3.0 de ZigBee permettant d’intégrer des équipements demandant plus de sécurité comme verrou de porte ou de garage.

Une vulnérabilité acceptée par le protocole est le fait que les couches se font confiance entre elles, les messages sont chiffrés uniquement entre équipements, pas entre les couches mêmes d’un équipement.

Comment on peut l’attaquer

Il existe une méthode assez connue pour attaquer le réseau ZigBee quand un nouvel équipement rejoint le réseau. En effet quand le coordinateur détecte un nouvel équipement souhaitant rejoindre le réseau il va lui envoyer la Network Key pour sécuriser les échanges. Le problème est que cette Network Key est chiffrée avec une clé par défaut (Trust Center Default Link Key) qui est connue et écrit dans la documentation officielle ZigBee. Il s’agit du code hexadécimal du mot “ZigbeeAlliance09”.

:Valeur de la clé Default Trust Center Link Key (source [5])

Ainsi à l’aide d’un sniffeur de paquet on peut donc très facilement obtenir la Network Key et espionner l’ensemble du réseau. A partir de là on peut aussi utiliser de nombreux outils pour pouvoir agir sur le réseau comme le framework Python Killerbee par exemple, permettant entre autre d’envoyer des commandes par injections de paquets.

Le problème de cette attaque c’est qu’il faut avoir un timing précis, il faut savoir qu’un nouvel appareil va intégrer le réseau pour pouvoir sniffer la clé de chiffrement. Quelques solutions existent pour pouvoir obtenir ce scénario sur commande. Une première solution que propose Killerbee est d’usurper un équipement du réseau et d’envoyer une « join request » provoquant le ré-envoie de la clé par le contrôleur. Une seconde solution est de brouiller le réseau pour que l’utilisateur perde toute connexion et tente de ré-appareiller son équipement générant à nouveau la clé de chiffrement.

Ces attaques ne fonctionnent que si la Network Key est chiffrée avec la clé par défaut. ZigBee 3.0 propose de les éviter en chiffrant la Network Key avec une clé hors bande située sur l’équipement. Même si cette solution n’est pas invulnérable elle donne à l’utilisateur la main sur une partie de la sécurité de son réseau.

Conclusion

Comme nous l’avons vu, les protocoles que nous avons étudié ne sont pas exempts de problèmes et de faiblesses. Ces faiblesses peuvent certaines fois donner une porte ouverte vers une parties de notre réseau domestique ou sur des potentielles données. Le plus important pour l’utilisateur est de connaitre ses faiblesses pour lui permettre de faire le bon choix concernant ce qu’il souhaite faire et potentiellement dévoilé ou non. Est-il réellement problématique que la serrure connectée permette une ouverture facile pour une personne informée ? Ces personnes informées ont-elle un réel intérêt à rentrer chez-nous ? Vont-elles le faire (en prenant en compte la complexité de la tâche) ?

Bibliographie

[1] UNDERSTANDING RFID TECHNOLOGY, Chapter 2, Simson Garfinkel, Henry Holtzman, 2005
[2] Classifying RFID attacks and defenses, Aikaterini Mitrokotsa, Melanie R. Rieback, Andrew S. Tanenbaum, 2010
[3] A Lightweight RFID Protocol to protect against Traceability and Cloning attacks, Tassos Dimitriou, Athens Information Technology, 2005
[4]SECURE ACCESS CONTROL THROUGH CHALLENGE AND RESPONSE AUTHENTICATION, https://www.maximintegrated.com/en/design/technical-documents/app-notes/4/4784.html
[5] ZIGBEE HOME AUTOMATION PUBLIC APPLICATION PROFILE
http://read.pudn.com/downloads703/ebook/2827955/docs-05-3520-29-00ha-home-automation-profile-specification.pdf
[6] ZigBee Security Vulnerabilities: Exploration and Evaluating, Salam Khanji , Farkhund Iqbal , Patrick Hung
[7] Security Analysis of Zigbee, Xueqi Fan, Fransisca Susan, William Long, Shangyan Li

--

--