Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Tuto #2] Plugin Z-Wave - modules AEOTEC et FIBARO Z-Wave+ Sécurisé

Avatar de l’utilisateur
akenad
Actif
Messages : 697
Inscription : 27 oct. 2017, 11:39

[Tuto #2] Plugin Z-Wave - modules AEOTEC et FIBARO Z-Wave+ Sécurisé

Message par akenad » 21 janv. 2018, 23:18

Bonjour à tous, c'est akenad :-)

Aujourd'hui je vais vous présenter un retour d'expérience sur la mise en œuvre du plugin Z-Wave (version du 2017-12-08) sur une JeedomSmart 3.1.7 avec 2 modules Z-Wave+ : un répéteur AEOTEC et un switch FIBARO.

Le présent billet "(Part2)" fait suite au précédent ici
et a pour objectif de fournir un complément d'information sur la sécurité Z-Wave+ en répondant à la question posée par anto35 :
anto35 a écrit :
Un noeud non sécurisé est il capable de router des paquets sécurisés ? J'avoue que je me perd un peu avec ça. Il me semble qu'un noeud avec cadenas route des messages en clair, mais j'ai un doute sur l'inverse.
J'ai procédé en 3 étapes :
-étude théorique
-étude pratique
-réponse à la question posée

1) Etude théorique

Je me suis appuyé dans ma réflexion sur un article du magazine MISC de novembre 2015 écrit par Kevin Bontems intitulé « La sécurité du protocole Z-Wave », accessible ici :
https://connect.ed-diamond.com/MISC/MIS ... ole-Z-Wave

Voici les extraits choisis qu'il convient de retenir pour aider à répondre à la question posée :
(uniquement relevés dans les 4 premiers paragraphes)

- Z-Wave permet d’établir un maillage (réseau) pour relayer les communications
- implémente un mécanisme de retour d’état (ACK) permettant de garantir que les messages ont bien été reçus et compris
- sécurise les communications en s’appuyant sur un chiffrement symétrique AES (128 bits)
- 2 types d'équipements : contrôleurs et nœuds esclaves
- le réseau et ses équipements sont représentés par un identifiant respectivement « HomeID » et « NodeId »
- Certains nœuds peuvent être utilisés pour relayer le signal Z-Wave à d’autres. Un tel relais permet de construire un maillage et rend le réseau plus tolérant aux erreurs de transmission et de communication.
- Z-Wave est un protocole propriétaire (Une implémentation open source « OpenZWave » a été développée en analysant le fonctionnement du protocole) mais est basé sur un standard (ITU-T G.9959) normalisant les couches basses MAC et PHY). Au-dessus de ces deux couches bas-niveau, une troisième couche applicative décrit toutes les informations permettant de contrôler les modules et d’en rapporter l’état.
- le contenu des premiers champs de la couche applicative peut légèrement varier pour les trames multicast, routées ou chiffrées.
- Z-Wave permet aux modules (noeuds) de chiffrer les communications en AES 128 bits en utilisant la classe de commande COMMAND_CLASS_SECURITY. Celle-ci permet d’encapsuler les données de la couche applicative
- Avec OpenZWave, la liste des classes reconnues et sécurisées pour les différents périphériques est stockée dans le fichier de configuration zwcfg_[HomeID].xml
MISC-ZWave-securite.png
MISC-ZWave-securite.png (262.78 Kio) Consulté 4987 fois
Essayons maintenant d’interpréter ces informations:

En théorie si un noeud ayant des capacités de routage reçoit un message Z-Wave qui ne lui est pas destiné il le retransmet au destinataire final (notion de voisins et de table de routage). « Router » ou « relayer » ou « répéter » les messages/commandes de la couche applicative se réalise au niveau de la couche MAC sur la base des identifiants source et destination des nœuds. Qu'une commande soit chiffrée ou non (couche applicative) l'identifiant du noeud source et du nœud destination est toujours en clair (couche MAC).

Autrement dit il semble que théoriquement un nœud sécurisé ou non sécurisé ayant des capacités de routage pourrait être capable de router des commandes sécurisées ou non sécurisées.

2) Etude pratique

Pour mettre en pratique l'énoncé théorique précédent, j'ai utilisé la JeedomSmart et les 2 modules Z-Wave+ suivant :
-AEOTEC ZW117-C15 Range extender 6 Gen5 (v1.04) Répéteur
-FIBARO FGS-223 ZW5 Double switch 2 (v3.2) Double charge

