O que faz
Apps de autenticação em dois fatores como Google Authenticator, Microsoft Authenticator e 1Password mostram códigos de seis dígitos que mudam a cada 30 segundos. Cada código é uma senha de uso único calculada a partir de um segredo compartilhado: o TOTP (RFC 6238) usa o tempo e o HOTP (RFC 4226) usa um contador. Esta ferramenta calcula os mesmos códigos a partir do segredo, para você testar uma configuração 2FA, depurar uma implementação no servidor ou conferir qual deveria ser um código.
Ela mostra o código atual com uma contagem regressiva ao vivo, além do código anterior e do próximo, que os servidores costumam aceitar para cobrir pequenas diferenças de relógio.
Como usar
- Cole o segredo Base32 (letras A–Z e dígitos 2–7; espaços e maiúsculas não importam) ou uma URI
otpauth://completa de um QR code. Clique em Exemplo para testar. - Escolha TOTP ou HOTP e ajuste o algoritmo, os dígitos e o intervalo de acordo com a conta. As configurações de uma URI otpauth têm prioridade.
- No HOTP, digite o contador e use Contador +1 para avançar pelos códigos.
- Copie o código atual. A contagem regressiva mostra por quanto tempo ele continua válido.
Exemplo
O segredo de demonstração JBSWY3DPEHPK3PXP é a forma Base32 dos bytes “Hello!” seguidos de 0xDEADBEEF. A URI abaixo, como codificada em um QR code, descreve uma conta que o usa com as configurações padrão:
otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&algorithm=SHA1&digits=6&period=30
No tempo Unix 1700000000 este segredo gera o código 324 550, e faltam 10 segundos para a janela acabar.
Como o código é calculado
O segredo é decodificado de Base32 para bytes. No TOTP, o contador é o tempo Unix em segundos dividido pelo intervalo e arredondado para baixo. O contador é escrito em 8 bytes e assinado com HMAC usando o segredo. O truncamento dinâmico escolhe 4 bytes da saída do HMAC com base no último nibble, e o número é reduzido à quantidade de dígitos pedida, mantendo os zeros à esquerda.
Perguntas frequentes
› Por que meu código não bate com o do app autenticador?
Códigos TOTP dependem do relógio, então primeiro verifique se a hora do dispositivo está no automático. Depois confira se o algoritmo, os dígitos e o intervalo batem com a conta. A maioria dos serviços usa SHA-1, 6 dígitos e 30 segundos, e os apps autenticadores ignoram outras configurações a menos que o QR code as indique.
› Qual a diferença entre TOTP e HOTP?
O TOTP (RFC 6238) usa como contador a hora atual dividida pelo intervalo, então o código muda a cada 30 segundos. O HOTP (RFC 4226) usa um contador que aumenta em um a cada código usado. Ambos passam o segredo e o contador pelo HMAC e ficam com os últimos 6 a 8 dígitos.
› Meu segredo é salvo ou enviado para algum lugar?
Não. Os códigos são calculados no seu navegador com a API Web Crypto. O segredo não é salvo, não vai para a barra de endereços e não entra nos links de compartilhamento; um link compartilhado leva apenas as configurações. Mesmo assim, um segredo 2FA dá acesso total ao segundo fator, então cole apenas segredos que sejam seus.
› Posso usar isto para implementar 2FA no meu próprio app?
Sim. Clique em Segredo aleatório para criar um segredo Base32 de 160 bits, coloque-o em uma URI otpauth:// ou QR code para seus usuários e compare os códigos gerados pelo servidor com os mostrados aqui. Os servidores costumam aceitar também o código anterior e o próximo para tolerar diferenças de relógio.