Christophe Nowicki

October 6, 2009

Authentification à l’aide d’un lecteur RFID Phidgets

PhidgetRFID 1023

J’ai découvert les modules Phidgets dans botmag. Il s’agit d’un ensemble de modules électroniques (capteurs, relais, servomoteurs) qui fonctionnent sur la plupart des systèmes d’exploitation et sont programmable à l’aide de nombreux langages.

Je vais décrire dans cet article l’utilisation du Kit RFID pour l’authentification PAM sur une machine Debian GNU/Linux.

Présentation du PhidgetRFID Kit

Spécifications

L’interface lit les badges qui se trouvent à proximité et est équipée de 2 sorties (une commande de Led et une commande de relais). . Elle se raccorde sur un port USB et renvoie le numéro d’identification de badge.
Voici les spécifications du lecteur :

  • Consommation maxi: 100 mA ;
  • Portée (5 à 11 cm) ;
  • Sortie commande TTL ou CMOS (relais) ;
  • Sortie 5 Vcc/250 ohms (pour led) ;
  • Protocole de communication: EM4102 ;
  • Fréquence: 125KHz
  • Échantillonnage: 30 lectures/sec ;
  • Dimensions: 81 x 68 x 16 mm.

Où trouver le kit?

Le Kit est disponible chez :

Installation

Matériel

Rien de spécial, il suffit de brancher le module, et vérifier la détection à l’aide de lsusb :
# lsusb
Bus 002 Device 005: ID 06c2:0031 Phidgets Inc. (formerly GLAB)

Logiciel

L’ensemble des composants Phidgets utilisent un SDK unique, qui fourni une bibliothèque d’accès; dont voici la procédure d’installation :
# cd /usr/src
# wget http://www.phidgets.com/downloads/libraries/Phidgetlinux_2.1.6.20090928.tar.gz
# tar xzvf Phidgetlinux_2.1.6.20090928.tar.gz
# cd Phidgetlinux/phidget21
# make
# make install

Test de fonctionnement du lecteur

La 1ère étape consiste à tester le fonctionnement du lecteur à l’aide du programme mhc_rfid :
# cd /usr/src
# wget http://www.cmatthew.net/mhc_rfid/mhc_rfid.c
# gcc -o mhc_rfid mhc_rfid.c -g -O0 -Wall -lphidget21 -lm
# ./mhc_rfid
Waiting for RFID to be attached....Phidget RFID 2-output 78185 attached!
Output: 0 > State: 0
Output: 1 > State: 0
PhidgetRFID
Serial Number: 78185
Version: 206
# Outputs: 2
Antenna Status: 1
Onboard LED Status: 0
Press any key to start.....
Antenna ON Reading.....
Press any key to end.....
Got: 0107759322
Output: 1 > State: 1
Lost: 0107759322
Output: 1 > State: 0
Closing...

L’identifiant de la carte est 0107759322.

Gestion des droits

Par défaut l’accès aux périphériques USB est limité à l’utilisateur root. Pour donner l’accès à un utilisateur simple. Il faut configurer udev à l’aide du fichier fourni dans le kit de développement :
# cd /usr/src/Phidgetlinux/phidget21/udev
# cp 99-phidgets.rules /etc/udev/rules.d/

Débrancher et rebrancher le lecteur. Vous pourrez ensuite l’utiliser en tant que simple utilisateur.

Configuration de PAM

Pour utiliser ce lecteur comme système d’authentification, il faut installer et configurer un module PAM spécifique : PAM mhcrfid

Installation du module


# apt-get install libpam-dev
# cd /usr/src
# wget http://www.cmatthew.net/pam_mhcrfid/0.1.4/pam_mhcrfid.c
# gcc -Wall -fPIC -c pam_mhcrfid.c
# gcc -shared -o pam_mhcrfid.so pam_mhcrfid.o -lpam -lm -lphidget21
# mv pam_mhcrfid.so /lib/security

Configuration d’un service

Voici un exemple de configuration pour xscreensaver :
$ cat /etc/pam.d/xscreensaver
#
# /etc/pam.d/xscreensaver - PAM behavior for xscreensaver
#
auth sufficient pam_mhcrfid.so

L’utilisateur qui lance le service doit avoir un fichier .authtag contenant l’identifiant du tag :
$ cat -e ~/.authtag
0107759322$

Et voilà ;-)

Conclusion

Le système d’authentification n’est pas très solide, il n’y a aucune protection contre le rejeux et il est possible de sniffer l’identifiant du tag, etc…
Si vous cherchez une solution d’authentification plus forte, il faut regarder du côté du projet OpenPCD.
Mais cela peut être utile et très pratique dans certaines configurations, comme l’accès à certaines ressources de mon réseau domotique ;-)

Filed under: Debian,Do it yourself — Tags:, , — cscm @ 10:28

Powered by WordPress