desenvolvimento de um driver de dispositivo biom etrico ... · inicialmente o objetivo desse...

61
Coordena¸ ao de Engenharia da Computa¸ ao Desenvolvimento de um Driver de Dispositivo Biom´ etrico com Comunica¸ ao USB Rafael Casale Abe Trabalho de formatura apresentado ` a Faculdade de Engenharia de Sorocaba - FACENS, como parte dos pr´ e-requisitos para a obten¸ ao do t´ ıtulo de Engenheiro da Computa¸ ao Sorocaba/SP 2005

Upload: ngocong

Post on 20-Nov-2018

226 views

Category:

Documents


1 download

TRANSCRIPT

Coordenacao de Engenharia da Computacao

Desenvolvimento de um Driver de

Dispositivo Biometrico com Comunicacao

USB

Rafael Casale Abe

Trabalho de formatura apresentado a Faculdade de Engenhariade Sorocaba - FACENS, como parte dos pre-requisitos para aobtencao do tıtulo de Engenheiro da Computacao

Sorocaba/SP

2005

Rafael Casale Abe

Desenvolvimento de um Driver de Dispositivo Biometrico com

Comunicacao USB

Trabalho de formatura apresentado a Faculdade de Engenhariade Sorocaba - FACENS, como parte dos pre-requisitos para aobtencao do tıtulo de Engenheiro da Computacao

Orientador: Eng. Fabio Lopes Caversan

Sorocaba/SP

2005

i

Dedicatoria

Dedico esse trabalho de conclusao de curso ao meu pai Nobuo e minha mae Teresa,

por serem para mim, exemplos de luta e auto-superacao.

“Aprender, Produzir e Divulgar”

ii

Agradecimentos

Gostaria de agradecer imensamente todos aqueles que, direta ou indiretamente, con-

tribuiram para a realizacao desse trabalho:

- A Deus, o criador, por propiciar condicoes para o meu desenvolvimento pessoal,

profissional e academico, por me deixar conhecer o sabor da vitoria apos a luta e me

ensinar muito mais com as derrotas;

- A toda minha famılia, meu pai Nobuo, minha mae Teresa, meus irmaos Flavia e

Rodrigo, meus tios, tias e minha avo, por serem as pessoas que sao, e por me incentivarem

sempre nos projetos de minha vida;

- A minha namorada, Juliana, por ter conseguido me aturar nesse ano;

- Ao meu orientador eng. Fabio Caversan, por me incentivar, acreditar no meu traba-

lho e criar condicoes para o desenvolvimento desse projeto e tambem por me ajudar com

muitas das duvidas sobre TeX;

- Ao hacker Cristiano Rodrigues, que mesmo sem o conhecer pessoalmente, me for-

neceu informacoes valiosas que foram cruciais para o desenvolvimento desse trabalho;

- Aos professores, eng. Edinei Legaspe e eng. Sidney Montebeller, por me ajudarem

a “digerir” numeros hexadecimais e interpreta-los.

- A professora Tiemi Sakata e ao professor Carlos Watanabe, pelo incentivo e ensina-

mentos sobre a ferramenta TeX;

- Ao Marcos Abreu, coordenador de desenvolvimento da Simpress, que salvou o de-

senvolvimento desse projeto, fornecendo recursos tecnologicos, alem do imenso espaco que

me foi aberto, dando-me flexibilidade para conciliar trabalho e esse projeto;

- Aos advogados, prof. Dr. Gilberto e Dra. Luciene Gonzales, por me ajudarem com

materiais sobre criminalıstica e medicina legal, alem de me esclarecerem sobre os efeitos

jurıdicos desse projeto.;

- Aos manos do 3 Divisa, Cesar Rodrigo, Emerson Machado, Jupercio Juliano e Ro-

iii

drigo Pillon, que estavam sempre dispostos a ajudar uns aos outros durante todo o projeto,

alem serem engrenagens importantes para o desenvolvimento das disciplinas durante os

anos de faculdade;

- Aos meus amigos Alexandre Coconesi, Rafael Mosan, Roberto Mosan e Thiago Alves

Siqueira, por serem simplesmente amigos.

- Por fim, a toda comunidade de Software Livre do Brasil e do mundo, por disponibi-

lizarem softwares legais e de alta qualidade, documentacoes tecnicas e muito codigo-fonte

para que eu pudesse aprender com eles.

iv

Sumario

Lista de Figuras viii

Lista de Tabelas x

Resumo xi

Abstract xii

1 Introducao 1

2 Biometria 3

2.1 Datiloscopia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.1 Sistema Vucetich . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.1.2 Detalhes de Galton . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.3 Idenficacao e Verificacao . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2 Sistemas biometricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3 Seguranca da Informacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 Sistemas Operacionais 10

3.1 Maquina Extendida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.2 Componentes de um SO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.2.1 Gerenciamento de processos . . . . . . . . . . . . . . . . . . . . . . 11

3.2.1.1 Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.2.1.2 Estados de Processos . . . . . . . . . . . . . . . . . . . . . 11

3.2.1.3 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

v

3.2.1.4 Comunicacao Interprocessos . . . . . . . . . . . . . . . . . 13

3.2.1.5 Condicao de disputa . . . . . . . . . . . . . . . . . . . . . 14

Semaforos . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Mutexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2.2 Entrada e Saıda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2.2.1 Dispositivos de E/S . . . . . . . . . . . . . . . . . . . . . 14

3.2.2.2 E/S Programada . . . . . . . . . . . . . . . . . . . . . . . 16

3.2.2.3 E/S Orientada a Interrupcao . . . . . . . . . . . . . . . . 16

3.2.3 Sistemas de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.3.1 Arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.3.2 Diretorios . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.3 Classes de Dispositivos e Modulos . . . . . . . . . . . . . . . . . . . . . . . 19

3.3.1 Drivers de caractere . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3.2 Major e Minor Numbers . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3.2.1 Metodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4 Comunicacao USB 23

4.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1.1 Topologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.1.2 Host USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.1.3 Dispositivos USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1.3.1 Hubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1.3.2 Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2 Modelo de Transferencia de Dados . . . . . . . . . . . . . . . . . . . . . . . 26

4.2.1 Protocolo de barramento . . . . . . . . . . . . . . . . . . . . . . . . 26

4.2.1.1 Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.2.1.2 Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

vi

4.2.2 Tipos de transferencia . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2.2.1 Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2.2.2 Isocrono . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2.2.3 Interrupcao . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.2.2.4 Bulk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.3 URBs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5 Desenvolvimento 30

5.1 Requisitos do software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.1.1 Materiais utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.2 Projeto BiopodUsbDriver . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.2.1 O Dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.2.2 Esquema do projeto . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.2.3 Aquisicao do Protocolo . . . . . . . . . . . . . . . . . . . . . . . . . 32

5.2.4 Biblioteca de Acesso a USB (LibUsb) . . . . . . . . . . . . . . . . . 33

5.2.5 Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.2.5.1 Protocolo - Controle . . . . . . . . . . . . . . . . . . . . . 36

5.2.5.2 Protocolo - Configuracao dos Registradores . . . . . . . . 37

5.2.5.3 Protocolo - Requisicao . . . . . . . . . . . . . . . . . . . . 37

5.2.5.4 Protocolo - Dados propriamente ditos . . . . . . . . . . . 38

5.2.5.5 Definicao da imagem . . . . . . . . . . . . . . . . . . . . . 38

5.2.5.6 BiopodUsbDriver . . . . . . . . . . . . . . . . . . . . . . . 39

6 Resultados 41

6.1 Testes e Analise dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . 41

7 Conclusoes 45

vii

Referencias 46

viii

Lista de Figuras

2.1 Elementos basicos de uma impressao digital, retirado de (COSTA, 2001) . . 4

2.2 Classes fundamentais de Vucetich, retirado de Gumz (2002) . . . . . . . . 5

2.3 Detalhes de Galton, retirado de Costa (2001) . . . . . . . . . . . . . . . . . 5

2.4 Pilares da seguranca da informacao, retirado de Siqueira (2004) . . . . . . 9

3.1 Abstracao de uma memoria com varios jobs na memoria . . . . . . . . . . 12

3.2 Diagrama de estados de um processo, adaptado de Silberchatz, Galvin e

Gagne (2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3 Processos simples e multi-thread, adaptado de Silberchatz, Galvin e Gagne

(2002) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.4 Estrutura de diretorios hierarquizada, retirado de Sakata (2005) . . . . . . 19

3.5 Arvore de diretorio Unix - Simplificado, adaptado de Bach (1990) . . . . . 19

3.6 Parte do conteudo do diretorio /dev, exibindo os tipos de dispositivos. . . . 21

4.1 Topologia fısica de um subsitema USB, retirado de USB.org (2005) . . . . 24

4.2 Concentrador de pontos de dispositivos, retirado de USB.org (2005) . . . . 25

5.1 Sensor biometrico utilizado no projeto . . . . . . . . . . . . . . . . . . . . 31

5.2 Software Omni Password, aquisitando uma impressao digital . . . . . . . . 32

5.3 Esquema do projeto para obtencao de uma impressao digital . . . . . . . . 33

5.4 Tela SnoopyPro - Sniffer USB . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.5 Comando lsmod, exibindo os modulos carregados em um sistema operacio-

nal Slackware GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.6 Informacoes de dispositivos montados na estrutura usbfs . . . . . . . . . . 36

5.7 Fluxograma do driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

ix

6.1 Primeiro resultado obtido, imagem formada com o bytes da forma como

eram aquisitados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

6.2 Imagem com resolucao 90x90 pixels e com sequencia de bytes invertido . . 42

6.3 Teste realizado para verificacao da rotacao da imagem . . . . . . . . . . . . 42

6.4 Primeira imagem de uma impressao digital aquisitada . . . . . . . . . . . . 43

6.5 Impressao digital aquisitada e rotacionada em noventa graus . . . . . . . . 43

6.6 Impressoes digitais aquisitadas utilizando o BiopodUsbDriver . . . . . . . . 43

x

Lista de Tabelas

5.1 Visao macro do protocolo implementado pelo driver . . . . . . . . . . . . . 37

xi

Resumo

Sistemas de identificacao biometrica vem se tornando cada vez mais populares, tantopara questoes de seguranca, como para automacao empresarial. Porem nem todos osfabricantes de dispositivos biometricos disponibilizam drivers para plataformas livre comoo GNU/Linux. Modulos ou drivers de dispositivo sao componentes de software muitoimportantes em sistemas de computadores, pois permitem o acesso ao hardware e porapresentarem uma interface mais simples ao usuario programador.

Esse documento apresenta a teoria utilizada para o desenvolvimento de um drivere detalha a criacao de um modulo de dispositivo de um sensor biometrico que utiliza aporta de comunicacao USB, para a plataforma GNU/Linux. O software desenvolvido elivre esta licenciado sob os termos GNU GPL versao 2.

xii

Abstract

Automatic systems for biometric identification have became most popular every day,for security and even in business automation. Therefore, not all biometric device dri-vers are avaiable for free plataform. Device drivers are software blocks very importantfor computer systems, because they allow hardware acess and offers an interface to theprogrammer.

This document presents a basic theory about device drivers development and describesthe building of a module to an USB biometric sensor for GNU/Linux operating system.As the Linux kernel and whole GNU tools, the software created during this project istotaly free and its under the terms of GNU GPL version 2.

1 Introducao

Em um mundo globalizado e tecnologico, a conectividade entre dispositivos eletronicos,

de pessoas e dispotivos ou simplesmente de pessoas para pessoas, e fator fundamental para

realizacao de diversas tarefas do dia-a-dia, seja no ambiente de trabalho ou domestico.

Diante da necessidade da utilizacao de recursos de informatica acoplados a um meio

seguro para acesso a informacoes confidenciais e integridade de informacoes, e que tecno-

logias baseadas em biometria e seguranca da informacao tem sido desenvolvidas e melho-

radas.

Devido ao grau de competitividade que se estabelece entre empresas de um setor, e

necessario refletir sobre quais metodos uma companhia pode adotar para que tenha um

diferencial comercial entre seus potenciais clientes. A partir dessa reflexao e tentando

visualizar a concorrencia no mercado de informatica, e estrategicamente ruim o desenvol-

vimento/venda de produtos que tenham alta dependencia tecnologica de empresas mono-

polistas e se que negam a deixar esses produtos (software) independente de plataforma ou

sem qualquer compatibilidade. Empresas desenvolvedoras de perifericos de computador

nao fogem a regra da concorrencia, e nao atender uma determinada fatia do mercado,

pode ser fator crucial para a sobrevivencia.

Drivers de dispositivos sao componentes de software responsaveis por permitir o com-

putador interagir com seus perifericos. Sao os drivers de dispositivos que conhecem o

hardware tratado e como ele se comunica com o computador.

Inicialmente o objetivo desse trabalho foi a criacao de um software livre que fosse

capaz de verificar e autenticar pessoas atraves de suas impressoes digitais, para uma

plataforma tambem livre. Como nenhum dos fabricantes de dispositivos biometricos do

mercado disponibilizam drivers para GNU/Linux ou qualquer outra plataforma livre, o

foco do trabalho foi modificado, passando ser o objetivo e motivacao, a criacao de um

driver de dispositivo livre.

No capıtulo 2, sao apresentados os conceitos de biometria e suas aplicacoes, tecnicas

utilizadas na verificacao e identificacao de pessoas usando a datiloscopia.

No capıtulo 3 e feito um estudo de software de interfaceamento e sistemas operacionais,

1

2

explorando conceitos importantes de acesso, controle e interfacemento de dispositivos de

computador, chegando ate o assunto sobre drivers de dispositivos, que e o foco dessa

monografia.

No capıtulo 4 e apresentado uma visao geral da arquitetura do padrao USB e como e

feita a comunicacao entre um dispositivo e um computador atraves dessa porta.

O capıtulo 5 e referente ao processo de desenvolvimento do software prosposto, onde

sao mostradas em detalhes as etapas para a criacao de um driver de dispositivo.

Ja no capıtulo 6, os resultados, tanto positivos como negativos, sao apresentados e e

feita uma analise crıtica destes, podendo se tirar conclusoes fundamentadas em teoria e

pratica.

2 Biometria

Ha tempos o homem estuda o comportamento dos seres vivos e utiliza muito do que

encontra na natureza na melhoria da qualidade de vida da sociedade. Homens ancestrais

sao diferenciados por geologos e historiadores pelo seu porte fısico, caracterısticas da

estrutura ossea e arcada dentaria, ou seja, medidas do corpo.

O termo biometria vem do latim e significa bio: vida; metria: metrica, medida. Ou

seja, e a medida dos seres vivos atraves de suas caracterısticas fısicas. E atraves da

biometria que e possıvel a identificacao unica de pessoas. (DIAS, 2005), (BIOMETRIA-

WIKIPEDIA, )

2.1 Datiloscopia

A datiloscopia e o estudo dos desenhos formados pelas papilas dermicas ao nıvel de

polpas digitais, ou impressoes digitais. Esses desenhos sao formados no perıodo de vida

intra-uterina (perto do sexto mes de gestacao humana) e permanecem inalteradas ate o

final da vida de um indivıduo (GUMZ, 2002), (MARANHaO, 1989).

Conforme Costa (2001), “a palavra datiloscopia ou dactiloscopia e uma palavra de

origem grega e composta dos elementos: daktylos = dedos e skopein = examinar, ou seja,

e a analise dos dedos das maos ou pes”. Pode-se dizer entao que e o estudo biometrico

utilizando os dedos como forma de medicao.

Uma impressao digital e composta basicamente de tres elementos: nucleo, deltas e

linhas. O nucleo e uma formacao das linhas encontrado no centro de uma impressao

digital. Os deltas sao figuras formadas pela juncao de linhas de varios sentidos, fazendo

parecer um triangulo. Deltas sao importantes na classificacao de impressoes digitais, pois

a partir deles e de sua quantidade pode-se dividir um sistema de linhas em diversas classes,

como mostra a figura 2.1 (COSTA, 2001).

A partir dos deltas e possıvel tambem dividir uma impressao digital em varias regioes

(MARANHaO, 1989), (COSTA, 2001):

• Regiao marginal: regiao que representa as formacoes papilares nas margens da im-

3

4

Figura 2.1: Elementos basicos de uma impressao digital, retirado de (COSTA, 2001)

pressao digital.

• Regiao nuclear: regiao central, onde normalmente se encontra o nucleo (na existencia

dele).

• Regiao basilar: regiao abaixo da regiao central e e a base (referencia) de uma im-

pressao digital.

2.1.1 Sistema Vucetich

O argentino Juan Vucetich foi o criador do primeiro sistema de verificacao utilizando

impressoes digitais. Baseando-se nos estudos feitos por Galton e outros, Vucetich dividiu

uma impressao digital em quatro classes fundamentais. Abaixo sao apresentadas as classes

propostas por Vucetich: (MARANHaO, 1989)

• Arco: nao possui regiao nuclear definida. Neste caso, as regioes basilar e maginal se

continuam de um ponto ao outro.

• Presilha externa: regiao nuclear presente, porem marginalizado para a esquerda.

Contem um unico delta e situado a esqueda do observador.

• Presilha interna: regiao nuclear presente, porem marginalizado para a direita. Contem

um unico delta e situado a direita do observador.

• Verticilio: regiao nuclear e bem definida e situada no centro do desenho. Tem

caracterısticas oval, espiral e sinuoso.

5

Essas classes servem apenas para separar as impressoes digitais em grandes grupos e e

baseado no numero de deltas com suas respectivas posicoes, nao sendo possıvel identificar

unicamente uma pessoa. (GUMZ, 2002) E util na area criminalıstica para determinar se,

por exemplo, a impressao digital de um suspeito de um crime faz parte ou nao da classe

de uma impressao digital encontrada no local do crime.

Figura 2.2: Classes fundamentais de Vucetich, retirado de Gumz (2002)

2.1.2 Detalhes de Galton

Segundo Maranhao (1989), “as minucias ou pontos caracterısticos sao resultados de

acidentes apresentados pelas linhas (ou cristas) papilares e representam a garantia de

unicidade em impressoes digitais”. As minucias sao divididas em cinco grupos: cristas

finais, ilhas, bifurcacoes, cruzamentos e esporas. (COSTA, 2001), (GUMZ, 2002)

Uma crista final e uma linha que se interrompe abruptamente. Ja a bifurcacao e uma

linha que da origem a outras duas linhas, separadas por determinada angulacao. Ilhas ou

lagos sao formados por uma bifurcacao que termina convergindo em um mesmo ponto. A

imagem 2.4 ilustra claramente esses pontos (COSTA, 2001), (GUMZ, 2002).

Figura 2.3: Detalhes de Galton, retirado de Costa (2001)

6

As minucias sao elementos identificadores e podem ser utilizadas com certo grau de

confiabilidade, fazendo valer as condicoes impostas pela datiloscopia, tratando-se entao

de uma identificacao (e nao reconhecimento). Segundo Costa (2001), doze pontos encon-

trados em uma impressao digital sao suficientes para que seja feita a identificacao uma

pessoa.

2.1.3 Idenficacao e Verificacao

Segundo Maranhao (1989), “identidade e o conjunto de propriedades ou caracterısticas

que tornam alguem essencialmente diferente de todos os demais, com a quem se assemelhe

ou possa ser confundido”. Baseado nessa afirmacao, pode-se dizer que o termo identidade

e o termo que garante a unicidade de um ser ou um objeto. Diferente do termo reco-

nhecimento, que e uma identificacao sem nenhuma base tecnico-cientıfica (MARANHaO,

1989).

Identificacao diferencia-se terminologicamente de reconhecimento, pelo fato de iden-

tificacao ser um metodo baseado em tecnicas cientıficas e o reconhecimento nao. O re-

conhecimento e dito entao, uma identificacao nao cientıfica. Para que um metodo de

identificacao seja aceito como cientıfico, ou seja, que utilize uma tecnica de identificacao

de base cientıfica, ele precisa atender os requisitos abaixo citados (MARANHaO, 1989) :

• Unicidade, a propriedade ou caracterıstica de alguem ou algo ser unico;

• Imutabilidade, que existe sempre e o que nao muda (imutavel);

• Classificabilidade, indicando que caracterısticas podem ser mensuraveis;

• Praticabilidade, que significa que o metodo venha a ser pratico.

E necessario entao fazer uma analise desses resquisitos em relacao as impressoes di-

gitais como forma de identificacao. O conjunto de figuras (ou minucias) que se formam

em uma impressao digital e unico, ou seja, nao existe dois seres com com as mesmas im-

pressoes digitais no mundo, atendendo assim o requisito da unicidade. Conforme citado,

as impressoes digitais de um ser humano mantem-se naturalmente inalteradas ao longo

de sua vida, sendo valida para o requisito imutabilidade. Como o conjunto de carac-

terısticas das impressoes digitais tambem podem ser medidas, ou seja, o encontro de, no

mınimo, doze pontos caracterısticos em impressoes digitais (ou minucias) e com a mesma

7

localizacao, ja e o suficiente para se identificar uma pessoa, o requisito da classificabili-

dade tambem e atendido. A praticabilidade e um termo que poderia ser substituido por

viabilidade. Tomando um exemplo, um metodo de identificacao atraves da analise do

DNA 1 e teoricamente possıvel, porem nao em termos praticos, pois ter de tirar sangue

ou depositar um fio de cabelo toda vez que for retirar dinheiro de um sistema bancario

seria um tanto quanto desagradavel (COSTA, 2001), (MARANHaO, 1989).

2.2 Sistemas biometricos

A exigencia por aumento de seguranca, a facilidade e a comodidade fizeram com

que os sistemas biometricos automaticos tivessem uma maior aceitacao no mercado nas

ultimas decadas. Alem do intenso uso em criminalıstica, abaixo sao apresentadas algumas

aplicacoes desses sistemas (JuNIOR; JuNIOR, 1979), (MARANHaO, 1989) :

• Comercio eletronico: Seguranca aliado a confiabilidade e o desejo de qualquer

usuario de internet como potencial consumidor. Muitos desses usuarios sentem-se

coagidos em fazer compras pela internet em funcao da falta de seguranca ou da falta

de conhecimento sobre sistemas seguros. E por causa desse receio que empresas de

comercio eletroncio, principalmente B2C2, vem investindo cada vez mais em solucoes

que envolvem sistemas biometricos. (ROMAGNOLI, 2005)

• Acesso fısico: A tecnologia biometrica vem sendo utilizada com maior frequencia

em ambientes que necessitam do controle das pessoas que entram e saem. Para se

ter acesso a uma determinada sala ou area, uma empresa pode optar em utilzar a

biometria ao inves crachas com nıveis de acesso, garantindo dessa forma uma maior

seguranca e minimizando ocorrencias de fraude. (ARAGAKI, 2005)

Existem inumeras aplicacoes que utilizam tecnologia biometria, dos mais variados

tipos. Outras tecnicas alem da datiloscopia podem ser citadas como por exemplo leitura

da ıris, reconhecimento facial e o reconhecimento de voz.

1Sigla inglesa para Acido Desoxirribonucleico2Sigla inglesa que designa relacionamento comercial entre empresas e consumidores

8

2.3 Seguranca da Informacao

A palavra seguranca pode ter diversos significados e esses significados podem ser

abrangentes de pessoa para pessoa, mas basicamente se resume em um sentimento de

conforto perante determinada situacao.

Informacao sempre foi considerado patrimonio importante, seja para uma organizacao

privada, publica ou para um Estado. Preserva-las de outrem que pudesse fazer mal usos,

e tarefa que preocupa empresariados e autoridades (DIAS, 2005).

Com o advento dos computadores e suas interconexoes em rede, permitiu repescti-

vamente a concentracao de informacoes em formato digital e a facilidade em seu acesso.

No sentido contrario, computadores concentradores de informacoes passaram a ser alvo

constante de ataques (DIAS, 2005).

Segundo Siqueira (apud RUSSEL; GANGEMI, 1991), a seguranca da informacao e

baseada nas definicoes dos termos confidencialidade, integridade e na disponibilidade dos

recursos computacionais. Esses tres parametros sao considerados pilares da seguranca da

informacao e estao descritos a seguir (DIAS, 2005), (SIQUEIRA, 2004) :

• Confidencialidade: Protecao da informacao contra acessos nao autorizados.

• Integridade: Preservacao da informacao quanto a alteracoes, violacoes ou des-

truicoes, por ato malicioso ou nao.

• Disponibilidade: Garantia de acesso as informacoes sob demanda e sem atraso.

O nao cumprimento dessa medida quando necessario pode ser tao ruim quanto a

destruicao de um dado.

Sistemas de idenficacao biometrica sao grandes aliados para a mantenibilidade dos

pilares da seguranca da informacao.

9

Figura 2.4: Pilares da seguranca da informacao, retirado de Siqueira (2004)

3 Sistemas Operacionais

Um sistema operacional e um programa de computador que tem como funcao gerenciar

recursos (hardware e software) de um sistema computacional. O seu proposito e prover um

ambiente mais simples e produtivo para o usuario (TANENBAUM, 2003), (SILBERCHATZ;

GALVIN; GAGNE, 2002).

3.1 Maquina Extendida

Computadores sao maquinas eletronicas que utilizam puramente linguagem de maquina.

Essa linguagem e geralmente de difıcil programacao, principalmente para acessos de en-

trada e saıda (E/S), (TANENBAUM, 1992) , (TANENBAUM, 2003). Uma das tarefas

de um sistema operacional e ocultar do usuario programador as entrelinhas de acesso ao

hardware, apresentando uma interface mais simples. Quer dizer entao que o Sistema Ope-

racional estende o hardware do computador para o usuario, como uma maquina virtual

(TANENBAUM, 2003).

3.2 Componentes de um SO

Em um sistema operacional, varios processos concorrentes atendem por diferentes

tarefas quase simultaneamente e cada um desses processos requisitam diversos recursos

do sistema, seja por processamento, memoria, conectividade, ou outros. O kernel (nucleo)

e a parte do sistema operacional responsavel por gerenciar essas requisicoes e essas tarefas

podem ser divididas em cinco partes (RUBINI; CORBET; KROAH-HARTMAN, 2005) :

• Gerenciamento de memoria

• Gerenciamento de processos

• Sistemas de arquivos

• Controle de dispositivos (E/S)

• Rede

10

11

3.2.1 Gerenciamento de processos

Sistemas operacionais modernos possuem recursos extremamente eficientes para su-

prir a necessidade de varios usuarios acessarem o mesmo sistema, assim como ter varios

programas executando diversas tarefas ao “mesmo tempo”. Um dos responsaveis em

manter um sistema multiprogramado, multitarefa e multiusuario com boa performance

e a caracterıstica de gerenciamento de processos (SILBERCHATZ; GALVIN; GAGNE,

2002) , (STALLINGS, 2000).

3.2.1.1 Processos

Um processo pode ser definido como a abstracao de um programa em execucao e que

e acompanhado por variaveis e registradores do sistema (TANENBAUM, 2003).

Computadores modernos tem a capacidade de executar varias tarefas ao mesmo

tempo, isso e devido a caracterıstica do sistema operacional de ser multiprogramado.

Um sistema e considerado multiprogramado, quando ele tem a capacidade de colocar

varias tarefas na memoria e executa-las de forma parcial ou total (TANENBAUM, 2003),

(SAKATA, 2005).

Em sistemas multitarefa, cada tarefa na memoria e executada pela CPU durante um

tempo maximo e entao e alternada por outra tarefa que estava pronta para ser executada,

mesmo que a primeira nao tenha sido concluıda. Quando existe um tempo maximo para

execucao de um processo pela CPU, e necessario a presenca de um escalonador, cuja res-

ponsabilidade e alternar a execucao dos processos entre a CPU e a memoria, baseando-se

nos estados de cada processo (TANENBAUM, 2003), (SILBERCHATZ; GALVIN; GAGNE,

2002).

3.2.1.2 Estados de Processos

Em funcao da caracterıstica de multiprogramacao, aliado a presenca de um esca-

lonador, um processo pode situar-se em diferentes estados, que representa seu grau de

atividade, como mostra a figura 3.2. Os estados que um processo pode ser encontrar sao

os seguintes (SILBERCHATZ; GALVIN; GAGNE, 2002) , (TANENBAUM, 2003) :

• Novo: Processo em estado de criacao.

• Em execucao: As instrucoes do processo estao sendo executadas pela CPU.

12

Figura 3.1: Abstracao de uma memoria com varios jobs na memoria

• Bloqueado: O processo fica incapaz de executar esperando pela ocorrencia de um

evento.

• Pronto: O processo esta pronto para ser executado, aguardando na fila de prontos.

• Finalizado: O processo finalizou sua execucao.

Figura 3.2: Diagrama de estados de um processo, adaptado de Silberchatz, Galvin eGagne (2002)

Os estados dos processos indicam qual sua real situacao e sao importantes para que

o escalonador organize as tarefas a serem executas, assim como sua ordem e prioridade.

13

3.2.1.3 Threads

“Os threads sao entidades escalonadas para a execucao sobre a CPU” (TANENBAUM,

2003). O thread esta sempre contido em um processo e pode ser considerado uma unidade

basica de utilizacao do processador. Processos tradicionais utilizam geralmente apenas

um thread (linha) de controle por vez, porem em determinadas situacoes uma aplicacao

pode necessitar executar diversas tarefas concorrentemente, como se fossem processos

separados. (SILBERCHATZ; GALVIN; GAGNE, 2002)

Cada thread de um processo contem um conjunto de registradores e uma estrutura de

pilha, o que lhes permite trabalhar de forma independente. Dessa forma, varias threads

podem trabalhar concorrentemente, o que e chamado de sistema multi-threaded . A

vantagem de um sistema multi-threaded e permitir que varias execucoes ocorram no mesmo

ambiente do processo, aproveitando-se de recursos utilizados pelo processo em execucao

(enderecamento, arquivos aberto, etc) (TANENBAUM, 2003), (SILBERCHATZ; GALVIN;

GAGNE, 2002).

Figura 3.3: Processos simples e multi-thread, adaptado de Silberchatz, Galvin e Gagne(2002)

3.2.1.4 Comunicacao Interprocessos

E com certa frequencia que processos tem de se comunicar. Essa necessidade de

comunicao deve ocorrer de maneira estruturada e sem interrupcoes. Processos utilizam

14

o mesmo espaco de memoria que outros processos e podem utilizar tambem os mesmos

recursos, por exemplo a leitura de um arquivo. Para evitar acessos multiplos a regioes

crıticas ou evitar acessos multiplos a recursos compartilhados, e preciso fazer uso de

alguma tecnica ou de um modelo de protecao (MITCHELL; OLDHAM; SAMUEL, 2001).

3.2.1.5 Condicao de disputa

Condicao de disputa e a situacao ao qual dois ou mais processos em execucao re-

quisitam acesso (leitura ou escrita) a um determinado recurso compartilhado. Como o

escalonador de processos e o responsavel por determinar qual processo sera utilizado, nao

ha como determinar uma sequencia de execucao, sendo necessario a implementacao de

um algoritmo para evitar imprevistos. Caso nao exista um algoritmo para proteger o

acesso a areas restritas unicamente, o resultado de uma operacao pode nao ser o esperado

(TANENBAUM, 2003).

Semaforos Semaforos sao varaveis-contadores que permitem gerenciar e sincronizar

varios processos ou threads. Trabalha com numeros inteiros nao-negativos e provem uma

abstracao simples, muito util para implementacao de exclusao mutua.

Mutexes O mutex e uma versao simplificada de um semaforo e sao indicados para o

gerenciamento de exclusao mutua para recursos do sistema ou partes de codigo, princi-

palmente em threads implementadas em modo usuario.

3.2.2 Entrada e Saıda

Uma outra tarefa essencial de um sistema operacional e o gerenciamento de dispo-

sitivos de entrada e saıda (E/S). A arquitetura de E/S constitui em uma interface do

computador com o mundo exterior e prove ao sistema operacional informacoes de forma

precisa para que esse efetue as requisicoes de E/S de maneira efetiva (STALLINGS, 2002),

(TANENBAUM, 2003).

3.2.2.1 Dispositivos de E/S

Um dispositivo se comunica com um computador enviando sinais atraves de um meio

fısico. As caracterısticas de um dispositivo de entrada e saıda podem variar muito,

tanto em funcionalidades, protocolos e velocidade de comunicacao. Consequentemente

15

os metodos de acesso e controle tambem sao variados. Os dispositivos de entrada e saıda

podem, de uma maneira geral, ser divididos em duas categorias (TANENBAUM, 2003),

(SILBERCHATZ; GALVIN; GAGNE, 2002), (RUBINI, 2001) :

• Dispositivos de caractere: Dispositivos de caractere sao aqueles que nao pos-

suem uma estrutura definida para transmissao de dados, nao sao enderecaveis e nao

contem operacoes de posicionamento de dados. Ou seja, um dispositivo de carac-

tere envia ou recebe um fluxo de caracteres, nao se importando com uma estrutura

definida de blocos.

• Dispositivos de bloco: Dispositivos de blocos sao aqueles que possuem a capa-

cidade de armazenar os dados em blocos de tamanho fixo, contendo cada qual seu

endereco, e que pode ser lido e/ou escrito independentemente de outro bloco.

Em um sistema computacional, os dispositivos de hardware sao conectados em um

computador atraves de um Controlador de Dispositivo. Uma unidade de E/S e com-

posta por uma parte mecanica e por uma parte eletronica. O controlador de dispositivo e

o componente eletronico do controlador e e responsavel por converter sinais emitidos pelo

dispositivo em um formato mais simples para o sistema operacional. Sao responsaveis

tambem por executarem algum algoritmo de correcao de erros, liberando o conteudo em

buffers para ser copiado para a memoria principal. A realizacao desse trabalho e feita

geralmente por um chip com programas de baixo nıvel. A parte mecanica da unidade de

E/S e o dispositivo propriamente dito (TANENBAUM, 2003).

Para se comunicar com o controlador, o processador necessita ler e escrever em regis-

tradores contidos no proprio controlador. Esses registradores podem ser utilizados tanto

para controle como transferencia de dados. Como alternativa, o controlador de dispositivo

pode fazer uso do recurso de memoria mapeada. Esse recurso permite a CPU mapear

todos os registradores do controlador de dispositivo na memoria. Cada registrador e as-

sociado a um endereco unico ao qual nenhuma memoria esta associada (SILBERCHATZ;

GALVIN; GAGNE, 2002), (TANENBAUM, 2003).

Quando um dispositivo termina sua tarefa, ele gera um sinal de interrupcao no

barramento ao qual esta associado para avisar sua atual situacao. Esse sinal e entao

detectado pelo controlador de dispositivo que toma as devidas atitudes. O controlador,

que e responsavel por gerenciar essas interrupcoes, verifica se existe outro pedido de

interrupcao em atendimento e passa o novo sinal a CPU. Isso faz com que a CPU pare

com a sua atividade atual, salve os registradores atuais na pilha e atenda a requisicao

16

de interrupcao. Ao iniciar o tratamento de interrupcao, a rotina responsavel pelo tal,

informa a controladora de dispositivo que ele esta livre para repassar novas interrupcoes,

escrevendo um valor em uma de suas portas de E/S (TANENBAUM, 2003).

3.2.2.2 E/S Programada

Segundo Tanenbaum (2003), a maneira mais simples de se realizar operacoes de E/S

e utilizar o metodo de E/S Programada (ou polling), ou seja, e deixar com que a CPU

realize todo o trabalho. Esse metodo basea-se em um bloco de instrucoes (ou apenas uma

instrucao) fechado em um laco (for, while, etc), onde sua condicao de parada e o termino

da leitura ou escrita no ou do dispositivo em questao.

Primeiramente o dispositivo e requisitado, caso ele esteja ocupado, e retornado um

sinal do controlador indicando geralmente um erro. Uma vez que o dispositivo esteja

disponıvel, o processo do usuario efetua uma chamada do sistema para que um determi-

nado dado seja lido ou escrito. O sistema operacional normalmente copia uma cadeia de

caracteres do espaco do usuario no espaco do nucleo, caso a operacao seja de escrita, ou

o inverso, caso a operacao seja de leitura. Esse processo facilita o acesso da informacao a

ser lida ou escrita (TANENBAUM, 2003).

No espaco do nucleo, o sistema operacional atualiza espcıficos bits de status que

determinam se um dado foi lido ou escrito. Se o bit de estado ocupado estiver “setado”

(valor 1), o processo de leitura ou escrita aguarda ate que o mesmo esteja “resetado”

(valor 0). O sistema operacional le repeditamente bits de estados ocupado e pronto,

efetuando as operacoes de leitura e escrita ate o fim da cadeia de caracteres, metodo

conhecido tambem como espera ociosa (TANENBAUM, 2003).

Esse metodo pode se tornar ineficiente na tentativa repetida de se encontrar um

dispositivo pronto para o servico, enquanto outro importante processo de CPU permanece

inacabado, ou simplesmente nao atendido (SILBERCHATZ; GALVIN; GAGNE, 2002).

3.2.2.3 E/S Orientada a Interrupcao

Em determinados momentos torna-se mais eficiente organizar o controlador de dispo-

sitivo para que notifique a CPU quando um dispositivo termina o processamento de um

sinal e fica disponıvel para novas requisicoes de E/S, ao inves de fazer a CPU verificar

repetidamente pela finalizacao de um processo de E/S atraves do metodo de espera oci-

osa. O mecanismo que possibilita um dispositivo notificar a CPU quando uma operacao

17

e finalizada, e chamada de interrupcao (SILBERCHATZ; GALVIN; GAGNE, 2002).

De forma analoga ao ıtem 3.2.2.2, apos uma cadeia de caracteres ser escrita no espaco

do nucleo e o primeiro caractere enviado ao dispositivo, a CPU invoca o escalonador de

processos fazendo com que outro processo entre em execucao. O processo que solicitou a

E/S fica no estado bloqueado ate que toda cadeia de caracteres seja processada.

A cada cadeia de caracteres processada pelo dispositivo, e gerado um sinal de in-

terrupcao onde a CPU para o processo atual em execucao, salva seu estado na pilha e

atende ao tratamento de interrupcao do dispositivo. Caso exista mais caracteres a serem

processados pelo dispositivo, o ciclo continua. Caso contrario, o processo de usuario que

requisitou o processamento e desbloqueado (TANENBAUM, 2003).

3.2.3 Sistemas de Arquivos

Um sistema de arquivo e a camada do sistema operacional responsavel por prover me-

canismos de armazenamento e gerenciamento de dados. Entende-se por gerenciamento,

o modo como esses dados sao estruturados, gravados, nomeados e utilizados (SILBER-

CHATZ; GALVIN; GAGNE, 2002), (TANENBAUM, 2003).

3.2.3.1 Arquivo

Um arquivo e a unidade logica basica de armazenamento de dados em dispositivos,

normalmente nao volatil. Cada arquivo contem informacoes estruturadas de acordo com

o seu tipo: arquivos texto, programas executaveis, figuras, vıdeo, som, entre outros (SIL-

BERCHATZ; GALVIN; GAGNE, 2002).

E caracterıstica de um sistema operacional suportar varios tipos de arquivos, e es-

ses podem ser classificados em: arquivos regulares e diretorios, arquivos de caractere e

arquivos de bloco.

Arquivos regulares sao basicamente arquivos texto puro em padrao ASCII1 ou ar-

quivos binarios. Os arquivos de caracteres sao utilizados para modelar dispositivos de

entrada/saıda e os arquivos de bloco para modelar discos ou dispositivos de bloco, pro-

priamente dito (TANENBAUM, 2003).

Os arquivos devem manter tambem informacoes de estados, onde podem variar em

1Sigla para American Standard Code for Information Interchange que e um conjunto de codigos parao computador representar numeros, letras, pontuacao e outros caracteres

18

quantidade, de sistema operacional para sistema operacional, mas sao basicamente os

seguintes:

• Nome: e utilizada pelo usuario para identificar e distinguir diferentes arquivos.

• Numero identificador: E um numero (ou uma sequencia de caracteres alfa-

numericos) que identificam unicamente um arquivo. Essa informacao e utilizada

pelo sistema.

• Localizacao: Essa informacao e um ponteiro para o dispositivo e para a localizacao

do arquivo.

• Tamanho: Contem informacoes do tamanho atual do arquivo.

• Data e hora: Data e hora em que o arquivo foi criado, modificado e acessado.

• Dono: informacoes do usuario que criou o arquivo

3.2.3.2 Diretorios

Diretorios sao estruturas logicas que permitem a organizacao e gerenciamento de ar-

quivos em um sistema de arquivo. Em muitos sistemas operacionais os diretorios sao

simplesmente arquivos. Na verdade sao considerados meta-arquivos, ou seja, sao arquivos

simples que contem informacoes sobre a estrutura de diretorios e subdiretorios pertencen-

tes a ele (TANENBAUM, 2003).

Em sistemas de arquivos modernos, a estrutura de diretorios e geralmente repre-

sentada em forma de arvore hierarquizada, ou seja, podem conter arquivos e tambem

diretorios (subdiretorios), conforme visto na figura 3.4.

Esse tipo de hierarquia e bastante utilizada por permitir um usuario criar tantos

diretorios quanto achar necessario para se organizar. Claro que existe um numero limitado

de arquivos/subdiretorios por diretorio, que nao e inerente apenas ao espaco em disco

utilizado e que tambem varia de sistema de arquivo para sistema de arquivo, (SAKATA,

2005).

O Unix tambem possui uma estrutura de diretorios de forma hierarquizada, conforme

mostra a figura 3.5.

De acordo com Bach (1990), para que um sistema Unix ou GNU/Linux realize uma

operacao de entrada ou saıda, ele necessita utilizar um tipo de arquivo chamado descritor

19

Figura 3.4: Estrutura de diretorios hierarquizada, retirado de Sakata (2005)

/ (root)

/usr /dev /etc /bin /home /boot

Figura 3.5: Arvore de diretorio Unix - Simplificado, adaptado de Bach (1990)

de arquivo. Um descritor de arquivo e um numero inteiro, que esta associado a um arquivo

aberto, sendo que esse arquivo pode ser um dispositivo externo, ou um arquivo no disco,

ou qualquer outro dispositivo fısico/logico que esta sob domınio do SO.

3.3 Classes de Dispositivos e Modulos

Um driver de dispositivo ou simplesmente um modulo e um programa de computador

especıfico, responsavel por controlar determinado dispositivo. Tarefas que necessitam de

abstracao do hadrware ou que geralmente sao chamadas de “baixo nıvel”, sao protegidas

pelo sistema operacional que permite apenas alguns programas especiais de acessa-los. Os

modulos, ou drivers de dispositivo, rodam geralmente no espaco do nucleo (ou espaco

do kernel), quais sao os programas que rodam no domınio do kernel ou nucleo. Enquanto

20

programas de aplicacao rodam no espaco do usuario, que representam os programas

que rodam em uma camada superior a camada do kernel (RUBINI, 1998).

O Unix tem uma maneira de distinguir os diferentes tipos de dispositivos. Cada

modulo e geralmente implementado para cada tipo desses dispositivos. (RUBINI, 1998)

Assim como os dipositivos que sao dividos em categorias, um driver por consequencia

segue tambem as mesmas classificacoes (RUBINI, 1998), (RUBINI, 2001):

• Drivers de bloco

• Drivers de caractere

3.3.1 Drivers de caractere

Driver de caractere e classe de modulos de dispositivos que permitem o controle de

dispositivos de caractere, ou seja, tem como caracterıstica nao possuir uma estrutura

definida para os dados (RUBINI, 1998).

Os drivers de caractere podem suportar requisicoes de E/S de tamanho variavel e sao

suportados pela maioria dos dispostivos. Esses tipos de drivers sao comumente utilizados

por dispositivos que trabalham com transferencias de um byte por vez ou transferencias

que nao exigem um tamanho de pacote de tamanho fixo (TUTORIALS. . . , 2001).

3.3.2 Major e Minor Numbers

Como citado em (PERIM, 2001), em sistemas Unix tudo e considerado um arquivo,

inclusive dispositivos sao montados como arquivos na estrutura de arvore do sistema de

arquivos corrente. Dispositivos de caractere sao acessados utilizando-se nomes e que sao

chamados de arquivos especiais, arquivos de dispositivos ou simplesmente nos (nodos).

Pensando ainda na estrutura de diretorios do Unix esses dispositivos sao convencional-

mente alocados no diretorio /dev e sao representados pela letra c indicando que e um

dispositivo de caractere, ao ponto que a letra b indica que o dispositivo e um dispositivo

de bloco, como visto na figura 3.6 (RUBINI; CORBET; KROAH-HARTMAN, 2005).

Os major numbers sao utilizados para identificar qual driver exato deve ser ser as-

sociado ao dispositivo conectado. Esses numeros de identificacao podem ser alocados

dinamincamente pelo driver ou pode-se definir um numero fixo para o dispositivo no sis-

tema. Logicamente essa nao e a melhor escolha, pois, apesar de sistemas operacionais

21

Figura 3.6: Parte do conteudo do diretorio /dev, exibindo os tipos de dispositivos.

modernos permitirem o compartilhamento de major numbers, ainda existe a possibilidade

de conflito (RUBINI, 1998).

Em contrapartida minor numbers tem como funcao identificar para o kernel exata-

mente qual dispositivo esta sendo referenciado, ou seja, e utilizando minor numbers que

o kernel pode diferenciar dois dispositivos identicos conectados ao computador (RUBINI;

CORBET; KROAH-HARTMAN, 2005).

3.3.2.1 Metodos

Um driver de dispositivo deve fornecer metodos basicos de acesso. Esses metodos sao

na verdade chamadas de sistema simples, com certo nıvel de abstracao do hardware, ou

seja, permite a comunicacao com um dispositivo sem necessariamente conhecer os detalhes

de projeto ou mesmo do protocolo de controle deste. Alguns metodos basico do kernel

Linux estao listados a seguir (BACH, 1990), (RUBINI, 1998):

• Open: o nucleo do sistema utiliza o mesmo metodo para abertura de arquivos

especiais (caractere e bloco) como arquivos regulares. Ao requisitar a abertura de

um dispositivo, o sistema aloca o recurso desejado, obtem o descritor de arquivo e

retorna ao processo do usuario.

• Release: ou metodo Close, e tem como funcao fechar a conexao de um dispositivo

aberto.

• Read e Write: sao metodos para leitura e escrita de dispositivos. Quando invocados

para utilizacao de dispostivos de caractere, esse metodo chama o respectivo metodo

de um driver de dispositivo que tem a real funcao de leitura e escrita.

• ioctl: e uma chamada de sistema que recebe tres argumentos: descritor de arquivo

proveniente de uma chamada open ou creat, comando especıfico do driver de dis-

positivo ao qual esta lidando e por ultimo um argumento para esse comando. Com

22

esse tipo de chamada do sistema, e possıvel executar todos os comandos disponıveis

do dispositivo, utilizando apenas um metodo.

Mais metodos podem ser desenvolvidos, a fim de fornecer maior controle ou mesmo

por necessidades de controle de um hardware mais complexo, variando entao de fabricante

para fabricante. As chamadas ioctl sao uma alternativa para esse tipo de situacao.

4 Comunicacao USB

A sigla USB e um acronimo para Universal Serial Bus ou em portugues, barramento

serial universal. Esse barramento e um padrao de conexao de perifericos e computadores,

que foi originalmente criado para substituir a grande variedade de barramentos existentes

por um unico tipo, alem de permitir que varios perifericos de diferentes fabricantes pu-

dessem interoperar em uma arquitetura aberta. Foi idealizado em 1995 por um grupo de

empresas de tecnologia e quais as motivacoes para criacao do mesmo incluem: (USB.ORG,

2005)

• Conexao de um PC ao telefone

• Facilidade de utilizacao

• Expansao de portas de comunicacao

• Solucao de baixo custo e que suporta altas taxas de tranferencias

Um barramento de dados e o caminho de comunicacao fısico e o acesso entre o pro-

cessador e seus perifericos. “Um barramento padrao juntamente com um conjunto pre-

definido de sinais, temporizadores, conectores provem um meio pelos quais as interfaces

de dispositivos, ou controladores, podem ser facilmente desenvolvidos em um sistema

computacional” (MENDONcA; ZELENOVSKY, 2002).

Ate a especificacao 1.1 do USB, as velocidades de tranferencias podiam variar de

1,5Mbps a 12Mbps, dependendo do dispositivo e do tipo de aplicacao (USB. . . , 2005).

4.1 Arquitetura

A arquitetura de um sistema USB e divida em tres partes basicas. Sao elas:

• Interconxeao USB

• Dispositivos USB

• Host USB

23

24

4.1.1 Topologia

A conexao fısica do USB segue a topologia do tipo estrela, onde um hub USB e o

centro de cada estrela e os dipositivos conectados a ele sao as pontas. Cada conexao entre

um host e um hub ou funcao, ou entre um hub e outro hub, e uma conexao ponto-a-ponto

conforme ilustra a figura 4.1 (USB.ORG, 2005).

Figura 4.1: Topologia fısica de um subsitema USB, retirado de USB.org (2005)

4.1.2 Host USB

Em um sistema USB, existe a presenca de apenas um host, ao qual sua interface com

os dispositivos e referenciada como controladora de host. O host USB e responsavel pela

deteccao de quando um dispositivo e conectado ou desconectado, pelo gerenciamento do

fluxo de controle, pelo gerenciamento do fluxo de dados, por coletar estados e atividades

e ainda suprir energia para dos dispositivos a ele conectados.

25

4.1.3 Dispositivos USB

4.1.3.1 Hubs

Segundo USB.org (2005), os hubs sao elementos chave para a caracterıstica de plug

and play do USB, ou seja, permite que um dispositivo possa ser instalado e automatica-

mente detectado pelo sistema operacional. Hubs sao concentradores de conexao por isso

possibilitam a conexao multipla do USB. Os pontos de conexao sao chamados de portas

e cada hub converte um unico ponto em um multiplo ponto de conexao, conforme pode

ser observado na figura 4.2 (USB. . . , 2005), (USB.ORG, 2005).

Figura 4.2: Concentrador de pontos de dispositivos, retirado de USB.org (2005)

4.1.3.2 Funcoes

Uma funcao e um dispositivo USB que e capaz de receber ou transmitir dados ou

informacoes de controle no barramento. Uma funcao e tipicamente implementada como

um dispositivo separado, com um cabo que o conecta em um hub, porem pacotes fısicos

devem implementar multiplas funcoes e um hub dedicado com apenas um unico cabo.

Isto e conhecido como um dispositivo composto.

Cada funcao contem informacoes de configuracoes que descrevem suas capacidades e

requerimentos de recursos. Antes de uma funcao ser usada, ela precisa ser configurada pelo

host, no qual inclui alocacao de banda e a selecao de opcoes de configuracao (USB.ORG,

2005).

26

4.2 Modelo de Transferencia de Dados

4.2.1 Protocolo de barramento

Toda transacao USB envolve a transferencia de tres pacotes basicos, onde cada transacao

e iniciada pela controladora de host, que envia um pacote contendo o tipo e direcao da

transacao, o endereco do dipositivo e o numero do endpoint. A fonte (host ou dispositivo)

e responsavel por enviar pacotes com informacoes ou mesmo um pacote informando que

nao ha nada a ser transferido, enquanto o destino geralmente responde com um pacote de

handshake1 indicando que a transferencia ocorreu com sucesso. O modelo de tranferencia

entre o fonte e o destino, de um host para um endpoint de um dispositivo, e chamdo de

pipe.

4.2.1.1 Endpoints

Um endpoint e uma porcao unicamente idenfiticavel de um dispositivo USB, que e o

termino do fluxo de comunicacao entre o host e o dispositivo e uma direcao determinada

para fluxo de informacoes. Esse tipo de comunicacao suporta apenas uma direcao (comu-

nicacao simplex ) (USB.ORG, 2005), (RUBINI; CORBET; KROAH-HARTMAN, 2005).

Cada dsipositivo logico USB e composto de uma colecao independente de endpoints

e cada dispositivo logico tambem e unicamente enderecado pelo sistema no momento da

conexao.

4.2.1.2 Pipes

Um pipe USB e uma associacao entre um endpoint de um dispositivo e o software do

lado do host. Os pipes representam a habilidade de trafegar informacoes entre o software

do host via buffer de memoria e um endpoint de um dispositivo. Como descrito na propria

especificacao USB, existem dois modos de comunicacao pipe (USB.ORG, 2005):

• Stream : a informacao trafegada dentro de um pipe nao contem uma estrutura USB

definida;

• Mensagem: ao contrario da comunicao tipo Stream, as mensagens sao informacoes

que trafegam dentro de um pipe com uma estrutura USB definida (USB.ORG, 2005).

1E um termo usado para definir o processo de negociacao de taxas de transmissao de dados entredispositivos.

27

O pipe de mensagem de controle Default Control Pipe e um pipe que consiste de

dois endpoints sendo um deles um endpoint numero zero, que sempre existe em uma

comunicacao, desde a primeira vez que um dispositivo e conectado. Tem como objetivo

fornecer acesso as configuracoes, estados e informacoes de controle do dispositivo em

questaoi (USB.ORG, 2005).

4.2.2 Tipos de transferencia

O USB suporta o intercambio de informacoes funcionais e de controle entre um host

e um dispositivo como um conjunto de conexoes uni ou bi-direcionais. O fluxo de in-

formacoes de uma conexao (pipe) deve ser independente de outra conexao, onde uma

conexao que transfere dados de um host para um dispositivo deve ser diferente da co-

nexao para se transferir dados de um dispositivo para um host. A arquitetura USB pode

ser compreendida por quatro divisoes basicas: fluxo de controle, fluxo de dados Bulk,

fluxo de dados por interrupcao e fluxo de dados isocrono (USB.ORG, 2005).

4.2.2.1 Controle

As transferencias de controle sao usadas pelo software do sistema USB para configu-

rar dispositivos quando esses sao conectados pela primeira vez e ocorre entre o software

cliente e suas funcoes. Esse tipo de transferencia permite o acesso a diferentes partes do

dispositivo. Uma transferencia de controle e composto de uma transacao de Setup que

envia requisicoes de informacoes do host para a funcao, zero ou mais transacoes de dados

enviando as informacoes na direcao indicada pela transacao de Setup, e a transacao de

Status retorna a informacao do estado da funcao para o host. A transacao de Setup re-

torna um flag de “sucesso” indicando que o endpoint completou corretamente a operacao

requisitada (USB.ORG, 2005).

O sistema USB trabalha com o conceito de “rede de melhor esforco” para suportar a

entrega das transferencias de controle entre o host e os dipositivos.

4.2.2.2 Isocrono

Transferencias tipo Isocrona tambem sao designados para grandes quantidades de da-

dos, porem nem sempre a tranferencia e garantida. E chamada de transferencia tolerante

a erro. As caracterısticas importantes de uma transferencia tipo Isocrona sao (USB.ORG,

2005):

28

• Acesso a banda USB com certa latencia.

• Divisoes constantes de informacoes atraves de um pipe de acordo com as informacoes

providas pelo proprio pipe.

• No caso de ocorrencia de falhas, nao e feito o reenvio de um dado.

Os dispositivos USB que geralmente utilizam a conexao isocrona, sao para fins que,

perdas de dados sao de certa forma aceitaveis. Dispositivos em tempo-real sao os mais

comuns, como audio e vıdeo. (RUBINI; CORBET; KROAH-HARTMAN, 2005)

4.2.2.3 Interrupcao

Esse tipo de transferencia e designado para dispositivos que nao necessitam trafegar

grandes quantidades de dados, ou seja, enviam e recebem pequenas quantidades de in-

formacao sem uma frequencia determinada. Duas caracterısticas importantes podem ser

citadas para o tipo de transferencia de interrupcao (USB.ORG, 2005):

• Servico maximo garantido para o pipe.

• Tentativas de retransmissao de tempos em tempos, quando ocorrer falha na entrega.

4.2.2.4 Bulk

Transferencias do tipo Bulk sao designadas para suportar dispositivos que necessi-

tam transferir uma quantidade relativamente grande de dados em tempos altamente

variaveis, sendo possıvel uma transferencia utilizar a largura de banda que estiver dis-

ponıvel (USB.ORG, 2005).

As tranferencias tipo Bulk sao sequenciais e a confibilidade na troca de dados e as-

segurada pelo hardware, utilizando algoritmos de deteccao de erros (CRC2) e invocando

um numero limitado de requisicoes ao hardware. Alem disso, a largura de banda utlizada

por esse tipo de transferencia varia de acordo com a atividade do dispositivo em questao

(USB.ORG, 2005).

Ao requisitar um pipe para transferencia tipo Bulk e provido ao requisitante (USB.ORG,

2005):

• Acesso ao USB na largura de banda disponıvel

2Sigla para Ciclic redundancy check, um algoritmo para deteccao de erros

29

• Retransmissao no caso de falhas ocasionais na entrega devido a erros no barramento

• Garantia na entrega de dados, mas sem garantia de banda ou latencia.

Nao existe uma estrutura definida no fluxo de comunicacao entre bulk pipes.

4.3 URBs

URB e um acronimo para USB Request Block, ou Bloco de Requsicao USB, que nada

mais e do que uma maneira como o Kernel Linux trabalha para se comunicar com todos

os dispositivos USB (RUBINI; CORBET; KROAH-HARTMAN, 2005).

Um URB e usado para enviar ou receber dados de um espefıcico endpoint USB, de

um espefıcio dispositivo USB, de maneira assıncrona. Um driver de dispositivo USB deve

alocar varios URBs para um simples endpoint ou entao reutilizar um URB para diferentes

endpoints, dependendo da necessidade do driver. O ciclo de vida de um URB e descrito

da seguinte forma (RUBINI; CORBET; KROAH-HARTMAN, 2005):

• E criado por um driver de dispositivo;

• E enviado para um especıfico endpoint de um especıfico dispositivo;

• E enviado para nucleo USB (kernel) por um driver de dispositivo;

• E enviado para o especıfico driver controladora de host pelo dispositivo especificado

pelo nucleo USB;

• Processado pelo driver controlador de host que faz a transferencia USB para o

dispositivo;

• Quando a transferencia URB e completada o driver controlador de host notifica o

driver de dispositivo;

5 Desenvolvimento

Sera apresentado nesse capıtulo todas as etapas para o desenvolvimento do driver

para o dispositivo biometrico Biopod, utilizando conceitos fundamentais apresentados

nos capıtulos anteirores, principalmente sobre USB.

5.1 Requisitos do software

O desenvolvimento do projeto aqui proposto, e criar uma camada de software que

seja responsavel por fazer o interfaceamento de uma aplicacao que necessite manipular o

dispositivo biometrico Biopod, sem se preocupar com detalhes de protocolo, para a pla-

taforma GNU/Linux. Essa camada, ou driver, deve ser responsavel em enviar comandos

de configuracao, controle e aquisicao de dados para o dispositivo e retornar os resultados

dessas operacoes, permitindo que outras aplicacoes facam o devido processamento das

informacoes recebidas.

Para exemplificar e tentar comprovar o real funcionamento desse driver, o resultado

esperado da comunicacao entre o computador e o dispositivo deve ser a imagem de uma

impressao digital.

5.1.1 Materiais utilizados

Para o desenvolvimento desse projeto foi necessaria uma gama de recursos de hardware

e software, que sao abaixo descritos:

• Microcomputador IBM/PC x86, 256Mb memoria RAM e host USB;

• Sensor biometrico APC Biopod r©

• Sistema operacional Slackware GNU/Linux kernel serie 2.4;

• Sistema operacional Debian GNU/Linux kernel serie 2.6;

• Sistema operacional Microsoft Windows XP r©

• USB Sniffer SnoopyPro

30

31

• USB Sniffer USB Monitor

• Compilador gcc 3.3.4

• Editor de textos Vi Improved

5.2 Projeto BiopodUsbDriver

5.2.1 O Dispositivo

O dispositivo utilizado para a construcao do driver e o sensor biometrico Biopod do

fabricante APC. Esse dispositivo tem porta de comunicacao USB 1.1 e utiliza uma matriz

de aquisicao de dados e o chip AES3500, ambos do fabricante Authentec, conforme as

especificacoes do datasheet desse fabricante. A figura 5.1 mostra o sensor Biopod.

Figura 5.1: Sensor biometrico utilizado no projeto

O Biopod pode aquisitar imagens de dimensoes por 96x96 pixels 1 e que, segundo o

proprio fabricante, sao suficientes para fazer analise das minucias para identificacao. Seu

sensor e acionado pela temperatura da mao humana, atraves de micro-antenas dispostas

no sensor. Acompanha tambem uma licenca do software OmniPass e e compatıvel com

sistemas operacionais da Microsoft. A figura 5.2 mostra o software aquisitando uma

imagem de uma impressao digital, no Ms-Windows XP.

5.2.2 Esquema do projeto

Como a preocupacao desse trabalho e o desenvolvimento de um driver de dispositivo,

o esquema do projeto e simplesmente ao qual o proprio dispositivo se propoe: facilitar

o acesso ao dispositivo, capturando imagens de impressoes digitais para uma aplicacao

especıfica, como por exemplo autenticacao de um usuario em determinado sistema, uti-

lizando o sistema operacional GNU/Linux. A figura 5.3 mostra a sequencia de eventos

para obtencao de uma imagem de uma impressao digital.

1Unidade basica de uma imagem digital

32

Figura 5.2: Software Omni Password, aquisitando uma impressao digital

5.2.3 Aquisicao do Protocolo

A aquisicao e definicao do protocolo foi a parte do projeto mais complicada e foi

tambem, no decorrer do desenvolvimento, a tarefa mais obscura, ja que a unica fonte de

informacao era o resultado do log feito pelo sniffer 2.

A metodologia adotada foi a engenharia reversa, o qual tem por objetivo extrair

um modelo de construcao de um produto a partir desse produto ja pronto e fechado.

Basicamente sao feitos testes variando-se as entradas e observando as saıdas, tentando

compreender o funcionamento interno dessa “caixa-preta”.

Para analise dos dados foram utilizados dois software capazes de aquisitar todas as

informacoes trafegadas nas portas USB do computador e deixa-las em um formato mais

simples, para que entao fossem analisadas. O procedimento utilizado esta descrito a

seguir:

• O primeiro passo foi verificar o funcionamento do dispositivo em um ambiente onde

se pudesse comprovar seu perfeito funcionamento. Foi utilizando entao, um com-

2Sniffer e um termo para designar um software que “varre” determinada porta de comunicacao docomputador e obtem seu conteudo

33

Figura 5.3: Esquema do projeto para obtencao de uma impressao digital

putador com sistema operacional Ms-Windows XP e nele instalados os drivers e

software fornecidos pelo fabricante.

• O proximo passo foi pesquisar por informacoes que poderiam ser importantes para

o desenvolvimento do driver, como espeficicacoes do firmware e datasheets do chip,

porem nada havia sido encontrado.

• Logo entao foram instalados dois software para aquisicao das informacoes pela porta

USB: SnoopyPro e USB Monitor, ambos para sistemas operacionais Ms-Windows

XP. O primeiro e um software livre licenciado sobre os termos da GNU GPL, e

o segundo e um freeware onde para utilizacao de funcoes adicionais era preciso

de um licenciamento especial. Foram instalados e configurados devidamente e apos

iniciar o software de aquisicao de imagem da impressao digital fabricante (OmniPass

Enrolment), os sniffers iniciaram concomitantemente com o software a aquisicao dos

dados trafegados pela porta USB, gravando essas informacoes em um arquivo texto.

• A partir de entao, foi feita uma profunda analise, tentando separar comandos de

configuracao, protocolo e dados propriamente ditos (imagem), do arquivo gerados

pelos sniffers.

5.2.4 Biblioteca de Acesso a USB (LibUsb)

A LibUsb e uma biblioteca de funcoes que permite o acesso a dispositivos USB de uma

forma mais facil e abstraıda, sendo possıvel criar drivers de dispositivos reais no espaco

do usuario (PROJECT, 2005). As vantagens de criar modulos no espaco do usuario sao:

• Abstracao das chamadas mais complexas do kernel do sistema

34

• Independencia de versao do kernel

• Facilidade no desenvolvimento de novos modulos

A desvantagem e que, nao existindo um modulo dedicado no espaco do nucleo, a cada

novo software a ser desenvolvido deve conter rotinas USB para conexao com dispositivo

em questao (KROAH-HARTMAN, 2001).

Figura 5.4: Tela SnoopyPro - Sniffer USB

5.2.5 Implementacao

Com o protocolo teoricamente definido, foi necessario criar os modulos que iriam

compor o software e estes foram sendo moldados durante o desenvolvimento do projeto,

de acordo com as reais necessidades e na tentativa de sempre utilizar boas praticas de

programacao, que nao foi possıvel fazer em todos os casos.

35

A partir da versao 2.4, o Linux ja possuıa suporte a comunicacao USB, isso inclui mui-

tas das placas controladoras, concentradores e dipositivos propriamente ditos, existentes

no mercados de computadores x86. O modulo que da ao Linux a possibilidade de controlar

dispositivos USB e basicamente um conjunto de drivers USB simples, genericos, invocados

pelos nomes usb.o e usbcore.o, e que sao responsaveis por permitir outros software fazerem

chamadas ao sistema, tornando a comunicacao USB um pouco mais simples. A figura 5.5

mostra os modulos carregados em um sistema operacional Slackware GNU/Linux, atraves

do comando lsmod.

Figura 5.5: Comando lsmod, exibindo os modulos carregados em um sistema operacionalSlackware GNU/Linux

Segundo a especificacao USB, todo dispositivo homolagado pela USB.org deve ter dois

numeros para identificacao unica de um dispositivo: o idProdutc e o idVendor.

O idProduct e o numero que define o modelo do produto, ja o idVendor define o

fabricante. Esses dois numeros sao essenciais para utilizacao de um driver de dispositivo,

ja que sao eles que permitem o sistema operacional saber qual driver carregar no momento

da deteccao de um novo dispositivo conectado ou mesmo o proprio driver certificar-se

que esta lidando com um dispositivo conhecido (RUBINI; CORBET; KROAH-HARTMAN,

2005).

Utilizando um comando do shell do GNU/Linux e possıvel obter mais informacoes

sobre os disposistivos USB que estao conectados a maquina. O comando e o

cat /proc/bus/usb/devices, onde /proc/bus/usb e o subdiretorio que esta montado o usbfs,

conforme ilustra a figura 5.6.

Segundo Kroah-Hartman (2001), o USBFS ou o usbdevfs e a implementacao de um

36

Figura 5.6: Informacoes de dispositivos montados na estrutura usbfs

sistema de arquivos para acesso a dispositivos USB no GNU/Linux. O USBFS mapeia

todos os componentes USB do sistema utilizando as chamadas basicas do kernel para

controle USB e cria uma estrutura de diretorios em local pre-determinado (na versao 2.4

do Linux o diretorio e o /proc/bus/ ) do sistema de arquivos atual. Como no GNU/Linux

tudo e acessado como um arquivo, a partir dessa estrutura de diretorios montada, e

possıvel executar as chamadas basicas de open, close, read e write de um driver carregado

na memoria (RUBINI; CORBET; KROAH-HARTMAN, 2005).

Conforme descrito em Project (2005), a biblioteca LibUsb disponibiliza uma serie de

funcoes para acesso e controle de dispositivos USB. Depois de instalado essa biblioteca e

te-la definido no diretorio dos kernel headers3, e necessario apenas fazer a inclusao do seu

cabecalho.

Apos extrair as informacoes de protocolo do Biopod e preparar o ambiente de desen-

volvimento, e que se deu inicio ao desenvolvimento do driver. Primeiramente, a estrategia

adotada foi a construcao de um modulo no espaco do nucleo (ou espaco do kernel), porem

devido a dificuldades de implementacao e desenvolvimento, adotou-se a estrategia de criar

um driver no espaco do usuario, utilizando a biblioteca LibUsb.

Com a documentacao da biblioteca LibUsb acessıvel, foi criado entao um modulo

simples que basicamente fazia a verificacao do idVendor e idProduct pre-determinado,

com o dispositivo conectado no barramento. Conhecidos entao a localizacao do dispositivo

Biopod no computador, foi feito a abertura (open) e o fechamento (close) de uma conexao

com o dispositivo (a titulo de teste).

5.2.5.1 Protocolo - Controle

Apos a abertura de uma conexao com um dispositivo USB, a primeira atitude a

se tomar foi trocar informacoes com o dispositivo com o intuito de conhecer e ajustar as

3local onde se encontram as definicoes de funcoes e bibliotecas do kernel e do sistema

37

h

Tabela 5.1: Visao macro do protocolo implementado pelo driver

Remessa Tipo de Transferencia Funcao1 control Configuracao inicial2 bulk Configuracao dos registradores3 bulk Deteccao de um dedo4 bulk Requisicao dos dados

configuracoes basicas do mesmo. E nesse momento que e utilizado o Default Control Pipe.

Para esse tipo de situacao, a espeficicacao USB determina a utilizacao de transferencias

de controle, conforme visto no capıtulo 4.

De acordo com informacoes extraıdas do sniffer, os cinco primeiros pacotes trafegados

eram utilizados para o fim de configuracao. Adicionado ao modulo a funcao de envio de

dados de controle e configuracao, como por exemplo configurar o pipe de transferencia.

A tabela 5.2.5.1 mostra, em termos macros, o protocolo inicial para controle do Biopod.

5.2.5.2 Protocolo - Configuracao dos Registradores

Logo apos a troca dos primeiros pacotes, que representam a secao de controle, foi

necessario o envio de uma dezena de outros pacotes que tem por objetivo, a configuracao

dos registradores do chip contido no Biopod. Essa secao e a que contem o maior numero

de pacotes enviados ao dispositivo, porem ocorre apenas uma vez apos a abertura do

dispositivo.

5.2.5.3 Protocolo - Requisicao

Configurados os registradores, foi necessario definir mais tres conjuntos de pacotes de

envio para o dispositivo para que este estivesse pronto para o envio dos dados. A exigencia

do envio desses pacotes sao particulares do dispositivo, que sao definidos pelo conjunto

eletronico que compoe a matriz de aquisicao.

Nesse ponto, a transferencia passa a ser do tipo bulk, pois tanto o endpoint de entrada

como de saıda sao desse tipo, que tambem e definido pelo fabricante.

Quando enviado o primeiro conjunto de pacotes, o dispositivo foi verificado a presenca

de um flag chamado Drive Ring, que e “setado” toda vez que a matriz de aquisicao de

dados identifica a presenca de um dedo. Segundo o datasheet do fabricante, porem de um

38

sensor similar, ao redor da matriz ativa de aquisicao, existem micro-antenas que detectam

a presenca de um dedo atraves de calor (ou inducao) e sao elas as responsaveis por “setar”

ou “resetar” o flag Driver Ring (AUTHENTEC, 2003).

Os outros tres conjuntos de pacotes sao pertinentes a configuracoes especıficas dos

registradores do hardware e sempre retornam um pacote de tamanho 252 bytes quando

as configuracoes sao feitas com sucesso ou retornam um numero negativo quando algum

erro ou inconsistencia ocorre.

5.2.5.4 Protocolo - Dados propriamente ditos

Terminado as etapas de controle e configuracao e requisicao, vem a ultima etapa da

comunicacao, que e a transferencia dos dados alvo (imagem obtida pelo sensor). Essa

informacao e transmitida apos o ultimo pacote de requisicao ter sido enviado e e atendida

apos a chamada read para o dispositivo e retorna blocos de tamanho de 64 bytes (tamanho

do endpoint).

Com a utilizacao da LibUsb, esses blocos de 64 bytes sao armazenados em um unico

buffer e somente no final da mesma e que a biblioteca libera a aquisicao de um pacote

com o tamanho total dos dados transmitidos. Em fim, o Biopod transmite um buffer de

8362 bytes de dados, que representam a imagem de uma impressao digital aquisitada.

5.2.5.5 Definicao da imagem

A ultima parte do projeto foi a definicao do tipo da imagem. Apos o processo de

implementacao do protocolo de comunicacao e aquisicao dos dados, foi preciso descobrir

qual era o tipo da imagem e como era montada. Intuitivamente, a primeira atitude foi

escrever o conteudo inteiro obtido em um arquivo da forma que veio com um cabecalho

simples do tipo PGM 4.

Utililizando o software grafico The Gimp (GIMP, 2005), testes foram feitos na tenta-

tiva de aprender como se comportavam imagens simples e sem compressao. Para os testes

foram criadas imagens extremamente pequenas com tamanhos 1x1 pixel e 2x2 pixels,

utilizando cabecalhos de imagem PGM (Portable Graymap).

Apos incessantes tentativas empıricas e sem sucesso, foi encontrado na internet um

datasheet de um sensor do mesmo fabricante, porem de um produto diferente. Quanto

4PGM - Sigla inglesa para Portable GrayMap que e um formato de arquivo de imagem simples emescala de cinza

39

as definicoes no formato da imagem, foram as sugeridas no datasheet e aplicadas no

programa. Os resultados podem ser vistos na secao de resultados, no capıtulo 6.

5.2.5.6 BiopodUsbDriver

Concluıda a definicao da imagem, o driver pode ser considerado pronto, necessitando

apenas de alguns ajustes de melhoria no desempenho e na qualidade da imagem aquisitada.

Por fim, a figura 5.7 ilustra o fluxo do BiopodUsbDriver.

40

Inicio

Detecçao do dispositivo

Configuraçoes iniciais

Envio comandos paradetecçao um dedo

Dete�ctado?

Envio de comandos de ’handshake’

Aquisiçao dos dados

Montagem e gravaçao daimagem em arquivo

Continua aquisiçao?

Fecha o dispositivo

Fim

SIM

NAO

SIM

NAO

Figura 5.7: Fluxograma do driver

6 Resultados

Ao longo de todo o processo de desenvolvimento foram sendo feitos diversos testes e

coletados seus respectivos resultados, tanto bons como ruins, para que fosse possıvel fazer

uma analise crıtica e chegar a possıveis conclusoes.

O resultado final e um driver de dispositivo que trabalha no espaco do usuario, que

pode aquisitar imagens do sensor biometrico APC Biopod, com chip AES 3500 integrado,

em formato nao compactado de um byte por pixel.

6.1 Testes e Analise dos Resultados

Antes da definicao correta da imagem, foram feitos diversos testes com o objetivo de

exibir uma impressao digital que era aquisitada atraves do driver. Foi constatado que,

apos o protocolo, um pacote de 8632 bytes era enviado pela porta USB, onde imaginava-

se ser os bytes decorrentes de uma impressao digital fornecida pelo sensor. A primeira

tentativa foi escrever um arquivo com esses bytes, da forma como eles eram enviados, com

um cabecalho simples, tipo PGM. A figura 6.1 mostra o primeiro resultado obtido.

Figura 6.1: Primeiro resultado obtido, imagem formada com o bytes da forma como eramaquisitados

Com esse resultado negativo, outras tentativas foram feitas, porem sem nenhum re-

sultado coerente. As tentativas foram basicamente trocar a ordem de escrita no arquivo

em relacao aos dados aquisitados do sensor. A figura 6.2 mostra a imagem montada, in-

vertendo a sequencia de bytes recebidos e escritos e a definicao do tamanho no cabecalho.

Para tentar descobrir qual sentido a matriz de aquisicao do Biopod realiaza a varredura

para obtencao da imagem, testes foram feitos colocando a ponta do dedos em uma das

extremidades e comparado a imagem formada pelo programa.

41

42

Figura 6.2: Imagem com resolucao 90x90 pixels e com sequencia de bytes invertido

(a) Posicionamento dodedo na parte lateral dosensor

(b) Imagem aquisitadacom o dedo na lateral dosensor

Figura 6.3: Teste realizado para verificacao da rotacao da imagem

Nesse ponto foi possıvel identificar a rotacao da imagem enviada pelo sensor, que e

de 90 graus no sentido horario.

Imaginava-se entao, que o problema poderia ser em funcao da definicao do tamanho

da imagem, ou seja, forcando um cabecalho de 64x64 pixels em uma imagem de qualquer

outra dimensao, poderia ser suficiente para que a imagem ficasse distorcida a ponto de

se tornar irreconhecıvel. Foram testadas varias dimensoes dentre o range possıvel. Mais

testes foram feitos sem nenhum resultado positivo.

Com esse problema em mente, a alternativa restante foi procurar por informacoes

sobre o chip que compunha o dispositivo, e que pudesse esclarecer como era montada

a imagem. Foi encontrado entao um datasheet de outro sensor biometrico, porem do

mesmo fabricante. Baseado nesse documento, as informacoes de dados transmitidos do

sensor para o computador eram dividos em seis linhas de noventa e seis colunas, com

dezesseis bytes cada linha. Foi ainda descoberto que para cada pixel era enviado um byte

de dado e qual formato tambem era especıfico.

43

Implementando um algorıtmo para o tratamento desses bytes, de acordo com as es-

pecificacoes disponıveis, foi entao possıvel exibir uma imagem de uma impressao digital,

como mostra a figura 6.4.

Figura 6.4: Primeira imagem de uma impressao digital aquisitada

Ficou obivo, a partir da primeira aquisicao que a imagem resultante estava com uma

rotacao de 90 e que foi facilmente resolvido, utilizando a tecnica de transposicao de ma-

trizes, como resultado mostra a figura 6.5.

Figura 6.5: Impressao digital aquisitada e rotacionada em noventa graus

Outros testes foram feitos para verificacao e certificacao do funcionamento do driver.

As imagens 6.6(a), 6.6(b) e 6.6(c) mostram o resultado satisfatorio.

(a) Impressao di-gital aquisitada dodedo indicador es-querdo

(b) Impressao di-gital aquisitada dodedo indicador di-reito

(c) Impressao di-gital aquisitada dodedo medio direito

Figura 6.6: Impressoes digitais aquisitadas utilizando o BiopodUsbDriver

44

As imagens aquisitadas pelo software BiopodUsbDriver, foram comparadas com as

imagens exibidas pelo software fornecido pelo fabricante, e os resultados foram parecidos.

Baseando-se nesses resultados, pode-se concluir que o BiopodUsbDriver e capaz de

fornecer informacoes suficientes para a utilizacao em uma aplicacao de reconhecimento de

padroes de impressao digital, em plataforma GNU/Linux.

7 Conclusoes

Com a pluralizacao de sistemas operacionais alternativos no mercado, tornando o mo-

nopolio nesse segmento uma ficcao, obrigara empresas de hardware a repensarem sobre

publico-alvo que pretendem atingir, se quiserem se manter competitivos e nao limitados

a apenas uma tecnologia. Sendo isso fator decisivo para essas companhias, o desenvolvi-

mento de drivers de dispositivos, consequentemente, tera tambem de ser reavaliado.

Ate que o amadurecimento, tanto das empresas, como do mercado, venha a suceder,

o desenvolvimento de classes de modulos para dispositivos continuara a ser tarefa ardua

para os desenvolvedores de aplicacao que dependam de um equipamento especıfico e que

utilizam SOs alternativos.

Esse projeto vem mostrar a importancia dos drivers de dispositivos e quais as pos-

sibilidades de criacao para sistemas GNU/Linux. Contribui tambem, de forma significa-

tiva para a comunidade Software Livre, aumentando o numero de dispositivos suportado

em um sistema operacional GNU/Linux, alem de abrir novas possibilidades de imple-

mentacoes futuras utilizando esse driver como recurso.

Para projetos futuros, fica a possibilidade de se portar esse driver para o espaco do

nucleo, poder adicionar algoritmos de pre-processamento na imagem aquisitada, utiliza-lo

para enfim realizar uma identificacao biometrica de usuarios de um sistema e ate integrar

um sistema de identificacao automatica utilizando o Biopod com modulos de autenticacao

do GNU/Linux, como o PAM (Password Authentication Module).

45

Referencias

ARAGAKI, B. Biometria. 2005. Disponıvel em:<http://tecnologia.uol.com.br/especiais/ultnot/2005/07/21/ult2888u71.jhtm>.

AUTHENTEC. Product Specification for the AFS8600 Fingerprint Sensor.Melbourne: Authenteci, Inc, 2003.

BACH, M. J. The Design of the Unix Operating System. New Jersey: Prentice-Hall,1990.

BIOMETRIA-WIKIPEDIA. Disponıvel em: <http://pt.wikipedia.org/wiki/Biometria>.Acesso em: 03 de maio de 2005.

COSTA, S. M. F. Classificacao e verificacao de impressoes digitais. 2001.

DIAS, C. Seguranca e Auditoria da Tecnologia da Informacao. Rio de Janeiro:Axcell Books, 2005.

GIMP, T. The GNU Image Manipulation Program. 2005. Disponıvel em:<http://www.gimp.org>.

GUMZ, R. A. Prototipo de um sistema de identificacao de minucias em impressoesdigitais utilizando redes neurais artificiais feedforward multicamada. 2002.

JuNIOR, A. A.; JuNIOR, J. B. de Oliveira e C. Licoes de Meldicina Legal. 16. ed.Sao Paulo: Editora Nacional, 1979.

KROAH-HARTMAN, G. Writing a Real Driver - In User Space. 2001. Disponıvelem: <http://www.linuxjournal.com/node/7466/>.

MARANHaO, O. R. Curso Basico de Medicina Legal. 4. ed. Sao Paulo: EditoraRevista dos Tribunais, 1989.

MENDONcA, A.; ZELENOVSKY, R. PC: Um Guia Pratico de Hardware eInterfaceamento. 3. ed. Rio de Janeiro: MZ Editora, 2002.

MITCHELL, M.; OLDHAM, J.; SAMUEL, A. Advanced Linux Programming. 1.ed. [S.l.]: New Riders, 2001.

PERIM, F. Tutorial de sockets. 2001. Disponıvel em:<http://olinux.uol.com.br/artigos/370/1.html>.

PROJECT, L. LibUsb Project Documentation. 2005. Disponıvel em:<http://libusb.sourceforge.net/documentation.html>.

46

47

ROMAGNOLI, G. dos S. Biometria: Voce e sua senha. 2005. Disponıvel em:<http://www.serpro.gov.br/publicacao/tematec/2002/ttec61>.

RUBINI, A. Linux Device Drivers. 1. ed. Sebastopol: O’Reilly, 1998.

RUBINI, A. Linux Device Drivers. 1. ed. Sebastopol: O’Reilly, 2001.

RUBINI, A.; CORBET, J.; KROAH-HARTMAN, G. Linux Device Drivers. 3. ed.Sebastopol: O’Reilly, 2005.

RUSSEL, D.; GANGEMI, G. T. Computer Security Basics. Sebastopol: O’Reillyiand Associates, 1991.

SAKATA, T. C. Sistemas de Arquivo. 2005. Disponıvel em:<http://www.li.facens.br/ tiemi/so/aula11-sarq.pdf>.

SILBERCHATZ, A.; GALVIN, P. B.; GAGNE, G. Operating Systems Concepts. 6.ed. Nova Iorque: Jonh Willey & Sons, Inc., 2002.

SIQUEIRA, T. A. Acme! honeynet de 2a geracao: Implementacao de novas tecnologias.UNESP, 2004.

STALLINGS, W. Operating Systems. 4. ed. New Jersey: Prentice Hall, 2000.

STALLINGS, W. Arquitetura e Organizacao de Computadores. 5. ed. Sao Paulo:Prentice Hall, 2002.

TANENBAUM, A. Sistemas Operacionais Modernos. 2. ed. Sao Paulo: PearsonPrentice Hall, 2003.

TANENBAUM, A. S. Organizacao Estruturada de Computadores. 3. ed. Rio deJaneiro: Prentice Hall, 1992.

TUTORIALS on Device Drivers. 2001. Disponıvel em:<http://www.rt.db.erau.edu/experiments/drivers/fundamentals.html>.

USB 2.0. 2005. Disponıvel em: <http://www.infowester.com/usb20.php>.

USB.ORG. USB Spec. 1.1. 2005. Disponıvel em:<http://www.usb.org/developers/docs/usbspec.zip>.