13
Estudo de mecanismos de autenticação para aplicações Web Maurilio Bolonhesi II Luciana Andréia Fondazzi Martimiano (orientadora) Especialização em Desenvolvimento de Sistemas para Web – Universidade Estadual de Maringá (UEM) [email protected]; [email protected] Abstract. Several authentication mechanisms are available and are used by the applications. From the authentication of an entity (user, server, etc.), it is possible to define which are the rights of this entity in a computing environment. Given this fact, a study of the most widely used authentication mechanisms is of great importance, especially for Web applications. To study and to evaluate authentication mechanisms and their use in Web, raising the advantages and disadvantages of each mechanism, are the main objective of the work described in this paper. Resumo. Diversos mecanismos de autenticação estão disponíveis e são utilizados por sites e aplicações Web. A partir da autenticação de uma entidade (usuário, servidor, etc.), é possível definir quais são os direitos desta entidade em um ambiente computacional. Diante deste fato, um estudo dos mecanismos de autenticação mais utilizados é de grande importância, principalmente para aplicações Web. Estudar e avaliar mecanismos de autenticação e suas aplicações em sistemas para a Web, levantando as vantagens e desvantagens de cada mecanismo, são os objetivos deste trabalho. 1. Introdução Um importante requisito para qualquer sistema de gestão da informação é proteger de dados e recursos contra a divulgação não autorizada e modificações impróprias ou proibidas, e ao mesmo tempo, garantir a utilização aos usuários que possuem permissão. Sua proteção, portanto, exige que todos os acessos a um sistema e seus recursos sejam controlados e que apenas acessos autorizados sejam realizados. Este processo é denominado controle de acesso. O desenvolvimento de um sistema de controle de acesso exige a definição de regras por meio de funções e algoritmos computacionais. Quase todas as aplicações que lidam com a privacidade precisam de alguma forma de controle de acesso. O controle de acesso define as atividades autorizadas aos usuários legítimos, e controla cada interação do usuário para acessar um recurso do sistema. Atualmente, existem diversos mecanismos de autenticação e controle de acessos, e por este motivo é importante um estudo dos principais métodos para um levantamento dos mais seguros e viáveis com relação a custos e tempo de desenvolvimento. Muitos mecanismos na Internet não levam em conta fatores importantes de segurança e acabam deixando os sistemas vulneráveis. O crescimento das redes abertas fez com que surgissem vários problemas de segurança, que vão desde o roubo de senhas e interrupção de serviços até problemas de

Estudo de mecanismo de autenticacao para aplicacoes web Bolonhesi II... · Sua proteção, portanto, exige que ... A autenticação baseada no conhecimento é o método mais utilizado

Embed Size (px)

Citation preview

Estudo de mecanismos de autenticação para aplicações Web

Maurilio Bolonhesi II

Luciana Andréia Fondazzi Martimiano (orientadora)

Especialização em Desenvolvimento de Sistemas para Web – Universidade Estadual de

Maringá (UEM) [email protected]; [email protected]

Abstract. Several authentication mechanisms are available and are used by

the applications. From the authentication of an entity (user, server, etc.), it is

possible to define which are the rights of this entity in a computing

environment. Given this fact, a study of the most widely used authentication

mechanisms is of great importance, especially for Web applications. To study

and to evaluate authentication mechanisms and their use in Web, raising the

advantages and disadvantages of each mechanism, are the main objective of

the work described in this paper.

Resumo. Diversos mecanismos de autenticação estão disponíveis e são

utilizados por sites e aplicações Web. A partir da autenticação de uma

entidade (usuário, servidor, etc.), é possível definir quais são os direitos desta

entidade em um ambiente computacional. Diante deste fato, um estudo dos

mecanismos de autenticação mais utilizados é de grande importância,

principalmente para aplicações Web. Estudar e avaliar mecanismos de

autenticação e suas aplicações em sistemas para a Web, levantando as

vantagens e desvantagens de cada mecanismo, são os objetivos deste

trabalho.

1. Introdução

Um importante requisito para qualquer sistema de gestão da informação é proteger de

dados e recursos contra a divulgação não autorizada e modificações impróprias ou

proibidas, e ao mesmo tempo, garantir a utilização aos usuários que possuem permissão.

Sua proteção, portanto, exige que todos os acessos a um sistema e seus recursos sejam

controlados e que apenas acessos autorizados sejam realizados.

