O Telegram está testando uma nova versão do bloqueio do tráfego de máscara de desvio sob TLS normal (https).
Antecedentes: As tentativas de bloquear o Telegram ocorrem em diferentes países, a primeira opção de bloqueio foi simples - bloquear endereços IP dos servidores do Telegram.
O telegrama luta com sucesso contra esse ataque, alterando periodicamente o IP a partir do qual está disponível, no entanto, isso causa uma longa conexão inicial ...
Os proxies de meias ficaram disponíveis um pouco mais tarde, mas o protocolo não implica em criptografia, e isso tornou possível simplesmente olhar “dentro” do túnel, determinando que o Telegram estava dentro dele, bloqueando o proxy.
A rodada seguinte foi o lançamento do MTProto Proxy, um servidor proxy Telegram que usa seu protocolo MTProto, mas também teve alguns problemas - o tamanho do pacote é bastante característico e específico, e muitos DPIs começaram a determinar o Telegram após o primeiro bloqueio de acesso ao pacote.
A resposta para esse comportamento foi a introdução de uma nova versão do protocolo MTProto - com tamanho aleatório, agora é mais difícil determinar que o túnel do telegrama está à nossa frente, parte do DPI começou a classificar o tráfego como "outra parte", mas ainda aprendeu a identificar um padrão característico e com alguma probabilidade (não 100%) determinar que o tráfego está relacionado ao telegrama
Agora estamos passando para a próxima etapa (parece final ou pré-final) -
esteganografia .
Esteganografia (do grego. Στεγανός “escondido” + γράφω “eu escrevo”; cartas. “Escrita secreta”) - um método de transmissão ou armazenamento de informações, levando em consideração a confidencialidade do próprio fato de tal transferência (armazenamento).
Em outras palavras, o Telegram agora fingirá ser tráfego TLS (https) regular.
Por que fingir?
A resposta está na superfície - atualmente, a maior parte do tráfego é TLS (https). Ao usar este protocolo, é isso que o seu provedor ou DPI verá:
- Seu IP
- Servidor IP
- Domínio de conexão (o URL não será exibido)
Além disso, o trabalho ativo está em andamento no último item para removê-lo e, além de dois IPs, havia apenas um túnel criptografado com conteúdo desconhecido.
Nessa situação, todos os protocolos fora do padrão começam a atrair atenção adicional e a solução para esse problema é uma coisa - se você se parece com TLS (https), há menos perguntas.
Implementação técnica
Ao usar o novo protocolo, o fluxo MTProto é agrupado em HTTPS padrão (as primeiras mensagens de negociação de túnel) nas quais o domínio (falso) está sendo transferido. Após a negociação do protocolo MTProto - o Fake-TLS não é usado, o tráfego começa a seguir o protocolo MTProto usual com um comprimento aleatório (chaves dd).
Para referência: o Telegram usa 3 tipos de chaves para o MTProto Proxy:
- Chaves regulares (facilmente determinadas por DPI)
- As duas primeiras letras - dd - comprimento da mensagem aleatória (o DPI pode determinar o protocolo apenas pelos primeiros pacotes de negociação de conexão - parece https / TLS normal)
- As duas primeiras letras - ee - TLS falso + tamanho da mensagem aleatória (o DPI não pode determinar o protocolo, a primeira mensagem e todas as subsequentes se parecem com HTTPS / TLS)
Onde tentar?
Já existem dois servidores proxy compatíveis com o novo padrão
(ainda não há servidor proxy oficial, embora tenha adicionado suporte para chaves dd há muito tempo)Suporte ao modo Proxy TLS falso:
- Python github.com/alexbers/mtprotoproxy
- Erlang github.com/seriyps/mtproto_proxy/tree/fake-tls
Observe: no momento da redação deste artigo, o artigo - a funcionalidade tls falsa é experimental, portanto, você precisa usar as versões Beta ou Alpha do software (proxies e clientes)Quais clientes suportam o novo modo?
Versões beta do Telegram Desktop, Telegram iOS e versão estável no Android.
Como tentar?
- Por exemplo, usaremos um proxy no Python:
- Instale o Proxy:
git clone https://github.com/alexbers/mtprotoproxy.git; cd mtprotoproxy
- :
python3 mtprotoproxy.py
- (experimental) — :
tg: tg://proxy?server=8.8.8.8&port=443&secret=7gAAAAAAAAAAAAAAAAAAAABnb29nbGUuY29t (experimental)
- — , Fake TLS.
?
Google.com , DPI HTTPS Google.com IP — , , .
! (IP) Google.com
Fake TLS — ?
— HTTPS DPI :
- IP
( eSNI).Fake TLS , , , Google - Google — , , - - Google HTTPS/TLS .
?
, — — ( ). , HTTPS . ? — , .
— + () — , — MTProto.
eSNI ( ) — .
?
, Telegram , https/TLS WebSocket — .
MTProto — , Telegram — .
, — () , .
— 443 ( HTTPS) ( dd ee), ee dd , .
— , eSNI — .