• Nenhum resultado encontrado

Nesta fase é realizada a extração de minúcias de uma impressão digital em formato de imagem. Para este fim foi utilizado o algoritmo MINDTCT na linguagem VB.NET, que fornece as coordenadas (x,y) das minúcias na impressão, ângulo (em graus) e qualidade (número inteiro). Um exemplo destes parâmetros retornados pelo extrator MINDTCT seria o conjunto A6 = {273,123,180,75}, onde os valores 273 e 123 seriam as coordenadas X e Y, respectivamente, em um plano cartesiano; o terceiro valor, 180, seria o ângulo da minúcia e o quarto valor, 75, a qualidade da mesma. A quantidade de informações sobre as minúcias ou o tamanho do conjunto de parâmetros retornados pelo algoritmo estão diretamente ligados à qualidade e

6conjunto retornado pelo extrator de minúcias MIDTCT (NBIS, 2013) em uma das impressões submetidas ao algoritmo.

resolução da imagem da impressão digital gerada pelo sensor; o algoritmo sempre fornece um conjunto de parâmetros semelhante ao apontado no exemplo acima. 2.2 CODIFICAÇÃO DO SEGREDO

Após o desenvolvimento da extração de minúcias, passa-se à etapa de codificação do segredo, que consiste em, dado um segredo qualquer de até 128 bits, criptografá- lo utilizando informações sobre as minúcias extraídas, conforme descrito anteriormente. A escolha do segredo de 128 bits e os passos inerentes a codificação do segredo foi baseada nos trabalhos notáveis de Nandakumar, Jain e Pankanti (2005), Uludag e Jain (2006), Uludag et al. (2004) e Uludag, Pankanti e Jain (2005). A implementação desta etapa foi desenvolvida toda em Java, e a criptografia mencionada é realizada da seguinte forma:

• seleciona-se um número n de minúcias, que no caso desta implementação, foram

9 as selecionadas (ULUDAG; JAIN, 2006); o parâmetro de escolha utilizado foi a

qualidade de extração da minúcia, sendo que as minúcias foram escolhidas por ordem decrescente de qualidade;

• seleciona-se um polinômio de forma que seus coeficientes sejam o segredo de 128 bits que se pretende criptografar e, desta forma, cada parte do segredo corresponderá a um coeficiente do polinômio. No caso desta implementação, o polinômio escolhido foi p(u)=c8u8+c7u7+...+c1u+c0, que por sua vez apresenta grau 8.

Um exemplo que pode ser demonstrado para melhor entendimento é o seguinte: um segredo de 128 bits é gerado, sendo que o mesmo corresponde a uma chave de um algoritmo de AES, comumente utilizado para criptografar arquivos. Neste exemplo, o segredo que se deseja proteger é a chave de 128 bits gerada pelo algoritmo de AES. A chave no formato short (com 16 bits cada valor) neste caso, para fins de ilustração, poderia ser a: 12432, 12989, 31111, 32122, 23111, 21980,

21876, 19990; atrelando cada um destes valores da chave ao polinômio de grau 8

tem-se o seguinte polinômio: � � = � + � + � + � +

� + � + � + � + ; neste polinômio é possível observar

que cada um dos 8 valores da chave foi agregado como um coeficiente. Observa- se que o último valor "25876" não aparece na chave, porque ele corresponde a um

código verificador CRC7, que é necessário para certificar que mais tarde o segredo (chave) foi decodificado corretamente;

• realizam-se avaliações neste polinômio com os valores concatenados das coordenadas X e Y das minúcias para que se mantenham os valores em um certo limite (range). O valor concatenado das minúcias é dividido, alguns por 10000 e outros por 100000, procedimento necessário para que possa trabalhar com a interpolação polinomial de Lagrange, ou seja; se as coordenadas fossem 278 e 123, primeiramente seriam concatenadas resultando em 278123, valor que seria dividido por 10000, resultando em 2.78123 e em algumas vezes por 100000, resultando em 0.278123. Estes passos são necessários para que se gere no cofre (vault) os pontos genuínos, que mais tarde serão alocados em um plano cartesiano juntamente com pontos falsos, chamados "chaff points";