Este processo é denominado controle de acesso. O desenvolvimento de um sistema

de controle de acesso exige a definição de regras por meio de funções e algoritmos

computacionais. Quase todas as aplicações que lidam com a privacidade precisam de

alguma forma de controle de acesso.

O controle de acesso define as atividades autorizadas aos usuários legítimos, e

controla cada interação do usuário para acessar um recurso do sistema. Atualmente,

existem diversos mecanismos de autenticação e controle de acessos, e por este motivo é

importante um estudo dos principais métodos para um levantamento dos mais seguros e

viáveis com relação a custos e tempo de desenvolvimento. Muitos mecanismos na

Internet não levam em conta fatores importantes de segurança e acabam deixando os

sistemas vulneráveis.

O crescimento das redes abertas fez com que surgissem vários problemas de

segurança, que vão desde o roubo de senhas e interrupção de serviços até problemas de

2

personificação, quando uma pessoa faz-se passar por outra para obter acesso

privilegiado [FIORESE, 2000].

Com isso, surgiu a necessidade de autenticação, que consiste na verificação e

validação da identidade tanto dos usuários quanto dos sistemas e processos. Os

mecanismos de autenticação de usuários dividem-se em três categorias: baseados no

conhecimento (o que se sabe), baseados em propriedade (o que se possui) e baseados

em características (o que se é) [YOUNG, 1996]. Cada uma destas categorias possui

vários métodos de autenticação, que são descritos na sequência deste trabalho. Alguns

métodos foram desenvolvidos e comparados, considerando a visão do desenvolvedor e

do usuário.

Este artigo está organizado da seguinte maneira: a Seção 2 apresenta uma descrição

sobre sistemas Web; a Seção 3 apresenta definições, princípios e ferramentas de

segurança; a Seção 4 descreve os diferentes mecanismos de autenticação, apontando

suas vantagens e desvantagens; a Seção 5 descreve a implementação e a avaliação de

três métodos; e a Seção 6 apresenta as considerações finais e propostas de trabalhos

futuros.

2. Segurança da Informação

A informação é um ativo que, como qualquer outro ativo importante para os negócios,

tem um valor para a organização e, consequentemente, necessita ser adequadamente

protegida. A segurança da informação protege os dados de diversos tipos de ameaças

para garantir a continuidade dos negócios, minimizar os danos aos negócios e

maximizar o retorno dos investimentos e as oportunidades de negócio [ISO/IEC NBR

17799, 2005].

A segurança de um ambiente está baseada em três importantes princípios:

Confidencialidade: garante que os dados estarão seguros e acessíveis apenas a

quem possuir acesso legítimo.

Integridade: garante que os dados estarão seguros e protegidos e serão modificados

apenas por aqueles que tenham acesso legítimo.

Disponibilidade: garante que os dados estarão acessíveis sempre que um usuário

legítimo necessite.

Além desses três princípios, três características também são importantes:

autenticidade, autorização e irretratabilidade. Autenticidade é utilizada para se

comprovar que o usuário é realmente quem diz ser. Um dos recursos mais utilizados e

conhecidos por conferir autenticidade é a senha, a princípio, conhecida somente pelo

usuário. Autorização é o ato de determinar se um usuário em particular (ou um sistema

computacional) tem o direito de executar determinada tarefa, tal como leitura de um

arquivo ou execução de um programa.

Geralmente, usuários estão divididos em grupos diferentes com direitos diferentes.

Autenticidade e autorização são sempre empregadas em conjunto: um usuário precisa

ser autenticado antes de executar tarefas que ele esteja autorizado. Irretratabilidade está

relacionada com o fato de que um usuário não pode negar que executou uma

determinada tarefa. Por exemplo, o resultado de uma autenticação não pode ser negado

posteriormente.

As necessidades de segurança dos ambientes tecnológicos sofrem mudanças e

avanços constantes, tendo assim as organizações que se adaptarem as inúmeras

fraquezas proporcionadas por riscos iminentes encontrados em quaisquer sistemas

3

computacionais provedores de serviços [MARTINS, 2007]. As ferramentas auxiliam na

proteção dando segurança, por exemplo, ao servidor onde estão os dados do sistema,

caso algum invasor consiga acessar os dados pelo servidor, ele poderá alterar o sistema

e visualizar toda informação do mesmo.

