Como funciona

Como o ForestVPN funciona

Uma VPN muda sua confiança da sua rede para um servidor operado por outra pessoa, então você deve poder ver como ele funciona. Esta página acompanha um toque em Conectar, do ticket ao túnel, e diz com clareza o que nós guardamos.

Narrado em inglês, com legendas em português

Abrir o arquivo de vídeo (MP4, 32 MB). Use se o YouTube estiver bloqueado ou lento na sua conexão.

  1. Conectado não é o mesmo que funcionando
  2. O que uma VPN muda e o que não muda
  3. O que acontece quando você toca em Conectar
  4. Dentro do túnel
  5. Vários caminhos, um túnel
  6. Dois programas, um ticket assinado
  7. Seus dispositivos, roteadores e TVs
  8. O que ela não faz e por onde começar
Nesta página (10)

A versão curta

  • Seu tráfego é selado no seu dispositivo e sai por um servidor que nós operamos, o exit. Entre as partes do ForestVPN, o exit é a única que vê para onde vai o seu tráfego.
  • Antes de você se conectar, seu dispositivo recebe um ticket assinado. O ticket diz qual plano você tem, e o serviço que o confere funciona separado do que guarda a sua conta.
  • O app observa se os dados realmente fluem e troca de caminho sozinho quando deixam de fluir. Você só vê o resultado.
  • Uma linha liga seu dispositivo, e qualquer conta vinculada, a cada sessão que ele paga, para medição. Ela é apagada uma hora após a sessão ser liquidada, ou até 17 dias depois no caso de um ticket nunca usado. Esta página a mostra ao lado de todo o resto.

O que uma VPN muda, e o que não muda

Uma VPN é uma transferência de confiança. Sem ela, você confia à sua rede e ao seu provedor de internet a visão de para onde vai o seu tráfego. Com ela, você passa a confiar na VPN. Por isso as perguntas úteis são as mesmas para qualquer VPN: onde o seu tráfego termina, o que sabem os serviços que ficam na frente dele e o que o app faz no seu dispositivo? Esta página responde nessa ordem, com os detalhes por trás de cada resposta.

Sem VPN, seu Wi-Fi e seu provedor de internet podem ver com quais servidores seu dispositivo conversa, e todo site que você acessa vê o endereço que sua rede lhe deu. Com o ForestVPN, eles veem apenas tráfego criptografado para os nossos servidores. Esse servidor, o exit, é por onde seu tráfego sai para a internet.

Sem o ForestVPNCom o ForestVPN
Sua rede Wi-FiOs servidores com que você conversaTráfego criptografado para os nossos servidores
Seu provedor de internetOs servidores com que você conversaTráfego criptografado para os nossos servidores
Os sites que você visitaO endereço que sua rede lhe deuO endereço do exit
O exit do ForestVPNNão participaOs sites que você visita e o endereço de onde você se conectou
Quem pode ver o quê, com e sem o ForestVPN.

Isso desloca a confiança; não a elimina. O exit vê os sites que você visita e o endereço de onde você se conectou, e os sites que você visita veem o endereço do exit em vez do seu. Uma VPN não deixa você anônimo: ela muda quem pode ver o seu tráfego.

O que uma VPN não toca é tudo o que acontece depois do exit. Os sites em que você entra continuam sabendo com qual conta você entra, e um site que rastreia você com cookies continua rastreando. O túnel protege o caminho, não o destino.

O que acontece quando você toca em Conectar

Você toca em Conectar. Seu dispositivo pede permissão para usar um servidor, apresenta um ticket que carrega dois fatos (a chave de qual plano o assinou e a qual quinzena essa chave pertence), é encaminhado a um servidor e constrói um túnel criptografado até ele. Depois, confere que os dados realmente fluem nos dois sentidos antes de dizer que você está protegido.

Login

Seu aparelho

Lista

Sessão

Saída

  1. Seu aparelho > Login: 1. Pedir tickets. Horas antes, assinado pela chave do dispositivo
  2. Login > Seu aparelho: 2. Tickets assinados às cegas. Quem assina nunca vê o ticket
  3. Lista > Seu aparelho: 3. Lista de servidores assinada. Conferida no seu dispositivo
  4. Seu aparelho > Sessão: 4. Ticket, sua chave de sessão, lugar
  5. Sessão > Saída: 5. Instalar este peer de uma sessão
  6. Sessão > Seu aparelho: 6. Endereço do exit e caminhos
  7. Seu aparelho > Saída: 7. Handshake, depois rodada de prova
O ticket carrega o seu plano, assinado às cegas.

O ticket é a parte interessante. Horas antes, em uma solicitação separada, seu dispositivo pede tickets ao nosso serviço de login. O serviço assina cada um às cegas: a assinatura é feita sobre um valor que ele nunca vê, então a assinatura do ticket que você apresenta depois não aponta de volta para a solicitação que o criou. A única exceção é a linha de medição descrita mais adiante, que liga seu dispositivo a cada sessão que ele paga.

Repare no que acontece antes de um único byte seu se mover. Primeiro vem a permissão: o ticket, conferido em uma fração de segundo. Depois vem o posicionamento: uma lista de servidores assinada, que seu próprio dispositivo verifica, e um serviço de sessão que escolhe o exit. Por último vem a prova: o app não diz que você está protegido quando o handshake termina, mas quando pacotes de teste atravessaram o túnel e voltaram.

Dois detalhes valem ser conhecidos. Os tickets são renovados pela rede de base, nunca por um exit, então o serviço de login nunca é alcançado pelo túnel que ele ajuda a construir. E o app alcança nossos serviços por várias rotas e usa a primeira que responder, então um caminho ruim até um deles não precisa impedir você de se conectar.

Passo a passo, para engenheiros
  1. Uma chave de máquina desde a primeira abertura. Seu dispositivo gera uma chave de máquina Ed25519 na primeira vez que o app roda, antes de qualquer conta, e a guarda no chaveiro ou keystore do sistema. A conta é opcional: um número aleatório de 128 bits, exibido como 32 caracteres.
  2. Tickets, horas antes. O dispositivo pede tickets ao emissor em uma solicitação assinada pela chave de máquina. O emissor confere suspensão, a contagem diária de tickets, o limite de dispositivos e o direito de uso, e então assina às cegas um valor que nunca vê (RFC 9474: RSA-2048, RSASSA-PSS, SHA-384). Cada ticket se compromete com o hash de uma chave pública de sessão nova e com um nonce de 16 bytes. Há uma chave de assinatura por plano e por período de 14 dias.
  3. Fora do túnel. A renovação de tickets sai pela rede de base, nunca por um exit, e não há retorno para dentro do túnel.
  4. Uma lista de servidores assinada. O dispositivo busca a lista de servidores, assinada com Ed25519 e conferida contra uma chave fixada antes de ser usada. O app alcança a lista e nossos outros serviços por várias rotas e usa a primeira que responder.
  5. A chave de sessão do ticket. O dispositivo envia ao serviço de sessão o ticket, a chave pública de sessão X25519 com a qual se comprometeu quando o ticket foi emitido e o lugar que você quer. O serviço de sessão confere o ticket contra a chave pública do período, uma verificação que leva bem menos de um milissegundo, escolhe o exit e seus caminhos, manda o exit instalar um peer e responde.
  6. Um peer, uma sessão. O exit instala um peer para essa chave de uma única sessão, com um endereço emprestado de 100.64.0.0/10 que é reutilizado entre sessões, e um bit de plano. Ele não recebe conta, chave de máquina nem nome durável.
  7. O handshake. O dispositivo se conecta ao exit com o handshake Noise_IKpsk2 sem modificações, por UDP. Se a primeira tentativa não tiver resposta em uma fração de segundo, ele também tenta outros caminhos dentro da mesma sessão. Trocar de caminho não exige um segundo ticket.
  8. Uma rodada de prova. Um handshake não é prova. Depois dele, o dispositivo envia sondas pelo túnel e conta as respostas, e só uma rodada aprovada muda o status para Working. Em algumas redes o handshake passa enquanto os dados são descartados. Por isso o handshake sozinho não é prova.
  9. Um só conjunto de decisões. As decisões acima são escritas uma única vez, em código Rust compartilhado, e chegam a cada app pela sua camada nativa. Cada app guarda só o que é seu: a integração com o sistema operacional, as telas e a loja.
  10. Mesmo ticket, mesma sessão. Se o mesmo ticket e a mesma chave de sessão voltarem, o serviço de sessão devolve a mesma sessão durante a vida do ticket, então suspender e retomar, passar do Wi-Fi para o celular e repetir uma conexão custam um só ticket.

