Z-wave est un protocole de communication sans fil largement utilisé dans le domaine en pleine expansion de la domotique et des objets connectés. Il est optimisé pour permettre aux équipements de communiquer dans les meilleures conditions avec votre box domotique. Mais savez-vous comment sont protégées les données transitant sur le protocole z-wave ?
Un protocole adapté à la domotique
Cette technologie de faible bande passante en half-duplex a été développée pour les terminaux nécessitant une faible consommation électrique exigeant un faible débit de données. Z-wave fonctionne avec une longueur d’onde supérieure à celle des réseaux mobiles, ce qui lui confère une bonne faculté de pénétration dans les bâtiments ou en sous-sol. Avec une faible portée (environ 100m en espace libre),elle est particulièrement adaptée à la surveillance d’état de systèmes domotiques comme les relevés de températures, les alarmes, les prises connectées, les capteurs de fermeture de portes… Sa robustesse lui permet de se hisser sur le podium des meilleurs protocoles radio faible énergie. Un groupe de travail z-wave Alliance a été créé en 2005 pour favoriser la communication des différents acteurs de la technologie z-wave.
Panorama des protocoles radio
D’abord, assurer la sécurité des données
Si ce protocole est implémenté pour des équipements actifs d’une maison (actionner une porte) ou de surveillance (caméra), il convient de sécuriser les données qui y transitent. HP a d’ailleurs publié une étude qui présente les failles de sécurité sur les objets connectés qui peupleront nos maisons. Il met en lumière un manque de sécurité des mots de passe, de chiffrement ou encore les mécanismes d’authentification. Ce travail de sécurisation doit être envisagé dès la conception et validé dans le cadre de l’implémentation du système.
Il s’agit d’abord d’authentifier les équipements entre eux et chiffrer les données de commandes et d’états. En omettant la sécurité de ces systèmes domotiques lors des phases de conception, le constructeur expose l’utilisateur à des fuites de données personnelles. Par exemple, il n’est pas impossible de prendre le contrôle total d’un équipement d’une maison à l’insu de son propriétaire. L’attaque man-in-the-middle est la méthode la plus connue. Dans ce cas, la confidentialité et l’intégrité des flux de données ne seraient plus assurées. Une attaque de ce type a d’ailleurs été mise en évidence par des membres d’une équipe SensePost sur une gâche électrique développée par Sigma Design.
Un protocole d’échange de clé de chiffrement
Puisqu’il est nécessaire de chiffrer les données échangées entre la box domotique et à l’équipement connecté, ils doivent au préalable s’accorder pour utiliser une clé de session appelée clé de réseau Kn. Cet accord passe par la mise en place d’un protocole d’échange de clé présenté dans la figure ci-dessous basé sur le chiffrement de la clé de session et l’authentification de chacune des deux parties.
Le protocole d’échange de clé z-wave
Le protocole d’échange de clé est initié par la Box via le message Key Exchange Start à destination de l’équipement. La clé de chiffrement symétrique Kn+1, issue d’un algorithme générateur pseudo aléatoire 128-bit, est transmise chiffrée avec la clé de la session précédente Kn stockée dans la mémoire EEPROM.
S’il s’agit de la première session, c’est la clé par défaut K0 qui sera utilisée pour chiffrer la clé de session. Dans le même temps, un code d’authentification du message ou MAC est transmis. L’objectif est de vérifier que le message transmis ou payload n’a subi aucune modification et n’a pas été corrompu. Il assure également l’horodatage du message en y intégrant l’aléa Nd choisi par l’équipement.
K_0=byte[16]{0}
K_n=byte[16]{PRNG}
A chaque succès de l’exécution du protocole d’échange de clé, la clé de chiffrement courante Kn est stockée dans l’ EEPROM (Electrically-Erasable Programmable Read-Only Memory) pour être réutilisée au prochain échange de clé Kn+1. A ce stade, seuls la Box et l’équipement ont connaissance de la clé de session qui sera utilisée lors des échanges de commandes chiffrés.
A première vue, une attaque triviale consisterait à écouter le trafic pendant le tout premier échange de clé avec la clé K0 pour y déchiffrer la clé de session. Mais il est jugé difficile d’intercepter l’échange de clé qui suit le seul instant où le terminal est réinitialisé.
Le chiffrement des données z-wave
Après le succès du protocole d’échange de clé présenté précédemment, chacune des entités détient une clé 128-bit partagée Kn. Puis, la clé de session Kn est déclinée en deux sous-clés de 128-bit pour assurer la confidentialité et l’intégrité des échanges.
- Une clé de chiffrement Kc permettant de chiffrer les trames de commandes ;
- Une deuxième clé Km pour authentifier le contenu de la trame de commande.
Déclinaison de la clé Kn
Passwd_c et Passwd_m sont des mots de passe stockés dans le firmware z-wave afin de générer les deux sous-clés Kc et Km avec l’algorithme cryptographique symétrique AES-ECB (Advanced Encryption Standard Electronic Code Book ) 128-bit.
Chiffrement
Le chiffrement z-wave est assuré par l’algorithme de chiffrement à rétroaction de sortie AES-OFB et la clé de Kc.
C={IV,P}_Kc
Authentification
L’authentification du protocole z-wave est assurée par l’algorithme de chiffrement par blocs chaînés AES-CBCMAC (Advanced Encryption Standard Cipher Block Chaining Message Authentication Code)
et la clé Km. Le message ainsi généré permet de vérifier que la trame de commandes envoyée n’a pas été altérée ou corrompue.
MAC={IV,├ SH┤‖├ SRC┤‖├ DST┤‖├ LEN┤‖C}_Km
Une vulnérabilité d’implémentation du protocole
Le document d’évaluation de la sécurité z-wave, édité par des membres de SensePost, fait état de la sécurité du protocole en y démontrant une vulnérabilité sur un produit domotique en janvier 2014.
Elle a été découverte en interceptant et en analysant le trafic entre le contrôleur et l’équipement connecté à l’aide d’une carte z-wave instrumentée. Pour être plus précis, cette faille est centrée sur le protocole d’échange de clé et met en exergue un défaut d’implémentation.
Dans l’implémentation du protocole mis en défaut, le firmware z-wave ne vérifiait pas l’existence d’une clé de session sauvegardée dans l’EEPROM. Ainsi, la négociation avait toujours lieu avec la clé par défaut K0. Face à ce manquement, il était très aisé pour un attaquant d’usurper l’identité du contrôleur et de générer sa propre clé de chiffrement ou cryptographique dans l’ultime but de prendre le contrôle total de l’équipement convoité.
Mise en lumière d’une faille d’implémentation
Z-wave, le protocole sans-fil le plus sûr
Même si le protocole d’échange de clé z-wave a montré une faille d’implémentation dans l’équipement développé par Sigma Design, il reste néanmoins le protocole sans-fil le plus sûr, le moins énergivore et le plus adapté à un environnement domotique. Néanmoins, la sécurité des systèmes d’information doit intervenir dans toutes les phases de conception d’un système :
- l’étude de l’architecture logicielle,
- le développement logiciel,
- la validation logicielle.
En complément, il est aussi recommandé de mener des audits pour parfaire la sécurité logicielle et sensibiliser les différents acteurs lors de la conception d’un produit.
Sylvain
Passionné par la sécurité des systèmes d’information et les défis techniques qui en résultent, j’ai entrepris en septembre 2014 un mastère spécialisé en cybersécurité à Centrale Supélec et à Telecom Bretagne. Je réalise depuis le 1er avril mon stage à Orange Consulting à Rennes sur le thème de la sécurité des objets connectés.
Le partage des connaissances est pour moi une valeur fondamentale. Il doit permettre à chacun de se cultiver et de se tenir au fait de l’actualité « cyber » en perpétuelle mouvance.