Sécurité du protocole Z-Wave
Je vous propose, une série d’articles, afin de vous faire comprendre les différents moyens de sécurité mis en œuvre dans le protocole Z-Wave.
Je vais, ici, tenter de mieux démystifier les notions de sécurité du protocole Z-Wave, qui sont trop souvent laissées aux oubliettes.
Aucun système n’est parfait, et encore moins 100% sécuritaire, si quelqu’un souhaite vraiment entrer chez vous, il le fera, que vous ayez des verrous connectés ou traditionnels.
Dans ce premier sujet nous allons aborder:
- Les différents moyens mis en œuvre dans le protocole Z-Wave afin de mieux le sécuriser et par le fait même, votre demeure.
- Les différentes failles connues.
Viendront se greffer 4 autres articles plus spécifiques, mais en relation directe:
- Comment modifier sa clé de sécurité Z-Wave.
- L’inclusion sécurisée de vos modules.
- Explication du maillage mixte (à savoir des modules sécurisés et non dans un même réseau). Quels sont les effets sur la qualité de votre maillage ?
- Explication sur la capacité de beaming de vos modules, fort utile pour les serrures connectées Z-Wave et les modules FLiRS.
Commençons par la partie théorique sur les différentes classes de commandes sécurités exposées dans le protocole Z-Wave.
Classes de commandes Sécurités
De base en Z-Wave nous devons effectuer une inclusion afin de communiquer entre les modules. Lors de l’inclusion, il s’établit une relation de confiance en échangeant un HomeId qui permet d’identifier votre réseau. Donc de base on ne peut pas agir sur votre réseau Z-Wave comme on pourrait le faire par exemple avec du 433MHz. Lorsqu’on ajoute, que ce soit des modules RFLink ou RFXCom, en plus de trouver ses modules sans devoir les appairer, on obtient ceux de ses voisins.
Des chercheurs et les hackers ont été en mesure de désosser et d’exploiter le système en examinant les paquets pour en extraire le HomeId et, en se faisant, passer pour un contrôleur.
Cette attaque repose en grande partie sur le manque d’encryption dans les premières générations de puce Z-Wave.
Avec l’arrivée de la Z-Wave 500 Series platform (ZWave+ ou GEN5) les puces radio Z-Wave prennent en charge le chiffrement pour augmenter la sécurité. Par contre, l’utilisation de la classe de sécurité n’est pas obligatoire. C’est-à-dire que la classe de commande Security est présente, mais on n’est pas obligé de l’utiliser. La classe de commande Security est utilisée seulement lorsqu’on procède à des inclusions sécurisées.
L’ajout des échanges sécurisés entre les modules et le contrôleur a eu comme effet négatif de ralentir les échanges. En effet, les messages doivent d’abord être encryptés par le module émetteur puis décryptés sur le contrôleur et vice-versa.
On le constate facilement lors des inclusions en mode sécurisé où l’interview prend beaucoup plus de temps. Il y a aussi des négociations supplémentaires lors du processus d’inclusion qui augmentent la durée de l’interview.
Security S0
La classe de commande Security appelé S0 est apparue avec les sorties des modules en Z-Wave + déjà depuis 2013. La classe de commande Security ajoutait une encryption AES 128 bits dans les échanges afin de sécuriser le contenu des messages. Le support de la classe de commande Security au sein de la librairie openzwave est arrivé dès juillet 2014, pratiquement au même moment que le plugin openzwave devenait le plugin officiel Jeedom. Dès lors, les inclusions en mode sécurisé sont apparues.
Peu de modules ont besoin d’être inclus en mode sécurisé pour fonctionner. Mais certains, comme les serrures de portes, refuseront tout simplement d’opérer si ils n’ont pas été inclus en mode sécurisé.
J’ai dernièrement parlé de la classe de commande Barrier Operator utilisée entre autre sur les portes de garage, là aussi, il est recommandé d’effectuer l’inclusion en mode sécurisé.
Encore une fois, des chercheurs ont trouvé un moyen d’obtenir la clé échangée, mais cette fois ils l’interceptent en rejouant l’inclusion avec le même HomeId.
Ces attaques ne peuvent être réalisées qu’à proximité du module.
Si vous êtes intéressés aux détails de ces failles, elles ont été présentées au ShmooCon 2016.
La Z-Wave Alliance a rapidement réagi à cette présentation et a annoncé qu’ils mettront en œuvre une nouvelle stratégie d’échange de clés utilisant le protocole Elliptic Curve Diffie Hellman.
Security S2
La classe de commande Security 2 (aussi simplement appelée S2) et depuis le 2 avril 2017, est obligatoire pour l’obtention de la certification de nouveaux produits par la Z-Wave Alliance. C’est par cette certification qu’un constructeur a le droit d’apposer le logo Z-Wave sur un module. Cette certification donne un gage de comptabilité avec les différentes classes de commandes et le respect de leurs implémentations, entre autre.
La Classe de commande Security 2 vient d’améliorer le Z-Wave Plus avec une couche supplémentaire d’encryption AES 128 bits pour les échanges de messages. Elle a été élaborée dans le respect de la conformité de la norme de sécurité UL 1023.
Les deux premières couches de sécurité sont rejointes par un troisième: échange de clés ECDH (Elliptic Curve Diffie Hellman) toujours actif, ce qui rend virtuellement impossible le piratage « man-in-the-middle » et le « brute force ».
L’utilisation du ECDH et AES-128 réduisent considérablement le transfert des données. Ainsi la communication sécurité utilise 66% moins de pile. C’est lors des échanges radios que vos modules consomment le plus.
Avec les transferts allégés des données, les modules utilisant la CC S2 améliorent leurs performances dans leurs échanges sans fil de plus de 50%, ce qui réduit la latence à quelques millisecondes, les associations directes seront instantanées, vous ne les remarquerez même plus!
Les produits certifiés avec S2 commencent à arriver, Fibaro a déjà son dernier thermostat le FGT-001.
Aeotec ont eux aussi annoncés plusieurs modules en S2 durant CES 2018.
Coté Jeedom
Qu’en est-il du support de cette fameuse classe de commande S2 dans Jeedom ou plus précisément au sein de la librairie openzwave ? Pour le moment elle n’est pas encore supportée dans la librairie officielle openzwave. Le plugin Z-Wave pour jeedom utilise depuis 2017 un fork de la librairie (c’est-à-dire une copie à un moment t de la source) et l’équipe a apporté des changements et améliorations comme le support des classes de commandes CentralScene et Barrier Operator. Je n’ai pas d’information s’ils travaillent de leur coté sur l’implémentation de la S2.
On peut toutefois utiliser des modules S2 avec Jeedom, mais on ne bénéficiera pas de leurs nouvelles possibilités exposées par la S2.
Conclusion
Le but de cet article n’est pas de déclencher la panique. C’est plus dans le but de vous faire réfléchir.
On trouve des vulnérabilités liées à Internet toutes les semaines, ces vulnérabilités sont comblées et nous passons à autre chose. On n’arrête pas d’utiliser Internet pour autant. Dans la même idée, notre domotique nous apporte beaucoup d’avantages, confort et sécurité, malgré les risques.
Nos systèmes s’améliorent, chaque faille est graduellement comblée et nos systèmes deviennent de plus en plus sécurisés, jusqu’à la prochaine faille et ainsi de suite.
D’un côté, on a les fabricants qui se battent pour nous donner des nouveaux produits plus fiables et plus sécurisés, de l’autre côté, il y aura toujours quelqu’un qui cherchera une faille à exploiter, sans nécessairement avoir de mauvaises intentions.
C’est donc à vous de décider la part de risque, que ce soit en ajoutant ou non des serrures connectées (quel que soit le protocole), d’ouvrir sur Internet votre box, d’inclure en mode sécurisé ou non et j’en passe.
J’ai toujours été partisan, par exemple, d’avoir une box dédiée à l’alarme sans possibilité d’action via Jeedom sur cette box alarme. C’est contraignant, j’ai des capteurs en double sur certaines portes afin que ma domotique de confort puisse continuer de fonctionner étant donné que je ne peux pas partager l’état des capteurs. Mon Jeedom connaît seulement l’état actuel de ma centrale d’alarme. Ça m’est fort utile pour ma gestion de présence et le mode nuit.
Il s’agit de votre maison, vos données, vos biens et de ce fait, il en va de votre responsabilité de prendre le contrôle total de votre sécurité.
Très bon article. Merci