Uma ferramenta que é importante e pode auxiliar na garantia dos princípios de

segurança e autenticação é a Criptografia, como citam Paredes (2006) e Menezes

(1996), a criptografia é a ciência de escrever em cifras ou códigos utilizando um

conjunto de técnicas que tornam, em princípio, os dados ininteligíveis para o atacante.

Criptografar dificulta muito caso algum invasor esteja monitorando os dados que são

trafegados pelo sistema Web, no qual o atacante pode visualizar dados do sistema, como

senhas e informações confidenciais.

3. Autenticação

De acordo com Aboudagga et al. (2005) autenticação é um processo que envolve um

autenticador comunicando-se com um requisitante usando um protocolo de autenticação

para verificar as credenciais apresentadas pelo requisitante com a finalidade de

determinar os privilégios de acesso do requisitante. Um protocolo de autenticação

define a sequência de mensagens trocadas entre entidades (requisitante e autenticador)

nas quais há algum segredo a ser reconhecido.

Quando um usuário legítimo é verificado, são aplicadas técnicas de controle de

acesso para permitir seu acesso aos recursos do sistema. Se a identidade dos usuários

legítimos puder ser verificada com um grau aceitável de certeza, as tentativas de acessos

ao sistema sem autorização podem ser negadas.

Existe uma variedade de métodos para executar autenticação de usuários, os quais

formam a base dos sistemas de controle de acesso. As três categorias de métodos para

verificação da identidade de um usuário são baseadas em: algo que ele sabe, como uma

senha; algo que o ele possui, como um token de autenticação; e alguma característica

física do usuário, como a impressão digital ou a íris do olho. De modo a usar estas

características para verificar a identidade de um indivíduo, os sistemas de computadores

usam software, hardware ou a combinação dos dois [FIORESE, 1998].

Diversos mecanismos podem ser utilizados e alguns desses são descritos a seguir.

4.1 Mecanismos de autenticação

Soluções de Autenticação baseadas no Conhecimento

A autenticação baseada no conhecimento é o método mais utilizado em sistemas Web,

utilizando segredos como senhas, chaves de criptografia, PIN (Personal Identification

Number), dentre outros que a entidade que está se autenticando possua.

Vários métodos foram propostos para tornar a autenticação baseada em senhas mais

segura, dentre eles o uso de geradores randômicos de senhas, checagem pró-ativa,

utilização de senhas descartáveis (one-time passwords) e sistemas de desafio/resposta

(chalenge/response systems), modificações no processo de login e combinação com

outros mecanismos de autenticação de usuários como smartcards.

As principais vantagens desse método são:

Onde o usuário estiver o segredo estará com ele.

O segredo pode ser facilmente modificado, se necessário.

4

O segredo é facilmente inserido através do teclado, não necessitando de dispositivos

especiais.

Bem aceitos pelos usuários, pois são baratos e fáceis de implementar.

Não requerem hardware adicional.

Podem ser integrados em sistemas baseados em rede e na Web, além de diversos

sistemas operacionais.

No entanto, a principal desvantagem desses métodos está relacionada ao fato de que

senhas podem ser adivinhadas, roubadas ou esquecidas.

A utilização de perguntas randômicas, porém, acrescenta uma dificuldade adicional

a quem quiser divulgar seu segredo, pois, ao contrário de contar apenas uma palavra

(como no caso de senhas), terá que divulgar todas as informações constantes no

questionário que serve de base para as perguntas randômicas.

A integração de soluções baseadas em conhecimento com dispositivos biométricos

oferece dois níveis de autenticação, e pode ser uma solução interessante para evitar o

problema acima citado.

Exemplo de sistemas que utilizam autenticação baseada no conhecimento:

Sites de webmail como Gmail, Hotmail, Yahoo, dentre outros;

Websites em geral que possuem sistema de gerenciamento de conteúdo;

Sites de relacionamentos como Facebook, Orkut, dentre outros;

Blogs, Fotologs, Youtube, e a grande maioria dos sites e sistemas Web.

Soluções de Autenticação baseadas na Propriedade

Segundo Fiorese (2000), as soluções de autenticação baseadas na propriedade

caracterizam-se por um objeto físico que a entidade possui. Este objeto pode ser um

cartão inteligente (smartcard), uma chave ou um token (dispositivo eletrônico

semelhante a uma calculadora, usados para calcular senhas descartáveis).

