Um aplicativo autenticador pode produzir um código sem receber uma mensagem. Um código de verificação enviado por mensagem chega por um canal de entrega, então a configuração e o tratamento de falhas são diferentes.
O que cada termo significa?
OTP descreve um código aceito apenas uma vez. HOTP e TOTP descrevem algoritmos para gerar esse código.
| Termo | O que fornece o código | O que o usuário precisa |
|---|---|---|
| OTP | A categoria geral, independente do método de geração | Depende do método escolhido |
| HOTP | Um segredo compartilhado e um contador incremental | Um token ou aplicativo cadastrado |
| TOTP | Um segredo compartilhado e o intervalo de tempo atual | Um autenticador cadastrado com um relógio funcional |
A RFC 4226 define o segredo compartilhado e o contador do HOTP. A RFC 6238 usa o tempo no lugar desse contador para o TOTP.
O autenticador e o verificador precisam do mesmo segredo para calcular códigos correspondentes. Proteja esse segredo durante o cadastro e o armazenamento, já que possuí-lo permite gerar códigos.
Como o HOTP muda seu código?
O token avança um contador ao gerar um código. O verificador avança seu estado correspondente após aceitar o código esperado.
Um código HOTP não expira apenas pela passagem do tempo. Gerar códigos sem enviá-los pode adiantar o token em relação ao verificador.
Forneça a ressincronização de contador exigida pela especificação do HOTP. Limite a busca por valores de contador posteriores, porque aceitar mais candidatos aumenta a oportunidade de acerto.
Mantenha as tentativas de autenticação malsucedidas limitadas durante esse processo. A ressincronização não deve se tornar uma rota para tentativas ilimitadas.
Como o TOTP muda seu código?
O TOTP gera um código a partir do segredo compartilhado e do intervalo de tempo atual, mesmo quando ninguém solicita um novo código.
A RFC 6238 recomenda um intervalo de 30 segundos. O código exibido muda quando o relógio cruza para o próximo intervalo.
Um código digitado perto do fim de um intervalo pode chegar ao verificador durante o intervalo seguinte. Permita um atraso limitado para que a digitação normal não cause falhas desnecessárias.
A RFC recomenda no máximo um intervalo para atraso de rede. Essa recomendação diz respeito ao atraso de transmissão; não é um limite universal para toda ressincronização de relógio.
Mantenha os relógios do dispositivo e do servidor alinhados. Uma janela de aceitação ampla acomoda mais desvio. Ela também aceita mais códigos candidatos.
Rejeite um código já aceito mesmo dentro do seu intervalo de tempo. A mudança posterior do relógio não garante uso único por si só.
Um código de verificação enviado pelo Bird é um TOTP?
Não. O Bird Verify gera um código de verificação aleatório e o entrega pelo canal selecionado.
O destinatário não cadastra um segredo compartilhado de autenticador para receber esse código. Sua validade segue a expiração e a política de tentativas da verificação, e não o contador ou o intervalo de tempo de um autenticador.
Escolha o tamanho do código, expiração e limite de tentativas para o fluxo de verificação. Meça os intervalos de entrega e conclusão quando os destinatários reportarem atrasos.
HOTP e TOTP geram códigos localmente após o cadastro, então não dependem de uma mensagem no momento do login. A recuperação deles precisa considerar a perda do autenticador ou do segredo compartilhado.
Qual método devo escolher?
- Use um código de verificação entregue quando o fluxo precisar verificar o acesso a um número ou endereço alcançável.
- Use TOTP quando os usuários puderem cadastrar e manter um autenticador com um relógio confiável.
- Use HOTP quando o token não puder depender do tempo e você puder manter a sincronização do contador.
- Para todo método, limite as tentativas, exija uso único e defina a recuperação de conta antes do lançamento.
Em resumo
OTP é a categoria.
HOTP e TOTP são formas de gerar códigos de uso único. Um servidor também pode gerar e entregar um código de verificação aleatório.
HOTP segue um contador.
Gerar códigos não utilizados pode adiantar o dispositivo em relação ao verificador. Forneça uma forma limitada de ressincronizá-los.
TOTP segue o relógio.
O intervalo de tempo recomendado é de 30 segundos. Considere o atraso de digitação sem tornar a janela de aceitação desnecessariamente ampla.
Escolha o modelo de cadastro e recuperação.
Códigos de autenticador precisam de um segredo compartilhado previamente. Códigos entregues precisam de um canal de entrega funcional.