ARTIGOS:fprint: Biometria digital livre, completa e total!

Ir para: navegação, pesquisa

"O pacote fprint, é uma opção totalmente open-source para o desenvolvimento de aplicativos utilizando a tecnologia de biometria digital. O pacote de integração permite a criação de processo de identificação e verificação de impressão digital para diversos modelos de leitores."

Gpl-finger-img.jpg

Introdução

O pacote fprint é o sonho de todo desenvolvedor de código aberto. O kit de integração permite o desenvolvimento de processos de identificação e verificação de impressões digitais. Um dos pontos fortes nesta solução open-source, é a compatibilidade com diversos modelos de sensores disponíveis no mercado.

Em Setembro de 2005 a doação um sensor biométrico Microsoft fingerprint iniciou o desenvolvimento do projeto dpfp. Onde o principal objetivo, era tornar possível o uso do mesmo na plataforma Linux (Instalando leitores de impressão digital modelo Digital Persona no Linux).

Forças/projetos paralelos extraíam imagens de outros sensores. Entretanto ainda nada era possível com estas imagens. Projetos open-source para processamento da imagem foram testados, mas por vários motivos não foi incorporado ao desenvolvimento principal.

Problemas com propriedade intelectual surgiram durante a jornada de trabalho. Após algum tempo, o projeto foi retomado como um trabalho Universitário, mais adiante publicado como Open-Source.

Conceito

A impressão digital é composta de linhas formadas pelas elevações da pele. A comparação por impressão digital é um método utilizado a mais de mil anos como forma de identificação de usuários. É uma característica única entre os seres humanos, inclusive entre irmão gêmeos univitelinos.

Formada ainda quando feto, a impressão digital acompanha a pessoa por toda a sua existência sem apresentar grandes mudanças. Extraindo os pontos característicos ou ponto de minúcias de uma impressão digital, um papiloscopista ou sistemas computadorizados podem identificar pessoas utilizando cálculos bastantes confiáveis.

São vários os tipos de impressões digitais, abaixo algumas imagens de diferentes digitais:

Modelo-digitais.png

Grande parte dos algoritmos trabalham com o princípio de extração dos pontos de minúcias ou pontos característicos. Após a extração são calculados a relação entre as distâncias destes pontos, cada algoritmo possui a sua base de cálculo, seja por análise dos pontos entre si ou por agrupamentos de pontos para análise de semelhanças de triângulos com os ângulos internos.

Minucias.jpg

Sensores biométricos suportados pela biblioteca libfprint estão disponíveis em: http://www.reactivated.net/fprint/wiki/Supported_devices

Composição do pacote:

  • libfprint: Biblioteca para desenvolvimento e integração em sistemas;
  • pam_fprint: Pacote utilizado para autenticação e login em sistemas Linux;
  • fprint_demo: Aplicativo para fins demonstrativo da libfprint;
  • fprintd: Daemon (serviço) que utiliza o D-Bus (comunicação inter-processo) para facilitar a comunicação da libfprint com diversos aplicativos concorrentes.

Download e instalação

Download

Abaixo os links para download do código-fonte, pacotes para o OpenSuse e Ubuntu. Neste documento trabalharemos a partir da compilação do código fontes para compatibilizar o máximo possível as instruções para qualquer distribuição.

Código fonte (utilizado neste documento): http://ufpr.dl.sourceforge.net/sourceforge/fprint/fprint_demo-0.4.tar.bz2 (exemplo no modo gráfico) http://ufpr.dl.sourceforge.net/sourceforge/fprint/libfprint-0.0.6.tar.bz2 (fontes da biblioteca)

Pacotes OpenSuse:

Os usuários openSUSE podem selecionar diretamente os pacotes no yast como na figura abaixo dispensando o download, compilação e instalação a partir dos fontes.

Fprint1.png

Pacotes Ubuntu: http://www.madman2k.net/comments/105

Instalação:

Após o download, devemos descompactar e extrair os arquivos fontes. Utilize o comando "tar -jxvf" como abaixo . Entre na pasta criada pelo comando tar (libfprint-0.0.6) e execute o comando "./configure" para configurar as diretivas de compilação para o seu ambiente.

$ tar -jxvf libfprint-0.0.6.tar.bz2
$ cd libfprint-0.0.6
$ ./configure

Execute o comando "make" para efetuar a compilação na íntegra, a seguir transforme-se em super-usuário para efetuar a instalação da bibliotecas através do comando "make install" seguido do "ldconfig" conforme as instruções abaixo.

$ make
$ su
Senha:
$ make install
$ ldconfig

Para finalizar este pacote, entre na pasta "example" e execute o comando "make" para compilar os códigos exemplos.

$ cd examples/
$ make

A compilação dos exemplos criará na pasta corrente programas para capturar a imagem do sensor, calcular o template biométrico e verificação da digital em tempo real.

