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.
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.
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.
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.
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.
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.
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.
- répondre
Dab, le 14 October, 2008 - 21:29Merci encore une fois
A quand un module PAM pour http://en.wikipedia.org/wiki/Linux_speech_recognition_software
Il est vraiment nécesssaire d'entrer l'utilisateur ? le système ne peux le déduire ?
Sinon il y a aussi http://code.google.com/p/pam-bioapi/
J'y reviens mais le fun serait tout de même la reconnaissance vocale
- répondre
Ulhume, le 15 October, 2008 - 07:41@Dab arf, j'avais même pas vu que j'avais publié ce billet
Relis le, il est un peu plus complet maintenant 
Pour BioAPI, je n'ai pas trouvé d'implémentation pour le lecteur d'empreinte. L'application de test plante chez moi et côté doc, c'est un peu le désert. Si tu as plus d'infos je suis preneur.
Pour la saisie de l'utilisateur, malheureusement j'ai bien l'impression qu'il n'y a pas de moyen d'y échapper, ce qui est très con, j'en conviens...
- répondre
malic , le 15 October, 2008 - 08:18Je n'ai pas réussi à faire fonctionner aussi bien fprint que thinkfinger avec kdm, mais je crois que ça vient de l'archi kdm qui n'interroge la PAM que quand il a les 2 éléments d'authentification..
Je ne sais pas si ça fonctionne avec KDE 4 par contre.
- répondre
Ulhume, le 15 October, 2008 - 08:27@malic là je pourrais plus dire, kde c'est loin maintenant, j'ai rien d'installé pour tester cela. Sous GDM ça fonctionne plutôt bien. La seule chose est qu'il serait plus simple que le système affiche qu'il attend une empreinte plutôt que d'attendre sans rien dire
- répondre
tenshu, le 15 October, 2008 - 09:56Ha vous êtes prêt a utiliser la biométrie sans que ça vous pose de problème éthique/moral?
Pour ma part c'est loin d'être le cas.
- répondre
Ulhume, le 15 October, 2008 - 10:01@tenshu il ne faut pas mélanger les choux et les carottes. Utiliser la biométrie pour son usage personnel, je ne vois vraiment pas où peut être le problème tant éthique que moral.
- répondre
tof , le 15 October, 2008 - 15:39Après un dossier sur l'authentification par clef USB puis par biométrie, tu nous prépares un petit dossier sur l'authentification par smartcard?
Je dis ça sans intérêt aucun, hein
Juste que j'ai un lecteur de carte à puce qui traîne dans mes tiroirs et que cela serait intéressant à mettre en oeuvre.
- répondre
Ulhume, le 15 October, 2008 - 15:44@tof
Ca aurait été avec grand plaisir mais là je n'ai pas cela sous la main, je fais cela avec les moyens du bord
- répondre
phiga , le 2 November, 2008 - 10:24Salut,
Pour moi il n'est pas nécessaire d'entrer le mot de passe pour être authentifier. Par contre le scan du doigt est obligatoire et en cas d'échec le mdp n'est plus suffisant!!
- répondre
Ulhume, le 2 November, 2008 - 12:57@phiga Je ne comprend pas bien ce que tu veux dire ?
- répondre
phiga , le 2 November, 2008 - 22:11Je disais:
Je m'authentifie sans taper le mode de passe session. J'ai automatisé le choix de l'utilisateur.
Au login je tape entrée et j'obtiens l'invite de scan. Apres le scan positif la session démarre automatiquement. Sauf que le scan est obligatoire, je ne peux plus utiliser le mot de passe seul. Donc si mon scan échoue, je suis bloqué.
- répondre
Ulhume, le 2 November, 2008 - 22:17@phiga c'est étrange ton histoire, si ton scan échoue, tu devrait logiquement aboutir sur la deuxième règle de PAM, à savoir l'authentification via pam_tcb ou pam_unix. Tu es sur de ne pas avoir mis un "required" sur pam_fprint ?
- répondre
phiga , le 4 November, 2008 - 09:03mon /etc/pam.d/system-auth est là:
http://www.mandrivalinux-online.eu/forum/viewtopic.php?f=1&t=4005&st=0&s...
Les 3 premières lignes sont un collage de ce tuto
- répondre
Ulhume, le 4 November, 2008 - 10:49@phiga
En lisant tes posts sur ce forum j'ai l'impression qu'on s'est mal compris. Ton problème serait que tu ne peux pas taper de mot de passe car c'est le scan qui t'est demandé au login, c'est bien ça ?
Si c'est bien ça, c'est absolument normal et tu ne peux rien y faire. Les règles sont séquentielles et les clauses "requires" ou "sufficient" ne font qu'indiquer si le traitement doit échouer à un cette ligne ou passer à la suivante en cas d'erreur sur le module. En d'autres termes il faut faire échouer le scan du doigt pour avoir accès au mot de passe. Pour plus d'info, tu peux jeter un oeil ici.
PS: la procédure propre pour que ton module ne soit pas chargé au démarrage est de le placer en liste noire.Ce que j'ai vu sur le forum sont de très vilaines bidouilles
- répondre
phiga , le 4 November, 2008 - 10:58ok pour la mauvaise bidouille!!
Je m'explique: si le scan du doigt échoue, le mot de passe ne suffit pas!! donc blocage
si je tape le mot de passe, il n'y pas de login, le scan est impératif
- répondre
Ulhume, le 4 November, 2008 - 11:19@phiga Tu peux essayer avec gdm plutôt qu'avec kdm ? Histoire de voir si le problème ne vient pas plutôt du client PAM que de la configuration PAM.
- répondre
phiga , le 4 November, 2008 - 11:51GDM est pire: pas d'invite mais le scan fonctionne. Si echec: reconnexion de GDM. Pas de champ pour le MDP
- répondre
Ulhume, le 4 November, 2008 - 12:00Alors là je n'ai plus de réponse à t'offrir, désolé.
- répondre
phiga , le 4 November, 2008 - 12:31est ce que mon /etc/pam.d/system-auth plus haut est correct?
- répondre
Ulhume, le 4 November, 2008 - 12:34@phiga j'ai très exactement le même que toi. C'est pour cela que je sèche un peu. Moi, avec GDM, lorsque j'arrive pas à authentifier "au doigt", je peux saisir le mdp.
Poster un nouveau commentaire