É comum ter-se a combinação de autenticação por propriedade com autenticação

baseada em senhas, fornecendo dois fatores de autenticação. Sem os dois, uma entidade

não pode ser autenticada em um sistema ou aplicação. Com a crescente utilização de

cartões inteligentes já é possível obter-se três fatores de autenticação, por meio de sua

combinação com senhas e dispositivos biométricos.

As desvantagens deste tipo de autenticação são que os objetos físicos podem ser

perdidos, roubados ou esquecidos, além do custo adicional do hardware necessário.

Um tipo de autenticação baseada em propriedades são mecanismos de baseados em

tokens. Tokens são dispositivos semelhantes a uma calculadora de mão e que não

necessitam de dispositivos de leitura/escrita adicionais. Eles fornecem autenticação

híbrida, usando tanto "algo que o usuário possui" (o próprio dispositivo), como "algo

que o usuário conhece" (um PIN de 4 a 8 dígitos). Sistemas de autenticação

por tokens baseiam-se em um dos seguintes esquemas: autenticação por desafio/resposta

ou autenticação sincronizada no tempo.

Nos sistemas baseados em desafio/resposta, o usuário insere sua identificação no

sistema, que apresenta um desafio randômico como, por exemplo, na forma de um

número de sete dígitos. O usuário, por sua vez, digita seu PIN no token e informa o

desafio apresentado pelo sistema. O token gera a resposta correspondente cifrando o

desafio com a chave do usuário, a qual ele informa ao sistema. Enquanto isso, o sistema

5

calcula a resposta apropriada baseado no seu arquivo de chaves de usuários. Quando o

sistema recebe a resposta do usuário, ele a compara com a resposta que acabou de

calcular, se for idêntica, a conexão é permitida e os direitos de acessos dados.

Na utilização de calculadoras de desafio/resposta, é dado a cada usuário um

dispositivo que foi unicamente chaveado. O sistema deve ter um processo ou

processador para gerar um par de desafios/resposta a cada tentativa de conexão, baseado

nos dados informados pelo usuário. Cada desafio é diferente, para que a observação de

uma troca de questionários com sucesso não traga informações suficientes para uma

conexão subsequente. A desvantagem deste esquema é o número de mensagens trocadas

entre o usuário e o servidor. Uma vez que uma nova senha é gerada a cada 60

segundos, o sistema evita ataques como: adivinhação da senha, ataque do dicionário e

monitoramento do tráfego na rede. Outra característica importante na comparação com

outros produtos são a facilidade de uso e o fato de não requerer hardware adicional.

Exemplos de sistemas que utilizam autenticação baseada na propriedade:

O website do banco Bradesco combina autenticação por conhecimento e por

propriedade (senhas e tokens) (Figura 1), assim como outros sites bancários.

O sistema do jogo online World of War Craft.

Caixas de autoatendimentos bancários.

Figura 1. Exemplo de cartão token utilizado por alguns bancos em sua autenticação no website e nos terminais de autoatendimento.

A principal desvantagem deste esquema é o número de mensagens trocadas entre o

usuário e o servidor.

Soluções de Autenticação baseadas em Características

Sistemas biométricos são métodos automatizados para o reconhecimento de uma pessoa

com base em alguma característica física, como a impressão digital ou o padrão de íris,

ou algum aspecto comportamental, como a escrita ou o padrão de digitação. Ainda que

os sistemas biométricos não possam ser usados para estabelecer um "sim/não" na

identificação pessoal, como as outras tecnologias tradicionais, eles podem ser usados

para alcançar uma identificação positiva, com um alto grau de confiança.

Teoricamente, qualquer característica humana, física ou comportamental, pode ser

usada para a identificação, desde que satisfaça os seguintes requisitos:

Universalidade: todas as pessoas devem possuir a característica.

Singularidade: esta característica não pode ser igual em pessoas diferentes.

Permanência: a característica não deve variar com o tempo;

Mensurabilidade: a característica pode ser medida quantitativamente.

Na prática, existem outros requisitos importantes:

6

Desempenho: precisão de identificação, os recursos requeridos para conseguir uma

precisão de identificação aceitável e ao trabalho ou fatores ambientes que afetam a

precisão da identificação.

Aceitabilidade: indica o quanto as pessoas estão dispostas a aceitar os sistemas

biométricos.

Proteção: refere-se à facilidade/dificuldade de enganar o sistema com técnicas

fraudulentas.

As principais características que são comumente utilizadas são [FIORESE, 2000;

RUGGLES, 2002]:

Reconhecimento da Face: O uso de reconhecimento de face é o método mais

natural de identificação biométrica. O uso das características da face para

identificação automática é uma tarefa difícil porque a aparência facial tende a mudar

a todo tempo. As variações podem ser causadas por diferentes expressões faciais,

mudanças no estilo do cabelo, posição da cabeça, ângulo da câmara, condições de

luz, etc. Apesar das dificuldades envolvidas, o reconhecimento facial já foi abordado

de diversas maneiras, variando de sistemas de reconhecimento de padrões por redes

neurais até varreduras infravermelhas de pontos estratégicos (como posição dos

olhos e da boca) na face.

Impressão Digital: Na verificação de uma impressão, muitos sistemas analisam a

posição de detalhes chamados de minutiae, tais como terminações e bifurcações dos

sulcos. Sistemas modernos também verificam outras características para

identificação única, tais como arcos e voltas que aparecem no dedo. Por exemplo,

alguns dispositivos contam o número de cumes entre um minutiae para formar o

modelo de referência, enquanto outros o tratam como um problema de

processamento de imagens, e aplicam circuitos integrados de grande escala

customizados (VLSI – Very Large Scale Integrated), redes neurais, lógica fuzzy

(fuzzy logic) e outras tecnologias para resolver o problema. Impressões digitais têm

sido utilizadas em várias aplicações como controle de acesso, caixas automáticos de

bancos, registros de saúde, entre outras. Algumas de suas principais vantagens são a

rapidez e a confiança, o baixo preço e o pequeno tamanho dos leitores e o fato de ele

ser considerado pelos usuários como pouco intrusivo. Entretanto, algumas pessoas

acham que estão sendo tratadas como criminosas se sua impressão digital está sendo

requerida.

Geometria da Mão: A geometria da mão tem sido usada em aplicações desde o

começo de 1970. Ela baseia-se no fato de que virtualmente não existem duas

pessoas com mãos idênticas e de que o formato da mão não sofre mudanças

significativas após certa idade.

Reconhecimento de Retina: Algumas pesquisas têm provado que o padrão de veias

da retina é a característica com maior garantia de unicidade que uma pessoa pode

ter.

Reconhecimento de Íris: A captura da imagem é feita por uma câmara em preto e

branco. O usuário olha para a câmara de uma distância de aproximadamente 30 cm

ou mais por poucos segundos. O sistema acomoda usuários de lentes de contato sem

dificuldades, embora o sensor deva ser montado ou ajustado de modo a ser

satisfatório para usuários de diferentes alturas, incluindo aqueles em cadeiras de

roda.

7

Reconhecimento de Voz: A tecnologia de reconhecimento de voz é fácil de usar e

não requer grandes esforços na educação do usuário. Entretanto, deve-se cuidar para

garantir que o usuário fale em um tempo apropriado e em voz clara.

Reconhecimento de Assinatura: O ritmo necessário para escrever uma assinatura

pode ser usado em um sistema de identificação automático. Esta técnica já é muito

usada e popular, uma vez que todos os cheques são verificados usando-se as

assinaturas.

Ritmo de Digitação: Como a assinatura, o ritmo de digitação exibe o mesmo fator

neurofísico que pode ser utilizado na identificação única de um indivíduo.

Esquemas de ritmo de digitação analisam o modo como um usuário digita em um

terminal, monitorando o teclado 1000 vezes por segundo.

Como exemplo da utilização de autenticação por característica algumas empresas

estão adotando a utilização de digitais em softwares de pontos de funcionários, catracas

e demais sistemas que precisem de identificação pessoal ou autenticação. Alguns bancos

estão adotando em seus terminais de autoatendimento o reconhecimento das veias da

mão em conjunto com senhas e tokens, ou até mesmo sem eles caso o cliente prefira.

Na Tabela 1, alguns métodos de autenticação como o da assinatura não são muito

seguros, pois possuem uma baixa singularidade, universalidade e proteção, assim como

o tempo pode modificar a forma de assinar de uma pessoa, deixando o recurso

biométrico com uma baixa permanência. Já os métodos de autenticação por íris e

digitais se destacam, pois são bastantes mais seguros e bem aceitos e também possuem

bom desempenho.

