Pular para o conteúdo
Novaz AuthenticatorOBTER

Como funcionam os códigos da 2FA? O TOTP explicado

Pela equipe Novaz · Atualizado em 29 de outubro de 2026
Passos do Novaz verificados na versão 1.0.5

Traduzido do guia em inglês. No site do serviço, os botões e menus podem ter nomes um pouco diferentes em português.

Nesta página
  1. Ingrediente 1: a chave de configuração
  2. Ingrediente 2: a hora, contada em intervalos
  3. Misturando os dois em um código
  4. Por que o site aceita o código
  5. Ajustes que um serviço pode mudar
  6. TOTP e HOTP
  7. Do que o TOTP não protege
  8. No Authenticator App - Novaz

Um app autenticador e um site calculam, cada um, o mesmo número de 6 dígitos a partir de duas coisas que os dois têm: uma chave secreta que compartilharam uma vez e a hora atual. Nada é enviado entre eles quando você faz login. É por isso que o código funciona sem sinal e muda a cada 30 segundos. O método se chama TOTP, de "time-based one-time password" (senha de uso único baseada em tempo), e é um padrão aberto (RFC 6238).

Ingrediente 1: a chave de configuração

Quando você ativa a 2FA, o site cria um segredo aleatório e o mostra como um QR code, com uma versão em texto chamada chave de configuração. O seu app salva essa chave. A partir daí, o site e o app têm a mesma chave, e ninguém mais deveria ter.

O QR code é só um link em um formato padrão, otpauth://totp/…, com a chave, o nome do serviço, o nome da sua conta e, opcionalmente, os ajustes descritos abaixo. O nosso decodificador de QR code da 2FA mostra o que há dentro de um.

Ingrediente 2: a hora, contada em intervalos

Os dois lados pegam a hora atual em segundos desde 1º de janeiro de 1970 (hora Unix) e dividem por 30, descartando o resto. O resultado é um número inteiro que aumenta em um a cada 30 segundos. O RFC 6238 chama esse número de T e recomenda "a default time-step size of 30 seconds" (um intervalo padrão de 30 segundos).

Misturando os dois em um código

O app passa a chave e o T pelo HMAC, uma função criptográfica, geralmente com SHA-1. Depois, reduz o resultado a um número curto, com um método definido no padrão HOTP (RFC 4226, seção 5.3):

  1. Os últimos 4 bits do resultado do HMAC indicam uma posição dentro dele.
  2. O app pega 31 bits a partir dessa posição, como um número.
  3. Ele mantém os últimos 6 dígitos desse número. Alguns serviços usam 8.

Mude a chave ou o intervalo e você terá um código completamente diferente. Não dá para fazer o caminho inverso, do código até a chave.

Try it: a live TOTP code

Calculated in your browser from an example key. Don't paste a real setup key here.

Current code

…

Previous: …

Next: …

Unix time
…
Time step T = ⌊time ÷ 30⌋
…
Seconds left
…

Por que o site aceita o código

O site faz o mesmo cálculo com a cópia dele da chave e com o próprio relógio. Se os números baterem, você entra. Dois detalhes fazem isso funcionar na prática:

  • Uma pequena folga para atrasos. Um código digitado no fim de um intervalo pode chegar no seguinte. O RFC 6238 recomenda que "at most one time step is allowed as the network delay" (no máximo um intervalo seja tolerado como atraso da rede), então muitos sites também aceitam o código imediatamente anterior ao atual.
  • Cada código funciona uma vez. O padrão diz que um servidor "MUST NOT accept the second attempt" (NÃO DEVE aceitar a segunda tentativa) de um código que já aceitou. As diretrizes do NIST nos EUA dizem o mesmo: os verificadores "SHALL accept a given OTP only once while it is valid" (DEVEM aceitar um OTP só uma vez enquanto ele for válido) (NIST SP 800-63B-4).

É também por isso que um relógio errado quebra os códigos. Se o seu iPhone está um minuto defasado, ele calcula o código de um intervalo diferente do que o site usa. Veja Código do autenticador não funciona?

Ajustes que um serviço pode mudar

Os padrões permitem algumas variações, e um QR code pode levá-las:

Ajuste Valor comum Também permitido
Hash SHA-1 SHA-256, SHA-512 (RFC 6238, seção 1.2)
Dígitos 6 7 ou 8 (RFC 4226, seção 5.3)
Intervalo 30 segundos Outras durações

Se um serviço usa algo incomum, adicione-o escaneando o QR code em vez de digitar a chave, para que o app receba os ajustes também.

TOTP e HOTP

O HOTP, o padrão mais antigo, usa um contador que aumenta cada vez que você pede um código, em vez da hora. O TOTP é o HOTP com o intervalo de tempo como contador: "TOTP = HOTP(K, T)". A maioria dos sites usa TOTP hoje.

Do que o TOTP não protege

Como você mesmo digita o código, uma página de login falsa convincente pode pedi-lo e usá-lo na hora. O NIST diz sem rodeios: "OTP authentication is not phishing-resistant" (a autenticação por OTP não é resistente a phishing). Chaves-senha (passkeys) e chaves de segurança são. Mais em App autenticador ou SMS.

No Authenticator App - Novaz

O Novaz gera códigos TOTP padrão no seu iPhone:

  • Por QR code: SHA-1, SHA-256 ou SHA-512; de 6 a 8 dígitos; intervalos de 1 a 300 segundos.
  • Por chave digitada à mão: sempre 6 dígitos, 30 segundos e SHA-1.

Ele não gera códigos HOTP. Ele também confere o relógio do seu iPhone e avisa quando a defasagem é de 15 segundos ou mais.