• geram-se pontos aleatórios no plano cartesiano justamente para esconder os pontos genuínos que, se descobertos, revelam o segredo. Estes pontos aleatórios ou falsos são adicionados no mesmo plano dos pontos genuínos, com o objetivo de escondê-los, quanto mais pontos falsos (aleatórios) são adicionados, mais seguro fica o cofre (vault). Assim sendo, um grande número destes pontos aleatórios fará os pontos genuínos serem dificilmente identificados, sem que se tenha uma impressão digital com as coordenadas certas; na implementação utilizada, a quantidade destes pontos é parametrizável.

Terminados estes procedimentos, tem-se um cofre ou vault, que esconde o segredo, devido ao fato de a interpolação polinomial de Lagrange ter sido utilizada na parte de decodificação do segredo; em alguns casos, pode-se gerar até 8 cofres distintos, devido à probabilidade de erro da interpolação. Foram necessárias a realização de alguns procedimentos na etapa de codificação com o objetivo de garantir o correto funcionamento da etapa precedente de decodificação. Em algumas situações, nos trabalhos de referência,a descrição não apontava detalhes ou a implementação não funcionava da mesma forma como foidescrita. Dessa forma, a maneira que se encontrou de contornar estas adversidades foi realizando adaptações que possibilitaram atingir os resultados esperados em cada etapa. O caso da divisão

7Cyclic Redundancy Check, ou verificação de redundancia cíclica, é uma forma de detecção de erros utilizada comumente para verificar possíveis ruídos na transmissão de dados em um canal de comunicação (ULUDAG; PANKANTI; JAIN, 2005).

de alguns valores por 10000 e outros por 100000, descrito anteriormente, foi realizado para que mais tarde, na etapa de decodificação do segredo, a interpolação polinomial de Lagrange pudesse ser utilizada com qualquer chave de 128 bits gerada aleatoriamente. Em um primeiro momento, ao não realizar as referidas divisões, algumas chaves de 128 bits não eram decodificadas corretamente.

2.3 DECODIFICAÇÃO

Na etapa de decodificação, tenta-se encontrar os pontos genuínos que estão ocultos dentro dos cofres gerados. Neste estudo,a decodificação foi desenvolvida da seguinte forma:

• Seleciona-se uma impressão digital para encontrar os pontos genuínos, onde ela servirá como consulta (query);

• Compara-se primeiramente a impressão utilizada para codificar o segredo com a impressão corrente de consulta, utilizando o algoritmo bozorth3. Caso esta comparação indique que ambas impressões pertencem ao mesmo indivíduo, então as mesmas coordenadas de minúcias utilizadas para codificar o segredo são fornecidas pelo combinador;

• Com estas coordenadas fornecidas pelo bozorth3, tem-se os valores de x (do eixo das abscissas) que devem ser tratados (alguns divididos por 10000 e outros por 100000, até que se encontre em cada um dos cofres os valores xdas abscissas), lembrando que estes valores x representam as coordenadas concatenadas. Por exemplo, se uma das coordenadas for 278 e 379, seriam concatenadas para "278379". Para cada cofre é realizado a interpolação polinomial de Lagrange8 e, se for verificado que o último coeficiente de número 9 representa o código verificador CRC dos 8 primeiros coeficientes retornados, o segredo é encontrado;

8A interpolação de Lagrange foi utilizada devido ao fato desta ter sido citada nos trabalhos de Uludag, Pankanti e Jain (2005), Uludag (et al., 2004),Nandakumar, Jain e Pankanti (2007) eUludag e Jain (2006)para encontrar os coeficientes do polinômio gerado, que neste caso, é o próprio segredo.

3 IMPLEMENTAÇÃO DO ABID

O ABID, basicamente, é um encriptador/decriptador de arquivos que utiliza o algoritmo AES de chave simétrica. Ao encriptar um arquivo é gerada uma chave que deve ser armazenada com segurança, pois a sua descoberta leva à decriptação do arquivo. Neste estudo, o método Fuzzy Vault atua protegendo a chave e disponibilizando-a com formato público. Para isso, o método utiliza uma impressão digital, onde é possível proteger tanto a chave quanto a amostra de impressão digital. No momento que se deseja decriptar o arquivo, é necessário fornecer uma impressão digital genuína (pertencente ao mesmo indivíduo que codificou a chave), sendo assim a chave é decodificada e pode ser utilizada na decriptação do arquivo. Neste capítulo será descrito o funcionamento do ABID, detalhando todas as suas telas, assim como sua arquitetura e interações entre seus componentes.

3.1 ARQUITETURA DO ABID

A figura 9 mostra a arquitetura do ABID, onde se encontram todos os seus componentes. O componente de Interface Usuário é responsável por receber todas as requisições do usuário, como: decriptar/encriptar um arquivo e codificado/decodificar um segredo. O módulo Algoritmo AES tem o objetivo de encriptar e decriptar um arquivo; como consequência, este módulo fornece uma chave de 128 bits e o arquivo encriptado em um formato público. O componente “Tipos de Arquivos” é responsável por armazenar o arquivo encriptado em um formato público e chamar o módulo “Segredo” que armazenará a chave de 128 bits. O módulo de FuzzyVault é responsável por codificar e decodificar a chave de 128 bits, para isso são utilizados os seguintes componentes: Segredo, Banco de Dados, Combinador e Extrator de Minúcias. Para codificar o segredo o módulo Fuzzy Vault precisa do componente Segredo, que contém a chave de 128 bits, do banco de dados que contém a impressão que será utilizada para codificação e o componente Extrator de Minúcias que fornecerá as coordenadas da impressão submetida. Para decodificar o segredo, o módulo Fuzzy

Vault utiliza duas impressões digitais do módulo Banco de Dados uma de consulta e

uma de cadastro, realiza a extração das minúcias utilizando o componente MIDTCT e realiza a combinação das impressões utilizando o componente Bozorth3.

Figura 9 – Arquitetura do Software desenvolvido

Fonte: O autor (2014).

Será demonstrado nesta seção o funcionamento do aplicativo de encriptação/decriptação de arquivos denominado ABID e, na sequência, serão mostradas as avaliações realizadas sobre ele. O algoritmo escolhido para encriptar e decriptar arquivos é o AES de chave simétrica, onde o mesmo ao encriptar um arquivo, fornece uma chave de 128 bits que aqui será utilizada como o segredo que se deseja ocultar. A escolha do tamanho da chave e do tipo de algoritmo de encriptação/decriptação foram baseados nos trabalhos de Nandakumar, Jain e Pankanti (2007), Uludag e Jain (2006), Uludag et al. (2004) e Uludag, Pankanti e Jain (2005).

Primeiramente, quando se inicia o ABID, a tela da Figura 10 é mostrada. Nela pode-se visualizar campos específicos para uma impressão de cadastro (enroll, impressão utilizada para codificar o segredo), um plano 2D contendo as avaliações polinomiais realizadas com as coordenadas da impressão digital de cadastro e um campo para a chave de 128 bits gerada, que neste caso é o segredo que se deseja codificar.

Figura 10 – Tela de codificação do segredo

Para alimentar os campos da tela inicial de codificação do segredo, deve-se selecionar uma impressão de cadastro, onde a partir dela o segredo será ocultado. A tela da figura 11 apresenta o banco de dados FVC2004, onde nomes e fotos foram colocados apenas como aspectos ilustrativos. É possível observar que nesta mesma tela tem-se impressões de 100 indivíduos distintos, indicado pelo contador "1/100" e cada um destes indivíduos possuem 8 impressões em posições e qualidades diferentes, que é percebido por "1/8".

Figura 11 – Tela da base de dados FVC 2004

Fonte: Acervo próprio

Uma vez que a impressão digital de cadastro é escolhida, é necessário selecionar um arquivo para encriptação; a figura 12 mostra a tela de seleção de arquivos que serão encriptados com o algoritmo AES. Uma chave simétrica de 128 bits será gerada que corresponde ao segredo que será ocultado com a impressão de cadastro.

Figura 12 –Tela de encriptação de arquivos com o algoritmo AES

Fonte: Acervo próprio.

A tela da figura 13 mostra todos os campos preenchidos após a realização dos passos de seleção da impressão e do arquivo que se deseja encriptar. É possível observar a impressão de cadastro, as avaliações polinomiais, onde os pontos vermelhos correspondem aos pontos genuínos, ou seja, os pontos que efetivamente devem ser ocultados. Há também os "chaff points", ou pontos falsos, usados para ocultar os pontos genuínos; representados pelos pontos em azul, tem-se um total de 306 chaff points. O segredo de 128 bits é mostrado na figura em questão, sendo que o mesmo foi transformado em caracteres para melhor visualização, lembrando que o segredo é um conjunto de 128 bits divididos em 8 fragmentos de 16 bits gerado automaticamente. Foram gerados 8 cofres (vaults) distintos, sendo que apenas um deles conseguirá decodificar o segredo (chave de 128 bits).

Figura 13 – Tela de codificação com os campos preenchidos

Fonte: O autor (2014).

A figura 14 mostra as minúcias de uma impressão digital identificadas pelo extrator MINDTCT, onde são representadas como coordenadas em um plano cartesiano; sempre que uma impressão digital é utilizada para cadastro ou consulta (query), é necessário que o algoritmo realize a extração de minúcias.

Figura 14 –Tela de impressão digital com as coordenadas das minúcias

Fonte:O autor (2014).

Quando se realiza a codificação do segredo, tem-se um cofre (vault) semelhante ao exposto na figura 15. Neste cofre que é a representação de um plano cartesiano, encontram-se os pontos genuínos e falsos. Para que se possa decodificar o segredo, torna-se necessário descobrir no meio destes pontos (um total de 315), 9 pontos genuínos em uma ordem definida.

Figura 15 –Tela de Fuzzy Vault onde os chaff points e os pontos genuínos são mesclados

Fonte: O autor (2014).

Uma vez que o segredo encontra-se codificado, apenas uma impressão digital correspondente à impressão do indivíduo que a codificou, será capaz de descodificar o segredo.

Para a etapa de decodificação, é necessário selecionar uma impressão digital da base de dados que servirá como impressão de consulta. A figura 11 ilustra a tela da base de dados FVC2004; de onde deverá ser selecionada a impressão de consulta. Após a escolha da impressão, realiza-se a decodificação do segredo; a figura 16 mostra a tela onde é realizado a combinação entre a impressão de cadastro e a de consulta. Caso as duas impressões pertençam ao mesmo indivíduo, as coordenadas genuínas serão encontradas dentro do cofre (vault). Com as coordenadas genuínas, será possível decodificar o segredo que é mostrado na figura 16 em questão.

Figura 16 – Tela de decodificação

Fonte: O autor (2014).

Com a chave de 128 bits decodificada, é possível realizar a decriptação do arquivo que foi encriptado; a figura 17 ilustra a tela onde é realizada esta decriptação e também sua respectiva chave. São mostrados também o tempo gasto pelo aplicativo aqui desenvolvido para realizar alguns dos passos inerentes ao método de Fuzzy Vault, como o tempo de decodificação e codificação do segredo (chave de 128 bits). Foi avaliado também o tempo de encriptação e decriptação do arquivo selecionado, uma vez que estas etapas fazem parte do aplicativo aqui desenvolvido.

Figura 17 – Tela de decriptação

4 RESULTADOS

Documentos relacionados