Dentro do túnel

Tudo o que você envia é selado no seu dispositivo com chaves que só o seu dispositivo e o exit conhecem. Se a sua rede mudar, o mesmo túnel continua.

  1. Datagrama UDP. Os primeiros bytes são mascarados e variam a cada conexão. Sua rede vê este anel.
  2. Quadro selado. Criptografado com chaves do handshake. Só o seu dispositivo e o exit conseguem abri-lo.
  3. Quadro interno. Carrega um pacote, com um cabeçalho curto próprio.
  4. Seu pacote. O que o seu app enviou. O exit o lê.
Quem pode ler cada camada: sua rede vê o anel externo, o exit lê todos, e nossos serviços de login e de sessão nunca carregam o seu tráfego.

Leia a figura de fora para dentro. Sua rede vê apenas o datagrama externo: um pacote de bytes criptografados indo para um dos nossos servidores, cujos primeiros bytes são mascarados e cujo tamanho varia. Dentro dele, o quadro selado só pode ser aberto com as chaves feitas no handshake, que só o seu dispositivo e o exit têm. Dentro do quadro está o seu próprio pacote, exatamente como o seu app o enviou.

O protocolo do túnel se chama Quantum. Seu handshake é o Noise_IKpsk2, sem modificações, com X25519, ChaCha20-Poly1305 e BLAKE2s. Deixamos o handshake em paz de propósito: a análise publicada sobre ele continua valendo. O que acrescentamos fica ao redor. O tamanho dos pacotes e os bytes de cabeçalho variam a cada conexão, e o túnel lida com a troca de rede e com o caminho mudando por baixo dele.

O túnel pertence à sessão, não à rede em que você está. Quando você sai do Wi-Fi para o celular, a chave de sessão continua a mesma e os pacotes passam a chegar de um novo endereço, então o mesmo túnel continua. Não prometemos que nada se perde: uma troca pode levar um instante, e a tela de status mostra em que estado você está.

Seu tráfego termina em servidores que nós operamos, não em uma função na nuvem. Um serviço de nuvem não consegue carregar um túnel, então os serviços que distribuem tickets e listas de servidores nunca carregam um pacote seu.

Mais sobre o túnel, para engenheiros
  • Seu endereço dentro do túnel é emprestado durante a sessão, de um conjunto que o exit reutiliza.
  • O túnel está preso à chave de sessão, não a um caminho de rede, então passar do Wi-Fi para o celular não muda a sessão. O app também pode mover uma conexão para uma nova porta sem derrubá-la.
  • Ele é construído sobre um núcleo em Rust, de licença aberta, e o mesmo núcleo roda em todas as plataformas.

Os números que medimos, com suas datas e configurações de teste, estão na página do protocolo.

Um túnel, vários caminhos

Se um caminho até o servidor ficar lento ou parar de carregar dados, o ForestVPN tenta outro sozinho e fica com o que de fato carrega dados. Você não precisa escolher.

Por que mais de um caminho? As redes são diferentes. Algumas lidam bem com UDP e outras mal, e uma rede que está boa por horas pode mudar. Uma escolha fixa está errada em algum lugar, então o app mede. Para cada rede de onde já se conectou, ele guarda uma pequena anotação no seu dispositivo, arquivada sob um nome com hash, dizendo se a rota de backup foi necessária ali. Ele só recorre à rota de backup numa rede em que a conexão direta falhou, agora ou no último dia. No Free a rota de backup vem com uma franquia mensal, e o Premium inclui mais.

Chamamos de caminho cada forma de levar os mesmos pacotes criptografados até o mesmo exit. O app sempre tenta primeiro o caminho direto, por UDP, e numa rede saudável nada mais é contatado. Se o caminho direto parar de carregar dados, o app também tenta os outros caminhos que tem, dentro da mesma sessão: TCP, às vezes um servidor extra nosso escolhido automaticamente e a rota de backup, que leva os mesmos pacotes como tráfego web comum por uma rede de distribuição de conteúdo. A rota de backup é um recurso de reserva, não um caminho mais rápido, e é medida porque custa mais.

Uma sessão

  • Direto, por UDPTentado primeiro
  • TCPUsado só quando preciso
  • Um servidor extra nossoUsado só quando preciso
  • Rota de backupUsado só quando preciso
Trocar de caminho não troca a sessão.

Trocar de caminho não troca a sessão: o ticket, as chaves e o exit continuam os mesmos.

O app decide por dados, não por handshakes. Um caminho só conta como saudável enquanto entrega, e a tela de status só mostra Working quando os dados fluem nos dois sentidos.

Numa rede saudável

  1. Conectar direto
  2. Rodada de prova
  3. Funcionando

Quando o caminho direto para de carregar dados

  1. Sem resposta, ou sem dados
  2. Tentar os outros caminhos
  3. Funcionando
Escolhendo um caminho: vence o primeiro que carrega dados.

Mais sobre o status da conexão e a rota de backup.

Rotas Smart

O Smart escolhe uma rota que combina com a sua rede, continua medindo enquanto você usa e passa sozinho para uma melhor quando ela aparece. Um local que você escolhe por conta própria fica onde você o colocou.

  1. Rota diretaParou de carregar dados

  2. Um servidor extra nossoCarregando dados

    O servidor extra carrega os dados, então a sessão passa para ele.

    A sessão passa para cá

  3. Rota de backupMantida em reserva

A sessão passa para o caminho que está carregando dados, e o caminho antigo é liberado depois.

Um caminho é uma forma de levar seus pacotes até o exit: direto, TCP, por um servidor extra nosso ou pela rota de backup. O Smart compara os caminhos disponíveis para o lugar que você pediu e troca entre eles dentro da sessão que você já tem, sem novo ticket e sem novo handshake.

Do mais barato para nós ao mais caro

  1. Direto, UDP
  2. Direto, TCP
  3. Servidor extra
  4. Rota de backup
Os caminhos mais baratos vencem, a menos que estejam quebrados ou muito piores.

Três coisas que o Smart não faz. Ele não move um local que você escolheu por conta própria. Ele não promete uma conexão mais rápida: promete que continua verificando e que só troca quando outra rota é melhor para a sua rede. E ele não precisa de você: não há nada para ligar nem para escolher, embora a configuração de roteamento sensível à rede desligue essas decisões se você preferir.

As rotas Smart estão hoje no Windows, no Linux, no app do Mac do nosso site, na linha de comando e em roteadores OpenWrt. iPhone, iPad, Apple TV, Android e a versão da Mac App Store recebem com uma atualização do app.

Para engenheiros: como o motor de rotas é construído

Nossos próprios servidores medem os enlaces entre si o tempo todo, a uma taxa fixa e pequena que não cresce com o número de usuários. O dispositivo e os servidores compartilham uma só função de pontuação. Hoje o serviço de sessão apenas compara essa pontuação com a escolha atual; os caminhos que ele oferece ainda não são montados a partir dela.

Nossos servidores

Serviço de sessão

Seu dispositivo

Serviço de relatórios

  1. Nossos servidores > Serviço de sessão: Medem os enlaces entre si
  2. Serviço de sessão > Seu dispositivo: Uma lista de rotas assinada
  3. Seu dispositivo: Testa as rotas dentro da sessão
  4. Seu dispositivo > Serviço de relatórios: Resultado, sem identidade. Guardado só como contagens diárias
Como o motor foi desenhado. No app isso aparece como uma coisa só: ele continua verificando.

O dispositivo faz essa lista curta competir dentro da sessão aberta e fica com a rota que carrega dados. Os caminhos mais baratos vencem, mas só dentro de um filtro de qualidade: a rede de distribuição de conteúdo é um filtro, não um peso, e um lugar é classificado pela sua própria latência, nunca pelo caminho que o carregou.

Dois programas, um ticket assinado

Por que dividir o trabalho? Porque as duas tarefas exigem conhecimentos diferentes. Conferir que você tem um plano exige conhecer o seu dispositivo. Escolher e abrir uma sessão exige conhecer um lugar e um endereço. Se um só programa fizesse as duas coisas, ele guardaria os dois tipos de conhecimento juntos. Por isso são dois programas, implantados separadamente. O ticket passa entre eles na conexão, e os dados que uma sessão usou voltam quando ela é liquidada, para poder ser cobrada: essa é a linha de medição descrita a seguir.