Tabela 1. Comparação entre algumas técnicas biométricas [FIORESE, 2000].

Biométricos Univer-

salidade

Singula-

ridade

Perma-

nência

Mensura-

bilidade

Desem-

penho

Aceita-

bilidade

Proteção

Face Alto Baixo Médio Alto Baixo Alto Baixo

Impressão

Digital

Médio Alto Alto Médio Alto Médio Alto

Geometria

da Mão

Médio Médio Médio Alto Médio Médio Médio

Veias da

Mão

Médio Médio Médio Médio Médio Médio Alto

Íris Alto Alto Alto Médio Alto Alto Alto

Retina Alto Alto Médio Baixo Alto Alto Alto

Assinatura Baixo Baixo Baixo Alto Baixo Alto Baixo

8

Voz Médio Baixo Baixo Médio Baixo Alto Baixo

4. Implementação de mecanismos de autenticação

Para a avaliação e comparação foram implementados três mecanismos de autenticação,

utilizando o framework de desenvolvimento codeigniter, com a linguagem para Web

PHP5 e o banco de dados MySQL, utilizando o padrão de programação MVC (Model-

View-Controler).

Foi desenvolvido inicialmente um mecanismo de autenticação simples de login e

senha, no qual foi observado que dentre os métodos estudados, este é o mais simples de

desenvolver, mais rápido, porém, o que possui menos segurança.

No segundo método, além do login e senha, foram utilizados tokens, que são

semelhantes a um cartão que pode ficar com o usuário. Na programação, foi necessário

ter um banco de dados com os tokens cadastrados e algumas linhas de códigos a mais

para comparações, aumentando assim a dificuldade e o tempo de desenvolvimento, mas

também dando uma maior credibilidade e segurança a este método.

No terceiro método, a autenticação é feita pela digital. Para o cadastro de cada

usuário no banco de dados é necessário armazenar a digital e também ter em cada ponto

de controle de acesso um hardware de leitura da mesma. O hardware verifica a digital e

envia os dados para o sistema que compara com a digital cadastrada, se for correta,

libera o acesso, caso contrário, o acesso não é liberado. Este método possui mais

credibilidade que os anteriores, pois o usuário não corre o risco de perder ou alguém

roubar sua senha, porém, o desenvolvimento é mais complexo e há o custo do

hardware.

5.1 Mecanismos implementados

A seguir, são apresentados os mecanismos que foram implementados.

a) Autenticação baseada no conhecimento – Login e senha, conforme Figura 2.

Figura 2. Formulário de login e senha

Disponível em: http://www.mundov.com.br/sistema

O Quadro 1 mostra o código utilizado para implementação deste mecanismo. No

código, a função addslashes remove caracteres indevidos que são utilizados em ataques

como os de SQL Injection, que permite ao atacante inserir uma série de instruções SQL

em uma consulta (query) por meio da manipulação das entradas de dados de uma

aplicação. Em seguida, tem-se uma verificação se a variável login está preenchida, se

estiver, o sistema carrega um módulo do framework codeigniter chamado

9

form_validation (validação de formulário), que é responsável por validar formulários,

de acordo com as regras que definimos. Regras são definidas para não permitir que as

variáveis login e senha estejam em branco e que a senha seja criptografada utilizando o

método MD5 (Message-Digest algorithm 5), que é um algoritmo de hash de 128

bits unidirecional. Na sequência, é verificado se o usuário existe no banco de dados e se

a senha confere. Se a senha estiver correta, a aplicação lista os privilégios deste e salva

as informações em variáveis de sessão, liberando o acesso e redirecionando para a

página inicial do sistema.

