O que é TOTP? Como Funcionam as Senhas de Uso Único Baseadas em Tempo


A versão curta

TOTP significa Time-Based One-Time Password (Senha de Uso Único Baseada em Tempo). É o sistema por trás de aplicativos como Google Authenticator e Authy que geram códigos de 6 dígitos que você digita ao fazer login nas suas contas. Cada código é válido por 30 segundos, depois um novo o substitui.

Essa é a ideia básica. Mas como funciona de verdade por baixo dos panos é surpreendentemente simples.

Uma chave secreta e um relógio

O TOTP precisa de dois ingredientes: uma chave secreta e a hora atual.

Quando você configura a autenticação de dois fatores em um site, o site gera uma chave secreta aleatória e a compartilha com você, geralmente como um QR code. Seu aplicativo autenticador escaneia o código e armazena a chave. O site também guarda uma cópia. Depois dessa troca inicial, o segredo nunca mais é transmitido.

Aqui é onde fica interessante. Tanto seu aplicativo autenticador quanto o servidor do site têm um relógio. Ambos sabem que horas são. Então eles podem independentemente combinar a chave secreta com a hora atual, executar a mesma matemática e chegar ao mesmo código de 6 dígitos. Nenhuma comunicação necessária.

Quando você digita um código no formulário de login, o servidor gera seu próprio código usando o mesmo segredo e a hora atual, depois verifica se eles coincidem. Se sim, você entra.

Como é a matemática

Você não precisa entender a criptografia para usar TOTP, mas aqui está o essencial se tiver curiosidade.

A hora atual é dividida em intervalos de 30 segundos. Agora mesmo, existe um número que representa “quantos blocos de 30 segundos se passaram desde 1 de janeiro de 1970” (essa é a época Unix, um ponto de referência comum na computação). Esse número é chamado de time step (passo de tempo).

O algoritmo alimenta a chave secreta e o time step no HMAC-SHA1, uma função de hash unidirecional. A saída é uma longa string de bytes. O TOTP extrai um pedaço dessa saída, converte para um número e pega os últimos 6 dígitos. Esse é o seu código.

Como o time step muda a cada 30 segundos, o código também muda. E como a função de hash é unidirecional, alguém que vê um código não pode reverter a engenharia da sua chave secreta a partir dele.

Por que os códigos expiram

A janela de 30 segundos é um equilíbrio. Janelas mais curtas seriam mais seguras, janelas maiores dariam mais tempo para digitar. Trinta segundos ficou como padrão sensato na RFC 6238, a especificação que define o TOTP.

A maioria dos servidores na verdade aceita códigos das janelas de 30 segundos anterior e seguinte também, para compensar a diferença de relógio entre seu dispositivo e o servidor. Então você geralmente tem cerca de 90 segundos na prática.

Uma vez que um código expira, ele não vale mais nada. Alguém espiando por cima do ombro tem uma janela muito estreita para usar o que vê, e muitos serviços rejeitam um código que já foi usado uma vez.

RFC 6238: o padrão

O TOTP não é proprietário. É definido na RFC 6238, publicada pela Internet Engineering Task Force (IETF) em 2011. A especificação se baseia em um padrão anterior chamado HOTP (RFC 4226), que usa um contador em vez de tempo. O TOTP simplesmente substituiu o contador por um time step.

Por ser um padrão aberto, qualquer aplicativo autenticador pode gerar códigos para qualquer serviço que suporte TOTP. Você não está preso a um fornecedor específico. Google Authenticator, Authy, 1Password, Bitwarden e dezenas de outros usam o mesmo algoritmo.

Como o TOTP se compara às senhas comuns

Uma senha comum é estática. É a mesma string toda vez que você faz login. Se alguém a rouba através de um vazamento de dados, phishing ou malware, pode usá-la repetidamente até você mudá-la.

Os códigos TOTP são diferentes de várias formas:

  • Eles mudam a cada 30 segundos, então um código roubado só é útil por um momento breve
  • São gerados a partir de um segredo que nunca deixa seu dispositivo depois da configuração
  • Não podem ser phishingados no sentido tradicional, porque quando um atacante tenta usar um, provavelmente já expirou
  • Não dependem da sua capacidade de criar e lembrar algo complexo

Dito isso, TOTP não substitui senhas. É uma camada adicional. Você ainda precisa de uma senha (algo que você sabe), e o código TOTP prova que você também tem acesso ao dispositivo com a chave secreta (algo que você tem).

O lado prático

Configurar TOTP geralmente leva cerca de um minuto por conta. O serviço mostra um QR code, você escaneia com seu aplicativo autenticador e confirma digitando um código. É isso.

Daí em diante, fazer login leva mais 10 segundos. Você abre seu autenticador, encontra a conta certa, lê o código e digita. É uma pequena fricção que torna sua conta dramaticamente mais difícil de invadir.

Algumas pessoas se preocupam em perder acesso ao aplicativo autenticador. Essa é uma preocupação válida. A maioria dos serviços dá códigos de backup durante a configuração. Guarde-os em algum lugar seguro. Você também pode usar aplicativos autenticadores que suportam backup na nuvem, ou manter suas chaves secretas armazenadas em um gerenciador de senhas.

Experimente você mesmo

Se quiser ver o TOTP em ação sem se comprometer com nada, pode gerar códigos em 2fa.zip. Funciona inteiramente no seu navegador, sem segredos enviados a nenhum servidor, então é uma boa forma de sentir como os códigos funcionam antes de configurar 2FA nas suas contas reais.

Proteja suas contas com autenticação de dois fatores

Gere códigos TOTP instantaneamente, direto no seu navegador.

Experimente nosso Gerador de Códigos 2FA Gratuito

Postagens Relacionadas