O que é TOTP?
TOTP (Time-based One-Time Password) é um algoritmo definido em RFC 6238 que gera códigos de uso único baseados no tempo. É amplamente usado em autenticação de dois fatores (2FA) por aplicativos como Google Authenticator, Microsoft Authenticator e Authy.
Fluxo de geração de OTP
O processo de geração de um token TOTP segue estas etapas:
- Chave secreta compartilhada: O cliente e o servidor possuem a mesma chave secreta em Base32 (geralmente obtida via QR Code ou manualmente).
- Cálculo do contador de tempo: O timestamp atual (Unix) é dividido pelo período (ex: 30s). O resultado é o "time step" — um número inteiro que avança a cada período.
- HMAC-SHA1: O algoritmo aplica HMAC-SHA1 usando a chave secreta e o contador de tempo como entrada.
- Truncamento dinâmico: O hash HMAC é truncado para extrair um número de N dígitos (padrão: 6).
- Token final: O código OTP é exibido e permanece válido até o próximo período.
Fluxo de validação de OTP
Quando você insere um código OTP em um sistema (login, confirmação 2FA), o servidor valida assim:
- Recebe o código: O usuário digita o OTP exibido no gerador ou app autenticador.
- Repete o fluxo de geração: O servidor usa a mesma chave secreta e o contador de tempo atual para gerar o token esperado.
- Comparação: O código informado é comparado com o token gerado. Se forem iguais, a validação é bem-sucedida.
- Janela de tolerância (opcional): Muitos sistemas aceitam também o token do período anterior ou seguinte (±1 time step) para compensar pequenas diferenças de relógio entre cliente e servidor.
Como usar o gerador
- Chave secreta: Deve estar em formato Base32 (A-Z, 2-7). Use a mesma chave configurada no app autenticador ou no serviço.
- Dígitos: Quantidade de caracteres do código (geralmente 6)
- Período: Intervalo em segundos para renovar o token (padrão: 30). O contador regressivo indica quando o próximo código será gerado.