Aprenda sobre o XMPP — O Protocolo perfeito para comunicação
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.
O protocolo XMPP, inicialmente chamado de Jabber, foi iniciado em 1999 e tinha como principal objetivo criar uma alternativa de comunicação de código aberto 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
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.
As RFCs principais do protocolo XMPP são:
| RFC | Título | Descrição |
|---|---|---|
| RFC 6120 | 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. |
| RFC 6121 | XMPP Instant Messaging and Presence | Especifica as funcionalidades básicas de mensagens instantâneas e presença (online, offline, ocupado, etc.). |
| RFC 7622 | XMPP Address Format | Padroniza o formato do JID (Jabber ID), definindo a estrutura
usuário@domínio/recurso. |
| RFC 7590 | 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. |
| RFC 7395 | XMPP over WebSocket | Define como XMPP pode ser transportado sobre WebSockets, facilitando sua integração com aplicações web modernas. |
O protocolo XMPP permite a adição de extensões, que são conhecidas como: XEPs (XMPP Extension Protocol).
Algumas extensões XEP bem conhecidas são:
| XEP | Nome | Descrição |
|---|---|---|
| XEP-0045 | Multi-User Chat | Salas de conversação em grupo, similares a canais de IRC. |
| XEP-0384 | OMEMO Encryption | Criptografia de ponta-a-ponta moderna, baseada no protocolo Signal. |
| XEP-0363 | HTTP File Upload | Permite o compartilhamento de arquivos mesmo quando o destinatário está offline. |
| XEP-0030 | Service Discovery | Permite que clientes descubram os recursos e extensões suportados por um servidor ou outro cliente. |
| XEP-0234 | Jingle | Framework para comunicação em tempo real, como chamadas de voz e vídeo. |
Existem diversos outros XEP, basta verificar -> xmpp.org/extensions
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.servidor central único.Estrutura Descentralizada
┌─────────────────────────────────────────────┐
│ Estrutura Descentralizada │
└─────────────────────────────────────────────┘
Server A Server B
┌─────────────┐ S2S ┌─────────────┐
│ │ ◄────────►│ │
│ user1@A.org │ │ user2@B.com │
│ │ │ │
└─────────────┘ └─────────────┘
▲ ▲
│ │
│ C2S │ C2S
│ │
┌─────┴──────┐ ┌─────┴──────┐
│ Client 1 │ │ Client 2 │
└────────────┘ └────────────┘C2S - CLIENT TO SERVER
S2S - SERVER TO SERVER24/7, e você pode se registrar criando um JabberID para se
comunicar com outros usuários!JabberID
┌──────────────┐
│JabberID (JID)│
└──────────────┘
usuário@domínio/mobileX
───┬─── ───┬─── ───┬───
┌─────┘ │ └────┐
│ │ │
▼ ▼ ▼
┌───────┐ ┌───────────┐ ┌──────┐
│Usuário│ │Domain/FQDN│ │Client│
└───────┘ └───────────┘ └──────┘/mobile2 /laptopHome /gajim.DeskTOP12345)Lembre-se: tudo depende das políticas do servidor XMPP que você irá utilizar.
Recomendo que você dê uma olhada sobre os Mitos a respeito do protocolo XMPP
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.
Vamos á prática! abordarei os dois protocolos extensivos de criptografia mais utilizados com XMPP. Fica a seu critério qual você irá utilizar.
Ambos são seguros, mas são utilizados para própositos diferentes!
Existe uma lista enorme de clients que podem ser utilizados, e você pode encontrar aqui: XMPP CLIENTS
Linux/Windows) -> Suporte a
OMEMOLinux/Windows) -> Suporte a
OTRAndroid) -> Suporte a
OMEMOComo eu utilizo o linux, irei guiar esse tutorial em uma máquina linux!
Primeiro você precisa de um jabberID, então procure um servidor confiável e crie sua conta
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!
Antes de seguir os próximos passos você irá precisar do serviço TOR rodando na sua máquina
sudo apt install tor
sudo systemctl enable tor
sudo systemctl start tor
Synchronizing state of tor.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable tor
sudo apt install riseup-vpn
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
Pronto!
dr3zk@linux.monsterBom 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.
Lembre-se de colocar as luvas nos pés dos MACAC0S! 🇨🇳🇨🇳🇨🇳🇨🇳🇨🇳🇨🇳🇨🇳🇨🇳🇨🇳
⣠⣤⣄⣀⣤⡤⠤⣤⢄⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢸⣿⣿⣷⣮⡓⢦⡀⠀⠀⠉⠉⠓⠲⠤⢤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢴⣾⣿⣿⣿⣿⣿⣦⣙⠂⠀⠤⡀⠀⠀⠀⠀⠀⠈⠑⠒⠤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠐⢻⣿⣿⣿⢿⣿⣿⣿⠷⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⡀⢙⡯⡓⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢸⣿⢻⣽⣿⣿⣿⠷⠛⠁⠀⠀⠀⠐⠀⠀⠀⠐⠛⠉⣽⣯⡽⠁⠘⢦⣱⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣄⣀⣠⠴⢒⣚⣹⣟⣛⣲⢶⣤⣀⠀⠀⠀
⡘⣻⣷⣽⢿⠏⠙⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠺⢾⣿⢿⣧⣆⠐⠆⣙⣻⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢸⠘⣿⣷⣿⣽⣿⣿⣟⣟⢿⣾⣿⣿⣯⣧⠀
⣤⣸⣿⣿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢭⣭⣭⣿⣿⣗⣻⣿⣿⡦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣿⣽⡀⠸⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⡛⣿⡻⣧
⢹⣯⡿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣤⣶⣾⣿⣿⡯⣛⣷⣯⣿⡺⣿⣮⡳⣄⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⡿⣿⣿⡟⠁⠀⣿⣿⣿⣿⣿⣿⡿⣿⣴⣿⣯⣹⡟⣿
⠘⠻⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠺⠛⢉⣴⣿⣯⣾⢟⡲⢿⣛⢿⡹⣷⣛⣋⠑⡄⠀⠀⠀⠀⡠⠚⠋⠉⠫⢯⣿⣿⣷⡄⢠⣿⣿⣿⣿⣿⡿⣇⣻⣿⣿⣷⢿⣇⢨
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡿⠋⢧⡟⢻⣷⣝⡲⢌⣙⠣⡘⣿⣿⣷⠜⠀⠀⠀⢰⡁⠀⠀⠀⠀⠀⢻⣿⣿⣆⣿⣿⣿⣿⣿⡿⢴⣿⣿⣷⡿⡿⣾⣏⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⢏⣠⣿⣿⣿⣿⣶⣮⣍⣒⢼⡏⠁⠀⠀⠀⠀⠀⠙⢑⡒⠒⠒⠋⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣛⣷⣿⠋⢏⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⡇⢸⡟⣿⡿⠿⠀⠀⠀⠀⠀⠀⠀⠀⠘⠱⢀⣠⢨⣬⣿⣿⣋⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢧⡈⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠇⠀⠀⠀⠀⢀⣾⣿⣿⡿⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⡿⠛⢻⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣾⣷⡁
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡔⣠⣿⣯⢻⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⡽⢰⣸⣿⣾⣿⣿⣿⣿⢿⣿⢿⣿⣿⣿⣿⠟⠁⠀⠙⣿⣿⣷
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣜⡾⠵⣿⠟⣿⣷⣿⣿⢹⣿⠀⣳⣿⣿⣿⣿⡟⣀⠆⠀⡀⣄⠹⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣒⢤⡀⠀⠀⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡾⡿⢋⣵⣾⡏⢹⣯⣟⣽⡏⠀⠈⣿⣿⠟⣀⣼⠋⠀⢠⣽⣿⣷⣮
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⡝⡄⠀⠸⣿⣿⣇⣛⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⢸⣷⣿⣿⣿⡟⢰⣿⣿⣿⠏⠀⠀⠀⣟⣿⣾⣿⠇⠀⠀⣾⣾⣷⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠈⠛⠿⠿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠘⣿⣿⣿⡿⠀⠀⠉⠉⠀⠀⠀⠀⢠⣿⣿⢻⡟⠀⡆⣿⣿⣿⣿⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠤⠤⢖⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⢻⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⠃⣾⣧⠀⣿⣿⣿⣿⣿⣿⣿