Communication sécurisée avec un Arduino récepteur

French support forum, post can be done in French, answers will either be in French or in English.

Moderators: rtenklooster, BertB, Voyager, Stuntteam, Deennoo

Post Reply
Message
Author
Waryard
Normal user
Posts: 14
Joined: 16 Nov 2018, 13:48

Communication sécurisée avec un Arduino récepteur

#1 Post by Waryard » 25 Sep 2019, 19:02

Bonjour à tous,

J'ai un Arduino avec un RXB6 chargé de déclencher un relais pendant 1sec (trigger) lorsque mon RF-link (sur un Raspi avec Jeedom) le lui ordonne. Le relais va désarmer la gâche de ma porte d'entrée donc je ne prend pas ça à la légère.

Le fait est que certains voisins semblent manier les protocoles que j'utilise (J'utilisais une prise connectée lambda (une Flamingo SF-501PFR de chez Action pour ne pas la citer), je l'ai déclenchée une seule et unique fois pour l'inclure dans Jeedom à travers le RF-Link, quelques jours plus tard la prise s'est activée et j'ai la certitude que ce n'est pas un défaut de la prise car Jeedom a intercepté la commande d'allumage).

Je suis donc à la recherche d'une façon d'envoyer des infos de façon sécurisée vers mon Arduino (j'ai une idée en tête qui fonctionne mais qui a ses limites)

Merci par avance!

Couin
Normal user
Posts: 2
Joined: 08 Sep 2019, 21:32

Re: Communication sécurisée avec un Arduino récepteur

#2 Post by Couin » 26 Sep 2019, 00:25

Bonjour,

Sauf erreur, RF-Link ne gère pas de codes tournants. Si c'est bien le cas, ta commande radio envoyée dans les airs sera toujours la même.
Il suffira de rejouer ce signal (même sans comprendre le protocole) pour ouvrir ta porte, comme pour les PLIP auto des années 90...

Je regarderais ailleurs dans ce forum, une commande ad hoc passée à un interrupteur ESP Easy, ça doit se trouver.
Et en cas de parano, on peut tirer un câble réseau (en PoE a y être), ou même tirer un fil de commande depuis le Raspberry Pi ;)

Waryard
Normal user
Posts: 14
Joined: 16 Nov 2018, 13:48

Re: Communication sécurisée avec un Arduino récepteur

#3 Post by Waryard » 26 Sep 2019, 01:44

Couin wrote:
26 Sep 2019, 00:25
Bonjour,

Sauf erreur, RF-Link ne gère pas de codes tournants. Si c'est bien le cas, ta commande radio envoyée dans les airs sera toujours la même.
Il suffira de rejouer ce signal (même sans comprendre le protocole) pour ouvrir ta porte, comme pour les PLIP auto des années 90...

Je regarderais ailleurs dans ce forum, une commande ad hoc passée à un interrupteur ESP Easy, ça doit se trouver.
Et en cas de parano, on peut tirer un câble réseau (en PoE a y être), ou même tirer un fil de commande depuis le Raspberry Pi ;)
Merci pour votre réponse.

Mon idée était de mettre disons 10 codes fixes dans l'arduino, les mêmes dans le RF-Link (enfin, dans Jeedom).
On initialise une variable n à 1
Lors de l'utilisation du code n (1 pour commencer), cette variable est incrémentée des deux côtés et l'Arduino ne s'exécutera que s'il reçoit le nouveau code n etc jusqu'à 10, puis retour à zéro.
Donc si mon voisin intercepte et stock les 10 codes (comme il l'a fait auparavant), il n'a qu'une chance sur 10 de déclencher quelque chose.

Cela peut être couplé avec un délai entre les codes reçus pour éviter de déclencher s'il essaie tous les codes à la suite, le raspberry ne se trompant (en théorie) jamais.
J'ai pris 10 codes comme exemple mais cela peut très bien être 100 voire 1000, dans l'arduino aucun problème pour les stocker mais faire 100 ou 1000 conditions dans Jeedom est particulièrement aliénant.

Ceci étant, lors d'une coupure de courant le raspberry continuera de fonctionner (onduleur) donc gardera la variable en l'état, tandis que l'Arduino reprendra au code 1. A moins de gérer l'EEPROM.
Mais si l'un des deux appareils vient à perdre la synchronisation (trame émise mais non reçue par exemple), dans Jeedom la modification manuelle de la variable est possible mais longue, tandis que pour l'Arduino il est impossible de connaitre la valeur de la variable et donc la seule manière de les resynchroniser est le classique Reset.

Sinon si l'Arduino possède un module RTC on peut autoriser un seul code par heure en fonction de l'heure et un seul code par minute en fonction des minutes. Ce qui fait 60+24=84 codes à gérer. Soit 84 conditions à faire à la main dans Jeedom. Ainsi si la trame récupérée malintentionnellement n'est pas réémise dans la même minute de la même heure, elle est caduque. Pour accentuer la parano on peut aussi attaquer les jours, mois et années mais à ce niveau de parano il vaut mieux privilégier la paire de fils, en effet.

Je ne veux pas mettre de module RTC. Dans un soucis de simplicité, j'ai donc retiré l'Arduino. J'avais justement un NodeMCU sous ESPEasy pas loin, j'ai donc tiré un câble jusqu'à ce dernier. Le problème est que le NodeMCU ne parvient pas à commuter le relais (à cause du 3.3v qui n'est pas suffisant pour que le relais bascule, attendant du 5v). J'ai donc prévu un transistor, je câblerai le tout bientôt.

