Este trabalho tem como objetivo que todos os alunos conheçam e implementem uma técnica de autenticação que use senhas descartáveis (OTP - One-Time Passwords).
Atenção - O sistema deverá:
Aplicativo - Gerador de senha (Token)(Off-Line)
Primeira vez criar
um usuário
uma senha semente (Senha igual a registrada no servidor, senha principal)
Um salt (o mesmo do servidor)
uma senha local (Senha para acesso ao gerador de senhas somente usado para criptografar o arquivo com as Hash locais.)
Próximas vezes
Digitar usuário e a senha local, se correto (consegue acessar arquivo de senhas) continua.
Quando requisitado gera uma senha(Token).
(algoritmo gerador de senhas)
A senha (Token) deve ser gerada a partir da hash da senha semente do usuário (diferente da senha do usuário).
O aluno deve propor uma variante do algoritmo OTP de Lamport, visto em aula.
Este algoritmo deve levar em consideração o tempo (data hora minuto).
As senhas devem ter validade de no máximo um minuto e só podem ser usadas uma única vez.(Fazer uma lista de senhas para ser usada no minuto. Ex.lista com 5 senhas para o minuto solicitado)
somente gerar lista de senhas para o minuto solicitado.
Servidor - (Validador de senha off-line)
Primeira vez criar:
um usuário (mesmo do anterior)
uma senha semente (mesmo do anterior, senha principal)
Um salt (o mesmo do anterior)
Quando acessado usa o mesmo algoritmo gerador de senhas anterior. Mas em instância separada.
A lista de senha gerada será a mesma nas duas partes, apesar de estarem em aplicativos separados e sem comunicação.
Verifica o usuário e se senha digitada esta na lista gerada e não foi usada e nem invalidada.
Se o cliente digitar uma senha válida o servidor aceita, caso contrario retorna mensagem de erro.
Obs.: Será avaliado com ZERO trabalhos que armazenarem senhas em texto sem hash.
Para aumentar a segurança além da senha semente do usuário é possível concatenar mais uma cadeia de caracteres (“Salt”) recebida no dispositivo (via SMS) que foi instalado o gerador de senha. Assim se precisar instalar em outro local, basta trocar a cadeia de caracteres e não precisa alterar a senha semente do usuário.