class Login extends Controller {

function Login() {

parent::Controller();

}

function index() {

//salva váriaveis do form

$id = addslashes($this->input->post('id'));

$login = addslashes($this->input->post('login'));

$senha = addslashes($this->input->post('senha'));

if (!$login) { //se login nao for preenchido, abre formulario

$data['erro']='';

$this->load->view('login',$data);

} else {

$this->load->library('form_validation');

$this->form_validation->set_rules('senha', 'Senha', 'md5|required');

$this->form_validation->set_rules('login', 'Login', 'required');

$erro=0;

//verifica se existe o usuario e confere o login e a senha.

$query = $this->db->get_where('usuarios',array('login' => $login, 'senha'

=> $senha));

// Não achou nenhum user, guardar mensagem de erro e retornar na tela de login.

if ($query->num_rows() == 0) {

$data['erro'] = "Senha ou login inválidos";

$erro=1;

//achou usuario, verifica se ele tem permissao ao nucleo selecionado

} else {

$user = $query->row();

}

if ($erro == 0) {

$now = date('Y-m-d H:i:s');

// Achou user, guardar dados em sessão

$row = $query->row();

$this->session->set_userdata('logged',1);

$this->session->set_userdata('login',$row->login);

$this->session->set_userdata('nome',$row->nome);

$this->session->set_userdata('id',$row->id);

$this->session->set_userdata('tipo',$row->tipo);

$menu = $this->db->get('menus');

//seleciona as opçoes de acessos do usuario

foreach ($menu->result() as $n) {

$permite = $this->db-

>get_where('permissoes',array('id_user' => $row->id, 'id_menus' => $n->id))->num_rows();

if ($permite > 0) {

$this->session->set_userdata($n->nome,1);

} else {

$this->session->set_userdata($n->nome,0);

}

}

if ($row->data_acesso == "") {

$acesso=$now;

} else {

10

$acesso = $row->data_acesso;

}

$this->session->set_userdata('data_acesso',$row->data_acesso);

// Inserindo Last Login, fica sempre salvo o ultimo login do usuário.

$update = array('data_acesso' => $now);

if ($row->id) {

$this->db->where('id', $row->id);

$this->db->update('usuarios', $update);

}

//redireciona para a pagina inicial do sistema.

redirect('adm/inicio');

} else {

$this->load->view('login',$data);

}

}

}

}

Quadro 1. Código para implementação do mecanismo de login e senha.

b) Autenticação baseada na propriedade – Login, senha e token, conforme Figura 3.

Neste método foi utilizado um token, além do convencional login e senha. Durante o

cadastro de cada usuário, são cadastrados no banco de dados os tokens iniciais

referentes a este usuário, que serão solicitados na tela de autenticação. Estes tokens são

gerados de forma randômica por meio da função rand() do PHP. Na tela de autenticação

é solicitado ao usuário seu login, sua senha e uma chave de 1 a 3 que também é

sorteada, fazendo com que o usuário preencha com o token correspondente à chave que

foi mostrada. Após a verificação correta, o acesso é liberado.

Figura 3. Formulário de login, senha e token.

Disponível em: http://www.mundov.com.br/sistema2

c) Autenticação baseada na característica – Digital, conforme Figura 4.

11

Figura 4. Formulário de login com digitais, comparando digital de entrada com digital cadastrada em sistema.

No método de digitais, cada usuário tem em seu cadastro no banco de dados

uma imagem de sua digital, ou várias, se for o caso de utilizar mais dedos. Além

disso, é necessário um hardware que faça a leitura da digital, como por exemplo, o

Fingerprint da empresa Microsoft. Este aparelho possui um software interno, que

recebe as imagens das digitais cadastradas no banco de dados e faz a comparação

com a digital em leitura no momento, retornando o usuário. Caso haja confirmação

da digital, o seu acesso ao sistema é liberado.

5.2 Análise dos mecanismos

Para realizar um comparativo entre os métodos desenvolvidos, foram feitas duas

tabelas, uma que possui a visão do desenvolvedor (Tabela 2) e a outra que mostra a

visão do usuário (Tabela 3). As respostas a uma pesquisa via e-mail enviada a

cinco pessoas foram utilizados como base para os resultados apresentados na

Tabela 3. Nesta pesquisa foi solicitado ao usuário fazer uma escala de 1 a 3, entre

os três mecanismos implementados, as questões eram:

1. Numere os métodos de autenticação que acha mais simples de se usar, 1

para o pior e 3 para o melhor.

2. Numere os métodos de autenticação que você tem mais confiança em

utilizar, 1 para o pior e 3 para o melhor.

Na Tabela 2, a comparação foi feita em uma escala de três níveis (1, 2 e 3,

sendo que 1 indica o pior e 3 indica o melhor) com relação a quatro características:

segurança, custo, viabilidade e dificuldade. Já na Tabela 3, os três níveis indicam as

confiabilidade que o usuário teve na utilização e também a facilidade de se

autenticar (usabilidade).

Tabela 2. Visão do desenvolvedor: comparação entre os métodos de autenticação desenvolvidos.