Couin
Normal user
Posts: 2
Joined: 08 Sep 2019, 21:32

Re: Communication sécurisée avec un Arduino récepteur

#4 Post by Couin » 02 Oct 2019, 01:44

Si ton voisin s'amuse à rejouer des codes passés, tu vas finir par rester dehors!

Je pencherai plus pour une double authentification.
Par exemple, ta commande radio active pour 20s un lecteur RFID, ce qui te laisse le temps de badger.
Le lecteur RFID serait juste derrière la porte, tout comme le récepteur radio.
Et ta télécommande serait couplé avec le badge RFID sur le même porte-clefs ;)
Ne faire que la 1ère étape ne donnerait rien de visible de l'extérieur.

Également, si tu souhaites utiliser l'heure sans module RTC (rarement très précis), penche toi du côté du protocole NTP!
C'est fiable et précis, tu peux même avoir un serveur-relais NTP sur ton Raspberry.
De là, on peut imaginer des codes tournants.

Pour la commande d'un relais, le 1er transistor classique venu devrait faire l'affaire.
J'imagine que le relais a un minimum d'électronique (diode de roue libre, etc).
Pour mes besoins, j'utilise des MOSFETs qui supporte bien une commande en 3.3v, à voir aussi (ex. IRLZ44).

Bonne chance!

Waryard
Normal user
Posts: 14
Joined: 16 Nov 2018, 13:48

Re: Communication sécurisée avec un Arduino récepteur

#5 Post by Waryard » 04 Oct 2019, 17:54

Je pencherai plus pour une double authentification.
Par exemple, ta commande radio active pour 20s un lecteur RFID, ce qui te laisse le temps de badger.
Le lecteur RFID serait juste derrière la porte, tout comme le récepteur radio.
Et ta télécommande serait couplé avec le badge RFID sur le même porte-clefs ;)
Ne faire que la 1ère étape ne donnerait rien de visible de l'extérieur.
C'est une idée mais si déjà on a un module RFID, inutile de le coupler à de la RF, sachant que mon voisin peut intercepter les trames RF et les réémettre librement, alors que si ce dernier n'a jamais eu mon badge entre les mains pour en faire un dump, la seule manière de déclencher mon système est le bruteforce, ce qui réduit quasiment à néant la probabilité que la porte s'ouvre (rue piétonne + délai de 2 secondes entre les lectures)

L'idée étant de s'affranchir de tout support physique, la solution actuelle impliquant un NodeMCU me permet d'ouvrir ma porte via un simple appui sur mon smartphone, en toute sécurité (HTTPS lui-même encapsulé dans le VPN de ma Freebox)
Également, si tu souhaites utiliser l'heure sans module RTC (rarement très précis), penche toi du côté du protocole NTP!
C'est fiable et précis, tu peux même avoir un serveur-relais NTP sur ton Raspberry.
De là, on peut imaginer des codes tournants.
J'ai un DS3231 mis à l'heure en 2016 qui a vrillé de 2 secondes en 3 ans, ça reste utilisable pour ce genre d'applications mais c'est complexe à mettre en oeuvre sous Jeedom
J'ai une petite dizaine de NodeMCU sous ESPEasy qui sont synchronisés à un serveur NTP externe, pour limiter les requêtes je pourrais en effet mettre à profit le raspberry, mais ayant la fibre gigabit ce n'est pas quelques requêtes qui vont plomber mon réseau xD
Pour la commande d'un relais, le 1er transistor classique venu devrait faire l'affaire.
J'imagine que le relais a un minimum d'électronique (diode de roue libre, etc).
Pour mes besoins, j'utilise des MOSFETs qui supporte bien une commande en 3.3v, à voir aussi (ex. IRLZ44).
J'ai des TIP31C, qui me servent déjà à jouer des mélodies RTTTL d'un NodeMCU sur un petit haut-parleur de BIOS (pas un buzzer piezo), le relais fonctionne à merveille.
Concernant les composants du module relais, c'est celui-là : https://fr.aliexpress.com/item/32909882481.html
Le schéma est le suivant : Image
A la différence près que j'ai trouvé d'autres valeurs pour les résistances dans d'autres schémas identiques, j'ai donc une 47 kOhm entre la sortie du NodeMCU et la base de mon NPN, et une 1 kOhm entre le 5v et l'entrée du relais.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest