Biometria facial na autenticação do usuário root

O comando su/sudo no sistema operacional tem a função de atribuir ao usuário os poderes administrativos. Neste documento veremos como elevar a segurança incluindo a tecnologia de biometria facial junto a senha, assim criando uma camada adicional de autenticação.

[ Hits: 27.427 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 16/07/2009 | Blog: http://assuntonerd.com.br


Jogo rápido: Download e instalação a partir do código fonte



Tecnologia de reconhecimento facial

É o método mais comum entre os seres humanos se reconhecerem, além de identificar podemos perceber o estado emocional de uma pessoa apenas observando sua expressão facial.

Aplicações estáticas e assistidas (onde a imagem, a iluminação ambiente e a verificação é controlada) favorece a precisão do sistema. Quando a aplicação é desassistida ou a iluminação ambiente e a imagem não são controladas, devemos aumentar o coeficiente de similaridade tornando o sistema exigente, assim obtendo resultados precisos.

Embora o reconhecimento facial seja uma tarefa simples para o ser humano, é extremamente complexo implementar esse processo em uma máquina, pois não sabemos, ao certo, como o cérebro humano realiza essa tarefa. O cérebro humano pode identificar corretamente uma pessoa a partir de sua imagem facial mesmo sobre as mais diversas condições, como variações de iluminação, observando apenas uma de suas características ou partes, e até mesmo com distorções ou deformações.
Linux: Biometria Facial na autenticação do usuário root!

O projeto pam-face-authentication

O pacote pam-face-authentication inicialmente foi projetado para trabalhar com o algorítimo eigenface para efetuar o reconhecimento facial baseada.

Algumas deficiências do eigenface alavancou a mudança para o algoritmo DCTMOD2 e LBP.

O método LBP - Padrão de Binários Locais (Local Binary Pattern) é utilizado para classificar a textura em escala de cinza da imagem. Seu valor é calculado com o valor binário de cada pixel, formando uma vizinhança linear de raio R em torno do pixel principal localizado na posição central. A seguir a ilustração mostra na prática o método:

Tabela:
Linux: Biometria Facial na autenticação do usuário root!  Linux: Biometria Facial na autenticação do usuário root!
Mais informações e detalhes em: FaceRecognition at code.google.com

Download e instalação

Vamos direto ao assunto... Efetue o download com o comando wget no link especificado a seguir:

wget http://pam-face-authentication.googlecode.com/files/pam-face-authentication-0.2.tar.gz

Requisitos do projeto:
Descompacte o pacote com o comando "tar -zxvf" e entre na pasta recém-criada.

tar -zxvf ~/face/pam-face-authentication-0.2.tar.gz
$ cd pam-face-authentication-0.2/


Compile o pacote com o comando configure, make e make install:

./configure
$ make
$ su

senha:
# make install

Agora, associar uma face ao usuário, utilize o aplicativo gtk-facemanager como no exemplo abaixo:

# gtk-facemanager
Linux: Biometria Facial na autenticação do usuário root!
O botão "ADD" adiciona usuário, já o botão "Remove" apaga a conta especificada. "Train Select" é o botão responsável por calcular e adicionar os dados biométricos na conta selecionada. Veja o vídeo logo abaixo:
Para incluir a autenticação através da biometria facial no comando su, basta adicionar a linha a seguir no arquivo /etc/pam.d/su:

auth     sufficient     pam_face_authenticate.so

O arquivo terá um conteúdo similar ao exemplo abaixo:

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

Pronto! Agora basta utilizar o comando su, após a digitação da senha será solicitado a autenticação facial como no vídeo demonstrativo.
Como sempre menciono: Colaborar atrai amigos, competir atrai inimigos...
Sobre o autor: http://www.netitec.com.br/alessandro

   

Páginas do artigo
   1. Jogo rápido: Download e instalação a partir do código fonte
Outros artigos deste autor

Tempest for Elisa: Transforme seu monitor em estação de rádio

OwnCloud : Crie a sua própria nuvem - Alternativa ao Dropbox

Artigo número 100: AR.Drone - O robô voador com Linux embarcado

Servidor de Icq em uma rede local

FreePascal + Lazarus: Desenvolvedores em Delphi podem começar a migrar para o Linux!

Leitura recomendada

Cheops: uma ótima ferramenta de rede

Reforçando a segurança das conexões HTTPS no Apache

Gerenciar e configurar inetd e serviços relacionados

Protegendo seu Linux de ataques de brute force via ssh

Chroot + Bind sem stress

  
Comentários
[1] Comentário enviado por moska em 16/07/2009 - 19:47h

Salve Cabelo meu conterraneo!

Kra, show de bola seu artigo parabens, mas tenho uma duvida:
É possivel usar a identificação em ambiente 100% texto? Num servidor que não tenha X por exemplo?

Valews kra, MoSka

[2] Comentário enviado por renato.leite em 16/07/2009 - 21:22h

Muito 10 o Artigo
ta de parabéns...

Abraços...

[3] Comentário enviado por xsmokex em 16/07/2009 - 21:50h

Ótimo artigo, parabéns

[4] Comentário enviado por removido em 17/07/2009 - 08:27h

ótimo artigo!

quando dou um configure está tudo ok até que:

configure: error: PAM library missing

alguem sabe?

[5] Comentário enviado por cleberjsantos em 17/07/2009 - 09:48h

Opa Cabelo, ótimo artigo... Pergunta, eu recentemente comprei um HP Pavilion dv5-1260br Entertainment PC, no qual tive problemas de instalação do Linux, inclusive até para manter um registro (Quem tiver problemas com este modelo deve atualizar a Bios), problemas a parte, estou com ele rodando legal a versão 9.04 do Ubuntu, mas não compilei para 64 Bits... Ainda hehehe

A dúvida é, ele tem um leitor biométrico, e não foi detectado pelo ubuntu, instalei o fprint-demo e também o thinkfinger mas nada rolou, vc já chegou a ver algo para este modelo de PC? Teria como me dar uma ajuda com isso? Desde já agradeço...

[6] Comentário enviado por thieme.reis em 17/07/2009 - 12:17h

Primeiramente, parabéns pelo artigo.
Segundamente ... rs .. você sabe sé é possível integrar o reconhecimento facial a interface grafica de login (gdm ou kdm)?

[7] Comentário enviado por cabelo em 17/07/2009 - 12:43h

Sim, testei com o GDM e funcionou...

[8] Comentário enviado por sandromelo em 17/07/2009 - 13:47h

Para quem tiver com erro PAM library missing só instalar o libpam0g-dev.


[9] Comentário enviado por hugobcar em 17/07/2009 - 13:50h

Assim como a questão que o usuário do "Br-Linux" levantou, até que ponto esse sistema é seguro ? Tipo, e se eu colocar uma foto do seu rosto em frente ao sistema, ele irá detectar que é você e dessa forma irá liberar o acesso root, não é mesmo ?


Obs.: Estou levantando essa questão apenas por motivos de segurança, volto a dizer que seus artigos são formidáveis.

Parabéns



[10] Comentário enviado por m4gnu5 em 17/07/2009 - 13:57h

Primeiramente Parabéns ainda não vi a palestra, por estar tão ansioso para compilar este programa, gostaria de ajuda pois não consegui efetuar a instalação do mesmo!
segui os procedimentos baixei ./configure funciona mais quando efetuo o make, depois make install ele não roda!
agradeço qualquer informação!
de vista parabéns.

[11] Comentário enviado por timtonys em 17/07/2009 - 14:10h

Não consegui compilar o programa. Seguem detalhes do processo de instalação que fiz:

Distribuição: Ubuntu 9.04
Mensagem de erro dá durante o Configure:

checking for pam_start in -lpam... no
configure: error: PAM library missing

Alguma idéia do que seja?

[12] Comentário enviado por removido em 17/07/2009 - 14:28h

Cabelo, o tarado da biometria :P

>>>Tipo, e se eu colocar uma foto do seu rosto em frente ao sistema
Pensei no mesmo.


Cara, já to com o eViacam instalado aqui e funcional, vou testar também este sistema de autenticação facial.
Valeu cabelo, pelas suas matérias formidáveis na área de Biometria =)

