Crie senhas baseadas em tempo - Revista .net Magazine 98

Este artigo trata de como criar senhas mais seguras na plataforma .NET. A ideia é criar senhas baseadas em tempo, utilizando recursos de hora e minuto. Tudo isso baseado no modelo RFC 4226 (que será explanado no decorrer deste artigo).

De que se trata o artigo

Este artigo trata de como criar senhas mais seguras na plataforma .NET. A ideia é criar senhas baseadas em tempo, utilizando recursos de hora e minuto. Tudo isso baseado no modelo RFC 4226 (que será explanado no decorrer deste artigo).

Em que situação o tema é útil

O tema é útil quando for necessário criar meios mais seguros de geração de senhas. O objetivo é fortalecer a segurança do algoritmo (a ser criado neste artigo), a fim de evitar uma possível reversão do mesmo.

Crie senhas baseadas em tempo

Um grande desafio ao desenvolver aplicações, visando o usuário final, é a criação de uma autenticação forte, fácil de implementar e barata. Apesar de existirem “N” formas seguras de autenticação, a implementação de um OTP (One Time Password) ou senha de única utilização, garante que o usuário do sistema é quem realmente diz ser.

Há algum tempo, as aplicações, principalmente voltadas para a Web, passaram a necessitar de um fortalecimento na maneira de autenticar usuários.

No circuito de sistemas bancários podemos perceber a cada dia novas iniciativas de autenticação de usuários, de forma a minimizar tentativas de ataques aos sistemas.

A melhor maneira de autenticar um usuário está na utilização de chaves criptográficas e um certificado digital. Deste modo, o par de chaves criptográfico é armazenado de uma forma segura e um terceiro confiável garante todo o processo de sorteio e distribuição destas chaves.

Infelizmente o uso deste tipo de processo e tecnologia é caro para o usuário final, principalmente se tratando de varejo.

Uma alternativa mais em conta, pensando em custo, é o uso de um gerador de senhas, forte e barato o suficiente para ter seu uso massificado. Algumas empresas internacionais como a RSA, líder neste segmento, têm seus próprios dispositivos, geralmente chamados de TOKENS por conta do formato que possuem. Esses dispositivos têm um firmware e um hardware que gera automaticamente a cada período de tempo, uma sequência numérica que pode ser usada para autenticar determinado usuário.

A solução funciona com uma contraparte servidora, contendo o mesmo algoritmo que o dispositivo e a mesma informação do firmware, que consegue gerar a mesma sequência numérica no mesmo instante da autenticação do usuário e validar se o mesmo é quem ele diz ser. Isto pode ser obtido ao mapearmos determinado username ou outra informação de identificação do usuário a um desses dispositivos. Deste modo, o servidor consegue mapear quem entra utilizando aquela sequência numérica. Estes algoritmos são fortes o suficiente para não ter uma colisão matematicamente provável, ou seja, para um determinado firmware ou semente uma sequência numérica é formada a cada instante de tempo. A Figura 1 exibe um token RSA da solução SecurID.

Nota do DevMan

Todo token ou gerador de senhas descartáveis, gera os números aleatórios baseados em um instante de tempo e em uma chave única, chamada de semente, por ser o fator gerador do número que será usado como senha.

Figura 1. SecurID da RSA

Nota do DevMan

HOTP é um HMAC (Hash-based Message Authentication Code) baseado no algoritmo One Time Password. O mesmo foi publicado como um informativo IETF RFC 4226 em dezembro de 2005, documentando o algoritmo, juntamente com uma implementação Java. Desde então, o algoritmo foi adotado por muitas empresas em todo o mundo. Para mais informações sobre o RFC 4226, veja seção Links.

Um dos ataques mais prováveis e triviais é o roubo de senhas ao serem digitadas. O uso deste tipo de autenticação não impede o roubo da sessão, mas, como a mesma só está disponível por um curto período de tempo, mesmo que o ladrão a roube, ele tem 30 segundos para utilizá-la. Se ao utilizarmos este tipo de mecanismo associarmos outros fatores, por exemplo, permitir apenas um Login por usuário (ou seja, não permitir que o mesmo realize Login a partir de endereços IP diferentes), conseguimos criar um mecanismo forte contra a maioria dos ataques triviais que temos hoje no ambiente computacional." [...] continue lendo...

Artigos relacionados