Antes de executar quais quer um dos programas acima, em primeiro lugar plugue o sensor e execute o comando "dmesg" para constatar se tudo esta funcionando corretamente. Abaixo o resultado do comando ao plugar o meu sensor U.ARE.U 4000B.

$ dmesg
usb 3-1: new full speed USB device using uhci_hcd and address 2
usb 3-1: new device found, idVendor=05ba, idProduct=000a
usb 3-1: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-1: Product: U.are.U 4000B Fingerprint Reader
usb 3-1: Manufacturer: DigitalPersona, Inc.
usb 3-1: SerialNumber: {BB353718-DFA3-B74C-A883-B8419AA53934}
usb 3-1: configuration #1 chosen from 1 choice

Para capturar imagens do sensor de impressão digital, basta executar o programa "img_capture" e logo após a mensagem encoste o dedo no sensor. Duas imagens serão geradas no disco (finger.pgm e finger_standardized.pgm). Veja a seguir o exemplo:

$./img_capture
Found device claimed by Digital Persona U.are.U 4000/4000B driver Opened device. It's now time to scan your finger.

Para cadastrar e calcular o template da sua impressão digital, execute o programa enroll como no exemplo abaixo:

$ ./enroll
This program will enroll your right index finger, unconditionally overwriting any right-index print that was enrolled previously. If you want to continue, press enter, otherwise hit Ctrl+C


ound device claimed by Digital Persona U.are.U 4000/4000B driver Opened device. It's now time to enroll your finger.

You will need to successfully scan your finger 1 times to complete the process.

Scan your finger now. Wrote scanned image to enrolled.pgm Enroll complete! Enrollment completed!

O programa "verify_live" tem a função de efetuar continuamente a verificação da impressão digital após o usuário encostar o dedo no sensor. Execute o programa para verificar a funcionalidade seguindo as instruções abaixo:

$ ./verify_live
Found device claimed by Digital Persona U.are.U 4000/4000B driver Opened device. It's now time to enroll your finger.

You will need to successfully scan your finger 1 times to complete the process.

Scan your finger now. Enroll complete! Enrollment completed!

Normally we'd save that print to disk, and recall it at some point later when we want to authenticate the user who just enrolled. In the interests of demonstration, we'll authenticate that user immediately.

Scan your finger now. MATCH! Verify again? [Y/n]? Y

Scan your finger now. MATCH! Verify again? [Y/n]? n

Autenticação Biométrica como usuário root

Autenticação biométrica

As maneiras de autenticação de identidade podem ser realizadas através da apresentação de algo que o usuário saiba, através de algo sobre a posse do usuário (token) ou através de uma característica física mensurável.

O uso da biometria como método de autenticação é uma realidade em diversos segmentos mercadológicos. A tecnologia está tornando-se tão comum como as senhas e códigos PIN, porém sem a necessidade de memorização de código e preocupação com a facilidade da dedução ou quebra por tentativas computacionais.

A biometria é uma característica do indivíduo que está sempre consigo, diferente dos tokens identificadores que necessitam de transporte, assim desta maneira, sendo facilmente roubados ou esquecidos, não apresentando uma maneira eficaz de controlar quem exatamente está apresentando determinado identificador.

A biometria exige a presença do usuário no ponto de identificação devido a sua base em características fisiológicas, o que aumenta a garantia de sucesso, credibilidade e segurança no momento da identificação.

O usuário root e administração do sistema

O sistema operacional GNU/Linux entende o usuário root como uma conta especial, ou seja, se o usuário em questão possuir o UID igual a 0, o mesmo terá poderes para alterar qualquer configuração do sistema.

Tanto poder deve somente ser utilizado nas tarefas onde usuários convencionais não possuem privilégios para tal situação. Logado como usuário convencional não é possível causar danos acidentalmente ao sistema operacional.

Portanto devemos atribuir uma senha de difícil dedução, assim evitando/facilitando o acesso a pessoas indevidas ao usuário root. Também é recomendável alterar a senha periodicamente, existem diversos utilitários para geração aleatória de senhas fortes (mais de 8 caracteres, letras maiúsculas, minúsculas e números).

O su e o comando sudo

Em diversas situações precisamos executar uma tarefa ou comando permitido apenas ao usuário root. Um opção eficaz e segura é utilizar o comando su ou sudo.

Ao digitar o comando su no terminal, será solicitada a senha do usuário root. Logo a seguir todas as operações podem ser efetuadas como usuário administrador. Ao término basta executar o comando exit e voltaremos a operar com o login utilizado anteriormente.

O comando sudo é um recurso similar, porém interessante e mais abrangente, pois é possível definir quais usuários poder utilizá-lo. Detalhes sobre o comando SU/SUDO não são o escopo deste texto, sendo assim sugiro algumas pesquisas na internet para mais informações.

A biblioteca fprint

O pacote fprint é o sonho de todo desenvolvedor de código aberto. O kit de integração permite o desenvolvimento de processos de identificação e verificação de impressões digitais. Um dos pontos fortes nesta solução open source é a compatibilidade com diversos modelos de sensores disponíveis no mercado.

Instalando a autenticação biométrica:

pam_fprint é o módulo biométrico que trabalha em conjunto com a biblioteca de autenticação PAM (Pluggable Authentication Modules). Sua base tecnológica é a biblioteca fprint, que compilamos e instalamos anteriormente. O pacote pam_fprint utiliza as funções biométricas para processar e verificar a autenticação do usuário.

Dando continuidade ao trabalho, efetue o download, descompacte, compile e instale o pacote pam_fprint seguindo as instruções abaixo:

$ wget http://ufpr.dl.sourceforge.net/sourceforge/fprint/pam_fprint-0.2.tar.bz2
$ tar -jxvf pam_fprint-0.2.tar.bz2
$ cd pam_fprint-0.2
$ ./configure
$ make
$ sudo make install

Integrando a biometria ao comando su:

Para finalizar, devemos apenas modificar o arquivo de configuração do comando su (utilizado para obter os direitos do usuário root) , localizado em /etc/pam.d/su. A seguir o conteúdo deste arquivo, com as alterações necessárias para tornar obrigatória a autenticação biométrica durante o comando su no sistema GNU/Linux. Reparem na utilização do modo REQUISITE de autenticação. Maiores informações, sugiro a leitura de documentação do PAM.

#%PAM-1.0
auth     sufficient     pam_rootok.so
auth     include        common-auth
auth     requisite      pam_fprint.so
account  include        common-account
password include        common-password
session  include        common-session
session  optional       pam_xauth.so

próximo passo é efetuar o cadastramento biométrico da sua impressão digital. Se concluído com sucesso esta tarefa, no próximo login o usuário, além da senha, deverá fornecer a sua impressão digital para ter acesso ao sistema.

O programa pam_fprint_enroll é responsável pelo cadastramento das impressões digitais. Para entender melhor a sintaxe, digite "pam_fprint_enroll --help" e constataremos que devemos informar o número correspondente ao dedo utilizado para cadastro.

$ pam_fprint_enroll --help
Usage: ./pam_fprint_enroll options

  -h      --help                  Display this usage information.
  -f      --enroll-finger index   Enroll finger with index.
 Valid indexes are:
  1 - Left Thumb
  2 - Left Index Finger
  3 - Left Middle Finger
  4 - Left Ring Finger
  5 - Left Little Finger
  6 - Right Thumb
  7 - Right Index Finger
  8 - Right Middle Finger
  9 - Right Ring Finger
  10 - Right Little Finger

No meu caso utilizei o número 7 representando o dedo indicador da mão direita. Ao executar o programa, pressione a tecla [ENTER] e encoste o dedo no leitor de impressão digital. Pronto! Nesta fase, ao efetuar o login, o seu sistema operacional solicitará a senha seguida da autenticação biométrica.

$ pam_fprint_enroll --enroll-finger 7
This program will enroll your finger, unconditionally overwriting any selected print that was enrolled previously. If you want to continue, press enter, otherwise hit Ctrl+C

Found device claimed by Digital Persona U.are.U 4000/4000B driver Opened device. It's now time to enroll your finger.

You will need to successfully scan your Right Index Finger 1 times to complete the process.

Scan your finger now. Enroll complete! Enrollment completed!

Se tudo estiver funcionando corretamente, após o comando su será solicitada a autenticação biométrica e a senha de root. Ou seja, implementamos uma terceira camada de autenticação com a impressão digital do usuário. A seguir o vídeo apresenta a tecnologia open source fprint (leitura de impressão digital) integrado ao comando SU na plataforma Linux.

Videofprint2.png

fPrint-Demo: Interface gráfica.

Para finalizar, os fontes exemplos "fprint_demo" demonstra as funcionalidades da biblioteca libfprint com uma interface gráfica baseada no GTK bem amigável.

É muito simples a instalação do programa fprinte_demo, basta descompactar o pacote com o comando tar, e utilizar os comandos "./configure" e "make". O binário deve ser executado na pasta "src", como no exemplo das instruções abaixo:


$ tar -xvf /home/cabelo/Download/programas/fprint/fprint_demo-0.4.tar
$ cd fprint_demo-0.4/
$ ./configure
$ make
$ cd src
$ ./fprint_demo

Abaixo algumas telas do projeto:

Fprintdemo1.png


Fprintdemo2.png


Fprintdemo4.png


Fprintdemo5.png


Fprintdemo6.png


Para encerra, um vídeo demonstrativo.

Videofprint.png

A biblioteca fprint proporciona inúmeros recursos além dos mencionados neste documento, para um estudo detalhado sobre o assunto, sugiro algumas leituras no site oficial do projeto fpŕint e outros disponíves na internet...

Conclusão: "O próximo grande salto evolutivo da humanidade será a descoberta de que cooperar é melhor que competir"

Sendo assim, como sempre menciono... Colaborar atrai amigos, competir atrai inimigos...

Sobre o autor: (Alessandro de Oliveira Faria A.K.A.CABELO )