π§ΈXMPP Protocol
Overview
Este paper fornece uma visΓ£o geral do protocolo XMPP (Extensible Messaging and Presence Protocol), com foco em seus aspectos de descentralizaΓ§Γ£o, privacidade e anonimato.
Abordarei como o protocolo funciona, RFCs, ExtensΓ΅es (XEP) e terminologias.
Apresentarei um guia prΓ‘tico para a criaΓ§Γ£o de uma conta e configuraΓ§Γ£o do cliente Gajim com OMEMO e anonimizaΓ§Γ£o via rede Tor.
SumΓ‘rio - XMPP
O que Γ© XMPP
RFCs & Extensions (XEP)
RFCs
XEPs
Como o XMPP funciona
Ideia Central
Pontos Positivos do XMPP (em questΓ΅es de privacidade)
Descentralizado/S2S
Jabber ID
Sem InformaΓ§Γ΅es
ConexΓ£o via Tor
Baseado em XML
Hands On (Chega de teoria)
OMEMO
OTR
CLIENTs
Instalando e configurando o Gajim
Criando a conta
Voltando ao Gajimβ¦
OMEMO POR PADRΓO
Feito!
O que Γ© XMPP
O protocolo XMPP, inicialmente chamado de Jabber, foi iniciado em 1999 e tinha como principal objetivo criar uma alternativa de comunicaΓ§Γ£o open-source e federada/descentralizada. Com o tempo, o protocolo Jabber foi amadurecendo junto com a comunidade e logo foi padronizado, tornando-se XMPP, que Γ© como o conhecemos hoje.
VocΓͺ pode ver essa linha do tempo aqui -> XMPP History
RFCs & Extensions (XEP)
Como expliquei anteriormente, com o tempo o protocolo amadureceu e foi padronizado, nascendo assim as RFCs, que sΓ£o documentos de padronizaΓ§Γ£o de protocolos.
RFCs (documentos de padronizaΓ§Γ£o do protocolo)
As RFCs principais do protocolo XMPP sΓ£o:
XMPP Core
Define o nΓΊcleo do protocolo, incluindo streams XML, autenticaΓ§Γ£o SASL, estabelecimento de sessΓ£o e mecanismos de comunicaΓ§Γ£o bΓ‘sicos.
XMPP Instant Messaging and Presence
Especifica as funcionalidades bΓ‘sicas de mensagens instantΓ’neas e presenΓ§a (online, offline, ocupado, etc.).
XMPP Address Format
Padroniza o formato do JID (Jabber ID), definindo a estrutura usuΓ‘rio@domΓnio/recurso.
Use of TLS in XMPP
Especifica o uso obrigatΓ³rio do TLS para criptografia de todas as conexΓ΅es, garantindo seguranΓ§a na comunicaΓ§Γ£o.
XMPP over WebSocket
Define como XMPP pode ser transportado sobre WebSockets, facilitando sua integraΓ§Γ£o com aplicaΓ§Γ΅es web modernas.
Extensions (XEP)
O protocolo XMPP permite a adiΓ§Γ£o de extensΓ΅es, que sΓ£o conhecidas como: XEPs (XMPP Extension Protocol).
Os XEP nos permitem
Adicionar criptografia do lado do cliente (E2EE)
Chamadas de voz e vΓdeo
Compartilhamento de arquivos
Descobrir os recursos que o servidor disponibiliza
Salas em grupo (MUC)
E uma infinidade de outras coisasβ¦
Algumas extensΓ΅es XEP bem conhecidas sΓ£o:
HTTP File Upload
Permite o compartilhamento de arquivos mesmo quando o destinatΓ‘rio estΓ‘ offline.
Service Discovery
Permite que clientes descubram os recursos e extensΓ΅es suportados por um servidor ou outro cliente.
Existem diversos outros XEP, basta verificar -> xmpp.org/extensions
Como o XMPP funciona
Ideia Central
O XMPP e sua ideia central:
X β eXtensible:Feito para se adaptar a mudanΓ§as ao longo do tempo.M β Messaging:Mensagens instantΓ’neas, rΓ‘pidas e eficientes entre os clientes.P β Presence:A presenΓ§a de uma entidade no servidor: Online, Offline, Ocupado etc. Indica se vocΓͺ estΓ‘ pronto para receber uma mensagem ou nΓ£o.P β Protocol:Γ um protocolo extensΓvel, com conjunto de padrΓ΅es definidos, que permite a comunicaΓ§Γ£o entre servidores e clientes.
Pontos Positivos do XMPP (em questΓ΅es de privacidade)
Descentralizado/S2S
O protocolo XMPP Γ© descentralizado por padrΓ£o
VocΓͺ pode rodar seu prΓ³prio servidor na sua casa, ele nΓ£o depende de um
servidor centralΓΊnico.A principal vantagem da descentralizaΓ§Γ£o Γ© a liberdade de escolha do usuΓ‘rio, tendo em vista que o usuΓ‘rio pode criar seu prΓ³prio servidor (se ele tiver experiΓͺncia), ou usar servidores seguros/privados (o que torna o uso muito mais simples).
Os servidores funcionam em um modo chamado server-to-server (S2S), ou seja, os servidores se comunicam entre si, desde que ambos estejam rodando e aceitando comunicaΓ§Γ΅es via XMPP.
Isso significa que o usuΓ‘rio pode criar um servidor em casa! Se esse servidor rodar o protocolo XMPP, ele pode se comunicar com todos os outros!
Vantagens de ter seu prΓ³prio servidor
VocΓͺ gerencia seu servidor (quem pode se comunicar ou o que, E2EE e assim por diante)
VocΓͺ gerencia sua privacidade (quem pode te enviar mensagem, o que as pessoas podem ver)
VocΓͺ gerencia a forma como a comunicaΓ§Γ£o Γ© feita (adicionando criptografia Γ conexΓ£o ou nΓ£o, vocΓͺ escolhe!)
VocΓͺ gerencia os logs (o que o servidor vai armazenar de ΓΊtil)
Mas mesmo se vocΓͺ nΓ£o possuir um servidor, ainda existem servidores gratuitos e βconfiΓ‘veisβ que estΓ£o disponΓveis
24/7, e vocΓͺ pode se registrar criando um JabberID para se comunicar com outros usuΓ‘rios!VocΓͺ tambΓ©m pode usar criptografia E2EE (OMEMO) para proteger suas mensagens, impedindo que o servidor tenha acesso ao conteΓΊdo.
Jabber ID
O protocolo XMPP usa um formato de endereΓ§amento de entidades muito simples, semelhante ao e-mail.
porque semelhante a um endereΓ§o de e-mail? porque no e-mail vocΓͺ pode ter uma conta no Gmail e conversar com quem tem uma conta no Outlook, sacou?
user1@meuserver.dot -> user2@serverrandomico.dot2
Client
Usado para especificar o cliente/dispositivo que o usuΓ‘rio estΓ‘ utilizando (
/mobile2 /laptopHome /gajim.DeskTOP12345)Um usuΓ‘rio pode estar conectado simultaneamente em uma mesma conta, porΓ©m em diversos dispositivos diferentes, e Γ© essa parte que identifica em qual dispositivo ele estΓ‘ conectado.
Sem InformaΓ§Γ΅es
VocΓͺ nΓ£o precisa dar informaΓ§Γ΅es pessoais (e-mails, nΓΊmero de telefone, ou coisas do tipo) ao criar seu JabberID. Basta ter um usuΓ‘rio e uma senha!
A coleta de informaΓ§Γ΅es varia de servidor para servidor. Pela essΓͺncia do protocolo XMPP, a grande maioria dos servidores evita armazenar informaΓ§Γ΅es (IPs, mensagens etc.) por muito tempo! Basta ver as especificaΓ§Γ΅es de privacidade do servidor em que vocΓͺ irΓ‘ se registrar para verificar essas informaΓ§Γ΅es.
Lembre-se: tudo depende das polΓticas do servidor XMPP que vocΓͺ irΓ‘ utilizar.
ConexΓ£o via Tor
Atualmente a maioria dos clientes suporta conexΓ΅es feitas via Tor
Isso anonimiza seu dispositivo e sua conexΓ£o, ou seja, o servidor nΓ£o terΓ‘ acesso ao seu endereΓ§o IP real.
Isso acaba impedindo os servidores de obterem informaΓ§Γ΅es laterais que possam chegar atΓ© vocΓͺ (localizaΓ§Γ£o baseada no IP, ou identidade real baseada em footprinting).
Baseado em XML
O protocolo Γ© totalmente baseado em XML, o que permite extensΓ΅es personalizadas.
Isso Γ© bom para novas features.
Exemplo disso Γ© o XEP!
Mitos a respeito do protocolo XMPP
Recomendo que vocΓͺ dΓͺ uma olhada sobre os Mitos a respeito do protocolo XMPP
QuestΓ΅es de seguranΓ§a operacional (OPSEC)
O protocolo XMPP, por ser descentralizado e Open Source, Γ© muito acolhedor para aqueles usuΓ‘rios que gostam de seguranΓ§a operacional.
Diferente de protocolos proprietΓ‘rios, cujo usuΓ‘rio nΓ£o pode fazer configuraΓ§Γ΅es adequadas e deve confiar cegamente na instituiΓ§Γ£o centralizada.
No XMPP Γ© possΓvel configurar seu prΓ³prio ambiente de comunicaΓ§Γ£o, com boas prΓ‘ticas vocΓͺ pode criar um ambiente protegido e privado.
Client
Escolha um bom cliente, que suporte a maioria das extensΓ΅es e criptografias, e que tambΓ©m permita conexΓ΅es via PROXY/SOCKS5
Dependendo do cliente que vocΓͺ utilizar, vocΓͺ pode fazer muitas configuraΓ§Γ΅es
Com XMPP o usuΓ‘rio poderΓ‘ implementar criptografia end-to-end, o que significa que vocΓͺ criptografa a mensagem no cliente, e depois envia ao servidor, dessa forma o servidor nΓ£o poderΓ‘ ver sua mensagem criptografada, somente o usuΓ‘rio destinatΓ‘rio.
Server
Existem muitos servidores pΓΊblicos que fornecem boas prΓ‘ticas de seguranΓ§a atualmente.
E mesmo que nΓ£o forneΓ§a, vocΓͺ pode implementar criptografia nas suas mensagens, e o servidor nΓ£o terΓ‘ acesso ao conteΓΊdo delas!
Isso jΓ‘ deixa muitos outros mensageiros no chinelo
Hands on (Chega de teoria)
Vamos Γ‘ prΓ‘tica! abordarei os dois protocolos extensivos de criptografia mais utilizados com XMPP. Fica a seu critΓ©rio qual vocΓͺ irΓ‘ utilizar.
OMEMO
Recomendado para uso diΓ‘rio, conversas com amigos, familiares e etc. (vocΓͺ pode usar para conversas sensiveis, sem problemas, basta usar OMEMO!)
Γ mais versΓ‘til e atual
CompΓ‘tivel com + de 1 dispositivo
Possui negaΓ§Γ£o fraca
Suporta conversas em Grupo (MUC)
Γ assincrono, o que permite receber mensagens offline
OTR
Recomendado para conversas sensiveis (denuncias, crimes e etc.)
OTR Γ© mais antigo, porΓ©m possui uma negaΓ§Γ£o muito forte.
Ambos clientes devem estar online para se comunicarem
A cada nova conversa, uma nova chave criptografica! (Isso Γ© bom pois, as chaves antigas nΓ£o sΓ£o atreladas a vocΓͺ)
Se um dia te julgarem em um tribunal, Γ© possivel negar!
Ambos sΓ£o seguros, mas sΓ£o utilizados para prΓ³positos diferentes!
CLIENTs
Existe uma lista enorme de clients que podem ser utilizados, e vocΓͺ pode encontrar aqui: XMPP CLIENTS
JΓ‘ utilizei esses clients, nessas plataformas
Gajim (
Linux/Windows) -> Suporte aOMEMOPidgin (
Linux/Windows) -> Suporte aOTRConversations (
Android) -> Suporte aOMEMO
Instalando e configurando o Gajim
Como eu utilizo o linux, irei guiar esse tutorial em uma mΓ‘quina linux!
Criando a conta
Primeiro vocΓͺ precisa de um jabberID, entΓ£o procure um servidor confiΓ‘vel e crie sua conta
Essa parte Γ© simples, basta escolher um servidor e criar sua conta lΓ‘. (nΓ£o irei desenvolver essa parte)
Salve sua senha em um lugar seguro. (KeePassXC)
Servidores XMPP em sua grande maioria nΓ£o permitem a troca de senha, e aqueles que permitem precisam de alguma informaΓ§Γ£o pra confirmar sua identidade (e-mail ou coisa do tipo)
Voltando ao Gajimβ¦
Agora que vocΓͺ possui um jabberID em um Servidor, vamos logar usando o Gajim!
Antes de logar na sua conta Jabber, a primeira coisa que iremos fazer Γ© ir nas configuraΓ§Γ΅es do Gajim, e configurar umas coisas bΓ‘sicas!
Clique no icone de configuraΓ§Γ£o na parte inferior esquerda.