[13] Comentário enviado por sandromelo em 17/07/2009 - 14:41h

Aqui está dando erro na hora de compilar erro é esse:

/usr/local/include/opencv/cxmisc.h:52:26: error: cvconfig.h: No such file or directory
make[1]: ** [libfacedetect.lo] Erro 1

Alguem está com mesmo problema ou sabe como resolver ?

[14] Comentário enviado por removido em 17/07/2009 - 14:44h

Opa
aqui tá funcionando redondinho

su
eu digito a senha
ele faz o reconhecimento da minha face =)

Bom demaaaaaaaaais!

[15] Comentário enviado por sandromelo em 17/07/2009 - 15:14h

Alguem está com esse erro:
libfaceauthenticate.c:298: error: too few arguments to function 'cvSaveImage'
make[1]: ** [libfaceauthenticate.lo] Erro 1

[16] Comentário enviado por cbov em 17/07/2009 - 15:15h

opa, tive alguns problemas aqui no meu ubuntu 9.04 com a webcam do meu notebook (hp dv5-1220br)...
ficava dando alguns erros de selector timeout ou coisa parecida ...

solução foi recompilar o opencv com a seguinte config
./configure --without-v4l --with-gstreamer --prefix=/usr

[17] Comentário enviado por removido em 17/07/2009 - 15:59h

quando ponho em train selected abre a janela... mas não abre a camera de forma alguma...
alguem sabe resolver?

[18] Comentário enviado por rausth em 17/07/2009 - 16:51h

e aeh, um pergunta, é possível implementar essa autenticação no logon do ubuntu 9.04 32bits?

[19] Comentário enviado por removido em 17/07/2009 - 17:24h

Também fiquei curioso. Nosso cérebro faz a distinção entre uma foto e uma pessoa com facilidade. Mas este software é capaz de fazer o mesmo?

[20] Comentário enviado por removido em 17/07/2009 - 17:50h

Estranho


Configurei como o passo a passo

Digito SU
eu coloco a senha

