cursos:if68e:geradorsenhas
Gerador de senhas descartáveis
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).
- Uma senha descartável só pode ser usada uma única vez.
- Perde sua validade após esse uso.
Atenção - O sistema deverá:
- ser dividido em duas partes(que devem ser executadas em terminais diferentes, sem comunicação).
- 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.
- nesta caso apresenta “Chave válida”.
- Atenção:
- As senhas devem ter validade de no máximo um minuto e só podem ser usadas uma única vez.
- Senhas são geradas a partir de outras senhas, e se for usada uma chave todas as chaves geradas pela mesma devem ser invalidadas.
- Se o cliente digitar uma senha válida o servidor aceita, caso contrario retorna mensagem de erro.
- Deve ser usado como função hash SHA ou equivalente.
- Os hash são muito grandes, logo podem ser truncados para facilitar o manuseio.
- Normalmente usa-se tamanho igual a 6 ou 8 casas para a senha (token).
- Cada aplicativo tem que ter a sua base de dados ( Para estar em maquinas diferentes):
- Base do aplicativo Gerador de senha:
- Criptografado com a Senha local, para rodar o aplicativo)(Sugestão usar AES ou outro).
- HASH(HASH(SenhaSemente)+HASH(Salt))
- Base do Servidor:
- Nome
- HASH(Senha Semente)
- HASH(Salt))
- Um “Salt” que deve ser o mesmo para cada usuário nos dois aplicativos.
- Este “Salt” pode ser alterado para desativar antigos clientes.
- Normalmente, ele é criado no servidor e enviado para o Gerador de senhas na ativação via SMS, email …
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.
cursos/if68e/geradorsenhas.txt · Last modified: 2024/10/24 23:35 by fonseca