Mensajería con XMPP (antes Jabber)
¿Qué es XMPP?, es el nombre de un protocolo de mensajería instantánea, antes se llamaba Jabber. Las letras del nombre son el acrónimo en inglés de Protocolo eXtensible de Mensajería y Presencia. En inglés queda en otro orden.
La presencia se refiere a la comunicación del estado actual, en general, desconectado, conectado y en reposo, y también otros estados personalizados, por ejemplo «no te puedo atender hasta las 14:00».
¿Qué tiene que ver con la privacidad? Pues se puede utilizar sin cifrar, pero también puede usarse con verdadero cifrado extremo a extremo y se puede usar incluso el ya conocido PGP.
¿Y que más?, pues la ventaja de la capacidad de agencia que proporciona disponer de toda la especificación del protocolo y que nos permite poder poner en marcha clientes y servidores, federando unos con otros, evitando entrar en servidores únicos que resultan ser jardines vallados y aislados.
¿Qué es la federación?
La federación sería la capacidad de relacionarse dos o más servicios o servidores a través de protocolo o protocolos comunes. Un ejemplo de ello es el correo electrónico, existen muchos servicios diferentes en muchos sitios pero con protocolos comunes (SMTP) pueden relacionarse para hacer llegar mensajes desde un servidor a otro. En sentido contrario, NO sería entendible a estas alturas que un servicio de correo, digamos Google, solo gestionara mensajes de cuentas de él mismo y que no pudiera enviar a cuentas de Yahoo (por ejemplo).
Un poco de historia.
Por si pareciera que esto es algo nuevo, aquí va un poco de historia: En 1998 Jeremie Miller, empezó a trabajar en un desarrollo que dio lugar, en 1999, a un software de servidor de mensajería, jabberd, y a una especificación de un protocolo basado en un estándar llamado XML..
Posteriormente se sometió una descripción del protocolo a la IETF, que es un organismo internacional de normalización de ingeniería en el ámbito de internet. Está continuamente en desarrollo de funcionalidad y de extensiones de protocolo (XEP, Extension de Protocolo XMPP)
Para añadir un poco de contexto al momento: lo más parecido a un smartphone era la Blackberry que era un teléfono que integraba el correo electrónico, en 2007 se presentó el primer móvil iPhone y al año siguiente, en 2008 se presentó el primer móvil Android. Whatsapp no apareció hasta 2009.
XMPP apareció antes que los teléfonos móviles que conocemos actualmente, era algo para utilizar en ordenadores.
Google Talk utilizó el estándar hasta que desmanteló el servicio para crear Hangouts, con un diseño propietario y cerrado. Facebook Chat también estuvo usándolo.
En fin, que nuevo no es.
¿Cómo funciona esto?
Los servidores XMPP funcionan en base al modelo cliente-servidor, como en los servidores de correo electrónico, incluso el esquema de nombre de usuario en un servidor XMPP es igual que en los de correo: usuario@servidor. Internamente, el tráfico de datos entre cliente y servidor se denomina c2s (client to server, de un cliente a un servidor) y el tráfico entre servidores, s2s (server to server, de un servidor a otro servidor). Se pueden tener cuentas diferentes en varios servidores.
¿Esto lo utiliza alguien?
Pregunta interesante, porque siempre tenemos el típico argumento de que «ahí no hay nadie» o «todos están en...», y con esto que parece algo nuevo aunque no lo es, pues más todavía.
Pues esto se usa en el chat entre jugadores de un juego que se llama Fortnite, en Nintendo Switch para notificaciones y en algunos otros juegos.
Whatsapp usa una modificación propietaria de XMPP, Zoom también lo usa con extensiones propietarias, Grindr también, e incluso MOKA, que es una aplicación de la Policía Federal alemana.
Se usa en eso que se llama «Internet de las cosas» IoT, por ejemplo en sistemas de domótica y control remoto.
Y en muchos otros proyectos, es decir que sí tiene una base de uso verdaderamente grande. Hay mucha información en la página de XMPP.
¿Cómo usarlo?
Es muy parecido a como usar el correo electrónico: se elige un servidor, se registra una cuenta, se elige un cliente y se usa.
Dependiendo del servidor que queramos usar, es posible que tengamos que registrar la cuenta desde el propio cliente, es lo que se llama registro in-band.
Hay listas de servidores para poder elegir uno, esta es bastante buena y esta otra también. Podemos optar si nos apetece por montarnos nuestro propio servidor.
Las cuentas son todas de la forma [email protected] igual que la del correo electrónico y se llama JID (Jabber ID), también hace falta una contraseña.
Una vez que tenemos una cuenta en un servidor, la tenemos que registrar en el cliente, igual que hacemos con una cuenta de correo. Podemos elegir diversos clientes: para PC, con Windows, con Linux, con FreeBSD, para dispositivos móviles con Android y con iOS. Hay servidores que ofrecen un cliente web con toda la funcionalidad, como si fuera correo web. Podemos tener abierta la misma cuenta en más de un dispositivo o tener más de una cuenta en un dispositivo.
Una vez que tenemos usuario registrado en el cliente, para conversar necesitamos los identificadores o JIDs de los interlocutores, como si fuera correo electrónico, que necesitamos saber las direcciones de otros.
Se pueden crear grupos de chat, los crea un usuario en su servidor y después invita a otros al mismo, aunque el resto de usuario sean de otros servidores.
Esto es una explicación muy resumida, hay distintas configuraciones y procedimientos para validar claves de interlocutores, activación de cifrado y selección de tipo y otras cosas, que dependen del software que estemos usando.
Algunos clientes para XMPP:
- Para PC/Mac
- Gajim (https://gajim.org), Windows y Linux
- Dino.im(https://dino.im), Linux, *BSD
- Monal (https://monal.im), Mac
- Profanity(https://profanity-im.github.io/), Linux, Windows, Mac, en terminal.
- Para Android
- Conversations (https://conversations.im/), es el origen de otros clientes para Android.
- Monocles (https://monocles.de), forma parte de un conjunto más amplio de servicio, incluso un servidor de XMPP, Se puede instalar el cliente para Android desde Fdroid.
- Cheogram (https://cheogram.com/) se puede instalar desde Fdroid
- Para iPhone
- Monal (https://monal.im), es el mismo programa de Mac pero en iPhone.
¿Por qué utilizar esto?
Un motivo importante es la resiliencia consecuencia del diseño descentralizado de XMPP y coincidente con el diseño original de internet: si cae un servidor, el resto sigue funcionando, pero si cae Whatsapp, por ejemplo, se quedan sin servicio todos sus usuarios.
Importante es también la protección de nuestra privacidad y nuestros datos: XMPP tiene extensiones que le permiten cifrar extremo a extremo.