A parte que conhece o seu dispositivo e o seu plano e a parte que conhece o seu servidor são programas separados. O serviço de sessão é implantado sem nenhum vínculo com o nosso banco de dados de contas, e o ticket entre eles é assinado às cegas. Uma linha liga seu dispositivo, e qualquer conta vinculada, a cada sessão que ele paga, para medir dados e cortar um dispositivo revogado. Ela é apagada uma hora após a sessão ser liquidada, ou até 17 dias depois no caso de um ticket nunca usado.

O ticket

  1. Serviço de login Conhece o seu dispositivo e o seu plano
  2. Tíquete Assinado às cegas
  3. Serviço de sessão e exits Conhecem um ticket, um lugar, uma chave de uma sessão e o endereço de onde você se conecta

A linha de medição

  1. Serviço de login Guarda uma linha por sessão
  2. Dispositivo e sessão Liga seu dispositivo, e qualquer conta vinculada, à sessão
  3. Apagada Uma hora após a liquidação, ou até 17 dias para um ticket não usado
Dois programas, um ticket assinado.

O serviço de login guarda sua conta, seus dispositivos e seu plano, e vê o endereço de onde vem cada solicitação de ticket. Ele nunca fica sabendo qual exit você recebeu nem aonde você foi. O serviço de sessão vê o endereço de onde você se conecta, o local que você escolheu e uma chave de sessão de uso único. O registro da sessão se apaga sozinho quando ela expira, e seu endereço de origem nunca é gravado nele.

Seu dispositivoSeu planoO servidor que você usaSeu endereçoSites que você visita
Host da lista de servidoresNão recebeNão recebeNão recebeRecebeNão recebe
Serviço de loginRecebeRecebeNão recebeRecebeNão recebe
Serviço de sessãoNão recebeRecebeRecebeRecebeNão recebe
SaídaNão recebeRecebe parteRecebeRecebeRecebe
O que cada parte recebe quando você pega tickets e se conecta.

A grade lista o que cada parte recebe no momento da conexão, o que não é o mesmo que uma promessa sobre o que poderia ser deduzido combinando registros. Por isso a linha de medição é dita em palavras e desenhada na figura, em vez de ficar de fora.

Para engenheiros: assinaturas cegas e três chaves
  • Assinaturas cegas. Os tickets usam assinaturas RSA cegas da RFC 9474. O plano é codificado em qual chave assinou o ticket, não em um campo, e no máximo seis chaves ficam ativas ao mesmo tempo.
  • Garantido na compilação. A configuração de implantação do serviço de sessão não tem vínculo com o banco de dados de contas, e uma verificação na nossa compilação falha se alguém adicionar um.
  • Três chaves com vidas diferentes. A chave de máquina (a metade pública é conhecida pelo serviço de login; a privada nunca sai do dispositivo), o número da conta (conhecido pelo serviço de login, opcional) e a chave de sessão (uma por ticket; o serviço de sessão e o exit a veem na conexão, o serviço de login em outro momento; ela desaparece quando a sessão termina).

O que guardamos, e por quanto tempo

Não existe em nossos sistemas nenhuma coluna para os sites que você visita ou os nomes que você consulta. Qual exit uma sessão usou é apagado quando a sessão termina. O pagamento é tratado pela App Store, pelo Google Play ou pelo processador que você escolher, e nós nunca vemos o número de um cartão.

Os principais registros e quanto tempo cada um vive, em uma só imagem; a política de privacidade lista todos. Os relatórios de rotas, que nos ajudam a escolher rotas melhores para todos em uma rede, são agregados sem dispositivo, conta, sessão nem exit, publicados apenas para dias com pelo menos 10 dispositivos.

  • A linha de medição, depois que a sessão é liquidada1 hora
  • A mesma linha, para um ticket nunca usadoAté cerca de 17 dias
  • Um relatório de suporte que você escolheu enviar72 horas
  • Contagens de dados e de conexões por dia31 dias
  • País e rede das solicitações de ticket, sob pseudônimo3 meses
  • Totais mensais e registros de dispositivo, conta e cobrançaPor tempo indeterminado
Quanto tempo cada registro vive. A escala é logarítmica, então uma hora e meses cabem na mesma imagem.