Antes de seguir os prΓ³ximos passos vocΓͺ irΓ‘ precisar do serviΓ§o TOR rodando na sua mΓ‘quina
Instale o TOR
Habilite e inicie
Saida do terminal esperada
Verifique se estΓ‘ rodando

Tudo certo atΓ© aquiβ¦
Agora vΓ‘ em Advanced e coloque o Global Proxy como Tor

Feche o Gajim e abra novamente
Vamos logar na nossa conta agora
Configuramos o Global proxy para fazer todas as conexΓ΅es via TOR, masβ¦.
Para maior anonimizaΓ§Γ£o no lado do servidor, recomendo fazer essa etapa com uma VPN ativa, caso o Global proxy nΓ£o funcione na primeira conexΓ£o!
Isso vai preservar seu IP no Servidor!
Use riseup VPN!
Ative a VPN
Agora logue na sua conta

VocΓͺ pode selecionar Adavanced Settings e selecionar o TOR para conexΓ£o (jΓ‘ configuramos isso antes, mas se vocΓͺ Γ© paranoico assim como eu, faΓ§a!), fica ao seu critΓ©rio
Agora Γ© hora de configurar sua conta Jabber no Client Gajim!
Volte as configuraΓ§Γ΅es

Selecione sua conta Jabber

Agora a gente vai configurar o Proxy da conta especifica
Clique em Connection

