Gerador de TOTP e HOTP

Use um segredo Base32 de teste para comparar ajustes e códigos. Escolha TOTP para códigos baseados no relógio ou HOTP para um contador definido.

Funciona localmente no seu navegador
Segredos e códigos permanecem neste navegador. Use segredos de teste e nunca compartilhe uma semente ativa.
Configurações do autenticadorParâmetros RFC 4226 / RFC 6238
Revisão de parâmetros
  • Escolha os parâmetros e calcule um código para revisar.

Teste o provisionamento antes de ativar 2FA

Compare com sua implementação usando um segredo descartável. Relógio, armazenamento, recuperação e limites exigem controles do servidor.

Como gerar um código TOTP ou HOTP

Este espaço de trabalho transforma um segredo Base32 no código de uso único que um aplicativo autenticador mostraria, com o algoritmo, o número de dígitos e o período ou contador escolhidos. Ele também gera a URI de configuração otpauth:// que um código QR codificaria.

O HMAC é calculado na aba com Web Crypto. A ferramenta não envia nenhuma requisição enquanto trabalha, então o segredo e o código gerado ficam no navegador.

  1. Cole o segredo Base32 ou pressione Gerar segredo de teste para obter um aleatório de 160 bits. Letras minúsculas, espaços e o preenchimento = são ignorados, então um segredo copiado da configuração de um servidor funciona como está.
  2. Escolha o modo. TOTP conta passos de tempo: escolha o período, em que 30 segundos é o padrão e o mais compatível. HOTP conta eventos: digite o valor do contador em que o servidor de verificação está.
  3. Ajuste o hash e a quantidade de dígitos ao que o seu servidor verifica (SHA-1 com 6 dígitos é o padrão comum) e pressione Calcular código. Carregar exemplo RFC preenche o segredo de teste do RFC 4226 com contador 0.
  4. Leia a revisão de parâmetros: ela repete o tamanho do segredo decodificado, o contador usado e o número de dígitos, e sinaliza segredo abaixo de 20 bytes, período diferente de 30 segundos e o tratamento do contador HOTP.
  5. Copie o código para comparar ou copie a URI otpauth:// para configurar um aplicativo. No modo TOTP o código é recalculado a cada passo de tempo; Limpar devolve todos os campos ao padrão.

O que é o código e onde estão os limites

RFC 4226 e RFC 6238 no mesmo formulário

O código é um HMAC sobre o contador em uso: o contador é assinado com o segredo, o último byte da assinatura seleciona uma janela de 4 bytes (truncamento dinâmico) e esse valor é reduzido módulo 10^dígitos. TOTP é a mesma função com o contador derivado do tempo Unix dividido pelo período; por isso um código TOTP muda sozinho, enquanto um código HOTP espera o próximo contador.

A ferramenta coincide com os vetores de teste publicados. Com o segredo do RFC, os contadores HOTP de 0 a 5 retornam 755224, 287082, 359152, 969429, 338314 e 254676. Um relógio dentro do passo de tempo do RFC que contém T=59 retorna 94287082 com SHA-1 e 8 dígitos, e os vetores posteriores (T=1111111109 e T=20000000000) retornam 07081804 e 65353130.

O que a revisão de parâmetros pode e não pode dizer

A revisão repete os parâmetros usados e lembra duas tarefas do servidor: o contador HOTP precisa ser incrementado e gravado de forma atômica pelo verificador, e um segredo com menos de 20 bytes decodificados é curto demais para produção. Um período diferente de 30 segundos e SHA-256 ou SHA-512 são válidos, mas menos aplicativos e servidores os aceitam.

Nada aqui valida um código digitado à mão, mede a deriva de relógio do servidor ou comprova que o segredo é o da sua conta. Compare um código gerado com a implementação que vai verificá-lo e trate o fluxo de cadastro do autenticador como referência.

Processamento local e URI de configuração

A URI segue o formato de chave otpauth://: segredo, emissor, algoritmo (SHA1, SHA256 ou SHA512), dígitos e período ou contador; é a string que um código QR codifica. O segredo é reescrito em Base32 sem espaços nem preenchimento, e o rótulo une o emissor e o nome da conta.

O HMAC e a URI são produzidos dentro da aba e a ferramenta não envia nenhuma requisição, então o segredo e o código resultante não saem do navegador. Use um segredo de teste descartável ao comparar implementações e mantenha as sementes de produção nos sistemas autorizados a armazená-las.

Ferramentas recentes: