OTP

Um código que serve uma única vez. Como é gerado, o que separa o código de um app do que chega por SMS, e por que essa diferença decide se um SIM swapping leva a conta.

Em resumo

Um OTP é um código de uso único que um sistema pede para confirmar que quem está do outro lado tem acesso a um canal ou a um dispositivo determinado. Vale para uma única operação e por uma janela curta, e essa caducidade é toda a sua graça: um código roubado depois de usado não serve para nada.

É o segundo fator mais difundido da indústria e o mais fácil de implementar. Também é o que tem mais variantes, e as variantes não valem o mesmo.

O código deriva de um contador ou de um relógio

Há duas formas de produzir um código de uso único, e convém separá-las desde o início porque não têm as mesmas propriedades.

Por trás de um OTP gerado por algoritmo, que é o caso do HOTP e do TOTP, há um segredo compartilhado, a semente, que o servidor e o gerador do código conservam separadamente. A partir dessa semente se calcula o código. O que muda entre os dois algoritmos padrão é o que mais entra no cálculo além do segredo.

  • HOTP — o código deriva de um contador que avança cada vez que um novo é gerado, conforme a RFC 4226. Não caduca por tempo: continua válido até ser usado ou até o servidor ressincronizar o contador.
  • TOTP — o código deriva do relógio, em janelas fixas que costumam ser de 30 segundos, conforme a RFC 6238. Caduca sozinho, sem que ninguém o use.

Os dois compartilham a mesma condição estrutural: existe um segredo e ele vive em dois lugares. Quem obtém a semente pode gerar códigos válidos sem nunca tocar no dispositivo da pessoa.

No OTP por SMS e no OTP por e-mail não há semente nem nada que a pessoa conserve. O servidor gera um código aleatório na hora e o transmite por um canal, e todo o peso da segurança passa a esse canal. É a diferença que explica a seção seguinte.

O canal muda o nível de segurança, não o código

O código de seis dígitos sempre parece igual. O que muda é por onde chega, e é aí que está a diferença real entre implementações.

  • OTP de app — o código é calculado no dispositivo, com a semente guardada localmente. Não viaja por nenhuma rede. Para interceptá-lo é preciso chegar ao dispositivo ou à semente.
  • OTP por SMS — o código é gerado no servidor e viaja pela rede móvel até a linha telefônica. O fator não está atrelado ao dispositivo: está atrelado ao número.
  • OTP por e-mail — o fator herda a segurança da caixa de e-mail, que costuma estar protegida com uma senha e, com sorte, com outro fator.

Um OTP de app e um OTP por SMS parecem idênticos para o usuário. Para um atacante são dois problemas distintos.

O OTP por SMS é o fator que o SIM swapping quebra

O SIM swapping consiste em conseguir que a operadora reatribua uma linha a um SIM que o atacante controla. A partir desse momento, todas as mensagens dessa linha chegam a outro telefone, incluindo os códigos.

O incômodo do caso é que nada do lado do cliente foi comprometido. A senha continua secreta, o telefone continua no bolso do titular e o sistema de autenticação funciona exatamente como foi projetado. O fator foi entregue à linha correta. A linha mudou de dono.

Um segundo limite alcança todos os OTP, não só os de SMS: o código pode ser digitado no lugar errado. Em um ataque de phishing ou smishing com retransmissão em tempo real, o atacante pede o código no seu próprio site e o usa contra o sistema real dentro da janela de validade. O código funciona porque é legítimo.

Um fator que a pessoa pode ler e repetir é um fator que ela pode repetir diante de quem não deveria.

Onde vale a pena substituí-lo, e onde não

O OTP não está quebrado. Está abaixo do que uma operação de alto valor exige, e continua sendo razoável para muitas outras.

  • Contra o roubo de credenciais, é suficiente. Uma senha vazada não abre a conta se faltar o segundo fator. É o que impede um ataque de credential stuffing.
  • Contra o phishing com retransmissão, não é suficiente. Nenhum código digitável resiste a esse vetor. O que resiste é uma credencial atrelada à origem, que é o que oferecem o FIDO2 e as passkeys.
  • Contra o SIM swapping, o canal decide. Mover o OTP de SMS para app elimina o vetor por completo sem mudar o modelo mental do usuário.

A pergunta de design não é se usar OTP. É qual fator cobre qual operação, e isso é uma decisão de MFA.

Perguntas frequentes

É um código de uso único que um sistema pede para confirmar que quem tenta acessar tem controle sobre um dispositivo ou um canal determinado. Vale para uma única operação e caduca por tempo ou por uso. Há duas formas de produzi-lo: os OTP gerados por algoritmo, como HOTP e TOTP, são calculados a partir de um segredo compartilhado entre o servidor e o gerador do código; os que chegam por SMS ou por e-mail são códigos aleatórios que o servidor gera e transmite por um canal, sem nenhum segredo guardado do lado da pessoa. Sua função é acrescentar um segundo fator a uma autenticação que, com a senha sozinha, depende de um dado que pode ter vazado.

Muda o que entra no cálculo junto com o segredo compartilhado. O HOTP usa um contador que avança a cada código gerado e o resultado não caduca por tempo, então um código emitido e não usado continua válido até ser consumido ou o servidor ressincronizar. O TOTP usa o relógio e gera um código novo por janela de tempo, geralmente de 30 segundos, o que fecha a validade sozinho. Por isso o TOTP é o mais usado em aplicativos de autenticação: reduz a vida útil de um código interceptado sem pedir nada ao usuário.

É melhor do que não ter segundo fator e é o mais frágil dos que existem. O código viaja até uma linha telefônica, não até um dispositivo, e quem controla a linha recebe os códigos. Esse é exatamente o resultado de um SIM swapping, em que o atacante consegue que a operadora reatribua o número a um SIM próprio. Para operações de alto valor, convém mover o fator para um app de autenticação, que calcula o código no dispositivo e não depende da rede móvel.

Uma só identidade, um só SDK

A VU ONE unifica verificação, autenticação e proteção contra fraude sobre um mesmo grafo de identidade.

A verificação feita no cadastro fica disponível para a autenticação e para as regras de fraude, sem repetir processos nem duplicar dados.

Verifica, Autentica e Protege, consolidado em um só lugar.

Solicite uma demo