Selecione TOR como padrΓ£o
Assim a conta jabber que vocΓͺ configurou, irΓ‘ se conectar atrΓ‘ves do TOR, sempre! (faΓ§a o teste desligando o TOR e ligando, veja se a conexΓ£o do gajim caiu)
Verifique tambΓ©m se vocΓͺ estΓ‘ usando conexΓ£o sem criptografia

Deixe as opΓ§Γ΅es dessa forma, assim toda vez que uma conexΓ£o sem criptografia for feita, vocΓͺ irΓ‘ precisar verificar e confirmar!
Pronto!
Agora vamos colocar criptografia OMEMO por padrΓ£o!
OMEMO POR PADRΓO
Essa etapa Γ© muito simples, basta ir em Privacy e colocar a criptografia padrΓ£o como OMEMO

Feito!
Agora vocΓͺ pode conversar de forma segura
Agora vocΓͺ pode adicionar pessoas novas, e apresentar o XMPP as pessoas, livrando elas das instituiΓ§Γ΅es centralizadas!!!
Agora vocΓͺ pode me adicionar:
dbg@pwned.life
Bom o paper acabou, se vocΓͺ leu atΓ© aqui obrigado por ter tirado um tempo para visitar essa joΓ§a! Se encontrou algum erro tΓ©cnico ou de portuguΓͺs, sinta-se Γ vontade para me adicionar no XMPP e me enviar.
Atualizado
