Por que seu login é um número, não um e-mail
A conta que você não precisa é um número de 128 bits, emitido por uma máquina que, estruturalmente, não consegue abrir seu túnel. Eis por que as duas coisas precisam ser verdadeiras ao mesmo tempo.
Publicado em 5 de setembro de 2026 · Atualizado em 16 de outubro de 2026
A maioria dos aplicativos pede um endereço de e-mail antes mesmo de perguntar o que você realmente veio fazer. A ForestVPN não pede nem e-mail nem senha — você abre e toca em conectar. Se quiser uma assinatura em mais de um dispositivo, você recebe em vez disso um número de 32 caracteres, exibido uma única vez, e isso é todo o sistema de login.
Isso não é uma escolha de estilo. É o que resta depois que dois requisitos colidem, e a parte interessante é qual deles vence.
Onde o login costuma morar
Um botão “Entrar com a Apple” ou “Entrar com o Google” é um redirecionamento para o domínio de outra empresa — appleid.apple.com, accounts.google.com, um locatário *.auth0.com. Em um telefone com caminho aberto até esses hosts, esse redirecionamento é encanamento invisível.
Não podemos supor que esse caminho esteja aberto, porque parte do trabalho deste produto é continuar funcionando em redes que só deixam um dispositivo alcançar uma lista curta e fixa de hosts. Todo o modelo de segurança do nosso próprio proxy de relé é essa lista — três nomes, api., sess. e catalog.fvpn.net, com correspondência exata. Ampliá-la para admitir um provedor de identidade atrás de uma CDN significa admitir um provedor cuja mesma CDN atende a uma grande fatia da internet, o que transforma um relé restrito em um de uso geral. E no iOS, especificamente, a web view de login de um provedor de identidade terceirizado roda fora do processo do aplicativo — uma configuração de proxy no nível do aplicativo não tem como alcançá-la e roteá-la por nada que operamos. O redirecionamento falha exatamente no lugar em que mais precisaria funcionar.
Portanto, o número não é a opção amigável que escolhemos no lugar da familiar. É a opção que continua funcionando sob a restrição que importava mais.
A outra metade: ninguém que tenha o número consegue ver seu tráfego
Dito de outra forma: o número da conta é uma credencial emitida por um serviço que roda no Cloudflare Workers — execução limitada à requisição, sem processo de longa duração, sem socket bruto, um teto de memória por isolate na casa das dezenas de megabytes. Nada disso é uma limitação que contornamos. É o motivo pelo qual esse serviço pode, de fato, ser confiável para guardar o seu direito de uso:
no raw UDP or TCP sockets
no long-lived process — execution is request-scoped
128 MB per isolate
a few MB, compressed, is the entire deployableUma máquina construída assim não consegue encerrar um túnel UDP com estado — não é “ainda não”, é estrutural. Por isso os servidores que realmente carregam seu tráfego são uma frota separada, em uma infraestrutura separada, e os dois lados se encontram através de exatamente uma coisa: um tíquete. Seu dispositivo pede um ao lado do Workers e recebe de volta um valor que é assinado mas não lido — a assinatura é produzida sobre um número que quem assina nunca vê, então o tíquete que você apresenta depois não pode ser rastreado até a requisição que o emitiu. Ele prova qual plano o comprou. Não diz qual dispositivo, e não diz quem é você.
Isso é o que torna o número da conta tão sem graça quanto ele precisa ser. Não existe nenhuma coluna neste sistema que guarde o número da conta ao lado de um servidor de saída ou de um endereço de onde você se conectou — não é “optamos por não olhar”, a coluna simplesmente não existe, e uma verificação de build falha se alguém tentar adicionar uma. Há uma exceção mais estreita e deliberada, e ela é sobre o dispositivo, não sobre o número: enquanto um tíquete está ativo, uma linha registra o hash da chave do seu dispositivo ao lado de um hash da sessão a que ele pertence, o que é o que permite que um tíquete gasto seja debitado da sua franquia e que um dispositivo revogado seja cortado no meio de uma sessão. Essa linha é apagada em cerca de um dia após o fim da sessão, antes disso se ela se resolver rápido, e não tem campo para um servidor de saída ou um endereço — dispositivo e sessão, nada além disso. Se você vinculou um dispositivo a uma conta, essa vinculação é até onde o alcance vai; o número da conta em si nunca toca uma linha de sessão. O serviço que de fato vê seu tráfego nunca chega a saber o número, para começar.
O que isso custa, dito em voz alta, não escondido
Nada disso é de graça. O número é exibido uma única vez e não é armazenado em lugar nenhum do nosso lado; se você o perder sem nenhum dispositivo ainda vinculado a ele, não há nada com que recuperá-lo, porque não existe mais nada que te identifique para recuperá-lo contra isso. Um vínculo pode ser desfeito: um dispositivo pode sair da conta por conta própria, e qualquer outro dispositivo da conta pode removê-lo (uma conta comporta até dez dispositivos; um dispositivo que entrou nos últimos 7 dias não pode remover os mais antigos, e um roteador não pode remover outros dispositivos). O que não se desfaz é perder o número: não existe redefinição de senha, porque ela exigiria uma forma de provar que a solicitação veio do verdadeiro dono da conta, e todo o ponto do design foi nunca coletar nada que pudesse provar isso.
Essa é uma troca real, não uma nota de rodapé, e preferimos que você saiba disso desde o início a descobrir no momento em que isso importa.