Segurança Custo Viabilidade Dificuldade

Login e senha 1 1 3 1

Login, senha e token 2 2 2 2

12

Digital 3 3 1 2

Tabela 3. Visão do usuário: comparação entre os métodos de autenticação desenvolvidos.

Usabilidade Confiabilidade

Login e senha 3 1

Login, senha e token 1 2

Digital 2 3

5. Considerações Finais e Trabalhos Futuros

Entre os tipos de autenticação estudados, cada um possui vantagens e desvantagens,

sendo que alguns se tornam mais viáveis para algumas finalidades e outros não. Como o

estudo é sobre sistemas Web, os métodos de autenticação baseados em características só

serão viáveis em alguns casos específicos (sistema empresariais, intranets, etc.), pois

eles têm a dificuldade e o custo do hardware, apesar de ter alta confiabilidade e

segurança.

Os métodos baseados em conhecimento, apesar da baixa confiabilidade e baixa

segurança, em muitos casos é ainda o mais viável na Web, pois não depende de

hardware para milhares de usuários e ainda é o mais simples de ser desenvolvido e com

usabilidade. Por outro lado, sites e sistemas que necessitam de maior segurança das

informações, a melhor opção analisada é a combinação entre autenticação por

conhecimento com a propriedade, utilizando login e senha, e o token, dando maior

confiabilidade e segurança, mesmo com um aumento no custo devido ao uso do

hardware gerador de tokens ou dos cartões tokens, dependendo da aplicação.

Em trabalhos futuros, poderão ser estudados mais a fundo os métodos baseados em

características, para que sejam viáveis em relação aos custos, facilitando seu uso e

tornando o processo de autenticação mais seguro e confiável em sistemas Web.

6. Referências Bibliográficas

ABOUDAGGA, N., REFAEI, M. T., ETOWEISSY, M., DASILVA, L. A.,

QUISQUATER, J.; Authentication Protocols for Ad Hoc Networks: Taxonomy and

Research Issues, International Workshop on Modeling Analysis and Simulation of

Wireless and Mobile Systems, 2005.

BALASUBRAMANIYAN, J. S.; FERNANDEZ, J. O. G.; ISACOFF, D.; SPAFFORD,

E.; ZAMBONI, D.; An architecture for intrusion detection using autonomous

agents. Tecnhical Report. Department of Computer Sciences, Purdue University,

COAST Laboratory TR 98/05. 1998.

CHAPMAN, D. B.; SWICK, E. D.; Building Internet Firewalls. O’Reilly &

Associates. 1995. 517p.

13

FIORESE, M.; Mecanismos de Autenticação de Usuários. Porto Alegre -

Universidade Federal do Rio Grande do Sul - UFRGS, 1998.

FIORESE, M.; Uma Proposta de Autenticação de Usuários para Ensino a

Distância, Universidade Federal do Rio Grande do Sul – UFRGS, 2000.

HOUAISS, A.; Dicionário da língua portuguesa. Editora Objetiva, 2003.

ISO/IEC NBR 17799; Tecnologia da informação – Código de prática para a gestão

da segurança da informação. Agosto, 2005.

MARTINS, P. R.; Relacionando o Conceito de Criptografia em Implantações de

Firewalls, Senais – Florianópolis, SC, 2007.

MENEZES, A. J.; VAN OORSCHOT, P. C.; VANSTONE, S. A.; Handbook of

Applied Cryptography. CRC Press. 1996.

OPPLIGER, R.; Internet Security: Firewalls and Beyond. Communication of the

ACM, v. 40, n. 5, 1996. pp. 92–102.

PAREDES, G. G.; Introducción a la criptografia. Revista Digital Universitária, vol. 7,

n. 7, 2006.

RUGGLES, T.; Comparation of Biometric Techniques. The Biometric Consulting

Group. Disponível em http://www.biometric-consulting.com/bio.htm. 2002. Acesso em

setembro de 2011.

YOUNG, I. T.; KIRSTEIN, P. T.; IBBETSON, A.; Technologies to Support

Authentication in Higher Education. Disponível em

http://www.ukoln.ac.uk/services/elib/papers/other/scoping/. 1996. Acesso em setembro

de 2011.

WINCKLER, M.; PIMENTA, M. S.; Avaliação de usabilidade de sites Web.

Universidade Federal do Rio Grande do Sul – UFRGS – 2001.