Seu celular está sem internet, mas o Authenticator continua gerando códigos que o site aceita. Parece mágica, mas existe uma explicação simples: o celular e o servidor já sabem o segredo.
Você já percebeu que o Google Authenticator e outros aplicativos de autenticação conseguem gerar códigos mesmo quando o celular está sem internet?
É possível colocar o smartphone no modo avião, desligar Wi-Fi e dados móveis e, ainda assim, abrir o aplicativo e encontrar um novo código de seis dígitos.
Mas existe uma pergunta bastante interessante por trás disso:
Se o celular não está conectado à internet, como o site sabe que o código digitado está correto?
A resposta é mais simples — e mais interessante — do que parece.
O celular não está conversando com o servidor

A primeira coisa que precisamos entender é que, quando o código é gerado, o Authenticator não está enviando uma mensagem para o serviço.
Não acontece isso:
Celular → Internet → Google → “Qual código devo mostrar?”
Na verdade, o aplicativo consegue calcular o código sozinho.
E o servidor também consegue calcular o código sozinho.
Isso é possível porque, durante a configuração da autenticação em duas etapas, o celular e o servidor recebem o mesmo segredo criptográfico.
É como se os dois recebessem uma chave secreta antes de começarem a gerar os códigos.
O segredo é compartilhado durante a configuração
Quando você ativa a autenticação por aplicativo em um serviço, normalmente aparece um QR Code para ser escaneado pelo Authenticator.
Esse QR Code contém informações usadas para configurar a autenticação, incluindo um segredo compartilhado.
Depois da configuração, podemos imaginar a situação assim:
Servidor: 🔐 “Eu conheço o segredo.”
Seu celular: 🔐 “Eu também.”
A partir desse momento, os dois não precisam ficar trocando mensagens para gerar cada código.
Eles simplesmente utilizam esse segredo como parte do cálculo.
Mas só o segredo não seria suficiente
Se o aplicativo simplesmente utilizasse sempre o mesmo segredo, ele produziria sempre o mesmo código.
Isso não seria muito seguro.
Por isso entra uma segunda informação importante:
o horário.
O sistema utiliza o segredo compartilhado junto com o tempo atual para produzir um código temporário.
É daí que vem o nome TOTP, sigla para Time-based One-Time Password, ou “senha de uso único baseada em tempo”.
De forma simplificada:
Segredo + horário atual + algoritmo → código temporário

O Authenticator faz esse cálculo no celular.
O servidor faz um cálculo equivalente do outro lado.
Então como os dois chegam ao mesmo número?
Imagine que o seu celular e o servidor tenham exatamente a mesma “receita”.
Os dois possuem:
🔐 O mesmo segredo
🕐 Aproximadamente o mesmo horário
🧮 O mesmo algoritmo
Agora imagine que ambos coloquem essas informações na receita.
O resultado será o mesmo código.
Por exemplo:
Celular:
segredo + horário → 482913
Servidor:
segredo + horário → 482913
Quando você digita 482913 no site, o servidor compara o código que você informou com aquele que ele calculou.
Se os valores forem compatíveis, o acesso é autorizado.
E nenhuma comunicação com o celular foi necessária.
É por isso que o modo avião não impede o Authenticator
Agora podemos voltar para a situação inicial.
Você ativa o modo avião.
📵 Sem Wi-Fi.
📵 Sem dados móveis.
📵 Sem conexão com o servidor.
Mesmo assim, o Authenticator continua funcionando.
Isso acontece porque o aplicativo não precisa consultar a internet para descobrir o próximo código.
Ele já possui o segredo necessário e pode consultar o relógio do próprio aparelho para realizar o cálculo.
O servidor, por sua vez, faz seu próprio cálculo quando recebe o código que você digitou.
E por que o código muda a cada poucos segundos?
Se o código permanecesse válido durante horas ou dias, alguém que conseguisse descobri-lo poderia tentar utilizá-lo posteriormente.
Por isso os códigos são temporários.
Em implementações TOTP comuns, o código muda em intervalos de 30 segundos.
Assim, podemos ter algo parecido com:
20:15:00 → 482913
20:15:30 → 716204
20:16:00 → 093817
Os números acima são apenas exemplos, mas a lógica é essa: o código muda conforme o intervalo de tempo.
E se o celular e o servidor estiverem com horários diferentes?
Aqui aparece uma parte importante do sistema.
Se o relógio do seu celular estiver muito adiantado ou atrasado, o código calculado pelo aparelho pode não coincidir com o código esperado pelo servidor.
Por isso, manter a data e hora automáticas ativadas no smartphone é importante.
Os serviços também podem aceitar uma pequena margem de diferença de tempo para evitar que alguns códigos sejam rejeitados por uma diferença mínima entre os relógios.
O código não precisa ser enviado pelo celular
Essa é provavelmente a parte mais curiosa de toda a história.
Quando você vê:
“Digite o código de 6 dígitos do seu aplicativo autenticador”
pode parecer que o aplicativo precisa enviar aquele número para o servidor.
Mas não é isso que acontece.
O código é calculado de forma independente.
O celular calcula um código.
O servidor calcula o código esperado.
Você funciona como uma espécie de ponte:
Authenticator → você → site
O aplicativo mostra o número, você digita o número no site e o servidor verifica se aquele número corresponde ao que ele esperava.
Uma analogia simples
Imagine que você e um amigo possuem duas máquinas idênticas.
Antes de se separarem, vocês colocam a mesma chave secreta nas duas máquinas.
Vocês também combinam uma regra:
“A cada 30 segundos, vamos usar o horário atual junto com essa chave para gerar um número.”
Você fica com uma máquina.
Seu amigo fica com a outra.
Quando chega determinado horário, vocês colocam o horário nas respectivas máquinas.
As duas produzem o mesmo número.
Você não precisa ligar para seu amigo para perguntar qual número apareceu na máquina dele.
Vocês já possuem todas as informações necessárias para chegar ao mesmo resultado.
É basicamente essa ideia que permite que o Authenticator funcione sem internet.
Mas então o servidor conhece o segredo do meu Authenticator?
De certa forma, sim.
Para que o sistema consiga verificar o código, o serviço precisa manter o segredo associado à sua conta.
Por isso, esse segredo é uma informação extremamente importante.
Durante a configuração, ele é armazenado no aplicativo e registrado pelo serviço.
Depois disso, ambos conseguem gerar os códigos temporários.
Isso também explica por que você deve ter cuidado ao configurar ou transferir um aplicativo autenticador.
E se eu trocar de celular?
Essa é uma situação que merece atenção.
Se você perder o aparelho ou trocar de celular, pode ser necessário transferir as contas do autenticador para o novo dispositivo.
Dependendo do aplicativo e do serviço, existem mecanismos de backup, sincronização ou transferência.
Mas não é uma boa ideia simplesmente apagar o Authenticator antigo antes de garantir que suas contas foram transferidas corretamente.
Também é importante guardar os códigos de recuperação fornecidos pelos serviços quando você ativa a autenticação em duas etapas.
Eles podem ser fundamentais caso você perca acesso ao aplicativo autenticador.
Isso significa que o Authenticator é mais seguro?
O TOTP adiciona uma camada importante de proteção à conta.
Mesmo que alguém descubra sua senha, ainda precisará do segundo fator para concluir o login.
Além disso, o fato de o código ser temporário dificulta seu uso posterior.
Mas isso não significa que a autenticação por aplicativo seja uma proteção perfeita.
É importante continuar utilizando senhas fortes, proteger o próprio celular e manter os métodos de recuperação da conta em segurança.
Authenticator, SMS e internet: qual é a diferença?
Uma diferença importante entre o código de um aplicativo autenticador e um código enviado por SMS é justamente a necessidade de comunicação.
No SMS, o servidor precisa enviar uma mensagem para o seu telefone:
Servidor → operadora → celular
Já no TOTP:
Servidor → calcula o código
Celular → calcula o código
Os dois conseguem chegar ao mesmo resultado sem precisar trocar mensagens naquele momento.
Por isso o aplicativo autenticador pode continuar gerando códigos mesmo quando o telefone está completamente offline.
🎥 Quer ver isso acontecendo na prática?
É exatamente isso que vamos demonstrar no Luizinho Explica.
No vídeo, vamos colocar o conceito à prova: mostrar o código sendo gerado pelo Authenticator, colocar o celular no modo avião e explicar por que o código continua funcionando.
📱 COMO O AUTHENTICATOR FUNCIONA SEM INTERNET?
VÍDEO AINDA EM PRODUÇÃO
Se você chegou ao artigo depois de assistir ao vídeo, agora já sabe o que está acontecendo por trás daquela tela.
E se chegou primeiro pelo artigo, o vídeo mostra toda essa explicação de maneira visual e prática.
Afinal, o Authenticator precisa de internet?
Para gerar o código TOTP, não.
Essa é a resposta curta.
O aplicativo já possui o segredo necessário e utiliza o horário do dispositivo para calcular o código.
A internet pode ser necessária para outras partes do processo, como fazer login no serviço, sincronizar determinadas configurações ou realizar uma transferência/backup, dependendo do aplicativo.
Mas a geração do código TOTP em si não depende de uma conexão ativa com a internet.
A “mágica” é matemática
No final das contas, não existe uma comunicação secreta acontecendo entre o seu celular e o servidor enquanto você olha para o código.
O que existe é algo muito mais interessante:
os dois possuem previamente as mesmas informações e executam o mesmo tipo de cálculo.
É por isso que um celular no modo avião consegue mostrar um código que um servidor do outro lado do mundo consegue reconhecer como válido.
Parece mágica.
Mas é criptografia. 🔐
E talvez essa seja uma das partes mais interessantes da tecnologia: muitas coisas que parecem impossíveis no nosso dia a dia são simplesmente sistemas matemáticos muito bem projetados funcionando silenciosamente em segundo plano.
Luis
Escritor do Disquetinho — salvando bytes que importam.