Gerador de TOTP (senha de uso único)

Gera a mesma senha de uso único de 6 dígitos (RFC 6238) usada pelo Google Authenticator e aplicativos semelhantes, a partir de um segredo TOTP em Base32, totalmente no seu navegador. Seu segredo nunca é transmitido.

Esta ferramenta nunca envia seu segredo para nenhum servidor. A decodificação Base32 e o cálculo HMAC ocorrem inteiramente dentro do seu navegador (Web Crypto API), permitindo que você insira credenciais de autenticação com segurança.

Sobre o algoritmo TOTP

TOTP (senha de uso único baseada em tempo) é um algoritmo definido na RFC 6238 para gerar senhas de uso único com base no tempo. Ele converte um segredo compartilhado e a hora atual em um contador que avança em intervalos fixos e, em seguida, deriva um código numérico usando o mesmo algoritmo de truncamento dinâmico do HOTP (RFC 4226).

Algoritmo HMAC Escolha entre SHA-1 (padrão), SHA-256 ou SHA-512
Número de dígitos do código 6 dígitos (o mesmo padrão usado pelo Google Authenticator e pela maioria dos principais aplicativos de 2FA)
Intervalo de atualização Um novo código é gerado a cada 30 segundos

O que é um código TOTP

Um TOTP (Time-based One-Time Password) é o código de seis dígitos, renovado a cada trinta segundos, usado na verificação em duas etapas para acrescentar uma segunda checagem ao usuário e à senha. Ele é calculado a partir de uma chave compartilhada chamada segredo, registrada de antemão, combinada com a hora atual — por isso o servidor e o aplicativo autenticador na sua mão chegam ao mesmo código sem trocarem informação. Google Authenticator, Microsoft Authenticator, Authy e os demais aplicativos principais seguem todos a mesma norma, a RFC 6238.

Cole a chave de configuração exibida sob o QR code ao ativar a verificação em duas etapas — o segredo, em formato Base32 — e esta ferramenta reproduz no navegador o mesmo código de seis dígitos que o seu aplicativo mostraria. A decodificação do segredo Base32 e o cálculo do HMAC acontecem pela Web Crypto API, e nada é enviado a um servidor. É útil para reconfigurar um aplicativo, conferir um código ou verificar o comportamento em vários dispositivos.

Como gerar um código

  1. Informe o segredo Cole no campo do segredo a chave de configuração em Base32 emitida na ativação da verificação em duas etapas (por exemplo JBSWY3DPEHPK3PXP).
  2. Confira o algoritmo de resumo A maioria dos serviços usa SHA-1. Se o código não bater, experimente mudar para SHA-256 ou SHA-512.
  3. Leia o código de seis dígitos O código correspondente ao momento atual é calculado enquanto você digita e aparece junto de uma barra com os segundos restantes.
  4. Copie se precisar O botão de copiar leva o código para a área de transferência. Evite usá-lo nos instantes finais antes da troca.

Dicas para aproveitar melhor

  • O segredo é a string de "chave de configuração" exibida abaixo do código QR no primeiro registro da autenticação de dois fatores (2FA). Se você já o registrou em um aplicativo autenticador no celular, insira o mesmo segredo aqui para conferir se o código coincide.
  • Alguns serviços usam um algoritmo de hash diferente do SHA-1 (SHA-256 ou SHA-512). Se o código gerado não coincidir com o do seu aplicativo, tente alternar o algoritmo.
  • O código é atualizado automaticamente a cada 30 segundos, com uma barra de progresso mostrando o tempo restante. Tenha cuidado ao copiar um código pouco antes de ele expirar, pois ele pode se tornar inválido antes de chegar ao serviço em que você está se autenticando.
  • Ao fechar esta guia do navegador, o segredo é descartado permanentemente e nunca é salvo em lugar nenhum. Se quiser mantê-lo como backup, guarde o segredo em si em um local seguro, como um gerenciador de senhas.

Quando este gerador ajuda

Conferir ou migrar um aplicativo autenticador

Antes de trocar de aparelho e refazer o cadastro, você pode verificar aqui se o segredo que guardou está correto, em vez de descobrir isso já no telefone novo.

Testar logins num ambiente de desenvolvimento

Ao acrescentar verificação em duas etapas ao seu próprio serviço, gere códigos a partir do segredo de uma conta de teste sempre que precisar exercitar a lógica de autenticação.

Verificar um segredo de backup

Confirme rapidamente que um segredo guardado num gerenciador de senhas continua funcionando, sem abrir o aplicativo no celular.

Reforçar a segurança da conta como um todo

Se você também quiser rever a força da própria senha, valem uma olhada o gerador de senhas e o gerador de frases-senha memorizáveis.

Explorar o cálculo de resumo por trás disso

Se lhe interessam o HMAC e as funções de resumo em que o TOTP se apoia, a calculadora de resumo SHA-256 mostra essa peça isoladamente.

Termos relacionados ao TOTP

TOTP (Time-based One-Time Password)
Esquema (RFC 6238) que gera uma senha de uso único a partir de um contador derivado da hora atual. O código muda automaticamente em intervalos fixos, normalmente de trinta segundos.
HOTP (HMAC-based One-Time Password)
Norma anterior (RFC 4226) sobre a qual o TOTP foi construído. Em vez do relógio, usa um contador que avança uma unidade a cada uso.
Segredo (chave compartilhada)
Chave privada mantida tanto pelo serviço quanto pelo seu aplicativo autenticador. É emitida como cadeia Base32 na ativação, e dela e da hora se calcula o código.
Verificação em duas etapas (2FA)
Método de acesso que combina algo que se sabe, a senha, com algo que se possui, normalmente um aplicativo autenticador no celular. Mesmo que um deles vaze, o acesso não autorizado continua bem mais difícil.
Passo de tempo
Intervalo em que um código TOTP muda. A RFC 6238 fixa trinta segundos por padrão, e a maioria dos serviços e aplicativos mantém esse valor.
Base32
Codificação que representa uma sequência de bytes usando apenas os 32 caracteres A–Z e 2–7. Os segredos TOTP são distribuídos assim por serem fáceis de ler e transcrever.
Truncamento dinâmico
Etapa que retira quatro bytes da longa saída do HMAC segundo uma regra fixa e os converte num número de seis dígitos. Está definida na RFC 4226 e é comum a HOTP e TOTP.

Perguntas frequentes

Sim. A decodificação Base32 e o cálculo HMAC são executados inteiramente no seu navegador via Web Crypto API e nunca são enviados a nenhum servidor. Você mesmo pode confirmar isso inspecionando o tráfego de rede: o segredo inserido nunca é transmitido.

Isso geralmente é causado por um algoritmo de hash diferente (a maioria dos serviços usa SHA-1, mas alguns usam SHA-256 ou SHA-512) ou por um relógio dessincronizado. Primeiro, tente alternar o algoritmo; se ainda não coincidir, verifique se o relógio do seu dispositivo está configurado para sincronizar automaticamente.

Em geral, o TOTP é considerado mais seguro. Mensagens SMS podem ser interceptadas por meio de sequestro do número de telefone (fraude de troca de SIM), enquanto o TOTP é calculado inteiramente no dispositivo e não é vulnerável a esse tipo de ataque.

A maioria dos serviços emite "códigos de recuperação" na primeira configuração da 2FA. Se você perdeu o segredo em si, será necessário passar pelo processo de recuperação de conta do serviço (verificação de identidade) para registrar novamente a autenticação de dois fatores.
Tool-kun

Curiosidade — Por que a autenticação de dois fatores se firmou em 6 dígitos

A OATH (Iniciativa para Autenticação Aberta), que redigiu a especificação do TOTP (RFC 6238), simplesmente reaproveitou o algoritmo de truncamento dinâmico do HOTP (RFC 4226) e deixou o número de dígitos do código a critério de cada implementação. Seis dígitos se tornaram o padrão de fato da indústria principalmente porque o Google Authenticator adotou esse tamanho em sua implementação original de 2010, e muitos outros serviços e bibliotecas seguiram o exemplo.

Seis dígitos também são um ponto de equilíbrio perfeito. Com um milhão de combinações possíveis (10^6) e uma janela de validade de apenas 30 segundos, forçar um código por força bruta se torna praticamente impossível, enquanto um número maior de dígitos tornaria impraticável memorizar e digitar manualmente. Não é coincidência que a maioria dos códigos SMS também tenha 6 dígitos: a indústria convergiu para esse tamanho em qualquer "código numérico descartável de curta duração".

O HOTP (RFC 4226, 2005), predecessor do TOTP, usava um contador que precisava ser incrementado em um a cada uso do código. Na prática, isso causava problemas frequentes de sincronização, com usuários que esqueciam de apertar um botão, ou o contador do dispositivo e do servidor ficando dessincronizados. O TOTP, padronizado em 2011, substituiu o contador pela hora atual, um valor de referência que qualquer pessoa pode consultar, simplificando bastante a operação.