se eu clicar em CANCELAR, ele mesmo assim autentica(só ignora a autenticação feito pelo pam_face_authenticate.so)

[21] Comentário enviado por joserribeirojuni em 18/07/2009 - 21:31h

poxa, como fizeram pra instalar o GSL e o OpenCV não ta dando certo aqui, alguém conseguir instalar pelo apt-get ?
Abraço

[22] Comentário enviado por removido em 18/07/2009 - 22:05h

Ow, e se eu colocar uma foto da pessoa
Teoricamente deve passar


Como se proteger contra isso?

[23] Comentário enviado por wryel em 20/07/2009 - 23:07h

se considere a referencia nacional em biometria ! HAAHAHHA :)

nice !

[24] Comentário enviado por thiago_dias em 21/07/2009 - 01:16h

instalei tudo certinho, mais na hora de clicar em train selected ,o video simplesmente não abre...
fica tudo em branco,nada acontece, assim como mencionou mais acima o xmarkinx.
Alguém saberia dizer oque seja isso?
Abraços

[25] Comentário enviado por chmod000 em 03/09/2009 - 03:09h

Bicho, muito bom o artigo.

Segui ele direitinho e, entre uns file missing aqui e outros ali, consegui instalar tudo.

Agora estou tendo o seguinte problema:

quando executo o gtk-facemanager abre a janelinha para cadastrar as faces, mas...

$ sudo gtk-facemanager
select timeout
Corrupt JPEG data: 300 extraneous bytes before marker 0xd9
$

e a janelinha fecha. Se eu fizer tudo bem rapidinho, até consigo cadastrar meu rosto, mas...

$ su -

(process:8742): Gtk-WARNING **: This process is currently running setuid or setgid.
This is not a supported use of GTK+. You must create a helper
program instead. For further details, see:

http://www.gtk.org/setuid.html

Refusing to initialize GTK+.
Corrupt JPEG data: 13754 extraneous bytes before marker 0x10
select timeout

^C

e nada acontece....

E aí, qual o caso?



[26] Comentário enviado por cabelo em 03/09/2009 - 10:34h

Sugiro a todos com interesse neste documento, ler a dica de atualização para a nova versão em QT:

http://www.vivaolinux.com.br/dica/Biometria-facial-na-autenticacao-do-usuario-root-(atualizacao)

[27] Comentário enviado por edup_pt em 20/01/2010 - 18:19h

Estou a tentar compilar a aplicação no entanto deparo-me com uns erros (os mesmo que o sandromelo):

1. cvconfig.h is missing (copiei o ficheiro para /usr/local/include/opencv/.
2. Dps, estou a debater-me com erros de "few arguments" no caso das funções cvRetrieveFrame, e cvSaveImage:

- No código desta aplicação estas funções são sempre chamadas com menos um argumento que o que está definido no /usr/local/include/highgui.h cujas funções são definidas da seguinte forma:

CVAPI(IplImage*) cvRetrieveFrame( CvCapture* capture, int streamIdx CV_DEFAULT(0) );
CVAPI(int) cvSaveImage( const char* filename, const CvArr* image,const int* params CV_DEFAULT(0) );

Já tentei adicionar um 0 em cada uma das chamadas à função mas o resulta em "segmentation fault".

Podem-me ajudar?

Obrigado

[28] Comentário enviado por paulocwb2003 em 02/07/2010 - 13:38h

Para quem tiver o erro:

checking for GSL... configure: error: Package requirements (gsl >= 1.9) were not met:

No package 'gsl' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables GSL_CFLAGS
and GSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Basta instalar o pacote libgsl0-dev.


[29] Comentário enviado por rodand1tux em 01/01/2012 - 12:10h

ola sera que pode me ajudar quando digito o comando make aparece o seguinte erro ao final:


ibfaceauthenticate.c: In function 'createLBP':
libfaceauthenticate.c:298:5: error: too few arguments to function 'cvSaveImage'
/usr/local/include/opencv2/highgui/highgui_c.h:224:12: note: declared here
libfaceauthenticate.c: In function 'loadTrainingData':
libfaceauthenticate.c:550:5: error: too few arguments to function 'cvOpenFileStorage'
/usr/local/include/opencv2/core/core_c.h:1528:24: note: declared here
make[1]: ** [libfaceauthenticate.lo] Erro 1
make[1]: Saindo do diretório `/home/rodand1/Downloads/face/pam-face-authentication-0.2'
make: ** [all] Erro 2

Espero que possa me ajudar valeu.

[30] Comentário enviado por jorgerabello em 05/09/2012 - 02:19h

Fala Cabelo td jóia ?

Cara seguinte estou aqui usando o ubuntu 12.04 LTS e tentando seguir a sua dica... só que seguinte ao executar o ./configure recebo a seguinte saida:


checking for GSL... configure: error: Package requirements (gsl >= 1.9) were not met:

Requested 'gsl >= 1.9' but version of GSL is 1.0

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables GSL_CFLAGS
and GSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Me parece que falta uma dependência a GSL, mas eu instalei, acredito que tenha instalado uma versão mais antiga, vc sabe como compilar uma versão superir o 1.9 ? ou como solucionar o problema ?

Grato !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts