Biometria são métodos de reconhecimento de pessoas, baseados em características físicas e comportamentais. Essas características são classificadas como: face, impressão digital, íris, mão, assinatura e voz. Na Tabela 1 temos a descrição de cada característica com relação a facilidade de uso, eficácia e aceitação.

Características Impressão digital Mão Íris Face Assinatura Voz
Facilidade de uso Alta Alta Baixa Média Alta Alta
Eficácia Alta Alta Alta Alta Alta Alta
Aceitação Média Média Média Média Média Média

Tabela 1: Tecnologias existentes de biometria

As necessidades para utilização de biometria podem ser encontradas em diversos setores, como: órgãos governamentais, sistemas comerciais de gestão, controles de acesso físico e lógico, operadoras de planos de saúde etc.

Utilizada independente ou integrada com outras tecnologias como SmartCards, chaves de criptografias e assinaturas digitais, a biometria está se fixando como uma tecnologia de economia e segurança para nossas vidas.

Utilizada na autenticação pessoal, está ficando cada vez mais conveniente e segura que os tradicionais métodos de autenticação, como a utilização de senhas. Isso porque une o evento a um único indivíduo particular (diferentemente das senhas, as digitais são únicas para cada pessoa), é conveniente (nada para carregar ou lembrar), preciso (utiliza-se de alta tecnologia para autenticação), e o melhor de tudo, está cada vez mais acessível aos usuários, em virtude das constantes reduções de custos.

Estaremos abordando neste artigo a biometria de reconhecimento da digital (fingerprint), que por sua vez é a biometria mais utilizada no Brasil e no mundo. Nas tecnologias existentes de reconhecimento da digital, existem várias formas de leituras, e a mais utilizada no mercado é a óptica, que gera uma imagem de cinzas com uma escala representada por 8 bits, com cerca de 500x500 pixels.

Usaremos neste artigo para teste, o leitor Hamster I (HFDU-01 – USB – 500 dpi) da empresa Nitgen e sua API de desenvolvimento, que possui suporte a diversas linguagens, inclusive .NET.

Tendo em vista a apresentação prática da biometria, mostraremos como utilizar as funções mais importantes da API, de modo que os exemplos não contenham nenhuma restrição para utilizar em outras aplicações.

Reconhecimento da digital

Em um sistema biométrico, uma característica física precisa ser registrada (enrollment), na seqüência precisa ser criado algum tipo de dados (template) e a seguir necessita algum recurso para completar o processo (biometric algorithm).

Finalmente quando se faz a autenticação de uma pessoa (Verification) completa-se o ciclo (veja a descrição dos processos do ciclo na Tabela 2).

Processo Descrição
Enrollment Ato de gerar um registro dentro do sistema biométrico.
Template Uma representação matemática da característica física capturada.
Bometric algorithm Conjunto de técnicas lógicas embutidas em um processo para obtenção de algum resultado.
Verification Processo de comparação entre duas templates, para verificar a autenticidade do indivíduo.

Tabela 2: Processos de reconhecimento da digital

FAR, FRR e FTE

O desempenho de uma medida de biometria normalmente se refere para termos de FAR (taxa de falso aceite), FRR (taxa de falsa rejeição) e a FTE (taxa de falso fracasso). A medida FAR é a porcentagem de usuários inválidos que são aceitos incorretamente com se fossem usuários verdadeiros.

Enquanto que o FRR mede a porcentagem de usuários válidos que são rejeitados como sendo usários impostores. Por último quando você é novo em um sistema de biometria e precisa se registrar e não consegue, o FTE mede essa porcentagem de usuários.

Trabalhando com a API Nitgen

Descreveremos como fazer uma programação em .NET com a classe NBioBSP que está contida em NITGEN.SDK.NBioBSP.dll, designada e desenvolvida para suportar o ambiente.NET utilizando C#, VB.NET, ASP.NET, J#. A NBioBSP também usa a NBioBSP.dll e provê alto nível de interfaces.

Enquanto que um grande número de linguagens de programação é suportada pelo .NET, essa seção do artigo vai fazer uma introdução usando a linguagem C#. Para tanto devemos conhecer a utilização de alguns dos principais métodos da API para utilização do leitor biométrico. Veja na Listagem 1 o trecho de código para instanciar o classe NBioBSP.

Listagem 1: Iniciliazar a classe NBioBSP

using NITGEN.SDK.NBIOBSP;

...

public void Inicializar()
{
	NBioAPI m_NBioAPI;
	m_NBbioAPI = new NBioAPI();
}

A inicialização do dispositivo, dever ser usada com o método OpenDevice, antes da utilização da funções de cadadastramento, verificação e captura. O dispositivo pode ser selecionado automaticamente usando o NBioAPI.Type.DEVICE_ID.AUTO. Veja na Listagem 2 a utilização do OpenDevice.

Listagem 2: Inicializando o dispositvo biométrico

public void InicializarDispositivo()
{
	uint ret m_NBioAPI.OpenDevice(NBioAPI.Type.DEVICE_ID.AUTO);
	if (ret == NBioAPI.Error.NONE)
    	//leitor inicializado com sucesso
	else
		//leitor não inicializado
}

Para fechar o dispositivo, o método CloseDevice de ser utilizado. Como parâmetro usaremos novamente o BioAPI.Type.DEVICE_ID.AUTO. Na Listagem 3 é mostrado a utilização o CloseDevice. O dispositivo deve ser fechado toda vez que chamarmos o OpenDevice.

Listagem 3: Fechando o dispositvo biométrico

public void FecharDispositivo()
{
	uint ret m_NBioAPI.CloseDevice(NBioAPI.Type.DEVICE_ID.AUTO);
	if (ret == NBioAPI.Error.NONE)
		//leitor fechado com sucesso
	else
		//leitor não fechado
}

Antes de usar o OpenDevice, você pode usar uma função chamada UnumerateDevice que determina o número e o tipo de leitor conectado ao computador. Uma vez chamada, o número de dispositivos e o ID de cada dispositivo serão retornados pela função. Dessa forma poderia abir e fechar o dispostivo com esse ID retornardo, ao invés de usar o BioAPI.Type.DEVICE_ID.AUTO, como parâmetro de OpenDevice e CloseDevice.

O Enroll é usado para registrar digitais. Os tipos de dados usado pela NBioBSP são do tipo handle, binário e texto codificado. Os dados da digital será colocado dentro de um handle de FIR (Fingerprint Identification Record), propriamente depois de um registro completo das digitais pelo Enroll, e depois pode retornar um tipo binário ou texto codificado.

A NBioBSP possui vários Enroll Overloading que pode ser usado para diversos propositos. Veja na Listagem 4 um exemplo dessa utilização.

Listagem 4: Utilizando um dos metodos Enroll

public void Cadastrando_Enroll()
{
	NBioAPI.Type.HFIR hNewFIR;
	NBioAPI.Type.FIR_TEXTENCODE m_textFIR;
	InicializarDispositivo();         
	uint retEnroll = m_NBioAPI.Enroll(out hNewFIR, null);

	if (retEnroll != NBioAPI.Error.NONE)
	{
		FecharDispositivo();
		return;
	}
	
	FecharDispositivo();
	m_NBioAPI.GetTextFIRFromHandle(m_hNewFIR, out m_textFIR, true);
	//gravar no BD
}

Veja na Tabela 3 a estrutura de um registro FIR.

4 bytes 20 bytes Tamanho variável
Formato Cabeçalho Dados da impressão digital
Estrutura do Cabeçalho
Tamanho do cabeçalho Tamanho dos dados Versão Tipos de dados Propósito Qualidade Reservado
4 bytes 4 bytes 2 bytes 2 bytes 2 bytes 2 bytes 4 bytes

Tabela 3: Estrutura do registro FIR

Verificação de impressão digital

Para executar a verificação das impressões digitais existe um método chamado Verify que compara uma impressão digital existente com uma impressão digital capturada e retorna o resultado da verificação.

Depois da verificação, é armazenada dentro da FIR uma chave de criptografia que é chamada Payload. Também o Payload pode armazenar outras informações como senhas ou nomes de usuários. Veja na Listagem 5, o exemplo de uma verificação.

Listagem 5: Executando uma verificação entre impressões digitais

public void Verificando_Verify()
{
	uint ret;
	bool result;
	NBioAPI.Type.FIR_TEXTENCODE m_textFIR;
	
	InicializarDispositivo();
	
	NBioAPI.Type.FIR_PAYLOAD myPayload = new NBioAPI.Type.FIR_PAYLOAD();
	
	uint retVerifica = m_NBioAPI.Verify(m_textFIR, out result, myPayload);

	if (retVerifica != NBioAPI.Error.NONE)
	{
		MessageBox.Show("Erro na verificação!");
		return;
	}

	if (result)
	{
		if (myPayload.Data != null)
		{
			MessageBox.Show("Payload Encontrado");
		}
		else
		{
			MessageBox.Show("Payload não encontrado");
		}

		MessageBox.Show("Digitais conferem");

	}
	else
	{
		MessageBox.Show("Digitais não conferem");
	}
}

Conclusão

Neste artigo fizemos uma pequena demonstração de como utilizar a biometria por reconhecimento da digital. Como não foi abordado todos os recursos da classe NBioAPI, a intenção é mostrar aos desenvolvedores os comandos mais importantes a facilidade de desenvolvimento com a tecnologia.

Com essa nova proteção de dados e do direito da privacidade, surgirão novos usos para a biometria que proverá um mundo mais seguro e conveniente. A tecnologia da biometria continuará se expandindo como a indagação humana para conhecimento e estudo contínuo.