Mais duas coisas pertencem à mesma imagem. O app não contém SDK de análise, SDK de atribuição nem identificador de publicidade. E se você escolher enviar um relatório de diagnóstico, ele mostra o conteúdo antes, é enviado sem a identidade do seu dispositivo em um horário aleatório na hora seguinte, nunca pela conexão que descreve, e é apagado após 72 horas.

Todos os registros estão listados na política de privacidade, e a versão curta está na página de segurança.

Seus dispositivos, roteadores e TVs

Um número de conta funciona em até dez dispositivos. Os dispositivos da sua conta se alcançam pelo nome, e um computador que fica em casa pode ser um exit para os outros. Um iPhone pode usar um exit, mas ainda não pode ser um. Os roteadores cobrem os dispositivos que não rodam um app, e TVs e roteadores entram na conta sem teclado.

Seu número de conta

  • CelularTúnel para os nossos servidores
  • NotebookTúnel para os nossos servidores
  • TVTúnel para os nossos servidores
  • RoteadorTúnel para os nossos servidores
  • Computador de casaDe dispositivo a dispositivoUsar como exit
Um número de conta, até dez dispositivos. Linhas contínuas são túneis para os nossos servidores, linhas tracejadas vão de dispositivo a dispositivo.

Se o exit de casa que você está usando ficar offline, o app move você para outro dos seus exits e avisa. Se todos os seus exits falharem, o tráfego continua bloqueado e o app pede que você toque.

Os roteadores servem para os dispositivos que não rodam um app, como um console de jogos ou uma smart TV. Coloque o ForestVPN no roteador e tudo o que está atrás dele, ou só os dispositivos e apps que você escolher, passa pelo túnel. O processador do roteador é o limite de velocidade, então a página de roteadores diz o que medimos e em qual hardware. O roteador se vincula à sua conta com um código que ele mesmo mostra, e as TVs entram sem teclado.

O que este desenho não faz

Nada disso torna o desenho à prova de falhas, e preferimos dizer onde ele termina a deixar um diagrama sugerir o contrário. Estes são os principais; a política de privacidade lista todos.

Limites, ditos uma vez

  • Uma linha liga seu dispositivo, e qualquer conta vinculada, a cada sessão que ele paga, até uma hora depois de a sessão ser liquidada.
  • O serviço de login e o exit veem cada um a sua chave de sessão, em momentos diferentes. Juntas, essas duas visões poderiam reunir uma sessão; não guardamos nenhum registro que faça isso, e nenhum dos dois consegue sozinho.
  • O exit vê os sites que você visita e o endereço de onde você se conectou. É o ponto em que você confia em nós.
  • Uma VPN não deixa você anônimo.
  • Nenhum kill switch é absoluto. O que cada sistema permite varia, e em dispositivos Apple alguns serviços do sistema ainda podem enviar tráfego fora do túnel.
  • A assinatura cega não esconde que uma solicitação de ticket e uma conexão podem vir do mesmo endereço de rede. Por isso os tickets são renovados em horários aleatórios, antes de você se conectar.
  • O grupo de onde um ticket poderia ter vindo é todo mundo que tem um ticket assinado pela mesma chave de plano na mesma quinzena, não todos os nossos usuários.
  • Os relatórios de rotas são agregados, não um registro de nenhum dispositivo em particular.

Perguntas

O ForestVPN consegue ver quais sites eu visito?

O servidor exit por onde seu tráfego passa cuida de para onde ele vai, como o exit de qualquer VPN. Não existe em nossos sistemas nenhuma coluna para os sites que você visita ou os nomes que você consulta.

Preciso de uma conta para usar o ForestVPN?

Não. O Free não exige nada: conecte sem conta. Quando você quiser uma assinatura nos seus outros dispositivos, sua conta é um número aleatório de 32 caracteres, sem e-mail, sem senha e sem nome.

O que significa Working no app?

Working só aparece quando os dados fluem nos dois sentidos. Depois do handshake, o app envia pacotes de teste pelo túnel e espera as respostas.

O que acontece quando a rota direta para de carregar dados?

O app tenta outros caminhos dentro da mesma sessão: outro transporte, um servidor extra nosso ou a rota de backup. Ele fica com o que carrega dados, e a sessão, o ticket e o exit continuam os mesmos.

Ler a transcrição

Voltar ao topo

Pergunte qualquer coisa