1001Ferramentas
🔄 Segurança

Comparador TOTP vs HOTP

Compara características TOTP e HOTP em tabela e mostra como cada um deriva o código — referência rápida para devs.

HOTP e TOTP: o que muda entre os dois

Os códigos de seis dígitos do aplicativo autenticador saem de um algoritmo bem simples: HMAC-SHA1 de um segredo compartilhado com um contador, truncado para virar número. O que separa HOTP de TOTP é só o que entra nesse contador. No HOTP ele é um número inteiro que avança a cada uso. No TOTP ele é o relógio: o horário Unix dividido pelo tamanho da janela, normalmente 30 segundos.

Essa diferença muda tudo na operação. O HOTP precisa que cliente e servidor mantenham a mesma contagem, e um token físico apertado no bolso sai de sincronia — daí a janela de look-ahead, em que o servidor testa os próximos códigos, e o procedimento de ressincronização depois de muitas falhas. O TOTP não tem esse problema porque ninguém precisa contar: os dois lados olham o relógio. Em troca, ele passa a depender do relógio estar certo.

A página mostra a tabela comparativa e, nos outros dois modos, o passo a passo da derivação de cada um — o truncamento dinâmico que pega o offset do último nibble do HMAC, a máscara de 0x7F no primeiro byte e o módulo por dez elevado ao número de dígitos. É material de referência: não gera código nem valida segredo, serve para entender o que a sua biblioteca de 2FA está fazendo por baixo.

Perguntas frequentes

Por que o código foi recusado se eu digitei rápido?
Provavelmente o relógio do aparelho está adiantado ou atrasado. O servidor costuma aceitar a janela anterior e a seguinte, o que dá uma tolerância de mais ou menos 30 segundos; além disso, o código não bate. Acertar o horário automático no celular resolve a maioria dos casos.
Ainda se usa SHA-1 nisso?
Sim, e é o padrão de fato. A fraqueza conhecida do SHA-1 é em colisão, que não é o que ataca o HMAC — HMAC-SHA1 continua considerado seguro para esse uso. As RFCs permitem SHA-256 e SHA-512, mas muitos aplicativos autenticadores só implementam SHA-1, então mudar costuma quebrar a leitura do QR Code.
Dá para usar o mesmo segredo em dois aparelhos?
Dá, e é assim que funciona o backup: o segredo é o único estado que importa no TOTP, então dois aparelhos com o mesmo segredo geram o mesmo código. Com HOTP isso não vale — cada aparelho manteria seu próprio contador e os dois sairiam de sincronia com o servidor.

Ferramentas Relacionadas