Pular para o conteúdo

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.
Alessandro de Oliveira Faria (A.K.A. CABELO) cabelo
Hits: 34.397 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar

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

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

DJVU o formato que pode ameaçar o reinado do PDF

Compilador Clipper open-source, compile sem problemas os sistemas .PRG no Linux!

Acesso aos recursos compartilhados de sua rede Microsoft ou Samba via HTTP

CUDA: Programe a sua NVIDIA

IPCMSG: Comunicação inter-processos sem magia negra

NTop - Configurações gerais

Instalação do Comodo Antivirus para Linux (CAVL) resolvendo o problema de dependências

ProFTPD + ClamAV - FTP livre de vírus

Servidor de log no Debian com Syslog-ng

Utilizando RPM para detecção de intrusos

#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?


#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 removido 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

Entre na sua conta para comentar.