Le micromodule switch est monté avec un interrupteur et une ampoule classique.
L'idée c'est d'avoir un nœud routeur (le répéteur) situé entre la JeedomSmart et le switch et d'éloigner suffisamment le switch de la JeedomSmart et du répéteur de telle manière que le switch ne puisse communiquer avec la JeedomSmart qu'au travers du répéteur (et non pas en direct).

Pour s'assurer que le switch est suffisamment éloigné pour ne pas communiquer directement avec la JeedomSmart il faudra partir d'un cas ou on peut effectivement allumer l'ampoule, puis débrancher le répéteur et constater qu'il n'est plus possible d'allumer l'ampoule.

Nous allons mettre en oeuvre 2 cas :

Cas 1 : JeedomSmart (commande non sécurisé) → répéteur (en mode sécurisé) → switch non sécurisé
Cas 2 : JeedomSmart (commande sécurisé) → répéteur (en mode non sécurisé) → switch sécurisé

Pour passer d'un cas à l'autre il faut faire une exclusion et une réinclusion (en inversant le mode sécurisé/non sécurisé) du répéteur et du switch.
La jeedomSmart est utilisée pour réaliser les inclusions et les exclusions des 2 modules dans le réseau Z-Wave.

Pour inclure et exclure les équipements :

-Switch1: pour inclusion ou exclusion, appuyer rapidement 3 fois sur l'interrupteur S1. (voir la documentation du FGS-223 pour le montage de l'interrupteur)
-Répéteur :
. Inclusion :
en mode non sécurisé : appuyer rapidement une fois sur le bouton.
en mode sécurisé : appuyer rapidement 2 fois en moins d'une seconde sur le bouton,
. Exclusion : appuyer rapidement une fois sur le bouton

A noter que lorsque le switch est en mode sécurisé, la valeur du paramètre « Associations in Z-Wave network security mode » est à 15 par défaut : sécurise tous les groupes d'associations.

Cas 1 : répéteur sécurisé, switch non sécurisé

Compte tenu de la disposition (JeedomSmart, répéteur, switch) qui a été réalisée, lorsqu'on débranche le répéteur, le switch passe en statut « DEATH » (visible dans la page santé zwave). Cela prouve que la JeedomSmart ne "voit" le switch qu'en passant par le répéteur, ce qui est le but recherché.
Pour refaire passer le switch en statut « Complete » il suffit de rebrancher le répéteur et d'allumer/éteindre une fois l'ampoule sur le switch à l'aide de l'interrupteur.
On allume l'ampoule en cliquant sur le bouton « Tester » de la commande « On » du Switch.
ATTENTION ! : cette classe de commande fonctionne ce qui ne veut pas dire que cela fonctionnerait pour toute les classes de commande.

Cas 2 : répéteur non sécurisé, switch sécurisé

La disposition (JeedomSmart, répéteur, switch) est identique au cas précédent. Cependant
même si le répéteur est branché le Switch reste en statut « DEATH »
Ce qui veut dire que la JeedomSmart ne voit pas le switch via le répéteur, et donc que le clique sur le bouton « Tester » de la commande « On » du Switch n'a pas d'effet.
Sante-zwave8.png
Sante-zwave8.png (78.32 Kio) Consulté 4987 fois
Voici le résultat des tests :
Noeud-securise2.png
Noeud-securise2.png (16.23 Kio) Consulté 4987 fois
3) Réponse à la question posée

Conclusion,
il semblait que théoriquement un nœud sécurisé ou non sécurisé ayant des capacités de routage pourrait être capable de router des commandes sécurisées ou non sécurisées,
mais en pratique la JeedomSmart ne « voit » pas le switch sécurisé « derrière » le répéteur non sécurisé et considère que le switch est mort, ce qui empêche d'envoyer une commande sécurisée.

Ma réponse @anto35 est donc la suivante :

> Un noeud sécurisé est il capable de router des paquets non sécurisés ?
oui en théorie et oui avec la JeedomSmart, le répéteur AOTEC et le Switch FIBARO.

> Un noeud non sécurisé est il capable de router des paquets sécurisés ?
Il semble que oui en théorie mais je n'ai pas réussi à confirmer ou infirmer à ce stade avec la JeedomSmart, le répéteur AOTEC et le Switch FIBARO.
La réponse n'est donc pas définitive.
Il conviendrait de poursuivre l'expérimentation, éventuellement avec d'autres équipements.

Voila j'espère que ce retour d’expérience sera utile aux membres Jeedom.

akenad :-)
Dernière édition par akenad le 25 janv. 2018, 18:48, édité 4 fois.
Présentation akenad
JeedomSmart Debian Stretch
Odroid-C2 eMMC Armbian Buster Kernel 5
RPi3B+ SSD Raspbian Stretch
RPi4B SSD Raspbian Buster
NUC Intel i7Gen7 ProxMox VM Debian Stretch & Buster

anto35
Timide
Messages : 376
Inscription : 10 juil. 2015, 21:17

Re: Plugin Z-Wave - JeedomSmart - modules AEOTEC et FIBARO Z-Wave+ Sécurisé (Part2)

Message par anto35 » 21 janv. 2018, 23:37

Bravo et merci c'est encore une fois ultra clair.

Ce que tu as constaté et lu me conforte dans l'idée que ces points ne sont pas très clairs.

Avatar de l’utilisateur
manuc0
Timide
Messages : 91
Inscription : 08 mars 2017, 09:36
Localisation : Belgique

Re: Plugin Z-Wave - JeedomSmart - modules AEOTEC et FIBARO Z-Wave+ Sécurisé (Part2)

Message par manuc0 » 22 janv. 2018, 09:58

Merci pour cette analyse claire et structurée !!

Avatar de l’utilisateur
nechry
Actif
Messages : 9644
Inscription : 24 juin 2014, 20:07
Localisation : Suisse
Contact :

Re: Plugin Z-Wave - JeedomSmart - modules AEOTEC et FIBARO Z-Wave+ Sécurisé (Part2)

Message par nechry » 22 janv. 2018, 12:00

@akenad et bien tu as devancé mon article qui va sortir dans les prochains jours. J'apporterai tout de même le complément d'informations sur la base de mes expérimentations qui sont exactement dans la même démarche que la tienne, mais avec des résultats différents.
As-tu consulté la documentation avant de poser ta question?
Les demandes de support en MP ne seront pas traité mais j'accepte les dons paypal.me/nechry
Visiter mon blog http://nechry-automation.ch/

Avatar de l’utilisateur
akenad
Actif
Messages : 697
Inscription : 27 oct. 2017, 11:39

Re: [Tuto #2] Plugin Z-Wave - modules AEOTEC et FIBARO Z-Wave+ Sécurisé

Message par akenad » 25 janv. 2018, 18:50

@nechry l'a dit, et il l'a fait, ici

Respect, et Merci.
akenad :-)
Présentation akenad
JeedomSmart Debian Stretch
Odroid-C2 eMMC Armbian Buster Kernel 5
RPi3B+ SSD Raspbian Stretch
RPi4B SSD Raspbian Buster
NUC Intel i7Gen7 ProxMox VM Debian Stretch & Buster

Avatar de l’utilisateur
akenad
Actif
Messages : 697
Inscription : 27 oct. 2017, 11:39

Re: [Tuto #2] Plugin Z-Wave - modules AEOTEC et FIBARO Z-Wave+ Sécurisé

Message par akenad » 25 janv. 2018, 20:56

A la lumière de l'expérimentation réalisée par nechry,
j'ai recommencé le test avec le répéteur AEOTEC en mode non sécurisé et le Switch FIBARO en mode sécurisé.
J'ai placé la jeedomSmart, le répéteur et le Switch sur une seule ligne,
la JeedomSmart et le Switch de part et d'autre et à égale distance du répéteur, à une distance suffisamment éloignée, mais pas trop.
J'ai branché puis débranché le répéteur à trois reprises, et à chaque fois envoyé des commandes allumer/éteindre l'ampoule à trois reprises.
Et donc voici le résultat :

Noeud-securise3.png
Noeud-securise3.png (17.43 Kio) Consulté 4871 fois

> Un noeud non sécurisé est il capable de router des paquets sécurisés ?
oui en théorie et oui avec la JeedomSmart, le répéteur AOTEC et le Switch FIBARO.
Et cette fois ci ma réponse est définitive.

Et je rejoins donc les résultats de nechry.

akenad :-)
Présentation akenad
JeedomSmart Debian Stretch
Odroid-C2 eMMC Armbian Buster Kernel 5
RPi3B+ SSD Raspbian Stretch
RPi4B SSD Raspbian Buster
NUC Intel i7Gen7 ProxMox VM Debian Stretch & Buster

Verrouillé

Revenir vers « Tutoriels »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité