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.
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
- 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).
- 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.
- 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.
- 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
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.