Todos os artigos

TOTP: como funcionam os códigos de uso único em apps autenticadores

O Pix, o sistema de pagamentos instantâneos do Banco Central do Brasil, tornou o país um dos maiores exemplos mundiais de autenticação de dois fatores no dia a dia: biometria facial, senha do app e limites por transação se combinam para proteger transferências que acontecem em segundos. TOTP resolve um problema parecido de um jeito diferente — em vez de depender de biometria ou de um servidor central em tempo real, ele usa um segredo compartilhado e o tempo para gerar códigos offline.

Um segredo compartilhado mais o tempo

Durante a configuração, o servidor e o app autenticador trocam uma única chave secreta compartilhada (é exatamente isso que está codificado no QR code). A partir daí, ambos os lados calculam de forma independente um HMAC a partir desse segredo e da hora unix atual, arredondada para um intervalo de 30 segundos — chegando ao mesmo código sem se comunicar.

Por que isso funciona sem internet

Como o código é calculado localmente a partir do segredo e do relógio do sistema do dispositivo, o app autenticador não precisa de conexão de rede para gerar um código. O único requisito é que os relógios do servidor e do telefone permaneçam sincronizados dentro de uma pequena margem tolerada (geralmente ±30–60 segundos).

Por que o código muda a cada 30 segundos

O intervalo de tempo curto limita a janela durante a qual um código interceptado permanece válido, reduzindo o risco de ser reutilizado por um atacante. O servidor geralmente aceita o intervalo atual mais o anterior para compensar um pequeno atraso de rede na digitação do código.

Para que serve

  • Entender a mecânica da autenticação de dois fatores ao configurar ou solucionar problemas com apps autenticadores.
  • Testar sua própria implementação de TOTP ao desenvolver um sistema de autenticação.
  • Gerar códigos para testes automatizados sem digitá-los manualmente do telefone.

O que o TOTP não protege

O TOTP protege bem contra o roubo da senha isolada do código, mas não contra phishing em tempo real: se a vítima digitar a senha e o código TOTP atual em um site falso, o invasor pode usar instantaneamente ambos os valores no site verdadeiro, enquanto o código ainda é válido. Apenas chaves de hardware no padrão FIDO2/WebAuthn, vinculadas criptograficamente a um domínio específico, protegem contra esse tipo de ataque.

Experimentar a ferramenta