Identifier une personne via une clé USB – Babash

Il y a quelques mois, Hervé, du site abavala.com, m’a contacté en m’expliquant son idée : « identifier une personne via une clé USB ».Intéressé par ce projet, je l’ai aidé en réalisant le script qui va bien…

En effet, je suis toutes les actualités en domotique et j’aimerai me lancer dans cette aventure dans ma future maison. Lorsque Hervé m’a contacté, j’ai tout de suite été partant.

Voici sa proposition :

L’idée que j’avais, était de permettre aux différentes personnes de la maison de s’identifier avec quelque chose de difficilement falsifiable et de très peu cher.

Tout le monde n’a pas de smartphone à la maison pour s’authentifier. Si je souhaite donner les clés à quelqu’un pour qu’il ou elle puisse passer en notre absence, je voudrais que cet objet puisse lui permettre de désactiver l’alarme et de la réenclencher à son départ.

J’ai pensé à la clé USB.  Elle serait pendue au porte clé avec les clés pour les serrures.
Chaque clé USB possède un identifiant unique que l’on peut lire.

Partant de cette idée et du constat qu’une clé USB dispose d’un identifiant unique : le fameux UUID, il n’a pas fallu beaucoup de temps pour commencer le script.

Un UUID reconnu serait alors capable de déverrouiller la porte et désactiver l’alarme, tout cela via une requête HTTP.

Disposant d’un NAS allumé 24/24, une rallonge USB suffirait pour en tirer parti.

Je me suis donc mis à la tâche en réalisant cela sur un Synology.

Détecter la clé et lancer un script

Très simple, il existe une application nommée Autorun pour Synology qui permet de déclencher un script lorsqu’un périphérique est branché.

Lire plus :   Faire son alarme sous Jeedom avec Xiaomi Home - Babash

Une fois installé, il faut corriger un paramètre : « search time ». Chez moi, j’ai du le mettre à 5 pour laisser le temps à mon Synology de monter la clé. Ce paramètre sera peut être à augmenter chez vous.

Formatage de la clé

La clé doit être formatée en EXT et disposer du fichier « autorun » à la racine.

Hébergement du script

Par souci de sécurité, le script ne sera pas stocké sur la clé USB. C’est pour cela que le fichier « autorun » ci-dessus n’est qu’une simple ligne de commande lançant un script tournant sur le Synology.

Les fichiers « verifUSB.php » et « authorized_keys » seront à déposer dans « /home/admin », soit le répertoire personnel du compte administrateur du Synology.

N’oubliez pas de modifier sur ces 2 fichiers les droits pour que seul « admin » puisse lire, exécuter et modifier.

Principe de fonctionnement

Au premier branchement de la clé, cette dernière n’est pas connue. Un fichier  « error.log » sera donc créé afin de connaitre l’UUID de la clé à certifier.

Il vous suffira ensuite d’ajouter cet UUID au fichier « authorized_keys » en respectant un UUID par ligne.

Au deuxième branchement, la clé sera donc reconnue et un autre fichier « access.log » sera créé attestant du bon fonctionnement du script.

Ainsi, via ces deux fichiers de log, vous aurez une traçabilité.

Personnalisation des actions

Mon script ne va pas plus loin. A vous de jouer en personnalisant les actions que vous souhaitez faire en cas de clé reconnue/non reconnue, soit les lignes 15 ou 23.

Vous utiliserez peut être la librairie PHP Curl pour exécuter des requêtes HTTP afin de déclencher des scénarios/actions de votre box domotique, des notifications par email, SMS ou push etc… bref, à vous de choisir.

Lire plus :   Sécuriser Asterisk | Babash

Script pas parfait, loin de là…

Je ne suis pas développeur, je préfère donc avertir de suite que la qualité du code risque de déplaire aux pros 🙂

J’ai encore un souci au niveau du démontage de la clé après exécution.

Je l’ai écrit en PHP car les commandes bash classiques pour récupérer l’UUID ne fonctionnaient pas sur le NAS. Et de ce fait, j’ai utilisé PHP comme alternative. Cela permettra de l’exploiter sur un NAS Synology, un linux, un windows et même un Raspberry si cela vous intéresse plus.

Cela a au moins l’avantage de fonctionner, de vous donner des idées et pourquoi pas, donner envie à certains d’entre vous de le reprendre, l’améliorer et de le partager au plus grand nombre via un Github par exemple.

N’hésitez surtout pas à me faire un retour par commentaire de ce poste pour informer les futurs lecteurs de vos avancées.

Je remercie une fois de plus Hervé, du site abavala.com pour m’avoir contacté afin que je l’aide et j’espère que vous aussi serez intéressé par son idée.

A lire également