Uma Descrição Técnica do Psiphon
03/12/2014 - 4 min de leitura
Atualizado: 04/06/2021
Eis uma atualização para responder a duas questões recentes: em termos simples, o que é o Psiphon e em que medida difere de um serviço VPN; e o que mudou desde que o documento de conceção técnica foi atualizado pela última vez.
O Psiphon 3 é uma rede gerida centralmente e geograficamente diversificada de milhares de servidores proxy. A maior parte da nossa infraestrutura está alojada em fornecedores de nuvem. O Psiphon 3 possui uma arquitetura de "um salto" com encriptação segura de ligação entre clientes e servidores. Disponibilizamos clientes para as plataformas mais populares: Windows, Android e iOS (em alfa).
O Psiphon é de código aberto. O nosso serviço oferece uma rigorosa política de privacidade; não existem contas de utilizador e os endereços de rede dos utilizadores não são registados.
O Psiphon difere dos serviços VPN padrão de algumas formas essenciais:
- Implementamos estratégias para distribuir subconjuntos de servidores aos utilizadores, com o objetivo de fornecer a cada utilizador um pequeno grupo de servidores a que possa aceder, sem revelar toda a rede a um único utilizador. Para atingir este objetivo, o tamanho da nossa rede — e, em particular, a diversidade dos nossos endereços de rede — não é meramente uma função da nossa carga de tráfego.
- Utilizamos a ofuscação de protocolos para contornar o bloqueio por DPI.
O documento de conceção técnica do Psiphon está desatualizado e o que se segue é um resumo muito breve das principais alterações técnicas que implementámos desde o lançamento do projeto em 2011.
- Adicionámos o protocolo SSH ofuscado para mitigar a identificação por impressões digitais de DPI. Este protocolo de aparência totalmente aleatória é implementado com uma chave de ofuscação exclusiva por servidor Psiphon.
- Adicionámos um prefixo HTTP opcional ao nosso protocolo para mitigar a inclusão em listas de permissões de tráfego HTTP com base em DPI. Este prefixo simples é suficiente para que sistemas de DPI baseados em expressões regulares (nDPI e l7-filter) classifiquem o tráfego do Psiphon como HTTP; e foi suficiente para superar um adversário real na altura em que o implementámos.
- Adicionámos listas remotas de servidores para complementar os conceitos de servidores integrados e de descoberta. Enquanto a descoberta acontece apenas quando existe ligação a um servidor existente, as listas remotas de servidores podem ser descarregadas mesmo quando todos os servidores estão bloqueados. As listas remotas de servidores são distribuídas no S3 e acedidas através de https://s3.amazonaws.com sem um nome de bucket distintivo no URL. Desta forma, é difícil para um adversário bloquear as nossas listas remotas de servidores sem bloquear a totalidade do S3 ou implementar análise de tráfego HTTPS.
- O e-mail é agora um dos principais mecanismos de propagação de clientes. Temos um respondedor automático que devolve hiperligações e anexos para clientes Psiphon personalizados de patrocinadores/canais, dependendo do endereço de e-mail para o qual os utilizadores enviam a mensagem.
- Lançámos um cliente Android em 2012. A primeira versão incluía um navegador integrado baseado no WebView do Android. Em 2012/2013, adicionámos suporte para o tunelamento de todo o dispositivo, que canaliza todas as aplicações Android através do Psiphon. Temos um modo para todo o dispositivo com iptables (para dispositivos Android 2.2+ com root); e um modo para todo o dispositivo que utiliza o VpnService do Android com o tun2socks (para qualquer dispositivo Android 4+). As funcionalidades adicionais acrescentadas incluem a seleção da região de saída e o encadeamento de proxies.
- Temos agora um cliente iOS em testes alfa. Esta aplicação tem um navegador integrado.
- O nosso mecanismo de feedback na aplicação envia-nos mensagens e diagnósticos opcionais dos utilizadores. Este sistema ajudou-nos a depurar muitos problemas de plataforma e problemas de bloqueio.
- Alterações aos algoritmos de descoberta: os nossos algoritmos de descoberta evoluem como parte de um processo contínuo de otimização da nossa rede. As principais alterações incluem a partilha de servidores de descoberta entre canais de propagação; e a adição da hora do dia como uma dimensão.
- Otimizações aos algoritmos de ligação: agora, os nossos clientes iniciam ligações a muitos servidores ao mesmo tempo ao ligarem-se, mantendo a "melhor" ligação. Isto ajuda no equilíbrio de carga, bem como a reduzir o tempo de espera do utilizador, uma vez que servidores bloqueados individualmente não interrompem a sequência de ligação.
- A atualização automática do cliente foi melhorada para utilizar transferências incrementais e sites de transferência fora de banda (autenticados com assinaturas digitais). Estas alterações tornaram mais provável a distribuição de um novo cliente durante períodos de bloqueio.