TEXTO-PLANO ===================================================================== Revista digital 04 | 07 --------------------------------------------------------------------- 07 | GNU Jami: EjecuTor | la aplicación de comunicaciones libre que respeta a tu comunidad --------------------------------------------------------------------- Con el estallido de la pandemia de COVID-19, el teletrabajo se convirtió en norma para muchos trabajadores en todo el mundo. Cada vez más personas utilizan hoy herramientas de videoconferencia para obrar o comunicarse. La aparición de estas herramientas ha generado numerosas preguntas y escándalos sobre la privacidad y la libertad de los usuarios. Ya no solo quienes habitan las redes de datos se manejan con aplicaciones de mensajería: hoy en día éstas han sido socavadas y distribuidas por empresas. Muchas de las aplicaciones de comunicación en las redes de datos son provistas como servicio por enormes empresas de capital que lucran con los metadatos. Meet de Google, WhatsApp de Meta, Teams de Microsoft -y muchas otras por el estilo- intentan integrarse a la vida de los usuarios cercenando su libertad. Algunas operan asociadas a un perfil telefónico rastreado a un proveedor de telecomunicaciones móviles, otras lo hacen a través de servidores privados que permiten asociar un perfil electrónico controlado empresarialmente (de imposible o difícil anonimato). Todas ellas operan sin ofrecer cifrados confiables que oculten el contenido enviado a través de las aplicaciones a terceros o intermediarios. Sin duda una de las más extendidas en el mundo occidental es WhatsApp (Meta), una aplicación privativa irrespetuosa de la privacidad. Una nueva GNU App viene a salvarnos... y justo a tiempo. Se trata de GNU Jami, un proyecto de la mano del software libre que busca establecer una aplicación multiplataforma, multiprotocolo, y que respeta la libertad del usuario y sus contactos. Como característica fundamental, Jami es software libre liberado bajo GPLv3+, y no requiere de autoridad central para funcionar (lo que la hace especialmente adecuada para dar lugar a ambientes comunicativos donde impere la seguridad del usuario). GNU Jami proporciona un marco para las comunicaciones virtuales, junto con una serie de aplicaciones para el usuario final para llamadas y videoconferencias, mensajería de texto y transferencia de archivos. ### Instalación Se puede descargar la aplicación gratuitamente en forma de paquetes precompilados para GNU Linux, Android, Android TV, Windows, iOS, MacOS, desde la web oficial https://jami.net/es. Allí no sólo podremos encontrar los paquetes para numerosas plataformas, sino también los enlaces a las páginas de las aplicaciones en distintas tiendas de aplicaciones. En el caso de los sistemas GNU, contamos con binarios precompilados para Debian, Ubuntu, Ubuntu Mint, Fedora, Trisquel, RedHat, Alma Linux, OpenSUSE/SUSE, y ZorinOS, así como los Snaps multiplataforma, aunque también es posible instalarlos agregando repositorios estables o betas. En mi caso dispongo de Ubuntu 24.04LTS y no me gusta usar Snaps, así que recurro a instalar la versión estable del cliente para escritorio de GNU Jami desde la terminal. Simplemente tengo que abrir una terminal de Ubuntu e ingresar: sudo apt install gnupg dirmngr ca-certificates \\ curl --no-install-recommends ; curl -s https://dl.jami.net/public-key.gpg | \\ sudo tee /usr/share/keyrings/jami-archive-keyring.gpg > /dev/null; sudo sh -c "echo 'deb \\ [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] \\ https://dl.jami.net/stable/ubuntu_24.04/ jami main' > \\ /etc/apt/sources.list.d/jami.list" ; sudo apt-get update && sudo apt-get install jami Para instalarlo en Android, he recurrido a la tienda GooglePlay (https://play.google.com/store/apps/details?id=cx.ring), aunque también está en la tienda libre F-droid (https://f-droid.org/packages/cx.ring/ ### Desglosemos lo que hace * Mensajería instantánea: Permite chatear mano a mano, cifradamente. * Llamadas de voz y vídeo con micrófono y cámara: Llamás, y si el otro está disponible y contesta, se establece una llamada cifrada por voz (o con la cámara). * Chat en grupo: Un administrador forma un "enjambre" (Swarm), que recibe un identificador de grupo; como cada participante es un usuario de Jami, los mensajes se van cifrando y descifrando automáticamente entre los participantes. * Videoconferencias y puntos de encuentro sin alojamiento de terceros: cada envío de ficheros puede realizarse par a par de forma cifrada. * Grabación de mensajes de audio y vídeo: Graba y trasnmite mensajes de audio o de video (estos sin cifrar). * Pantalla compartida y transmisión de medios: Para compartir la pantalla tipo OBS o Teamviewer, pero cifrado. Permite enviar archivos cifrados y los descarga automáticamente (o bajo demanda). * Extensiones: Se le pueden poner plugins libres especiales (.jpl), son gratuitos, y aunque no son demasiados, encontramos uno de pantalla croma para cambiar el fondo, otro para marca de agua para el video, un bot "contestador automático", un emisor de música, y transcripción de conversaciones por IA local. * Cliente SIP: El cliente Jami puede importar cuentas SIP de telefonía VoIP (por ejemplo, para tener un número telefónico como los de tilde.tel o sip.sdf.org). Es una buena herramienta con todas las posibilidades, tal vez sea mas completo que WhatsApp y diseñado para usar entre varios dispositivos (juntos en la LAN o separados por Internet), en conversación P2P o grupo (público o privado, silenciado o con notificaciones). Pero hay que tomarle la mano, a veces no es muy claro para el que recién lo agarra y viene de WhatsApp. ## Contacto y Cuentas Para emprender las comunicaciones, Jami utiliza un Identificador de Jami (JamiID) autogenerado. Este está compuesto por una cadena alfanumérica de 40 caracteres únicos. Normalmente, podremos crear un JamiID desde el mismo cliente cuando este no tiene asociada ninguna cuenta, pero también podremos agregar otras adicionales. Para comunicarnos con otros usuarios de Jami, estos deben tener su propio Jami ID, y además deben contar con el JamiID que estemos utilizando (ya sea pasándole la cadena de 40 caracteres alfanuméricos que usamos, o mejor aún, el QR que la representa). Si tenemos un dispositivo móvil o una PC con webcam, podremos usar el lector de QR integrado a Jami, o bien si estamos "cara a cara" permitirle a otro agregarse nuestro contacto por QR. >La suma de ambas cadenas permite generar el cifrado par a par. Los JamiID pueden ser estables y registrados públicamente junto a un nombre de perfil (lo que permite publicarla en la aplicación), o bien podemos dejarlos anónimos, con lo cual se puede utilizar de manera circunstancial o de forma "descartable". Si decidimos asociar nuestro JamiID a una identidad, podremos ponerle una contraseña (incluso un perfil biométrico opcional, algo posible para quienes decidan este tipo de asociación en un dispositivo móvil). De esta manera el nombre de perfil Jami quedará publicado y su JamiID asociado será accesible por todos los que usen la opción "Buscar" de Jami ("buscar a fulano"). Incluso si guardamos una identidad pseudo-anónima (un alias de Internet, por poner el caso), podríamos sacar un JamiID y publicarlo en el servidor de Jami para que otros nos contacten fácilmente invocándolo, o bien publicar nuestro identificador JamiID en nuestro(s) perfil(es) de red(es) social(es), o bien publicar el código QR asociado al mismo (convenientemente Jami los genera, aunque podríamos hacerlo a partir del JamiID con cualquier generador libre de QRs). Las cuentas de Jami asociadas a perfil normalmente existen solo en el dispositivo, por lo que debemos idealmente respaldarlas si deseamos conservar la identidad asociada al identificador. Jami permite exportarlas a un fichero de la cuenta de extensión .jac en las últimas versiones de Jami (versión .gz en las versiones anteriores a 2024). A este podríamos y conservarlo en caja fuerte o un lugar seguro. Si queremos importarla en otro dispositivo para utilizarlas, también podremos. Esto nos permitiría -por ejemplo- usar la misma identidad JamiID en la PC y en varios dispositivos móviles compatibles). Esto se hace importando el fichero y poniendo la contraseña para importarla, o bien haciéndolo "cara a cara" a través del QR de asociación de dispositivos. Otra estrategia que se puede seguir es utilizar JamiID distintas para cada dispositivo, con lo cual cada JamiID cobraría el lugar de una "línea telefónica cifrada" en cada dispositivo. Es bueno que -llegado el caso- esta estrategia descentralizada también pueda no solo contemplarse, sino usarse fácilmente. > Por defecto cada cuenta tiene activa la recepción desde contactos desconocidos, pero esta es la primer opción de ajuste de cuenta que podríamos desactivar, si deseamos que Jami sólo sirva de comunicador oclusivo entre los contactos que agreguemos manualmente nosotros). ###Uso anónimo: Es absolutamente factible no hacer pública una JamiID ni darla a conocer. Podemos crear una cadena de 40 caracteres con la aplicación (se revisa que no se repitan con alguna identidad JamiID publicada), y usarlo de forma "anónima". Las cadenas JamiID anónimas son iguales a las otras, pero no están asociadas al dispositivo ni a una identidad de perfil, y de hecho podríamos considerarlas "descartables". Llegado el caso de necesitar establecer una charla oclusiva, podríamos usarla para una única conversación con otro JamiID anónimo, y luego descartar la conversación. Como cada JamiID anónima está separado del cliente y no toma nota del dispositivo ni se asocia a él, puede inutilizarse sin riesgo, eliminando la cuenta luego de usada. Como vemos, el cliente Jami es súmamente útil y puede usarse según varias estrategias, además de la más sencilla de comunicador perfilado propuesta al principio: permita usar varias identidades a la vez (llegado el caso), y que podamos activar las mismas incluso al unísono. A su vez, cada identidad JamiID importada al dispositivo, se puede activar (habilitar) o deshabilitar (desactivar). ###Grupos Uno de los elementos de diseño de WhatsApp son los inefables grupos de mensajería. Un "grupo de mamis" significa que vas a tener montones de mensajes que no te interesan, de un grupo que probablemente no te interese mucho tiempo. Pero Jami nos salva. En el caso de Jami podés crear grupos moderados, que aparecen como un usuario más y cifrado. Estos pueden tener un solo administrador, o bien el administrador puede poner que todos tengan los permisos de eliminar mensajes. Se puede regular si se pueden sumar adjuntos, o sólo dejar como mensajes de chat. Una ventaja que habla del respeto es que no se puede agregar JamiID al grupo que el admin no tenga agregado. Los contactos se van agregando (o se invitan a una conversación) y de aceptarlo, se suman a los contactos del remitente. Ahora el mismo Jami tiene un lector de QR, con el cual podemos compartir fácil y frente a frente el contacto y listo, se agregan a la lista de contactos. ##Configuraciones Al ser una herramienta robusta, Jami tiene bastante configuraciones propias, tanto de la cuenta (explicadas anteriormente) como de la aplicación. Esto permite tunearlo para uso individual o grupal. Entre las opciones del cliente, una de las opciones que modifiqué es la de "aceptar descargas automáticas". Por defecto está habilitada la recepción automática desde contactos agregados de ficheros de hasta 32 MB, pero en mi caso la limité, con lo cual sólo see descargan ficheros que pesen menos de 1MB. Todo lo mayor a ello debo aceptarlo primero (ante lo cual los clientes se ponen de acuerdo y se inicia la descarga cifrada). Asimismo, entre las opciones avanzadas se pueden habilitar distintos modos de conexión para Jami cuando tenemos varios dispositivos asociados. >En el caso de los dispositivos móviles, se pueden utilizar los servicios nativos de Android para notificación, o usar unos propios que cumplen la misma función. Esto es para evitar telemetrías de Google. En mis dispositivos decidí habilitar el modo de conexión "OpenDHT" y "Usar proxy local". Esto ejecuta un pequeño servidor en todos los dispositivos, que me actualizó los contactos agregados y los mensajes entre ellos. Si dejo estas opciones desactivadas en el celular (o en la PC, claro), tal dispositivo quedará como si fuese "en un mundo aparte", y no se sincronizarán entre sí (pudiendo quedar los mensajes recibidos en sólo uno de los dispositivos, si es que así lo deseamos). En mi caso, para el propósito general deseo que se "espejen" los contactos y sus mensajes a través de la LAN (o bien del proxy a través de Internet). Nota: tras una actualización de Jami en Android tuve que volver a configurar el OpenDHT pues lo revirtió a la opción por defecto. Convenientemente, una vez reestablecida la configuración, sincronizó los chats y contenidos por medio de la LAN. ##Videollamadas y Llamadas de Voz Jami emplea codecs libres. Esto significa que es muy flexible en cuanto a la calidad de trasmisión audiovisual. Funciona automáticamente según lo que detecta, pero es posible priorizar manualmente entre códecs subiendo o bajándolos en la lista que figura en Opciones de la Cuenta / Opciones Avanzadas / Medios. Para Audio por defecto utiliza el códec Opus a 48 Khz (altisima calidad, se escucha mucho mejor que la llamada telefónica). Aún así, es posible definir una calidad "telefónica" con el tradicional códec G.722 a 16Khz (tipo VoIP), muy adecuado para los viejos enlaces de datos por 3G, en los cuales no se corta la comunicación. Para ajustarlo, simplemente hay que "ponerlo arriba" en la pila de preferidos con la flecha. Lo mismo ocurre en el caso del códec de video, normalmente es autoajustable. Por defecto recurre a H.264/AVC, que cifra bien en la LAN o conexiones rápidas, pero si tenemos una conexión lenta o comprometida pero podríamos quere regular su calidad, o bien configurar códecs VP8, MP4/V-ES, o H.263 (este pultimo era el viejo ISDN, de 15 cuadros por segundo, a 320x200, con 64kbps). En todos ellos podríamos asignar resolución de video y FPS automático o manuales (normalmente estos dependen de la cámara del dispositivo y la velocidad de transmisión, pero a groso modo, usando cámaras Full HD obtuve videos fluidos de 30 cuadros en la LAN, y 5 cuados a través de datos 3G con pixelaciones, 15 a través de 4G con H.264 sin problemas). > El rendimiento mas resistente lo logré con H263 en calidad 720, sin problemas de cortes. ###Uso como cliente SIP Tilde.tel es un tilde que provee cuentas de telefonía virtual SIP en un cliente tipo Asterisk. Esto significa que se hace posible contar con un interno al que me pueden llamar telefónicamente a través de VoIP (en este caso quienes tengan tilde.tel, pero existen numerosos proveedores pagos que permiten discados nacionales o internacionales). En el caso de usar SIP, el cliente permite discar con tonos DTMF y funciona perfecto para entablar comunicaciones de voz a través de los servidores de telefonía SIP. >Los proveedores de SIP que utilizan Asterisk funcionan como las casillas telefónicas, donde se pueden dejar mensajes de voz. ##CONCLUSION Considero a GNU Jami una opción mucho más valedera que WhatsApp para armar mis listas de contactos familiares. Si bien al principio hay que aprender (y enseñar) ciertos elementos de privacía, una vez dominado y configurado permite estar al tanto a través de todo tipo de dispositivos con nuestros círculos de conocidos y amigos, respetando su privacidad y la nuestra. El único inconveniente que encuentro aún respecta a las aplicaciones por terminal para Linux, pero sospecho que podrían integrarse en el futuro. MANUAL GNU Jami cuenta con documentación y foros en línea, y especialmente útil es su wiki en castellano: https://docs.jami.net/es/user/index.html ---------------------------------------------------------------------