Características de CoyIM

Características y soporte XMPP

Características que nos distinguen

CoyIM implementa muchas características que existen en otros clientes de chat. Sin embargo, hay algunas cosas que hacemos de manera diferente:

  • Cifrado de extremo a extremo de todos los chats uno-a-uno con la versión 3 de OTR.
  • Anonimización automática de las conexiones del servidor a través de Tor (si está instalado).
  • Capas adicionales de cifrado y anonimización del servidor mediante el uso de los Servicios Cebolla de Tor (si el servidor en cuestión tiene una dirección conocida).
  • Compartimentación de diferentes cuentas mediante el uso de circuitos Tor separados, retrasos en las conexiones aleatorias y otros mecanismos.
  • Búsqueda segura de información de conexión a través de Tor (usando SRV, SRV para TLS y Onion Services en entradas SRV si es posible).
  • Transferencia encriptada de archivos y directorios entre usuarios de CoyIM (utilizando mecanismos de cifrado de OTR para hacer que este cifrado sea autenticado, confidencial y denegable).
  • Fuertes mecanismos de autenticación mediante SASL SCRAM (según el soporte del servidor, SHA-512, SHA-256 o SHA-1, con la versión PLUS de ser posible).
  • Migración de otros clientes de chat como Pidgin, Adium, Gajim o xmpp-client, mediante la importación de toda la información de la cuenta, incluidas las claves OTR y los fingerprints.
  • Protege toda tu información de configuración, incluidos los fingerprints y claves OTR, guardándola en un archivo de configuración fuertemente cifrado.

Características que quisiéramos tener

Creemos que actualmente CoyIM es un cliente de chat muy seguro y capaz. Pero al mismo tiempo queremos agregar algunas características más. Puedes consultar nuestro issue tracker de Github para ver una lista completa, pero estas son algunas de las más importantes para nosotros:

  • Disponibilidad en más idiomas: actualmente tenemos soporte para inglés, sueco, español y varios idiomas más. Pero queremos llegar a más personas en todo el mundo, por lo que el soporte para más idiomas es definitivamente una prioridad para nosotros.
  • Soporte para más funciones de chat multiusuario. El soporte actual de la sala de chat funciona extremadamente bien para muchos propósitos, pero también nos faltan otras características que mejorarían la experiencia.
  • Bundle con Tor. Actualmente, debes tener Tor instalado por separado, pero sería genial simplemente poder descargar CoyIM y que contenga todo lo que necesitas, incluido Tor.
  • Creación de una nueva cuenta aleatoria anónima con una sóla acción.
  • Soporte para construcciones reproducibles para todas las plataformas. Actualmente sólo admitimos construcciones reproducibles para Linux, y dado que esta es una característica de seguridad importante, queremos extenderla también a macOS y Windows.
  • Interfaz de usuario mejorada. Con el trabajo en el chat multiusuario, prestamos mucha atención a la usabilidad de todas las funciones y al diseño gráfico. Queremos extender este trabajo al resto de la aplicación.
  • Mostrar un rating de seguridad unificado que combine varias medidas de seguridad diferentes, lo que facilitaría que alguien comprenda de inmediato el nivel de protección que tiene.

Funciones que no tendremos

El objetivo de CoyIM es proporcionar a sus usuarios la experiencia más segura. Por este motivo, tenemos mucho cuidado con las funciones que añadimos a la aplicación. Cualquier característica que agreguemos aumentará el tamaño de la base del código, dando lugar a una mayor complejidad y una mayor probabilidad de errores. Esto significa que a menudo diremos que no al decidir sobre nuevas funcionalidades. Esto también tiene un gran impacto en la estructura de la aplicación en sí. Otras características no necesariamente hacen que el código sea más complejo, pero conllevan otros riesgos. Esto puede sonar negativo e incluso opresivo, pero el objetivo es brindarte comodidad como usuario: cada característica que no implementemos es algo de lo que no tendrás que preocuparte como una amenaza para tu seguridad.

Aquí te presentamos una descripción general de algunas cosas que puedes esperar encontrar en un cliente de chat, pero no en CoyIM:

Opciones de configuración para todo

Muchos programas te permiten configurar todos los aspectos del sistema. Esto es natural - como desarrolladores, a veces es difícil tomar una decisión. Por lo tanto, a menudo terminamos simplemente dándole una opción al usuario. Por supuesto, esto puede ser muy poderoso, y poder personalizar todo en una aplicación puede generar excelentes resultados. Pero al mismo tiempo, cada opción agregada también conduce a más código. Por lo tanto, al ser una aplicación enfocada en la seguridad, a menudo intentaremos evitar las opciones de configuración y, en su lugar, intentaremos elegir la opción que sea correcta para la mayoría de los casos.

Registro automático de conversaciones

La mayoría de las aplicaciones de comunicación almacenarán registros de todas tus comunicaciones en algún lugar. A menudo, puedes eliminarlos manualmente o desactivarlos, pero el objetivo predeterminado es almacenar esta información. Nuestra filosofía es que es mejor no almacenar la información, en primer lugar. De esa forma, desaparece el riesgo de que la información sea robada. Las conversaciones en CoyIM deben considerarse efímeras, de la misma manera que las conversaciones físicas cara a cara generalmente no se almacenarán ni grabarán. CoyIM no almacenará registros y ni siquiera tendrás la opción de activarlos.

