Artisan Numérique

/système/sécurité/pam/ PAM, s'authentifier sur le pouce

Tout le monde s'authentifie avec un mot de passe, nous avons vu comment le faire avec une clef usb, voyons maintenant comment passer l'étape biométrique avec un lecteur d'empreintes.

Le principe

La lecture d'empreintes se classe dans la catégorie des systèmes d'authentification biométrique. Le principe est de scanner une première fois la surface d'un doigt pour obtenir une image des reliefs cutanés qui sera ensuite simplifiée pour obtenir une empreinte digitale réduite (EDR). L'EDR sera stockée pour servir de gabarit les fois suivantes.

Le technologie derrière l'EDR dépend beaucoup du logiciel ou du fabriquant de capteur mais globalement il s'agit de repérer les minuties de l'empreinte : bifurcations, fin de lignes, îles, deltas, etc... Une classification qui date de la fin du 19° siècle. Le principe étant que si l'EDR à valider et celle d'origine ont entre 10 et 20 minuties correspondantes, il y a concordance.

Pour lire l'empreinte il existe plusieurs technologies. Dans les premières générations il y a les systèmes optiques, relativement lourds et chers. C'est ce qu'utilise le lecteur de Microsoft qui présente le "léger" inconvénient de rendre gracieusement disponible l'empreinte de l'utilisateur sur la vitre du lecteur. Nous avons aussi les coûteux capteurs ultrasoniques et enfin les capteurs en silicium.

Dans ce dernier cas, le capteur se présente sous la forme d'une barrette de silicium sur laquelle l'utilisateur va faire glisser son doigt, déroulant ainsi l'image de l'empreinte. La lecture s'effectue en utilisant un des effets observable du silicium (piezo-electrique, capacitif, thermo-électrique ou photo-éclectique). Par exemple dans le cas d'un lecteur Yubee, la barrette de silicium est légèrement "chauffée et mesure ainsi le différentiel de température entre les crêtes et les vallées de l'empreinte digitale".

Les scanners à base de silicium tendent en tout cas à se répandre car ils sont peu onéreux et d'encombrement très réduit. C'est ce type de capteur que l'on voit sur pas mal de portable.

A noter toute de même que l'utilisation de ces technologies pour protéger l'accès à un portable peut être, et à juste titre, considéré comme parfaitement stupide. En effet, voilà que l'on cherche à protéger avec lecteur d'empreinte une bidule qui par définition est gavé de traces de doigts... Maintenant tout le monde ne travaille pas au SD6 et cela reste un moyen très simple de protéger l'accès à sa machine en attendant des systèmes plus évolués comme ceux utilisant les réseaux vasculaires.

fprint

Pour lire notre empreinte, outre un lecteur évidemment, nous allons utiliser le projet fprint. Il se compose d'un outil de mémorisation en ligne de commande, un autre en mode graphique et d'un module PAM permettant la prise en charge de l'authentification.

Le point intéressant avec fprint c'est qu'il ne nécessite pas de pilotes kernel. Un peu à la manière de libgphoto2, libfprint sait causer nativement avec un certain nombre de lecteurs. Si le votre n'est pas dans la liste, il va falloir passer à d'autres projets comme ThinkFinger qui fonctionne peu ou prou de la même manière.

Sur l'U810 que j'utilise pour mes tests, le lecteur est un AES25010 (AuthenTec, 08ff:2580), pris en charge donc par libfprint. Pour mettre en oeuvre l'outil, il suffit d'installer les paquets fprint et pam_fprint.

Mémorisation des empreintes

Deux méthodes sont disponibles, soit en ligne de commande via la commande pam_fprint_enroll, soit graphiquement avec fprint_demo. Dans les deux cas il faut lancer l'outile sous le compte de l'utilisateur à authentifier. Le résultat sera un dossier ~/.fprint qui contiendra les versions vectorisées des différents doigts mémorisés.

Pour débuter le mieux est d'utiliser fprint_demo qui permet aussi bien de mémoriser une image de doigt que d'en vérifier la validité. Cela permet aussi de s'entraîner car ces bêtes sont capricieuses et il faut un peu "normaliser" sa manière de passer le doigt sur le scanner.

Au lancement, le programme doit vous afficher en bas Status: Device Ready for use ainsi que la référence du lecteur pris en charge. Le premier onglet, enroll permet la numérisation de l'empreinte. Il vous faut choisir un doigt, celui qui est le plus pratique à passer sur le lecteur (pouce droit pour l'U810) et cliquer sur le bouton enroll. Le système se met alors en attente de l'empreinte. Passer votre doigt et devrait alors s'afficher l'image correspondante. Si cela ne vous convient pas, supprimez puis recommencez. Vous pouvez comme cela enregistrer plusieurs doigts qui pourront chacun servir de clef.

Une fois l'empreinte stockée, allez sur l'onglet Identify, vérifiez que le doigt que vous avez mémorisé est coché et pressez Identify. Encore une fois passez le doigt sur le lecteur et le système doit afficher Status: Matched right thumb. A ce stade le système est en place, ne reste plus qu'à paramétrer l'authentification.

N'hésitez pas à dérouler une "bonne longueur" de doigt. Par exemple pour le pouce, faite cela de la pliure du doigt jusqu'à la pulpe. Plus l'image est allongée, plus fiable le système sera.

Paramétrage de PAM

Là c'est très simple, il suffit d'intégrer une règle avec un contrôle sufficient pour le module pam_fprint dans le groupe de gestion auth. Le mieux est de mettre cela dans /etc/pam.d/system-auth, avant toute autre règle.

auth        required      pam_env.so
auth        sufficient    pam_fprint.so
auth        sufficient    pam_tcb.so shadow fork nullok prefix=$2a$ count=8
...

L'utilisation de sufficient permet d'éviter de se retrouver coincé en cas de problème. Le cas échéant, le mot de passe continuera de fonctionner.

Une fois la configuration de PAM effectuée, vous pouvez tout de suite tester avec une console ou avec GDM. Dans les deux cas il faut commencer par saisir l'identifiant utilisateur et valider. Ceci faut le système se met en attente de l'empreinte. Si celle-ci est validée, l'utilisateur est authentifié, sinon, le mot de passe s'affichera.

Conclusion

La librairie libfprint est bien pratique mais le module PAM est quant à lui plutôt faiblard. Le fait par exemple qu'il faille saisir le nom de l'utilisateur à valider fait parti des limitations de l'outil. En effet, une empreinte étant spécifique à un utilisateur, il serait appréciable qu'il suffise de passer le doigt pour que le système reconnaisse aussi l'identifiant à utiliser.

En attendant l'amélioration de l'outil, cela reste un apport très agréable, surtout pour les netbooks de petite taille où il est malaisé de saisir un mot de passe complexe.