Archive for January 22nd, 2008

Instalar fingerprint Authentec en Linux Debian

Tuesday, January 22nd, 2008

Hace algún tiempo mi amigo walter hizo funcionar el fingerprint de las IBM Thinkpad en debian; salvo, que este es un modelo y fabricante distinto; Authentec; empresa famosa ya que su fingerprint está en casi todos los modelos (desde Dell, Acer, HP, Compaq como el actual nx6320 que tengo; hasta modelos de mesa como los fabricados por APC, BioPod o incluso Microsoft).

El modelo es sencillo, viene en el lateral de mi actual HP Compaq nx6320 y como dije, comparte vida con la gran mayoría de los fingerprint comerciales.

Lo soporta mi fingerprint?:

Un lsusb lo demuestra:

>lsusb

Si dice:

Bus 001 Device 013: ID 08ff:2580 AuthenTec, Inc.

Has determinado que es un fingerprint authentec, por ende, esta guía es para tí.

Existen varias formas de hacerlo funcionar, el proyecto BioPOD, el proyecto BioAPI o uno más reciente (aun un poco inmaduro) llamado proyecto fprint (f print project); el proyecto consta de 3 cosas:

  • Una Librería (libfprint) (el corazón de la aplicación)
  • Un módulo para autenticación pam (pam_fprint) (para autenticarse en linux)
  • y una aplicación GTK de pruebas (para validación y autenticación)

Para hacerlo funcionar hay que instalar muchas cosas: así que les recomiendo inicialmente leerse una guía de compilación de aplicaciones en linux.

Instalando lo básico:

Primeramente debemos ejecutar una larga lista de cosas a instalar (como los devel de gnome para poder compilar aplicaciones GTK, o la librería imagemagick para la creación de las huellas dactilares por el programa demo):

Si nunca en su vida han compilado algo, deben instalar:

aptitude install build-essential fakeroot gcc

Y luego si instalen lo que necesitamos:

aptitude install libgnomeui-0 libgnomeui-devlibgnomeprint-dev libgnome2-dev
aptitude install libgladeui-1-dev libglade0-dev libglade-gnome-dev libusb++-0.1-4c2 libusb++-dev libusb-dev
aptitude install imagemagick graphicsmagick-imagemagick-compat libgraphicsmagick++-dev libgraphicsmagick-dev
aptitude install imagemagick graphicsmagick libgraphicsmagick-dev libgraphicsmagick1-dev libmagick-dev libmagick9-dev
aptitude install libxv1 libxcb-xv0 libxcb-xv0-dev

Descargando los paquetes:

Como dije, los paquetes son 3;

libfprint: http://downloads.sourceforge.net/fprint/libfprint-0.0.5.tar.bz2?modtime=1197040114&big_mirror=0

pam_fprint: http://downloads.sourceforge.net/fprint/pam_fprint-0.2.tar.bz2?modtime=1195499996&big_mirror=0

fprint_demo: http://downloads.sourceforge.net/fprint/fprint_demo-0.4.tar.bz2?modtime=1195755056&big_mirror=0

Luego de descargados, procederemos a su compilación.

Compilando libfprint:

para compilar descomprimimos libfprint:

tar xvf libfprint-0.0.5.tar.bz2

cambiamos a la carpeta creada por la descompresión:

cd libfprint-0.0.5

y ejecutamos la compilación:

./configure –prefix=/usr –enable-shared –enable-examples-build –enable-x11-examples-build
make
make install

El make install procede a instalar la librería en el sistema; luego de ejecutar:

ldconfig

estamos listos para usar libfrint.

Probando libfprint:

Para probar libfprint necesitamos, dentro del fuente de libfprint, movernos a la carpeta examples

cd examples/

y dentro de esta, ejecutar dos aplicaciones; la primera

./enroll

Crea un png a partir de la huella dactilar que pase por encima del lector (si este es detectado).

y

./verify_live

que hace verificaciones (prueba el lector) para ver si es capaz de reconocer y luego, validar una misma huella (puede hacerse con cualquier dedo).

Como nota adicional, todas las pruebas deben hacerse como root (para poder acceder al dispositivo físico, el fingerprint, contenido en /proc/bus/usb).

Instalando fprint_demo:

Para instalar simplemente descomprimimos y compilamos:

./configure –prefix=/usr –with-gnu-ld
make
make install

y ejecutamos la aplicación:

fprint_demo

con el cual obtendremos una ventana semejante a esta:

Donde podemos hacer el enroll (reconocimiento) de cada una de nuestras huellas de cada dedo de ambas manos y luego, verificarlas con este práctico test (que incluso binariza la huella y computa y muestra los puntos de minutae o coincidencia de la huella); fijense que en el fondo de la app. pueden ver la lista de los dispositivos detectados y están listos para usarse.

Compilando y usando pam_fprint:

Compilar es simple, como los anteriores:

./configure –prefix=/usr –enable-shared –with-gnu-ld
make
make install

Para usarla, primero debemos hacer el “enroll” de cada uno de nuestros dedos como usuario; ejemplo, decidí darle fingerprint al usuario root; entonces:

su -

y luego:

pam_fprint_enroll –enroll-finger 7

El índice de dedos va desde la mano izquierda (mirando hacia arriba) a la derecha mirando hacia abajo (tal vez el desarrollador es zurdo!, jajaja); en este caso, 1 es pulgar izquierdo, 2 es índice izquierdo y así hasta terminar la mano; la mano derecha comienza en 6 con el pulgar y terminando en 10, con el meñique derecho; en mi caso, le hice enroll al dedo 7 (indice derecho).

Lo interesante de esto es que puedes identificarte con cualquier dedo de la mano; si haces enroll de todos los dedos, simplemente podrás autenticarte con todos los dedos (obvio que no a la vez, para aclarar!, jajaja).

Configurando PAM

Para configurar PAM simplemente editamos el archivo /etc/pam.d/common-auth y colocamos:

auth required pam_env.so
auth sufficient pam_fprint.so #esta linea es la de pam_fprint
auth sufficient pam_unix.so nullok_secure try_first_pass likeauth
auth required pam_deny.so

En algunos casos, si queremos solamente autenticación dactilar (y eliminar los passwords) removemos a pam_unix de la lista de autenticaciones (pero eso hará que más nadie sino ustedes puedan usarla); quitarle el “required” a pam_unix podamos o usar una forma u alternativamente otra; más las 2 no son necesarias (pongan ambas en required y tendrán un lindo sistema para neuróticos de la seguridad que pedirá ambas cosas!, xD).

Para probar si la autenticación pam funciona entonces simplemente abrimos una consola y escribimos:

su -
Scan right index finger on AuthenTec AES2501
(y haga su “swap finger” y espere el milagro)Ya debería funcionar para el resto de las aplicaciones; pero solamente hace falta una cosa (que publicaré despues que lo pruebe) es darle al usuario mortal acceso al dispositivo USB fingerprint (un detallito en debian de acceso al /proc/bus/usb para usuarios mortales); parchear el gnome-screensaver (para poder entrar a la maquina si se activa el screensaver) y darle acceso al GDM al dispositivo de fingerprint.

Como dije anteriormente, existen otros proyectos como bioPOD y bioAPI, que tambien los he probado y que prontamente realizaré una guia de los mismos.

Como verán el proyecto está algo “crudo”; tiene algunos bugs, algunas fallas (no diría fallas, pero esa manía de autenticarte con un mínimo de 12 minutae te obliga a recordar en que posición, angulo y velocidad pasaste el dedo, sino, quedas fuera!) y aun están en la versión 0.0.5 y por ende hay mucho camino por andar; pero en mi caso, ya tienen un colaborador adicional, yo!.

Espero disfruten como yo de entrar a su computador sin tener que recordarse compilados y mnemotécnicos passwords; el único riesgo aquí es que te corten el dedo para usar tu portatil!.