Este documento descreve as políticas de segurança aplicadas ao processo de login, incluindo bloqueios automáticos e o funcionamento do segundo fator de autenticação (MFA).
1. Regras de Bloqueio e Proteção (reCAPTCHA)
Para garantir a segurança das contas e evitar acessos indevidos, o sistema monitora o comportamento de tentativas de acesso:
Exigência de reCAPTCHA: Após 5 tentativas de login inválidas, o sistema passará a exigir obrigatoriamente a validação via reCAPTCHA no formulário de acesso.
Bloqueio Temporário: Caso ocorram mais 10 tentativas incorretas após o reCAPTCHA (totalizando 15 tentativas inválidas), o usuário será bloqueado e impedido de realizar novos acessos por um período de 60 minutos.
2. Segundo Fator de Autenticação (MFA)
O Multi-Fator de Autenticação (MFA) é uma camada de proteção adicional. O sistema utiliza o protocolo TOTP (Time-based One-Time Password), garantindo que o código seja dinâmico e exclusivo para aquele instante de tempo.
2.1 Engenharia e Segurança do Código
O processo de geração do código de 6 dígitos segue padrões rigorosos de segurança criptográfica:
Geração da Seed (Segredo): Para cada usuário, o sistema gera uma chave única (Seed) de 20 caracteres. Esta chave é a base para todos os códigos futuros.
Proteção da Chave (Criptografia em Repouso): A Seed não é armazenada em texto aberto. Ela é criptografada utilizando o serviço AWS KMS (Key Management Service) antes de ser salva no banco de dados, garantindo que apenas o serviço de autenticação consiga lê-la.
Algoritmo de Hash: Utilizamos o HMAC-SHA1. O sistema combina a Seed descriptografada com o timestamp atual (janela de tempo) para criar um hash seguro.
Truncamento Dinâmico: Do hash gerado, o algoritmo extrai um subconjunto de bytes, converte para um valor inteiro e aplica uma operação matemática (módulo) para resultar no código final de 6 dígitos.
2.2 Ciclo de Vida e Expiração
Janela de Tempo: Cada código é vinculado a um intervalo de 30 segundos.
Sincronização: Como o código depende do tempo (Timestamp), é essencial que o dispositivo do usuário esteja com o horário sincronizado com os servidores mundiais para que o código gerado no aplicativo coincida com o esperado pelo servidor.
Uso Único: Uma vez validado ou expirado o tempo, o código perde sua validade, exigindo uma nova geração.
2.3 Canal de Autenticação Suportado
A autenticação de segundo fator é realizada exclusivamente via Aplicativo Autenticador:
Compatibilidade: Suporta qualquer aplicativo que siga o padrão RFC 6238 (ex: Google Authenticator, Authy, Microsoft Authenticator).
Vínculo via QR Code: O sistema fornece um QR Code contendo a Seed codificada em Base32. Ao escanear, o aplicativo configura automaticamente o algoritmo, o tempo de expiração e o emissor.
3. Resumo do Fluxo de Login
Verificação de Status: O sistema valida se a conta está ativa ou em período de bloqueio.
Validação de Bot: Caso o limite de 5 erros tenha sido atingido, o reCAPTCHA deve ser resolvido.
Credenciais: Verificação de nome de usuário e senha.
Segundo Fator: Se o usuário possuir o MFA habilitado, o sistema solicitará o código de 6 dígitos do aplicativo autenticador.
Acesso Concluído: Após todas as validações, o acesso é liberado e o histórico de erros é zerado.