Stickers, renders de emojis y otras comunicaciones no textuales

La mayoría de las aplicaciones de comunicación admiten muchas formas diferentes de expresarse. Especialmente en teléfonos móviles, están disponibles los stickers, emojis, gifs y otras representaciones gráficas. En el caso de CoyIM, hemos decidido minimizar estas herramientas y centrarnos en el texto como medio de comunicación. Fuera del costo en complejidad de estas características, existen algunos riesgos de seguridad adicionales asociados a los gráficos. Muchos de los peores exploits que han afectado a las aplicaciones de mensajería en los últimos años han utilizado errores en las bibliotecas de procesamiento de imágenes como la vulnerabilidad a explotar. Al minimizar el uso de representaciones gráficas, también estamos reduciendo el riesgo de este tipo de ataques.

Los links son una parte normal de la mayoría de las aplicaciones en estos días. Pero al mismo tiempo, los enlaces en los correos electrónicos y los mensajes son vectores comunes de ataque. Los profesionales de la seguridad han intentado durante mucho tiempo animar a las personas a que no hagan clic indiscriminadamente en los links, y nosotros queremos contribuir a esa idea. Por esta razón, la interfaz de usuario de CoyIM intenta evitar el uso de links y tampoco resaltará ni reconocerá enlaces en las conversaciones.

Interfaces gráficas de usuario atractivas proporcionadas por tecnología de navegadores

La mayoría de las aplicaciones de comunicación en estos días usan tecnología de navegador para construir sus interfaces de usuario. Lo hacen incorporando una “vista web” en sus aplicaciones, o construyen la aplicación completa usando algo como Electron. Y aunque estas tecnologías les permiten crear interfaces de usuario muy agradables con bastante facilidad, también conllevan riesgos. La tecnología de navegador (como HTML, JavaScript y CSS) es grande y compleja, y al utilizar estos métodos, se está incorporando un navegador en la aplicación. Eso significa que también se están incorporando todas las vulnerabilidades del navegador en la aplicación. Por esta razón, CoyIM no se construye con este tipo de tecnología. A veces, eso significa que CoyIM no se verá tan bien como otras alternativas, pero todavía hay mucho que podemos hacer utilizando GTK nativo.

Soporte para otros protocolos de comunicación

Existen muchos protocolos de chat diferentes. XMPP es sólo uno de ellos. A lo largo de los años, se han creado cosas como ICQ, MSN, Yahoo, Skype, Facebook Messenger y muchas más. CoyIM nunca admitirá estos protocolos. En general, al agregar protocolos, el efecto conduce a un aumento exponencial de la complejidad. Hacer que un sistema con un sólo protocolo de comunicación funcione bien ya es bastante difícil. Tratar de administrar diferentes protocolos con diferentes características y comportamientos mientras se mantiene un nivel de seguridad extremadamente alto simplemente no es factible. XMPP es un protocolo con un buen soporte. Tiene muchas extensiones que agregan una gran variedad de funciones, sin embargo su núcleo es lo suficientemente simple como para poder hacer cualquier cosa que necesites. Al mismo tiempo, existen muchas aplicaciones con soporte para XMPP, por lo que nosotros también lo seguiremos teniendo.

Soporte para otros protocolos de encriptación

Al igual que con el protocolo de comunicación, sólo queremos dar soporte a un único protocolo de cifrado. Ese protocolo es OTR y queremos implementarlo de la mejor manera posible. Existen muchos protocolos, pero creemos que OTR tiene el perfil de seguridad más sólido que existe. Además, tenemos confianza en nuestra implementación de OTR, ya que ha recibido una auditoría que demuestra que hace lo que se supone debe hacer. Por esta razón, no implementaremos PGP, OMEMO o cualquiera de los otros posibles protocolos de cifrado en CoyIM.

Plugins

Una característica común de las aplicaciones de comunicación es su compatibilidad con plugins. Estos pueden proporcionar todo tipo de nuevas funciones en dependencia de la arquitectura de la aplicación. A veces, las aplicaciones utilizan plugins internamente para implementar diferentes funciones y, a veces, permiten a los usuarios administrar e instalar sus propios plugins. Pero al igual que con muchas otras cosas en esta lista, la explosión en complejidad de tal característica es simplemente imposible de aceptar si queremos mantener un nivel considerable de seguridad. Básicamente, una arquitectura de plugins agrega mucha complejidad por sí misma, ya que se necesita diseñar los puntos donde estos se puedan conectar. Pero una vez que tienes plugins, simplemente no tendrás control sobre el código base, ya que un plugin podría hacer una amplia una variedad de cosas que podrían comprometer la seguridad de la aplicación. Por esta razón, no tenemos planes de admitir plugins en CoyIM.


Soporte XMPP

CoyIM es una implementación del estándar XMPP. Con algunas excepciones por razones de seguridad, CoyIM es compatible con el protocolo central como se detalla en RFC 6120, RFC 6121, RFC 7590 y RFC 7622.

Extensiones XMPP

XMPP Standards Foundation desarrolla extensiones para XMPP en una serie de estándares denominados XMPP Extension Proposals (XEP). Esta página enumera los XEP que son total o parcialmente admitidos por CoyIM: