¿Por qué creamos CoyIM? - Seguridad por Defecto

Feb 10, 2022

Como hemos mencionado en publicaciones anteriores, estamos muy cerca de lanzar la versión 0.4 de CoyIM. Este es un release extenso que contiene muchas mejoras y nuevas funcionalidades. Y aunque estamos muy contentos con todos estos cambios, también es importante tener en cuenta las razones por las que se creó CoyIM en primer lugar. Estas razones siguen siendo muy válidas hoy en día, especialmente porque realmente no vemos que otras herramientas se estén inspirando en nuestras decisiones. Al final del día, para que tengamos herramientas seguras, las cosas tienen que cambiar de muchas maneras. En esta y en publicaciones anteriores, queremos detallar algunas de las razones por las que sentimos que era necesario crear CoyIM. En este artículo cubriremos específicamente el tema de la seguridad por defecto.

Existen muchas aplicaciones que tienen soporte para la seguridad de varias maneras. Los navegadores te permiten conectarte de forma segura a los sitios web. Los clientes de correo electrónico te permiten cifrar los correos electrónicos. Los sistemas operativos te permiten cifrar tus unidades de disco. Pero, en general, este tipo de decisiones no se dan por defecto. Cuando instalas una nueva versión de Windows, el disco duro no se cifrará. Si abres tu cliente de correo electrónico y envías un correo electrónico, es muy probable que éste no sea encriptado. Si abres un navegador y escribes una dirección, ésta será segura de forma predeterminada. Pero hace unos años, este no era el caso - en aquel entonces, la conexión básica no estaría encriptada y tendrías que pedir específicamente que fuera segura. Hay muchas razones para todas estas situaciones, pero el resultado final es el mismo: no estás protegido por defecto.

¿Y qué hay de los clientes de chat para los cuales se creó CoyIM como alternativa? Lamentablemente, la situación era a menudo muy similar. Podías activar funciones de seguridad de distintos tipos. Podías instalar plugins para tener acceso a más funcionalidades. Podías instalar otros programas y luego configurar la combinación para protegerte. Pero tenías que hacer todo esto manualmente, y tenías que saber exactamente qué hacer para configurar estas mejoras. En gran medida, cuando inicializabas estos programas de chat, arrancarías con la versión menos segura de la configuración.

Como dijimos antes, hay muchas razones por las que esto sucedió. Principalmente, la verdadera respuesta es que estos programas eran de propósito general y no estaban particularmente interesados en hacer las cosas lo más seguras posible, especialmente si eso tendría el impacto de hacer las cosas un poco más complicadas para los usuarios. Este es un punto de vista comprensible. Cualquier cosa que ahuyente a los usuarios puede ser un verdadero problema para alcanzar un mayor número de adeptos. Al mismo tiempo, incluso para programas de propósito general, creemos que este es el camino equivocado. Siempre serán los desarrolladores de un producto quienes conozcan mejor los tipos de opciones que se pueden tomar para mejorar la seguridad. Poner esa responsabilidad en el usuario significa que esa relación se invertiría. La persona que sepa menos sobre las opciones de seguridad de su producto tendrá que mejorar la situación, desde fuera. Mientras tanto, cada aplicación que existe es objetivo de ataque. Cualquier cosa que instales en tu computadora puede usarse para atacarte de alguna manera. Si abres una imagen que alguien te envió, es posible que el archivo contenga un ataque contra el programa que usas para mostrar la imagen, por ejemplo. Esto significa que al crear una aplicación, cualquier tipo de aplicación, realmente tenemos una responsabilidad con nuestros usuarios para pensar en la seguridad desde el principio. De lo contrario, estaríamos creando una nueva superficie de ataque que haría menos seguros a los usuarios al instalar nuestro software.

Para nosotros, al desarrollar CoyIM, esto se tradujo en tener seguridad por defecto. Hay cientos de lugares en el programa donde habría sido posible implementar diferentes opciones de seguridad. En todos estos lugares, siempre tomamos la decisión que creímos era la que protegería mejor a nuestros usuarios. En algunos casos, expusimos esta elección como configuración, de modo que fuera posible que el usuario cambiara esta opción. Pero siempre lo hicimos para que el usuario tuviera que elegir disminuir su seguridad, no aumentarla. En muchos casos, también decidimos ni siquiera exponer la opción al usuario. Muchos estudios han demostrado que dar opciones para todo en un programa no conduce a una buena experiencia de usuario para la mayoría de personas. Entonces, a menudo decidimos simplemente hacer la elección y tenerla siempre ahí. Sólo cuando pudimos ver que podrían existir buenas razones para cambiar una decisión de seguridad, lo consideramos una opción.

¿De qué tipo de opciones de seguridad estamos hablando? Bueno, la más simple es probablemente que incluimos el cifrado de extremo a extremo de forma predeterminada, y para cada persona que se agregue como contacto, CoyIM requerirá que el cifrado de extremo a extremo sea iniciado antes de enviar cualquier tipo de mensaje. Esto significa que es imposible que un usuario envíe un mensaje sin cifrado, a menos que se modifique la configuración. Por supuesto, si intentan hablar con alguien que no tiene encriptación en absoluto, no podrán enviar un mensaje a esta persona. Esta elección significa que, al menos, no expondremos la información de alguien a menos que se esté absolutamente seguro de que esto es lo que quiere.

Cuando se agrega una cuenta de alguna manera, siempre estará configurada para usar Tor. Por supuesto, no todos querrán usar Tor, o podrán querer configurar su propio proxy que sea más apropiado para su entorno. Para nosotros, Tor es la elección conservadora y más segura. Pero si el usuario siente que sabe más, puede cambiar esta opción.

La mayoría de las aplicaciones admiten TLS, pero casi ninguna expone la posibilidad de fijar certificados. Esto es realmente una seguridad adicional además de las protecciones de TLS regulares, que aseguran que se pueda controlar cada vez que un certificado cambia de distintas maneras. Para configuraciones de seguridad realmente altas, es posible que se desee la opción de inspeccionar manualmente un nuevo certificado antes de usarlo. CoyIM hace esto por defecto y te permite establecer una política sobre cómo administrar certificados en el futuro.

Otro ejemplo es cómo la mayoría de las aplicaciones asumen que el almacenamiento local es de confianza. Básicamente, la idea es que tú puedes simplemente almacenar las claves privadas y la configuraciones sensibles en texto sin cifrar, porque si alguien tiene acceso a tu disco duro, estás perdido de todos modos. Pero aquí hay muchos matices que esta idea reduccionista no tiene en cuenta. Primero, no todos tendrán discos duros encriptados y es mucho más fácil pensar en la posibilidad de que un atacante copie un disco, en lugar de poner cosas maliciosas en el este. Pero si dices que ya perdiste si alguien pudo acceder a tus discos duros, eso significa que estás combinando las dos posibilidades. Por eso, CoyIM siempre te da la opción de cifrar de forma segura tu archivo de configuración. La aplicación hace esto de una manera compatible con los gestores de contraseñas, utilizando un método que implica que incluso las malas contraseñas brindarán una protección decente. Y toda la información sensible, de cualquier tipo, se almacena dentro de este archivo de configuración, minimizando el riesgo de cualquier tipo de fuga de información.

Como mencionamos, hay muchos tipos de funciones como esta en CoyIM. Describirlas todas no tiene sentido, pero con suerte, esta descripción general te dará una idea de los tipos de protecciones que CoyIM te brindará y que ningún otro cliente lo hará. El punto de la seguridad por defecto es que siempre será más fácil para un usuario disminuir su seguridad que tomar sus propias decisiones sobre cómo aumentarla. Entonces, una aplicación debería comenzar en el modo más seguro, y luego permitir al usuario las opciones necesarias para personalizar este comportamiento. Si se crearan más aplicaciones desde cero, siguiendo esta filosofía, creemos que el mundo tecnológico sería significativamente menos vulnerable.