Modelo de amenaza
La mayoría de las aplicaciones deberían tener un modelo de amenazas que defina contra qué tipo de amenazas y adversarios protegen a sus usuarios, y qué tipo de mitigaciones se utilizan para esas protecciones. Buena parte de las aplicaciones tienen un modelo de amenaza de este tipo, pero no siempre articulado o escrito. Existe en la cabeza de los desarrolladores. CoyIM ha estado en la misma situación durante mucho tiempo, donde los desarrolladores saben contra qué podemos proteger y contra qué no podemos proteger. Por supuesto, esto no necesariamente ayuda a los usuarios. Y no es tan fácil para los desarrolladores externos entrar y trabajar en el proyecto con el mismo entendimiento.
Actualmente estamos trabajando para expandir el modelo de amenazas para CoyIM. Puedes ver el estado actual de la misma aquí. Este modelo está bastante estructurado, ya que sigue una metodología establecida. Pero puede que no necesariamente te ayude, como usuario, a comprender fácilmente las implicaciones. Por lo tanto, en este documento analizaremos los escenarios más comunes y veremos contra qué situaciones CoyIM te protegerá y en cuáles no lo hará. Este es un breve resumen del modelo de amenazas más extenso y detallado. Si tienes algún escenario que no está claro de esta discusión, no dudes en contactarnos.
¿Quién puede ver mi lista de contactos?
Debido a cómo funciona XMPP, tu servidor siempre podrá ver esta información. Sin embargo, la lista de contactos sólo incluye los nombres de cuenta de sus contactos y, potencialmente, cualquier apodo (nickname) que les hayas dado a través de otras aplicaciones (CoyIM sólo almacena nicknames localmente, para minimizar la información que recibe el servidor). El servidor no sabrá nada más sobre estos contactos, a menos que sean contactos con cuentas en el mismo servidor, en ese caso, el servidor sabrá más.
Quien pueda interceptar el tráfico entre el servidor y tú podrá ver la lista de contactos. Por esta razón, XMPP utiliza seguridad del transporte para proteger estos datos. Suponiendo que la implementación y las especificaciones son seguras, nadie, con excepción del servidor, podrá ver la lista de contactos.
Tus contactos no pueden ver tu lista de contactos. Esto se basa en el funcionamiento del protocolo XMPP.
Finalmente, cualquier persona con acceso a tu computadora mientras está en ejecución, con nivel de superusuario, ya sea como un virus u otro tipo de malware, podrá ver tu lista de contactos, mientras ejecutas CoyIM. Específicamente, si pueden leer la memoria de otras aplicaciones que se estén ejecutando, podrían atarse al proceso de CoyIM y extraer esta información. Si CoyIM no se está ejecutando, o el malware no tiene privilegios de superusuario, esta información no será accesible, asumiendo que estás utilizando el archivo de configuración cifrado. Si el archivo de configuración no está encriptado y el malware tiene acceso de lectura a tu directorio de usuario (home), esta información será accesible.
¿Quién puede ver mi dirección IP?
Al igual que con la lista de contactos, el servidor verá tu dirección IP. Cualquier ISP o persona en la red entre el servidor y tú, también podrá ver tu dirección IP. Sin embargo, las interceptaciones no les permitirán realizar la conexión entre tu dirección IP y la dirección de tu cuenta. Pero si el servidor no tiene muchas cuentas, podría ser fácil averiguar esta conexión. Si tu cuenta está alojada en un servidor más grande con muchas cuentas, esto puede ser más difícil de hacer, pero aún así,no imposible. CoyIM mitiga estos riesgos mediante el uso de Tor para el transporte, de forma predeterminada. Si estás usando Tor, ni el servidor ni ninguna persona que intercepte el tráfico podrán ver tu dirección IP, con la excepción de el primer relé Tor, y cualquier persona en la red entre usted y el primer repetidor (relay) de Tor. Sin embargo, debido al diseño de Tor, a menos que el adversario tenga una vista completa de la totalidad de la red, no será factible conectar tu dirección IP a tu cuenta. Suponiendo que Tor funcione según lo diseñado, nadie, excepto un adversario pasivo global, podrá conectar tu dirección IP con tu cuenta. Esto incluye al servidor.
Tus contactos no pueden ver tu dirección IP. Sólo pueden saber qué servidor estás utilizando.
Al igual que con la lista de contactos, la excepción es cualquier adversario con acceso a tu computadora mientras se ejecuta, con un nivel de superusuario. Si CoyIM se está ejecutando, el malware puede extraer información de la cuenta del proceso en ejecución. Si CoyIM no se está ejecutando o el malware no puede leer la memoria de otros procesos, y el archivo de configuración está encriptado, esta información no será accesible. Si el archivo de configuración no está encriptado y el malware tiene acceso de lectura a tu directorio de usuario, esta información será accesible.
¿Quién puede ver el contenido de mi comunicación?
El objetivo del cifrado de extremo a extremo es asegurarse de que sólo la persona que es el destinatario previsto pueda ver el contenido de la comunicación. Un objetivo secundario también es garantizar que el destinatario reciba el mismo contenido que fue enviado. Si CoyIM no tuviera cifrado de extremo a extremo, el servidor podría ver y modificar el contenido de la comunicación. El servidor del destinatario también podrá ver y modificar el contenido. Cualquier programa malicioso que se ejecute en la computadora de los remitentes o de los receptores también podría ver y modificar el contenido. La seguridad del transporte protege el contenido durante la transmisión de computador a servidor, de servidor a servidor y de servidor a computadora.
Al pensar en la protección de la comunicación cifrada, vale la pena analizarla desde la perspectiva de cuando un atacante tiene acceso al material de la clave. Existen dos escenarios comunes que se acoplan a la situación en la que un atacante obtiene acceso a material de la clave en algún punto antes de que se envíe un mensaje, y en otro escenario donde un atacante obtiene acceso al material de la clave en algún momento después de que se envía un mensaje. En ambos casos, el atacante también necesita acceder al texto cifrado. Pero incluso con ese acceso, el atacante no tendrá acceso al texto sin cifrar. El único caso en el que un atacante puede obtener acceso al contenido es si tiene acceso al material de la clave utilizado exactamente en la misma instancia que cuando el mensaje se está enviando o se está recibiendo.
Un atacante tiene la posibilidad de modificar un mensaje cifrado, después de haber sido recibido, pero la modificación tiene que ocurrir sin conocimiento del contenido. Esto otorga la propiedad de seguridad llamada negabilidad.
En la configuración básica, CoyIM también evita que se envíe texto sin cifrar a un atacante. Por tanto, el modelo de amenaza se asegura de que los servidores nunca vean ningún contenido no cifrado, suponiendo que no hayas cambiado la configuración predeterminada.
Si se está ejecutando un programa malicioso en la computadora del remitente o del receptor, y ese programa tiene acceso al proceso memoria de CoyIM, ese programa sí tendrá acceso al contenido, y también podrá modificarlo.
¿Contra qué no te protege CoyIM?
CoyIM no te puede proteger contra programas maliciosos que se ejecutan en la misma máquina, que tienen acceso a la memoria de proceso de CoyIM. CoyIM no puede proteger tu anonimato contra un observador de red pasivo global, pero la confidencialidad y la integridad del contenido aún está protegida. Con un archivo de configuración no cifrado, CoyIM no te puede proteger contra alguien que pueda leer archivos en tu computadora. CoyIM no puede protegerte contra un adversario que tenga el poder computacional o contra algoritmos para romper el DLP en un tiempo razonable, con un nivel de seguridad de 80 bits. CoyIM no puede protegerte contra un adversario que pueda romper o degradar los métodos TLS utilizados en la comunicación entre servidores y computadores del cliente, cuando Tor no se utiliza como transporte. Sin embargo, este tipo de adversario sólo podrá ver listas de contactos y otros metadatos, mas no ver o modificar el contenido.