QR Codes TOTP 2FA explicados

Uma análise técnica detalhada do formato URI otpauth://, segredos base32 e a matemática TOTP do RFC 6238.

O que é TOTP

TOTP (Time-based One-Time Password, RFC 6238) é o algoritmo por trás do Google Authenticator, Authy, 1Password, Bitwarden e todos os outros aplicativos de autenticação. Ele produz um código de 6 dígitos que muda a cada 30 segundos com base em um segredo compartilhado e no horário Unix atual.

O URI otpauth

otpauth://totp/Issuer:account@example.com?secret=BASE32SECRET&issuer=Issuer&algorithm=SHA1&digits=6&period=30

O esquema URI é otpauth://, o tipo é totp (a outra opção é hotp, baseado em contador), depois o rótulo e os parâmetros de consulta. Os aplicativos de autenticação analisam esse URI e o adicionam ao cofre do usuário com um único scan.

O rótulo

Formato opcional: Issuer:account@example.com. O prefixo Issuer é redundante com o parâmetro de consulta issuer, mas a maioria dos aplicativos respeita ambos.

O segredo

Uma string de bytes codificada em base32 (A-Z e 2-7, sem preenchimento). Recomenda-se pelo menos 128 bits, a maioria dos servidores usa 160 bits (32 caracteres base32). Nunca codifique o segredo em URL; deixe-o como base32 bruto.

Algoritmo, dígitos, período

algorithm: SHA1 (padrão, universalmente suportado), SHA256 ou SHA512. digits: 6 (padrão) ou 8. period: 30 segundos (padrão) ou 60. Mantenha os padrões a menos que haja um motivo específico para mudá-los, alguns aplicativos de autenticação não implementam as opções não padrão.

Como o código é calculado

A cada intervalo de 30 segundos, o autenticador executa: HMAC-SHA1(secret, floor(unix_time / 30)), pega os últimos 4 bits do HMAC como deslocamento dinâmico, lê 4 bytes a partir desse deslocamento, aplica máscara para 31 bits e reduz módulo 106 para gerar um código de 6 dígitos.

Gerar um com Abundera QR

Abra o gerador TOTP, preencha o emissor (o nome da sua marca), a conta (o e-mail ou nome de usuário) e um segredo em base32. Os valores padrão para algoritmo/dígitos/período são corretos para quase qualquer servidor. Baixe o PNG e envie por e-mail ou SMS ao usuário, ou incorpore ao seu fluxo de cadastro.

Nota de privacidade

Seu segredo TOTP é uma credencial compartilhada entre o servidor e o usuário. O Abundera QR nunca o vê. Toda a codificação acontece no navegador. Leia a política de privacidade completa.