User Tools

Site Tools


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).
  1. 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.
  2. 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