¿Cómo hacer que una aplicación de mensajería realmente segura sea similar a Signal?
Publicado: 2021-10-05La privacidad y la seguridad de la comunicación en línea son temas candentes en estos días, y por una razón. Como sabemos cómo crear una aplicación encriptada , nos gustaría compartir nuestra experiencia y ofrecer consejos en este artículo. Hablaremos sobre el estado actual de la industria, los métodos de cifrado y los posibles riesgos. Para una estimación de precio, desplácese hasta el final del artículo.
¿Qué sucedió?
A principios de 2021, WhatsApp, la aplicación de mensajería más popular del mundo, lanzó sus nuevos términos de servicio. Causaron un gran alboroto, en parte debido a la confusión. Después de eso, el CEO de Tesla, Elon Musk, quien es un conocido crítico de Facebook (WhatsApp es propiedad de Facebook), sugirió que sus 42,5 millones de seguidores de Twitter se cambiaran a Signal, un mensajero que antes no era muy conocido.
Usar señal
- Elon Musk (@elonmusk) 7 de enero de 2021
A raíz de este tweet, Signal, cuyo sistema de cifrado utiliza WhatsApp , por cierto, vio un aumento en los usuarios. Este aumento fue tan grande que los servidores tuvieron dificultades para afrontarlo. Los desarrolladores de Signal lograron manejar la situación, pero demostró que la demanda de sistemas de mensajería segura va en aumento. Ahora, todo el mundo quiere saber cómo crear una aplicación como Signal. Lo que nos lleva a este artículo.
¿Qué significa tener una mensajería instantánea segura?
La mayoría de las aplicaciones de mensajería instantánea actuales utilizan cifrado de extremo a extremo. ¿Qué es? A continuación, se muestra un diagrama de la arquitectura de una aplicación de chat como ejemplo:
En pocas palabras, un mensajero típico tiene tres partes principales interconectadas:
El dispositivo del remitente
Un servidor
El dispositivo del destinatario
Un remitente envía un mensaje a un destinatario a través de un servidor. Sin cifrado, este mensaje se transmitirá como texto sin formato y, por lo tanto, cualquier persona que tenga acceso a él podrá leerlo en cualquier punto del camino. Con el cifrado, el mensaje se transforma de texto sin formato en texto cifrado, cifrado con una clave, para su transferencia y luego se vuelve a transformar (descifrar) en el dispositivo del destinatario , con una clave emparejada.
El cifrado de extremo a extremo significa que las claves de cifrado se almacenan en los extremos, es decir, en los dispositivos de los usuarios, en lugar de en el servidor. Esto hace que nadie, excepto el remitente y el receptor, pueda leer los mensajes . Ni siquiera el proveedor de servicios propietario del servidor tiene acceso a ellos. Para piratear estos mensajes, un pirata informático necesita acceder a los dispositivos de los usuarios, ya que piratear el servidor del proveedor de servicios es de poca utilidad.
El punto débil del cifrado de extremo a extremo es su susceptibilidad a los llamados ataques man-in-the-middle (MITM) . Los piratas informáticos expertos en MITM pueden piratear la clave pública almacenada en un servidor y configurar el sistema para reconocer al pirata informático como un destinatario legítimo, lo que permite que el pirata informático espíe una conversación e incluso participe en ella en lugar del destinatario previsto.
Para combatir los ataques MITM , los desarrolladores de Signal han mejorado aún más el cifrado de extremo a extremo de su protocolo con un algoritmo de doble trinquete. Este algoritmo crea claves de sesión además de las claves públicas y privadas creadas cuando los usuarios instalan la aplicación. Las claves de sesión se crean para cada mensaje enviado y se autodestruyen cuando la sesión se completa (es decir, cuando se recibe el mensaje), lo que hace imposible que un pirata informático descifre todos los mensajes si logran obtener la clave para una sesión.
WhatsApp utiliza cifrado de extremo a extremo para todos sus mensajes. De hecho, utiliza el propio protocolo de cifrado de Signal. Entonces, ¿cuál es el problema con eso ahora?
Diferentes enfoques para el cifrado de un extremo a otro
Es cierto que WhatsApp no puede espiar el contenido de sus mensajes y no puede escuchar sus llamadas dentro de la aplicación. Sin embargo, la versión del protocolo de encriptación de Signal que usa WhatsApp solo encripta el contenido de los mensajes . Esto significa que WhatsApp y, por extensión, Facebook y cualquier persona con la que decidan compartir la información, pueden ver con quién está hablando, cuándo y desde dónde. Estos metadatos pueden revelar información muy personal sobre todos los participantes en una conversación.
Al mismo tiempo, la aplicación Signal utiliza un protocolo actualizado que también codifica metadatos, y nadie, ni siquiera los propietarios de la aplicación, puede decodificarlo sin acceso directo a los dispositivos de los usuarios .
Además, según la Política de privacidad de Signal, casi no se almacenan metadatos en sus servidores de forma permanente , solo mientras sea necesario para recibir un mensaje. Luego, se elimina todo excepto la fecha del último inicio de sesión del usuario.
La única otra aplicación de mensajería que hace esto es Telegram. Sin embargo, en Telegram, el cifrado de extremo a extremo solo se aplica en modo secreto y no a todos los chats de forma predeterminada. Los mensajes generales no están bien encriptados en Telegram. Al menos Telegram se niega a compartir dicha información con nadie, ya sean gobiernos o anunciantes.
Hoy en día, la seguridad de las aplicaciones de mensajería es un tema enorme: la incapacidad o la falta de voluntad de un mensajero para compartir la información de los usuarios con los gobiernos a menudo se encuentra con limitaciones y prohibiciones. Telegram, por ejemplo, ha sido prohibido en Rusia, la patria de su creador; los Emiratos Árabes Unidos han prohibido todos los servicios de VoIP no estatales. Como respuesta, las personas de todo el mundo demandan medios de comunicación más seguros y el mercado de aplicaciones de mensajería móvil seguras está creciendo .
Entonces, ¿cómo hacer un mensajero seguro?
La mayoría de la gente usa al menos un mensajero, probablemente varios, y el conjunto básico de funciones de una aplicación de mensajería no le sorprenderá. Así que seremos breves en esta sección. Aquí hay una tabla de características para una solución de chat segura :
Características | Descripción |
---|---|
Inducción | Presente brevemente su aplicación; cuanto más corto, mejor, pero hazlo comprensible. |
Registrate e inicia secion | Una cuenta de mensajería suele estar vinculada a un número de teléfono. |
Perfiles de usuario | Un perfil almacena información personal de un usuario y enlaces a funciones importantes como contactos, configuraciones y preguntas frecuentes. |
Ajustes | Permita que los usuarios ajusten el Messenger según su conveniencia. |
Notificaciones | En una aplicación de mensajería, es esencial tener un sistema confiable para notificaciones instantáneas. |
Chats de texto | Se requiere una aplicación de mensajería moderna para admitir tanto los chats individuales como los chats grupales. |
Transferencia de archivos | Los usuarios deben poder intercambiar mensajes de texto, así como compartir imágenes y documentos. |
Chats / llamadas de voz | Una función de VoIP es tan importante hoy como los mensajes de texto. El sonido de calidad requiere una conexión estable incluso con velocidades de Internet lentas. |
Mensajes autodestructivos | Incluso con el protocolo Signal, si alguien se apodera del teléfono de un usuario, puede ver todos los mensajes anteriores a menos que los usuarios los borren. Puede agregar una opción para que los usuarios configuren un temporizador para destruir mensajes y / o archivos multimedia. |
Sincronizar | La mayoría de las personas tienen más de un dispositivo con aplicaciones de comunicación instaladas. Para que los usuarios puedan cambiar sin problemas entre dispositivos como mejor les parezca, deberá proporcionar una función de sincronización. |
Autenticación de dos pasos | Para proteger mejor los datos de los usuarios en caso de robo de un dispositivo, ofrezca autenticación de dos pasos mediante huella digital, contraseña, código PIN o código de verificación o enlace. |
Si desea crear una aplicación de mensajería de igual a igual que se destaque entre la multitud, considere estas características:
Pegatinas y GIF. Hoy en día, todos los demás mensajeros integran el popular servicio GIF Giphy en su interfaz para complementar los emoticonos. Las pegatinas se hicieron populares cuando Telegram comenzó a ofrecerlas de forma gratuita (a diferencia de Viber, por ejemplo, donde solo algunas pegatinas son gratuitas).
Chats secretos / privados. Ya sea que cifre o no los metadatos de sus usuarios, en la tormentosa realidad actual, podría convertirse en el punto de venta de su aplicación tener chats que desaparecen o se bloquean. Por ejemplo, Telegram ofrece chats secretos que desaparecen automáticamente si cierra sesión en Telegram en su dispositivo. Estos chats no se almacenan en los servidores en la nube de Telegram y, por lo tanto, no se pueden realizar copias de seguridad ni sincronizar incluso si ha iniciado sesión en más de un dispositivo.
Video chat. En 2020, con un número abrumador de personas obligadas a trabajar de forma remota debido a la pandemia, las herramientas de videoconferencia han experimentado un gran aumento en popularidad. Y muchos han lamentado la falta de videollamadas, individuales y grupales, en los mensajeros populares existentes. De ninguna manera es una característica imprescindible, pero sin duda será popular entre los usuarios.
Cómo proteger una aplicación de mensajería
La parte trasera es donde ocurre la magia en los mensajeros. Los especialistas de backend son responsables de la seguridad y confiabilidad de su aplicación de chat, ya que son los que saben cómo cifrar los mensajes.
Hay varias formas de implementar el cifrado de un extremo a otro y hacer que una aplicación de comunicación sea segura . Por lo general, los mensajes cifrados se almacenan en los servidores de un mensajero (los servidores en la nube son más seguros y, por lo tanto, se recomiendan para este propósito) y las claves de descifrado solo están disponibles en los dispositivos de los usuarios para evitar una violación de datos en caso de que los servidores sean pirateados.
También es posible renunciar por completo al almacenamiento de mensajes en sus servidores y almacenarlos en los dispositivos de los usuarios. Pero eso significa que sus usuarios no podrán restaurar su historial de mensajes en caso de que los dispositivos en los que hayan iniciado sesión se pierdan o eliminen la aplicación. También será imposible sincronizar mensajes entre dispositivos.
Para crear una aplicación de mensajería segura como Signal, puede usar la API de mensajería encriptada de Signal . El protocolo de cifrado de código abierto de Signal es el más popular entre los desarrolladores que crean mensajeros, ya que se revisa y audita constantemente por pares. En el momento de escribir este artículo, los siguientes mensajeros utilizan el protocolo de Signal para cifrar el contenido de sus mensajes:
- Facebook Messenger (solo chats secretos)
- Skype (solo conversaciones privadas)
- Mensajes de Google para Android (SMS)
Telegram utiliza su propio algoritmo simétrico basado en encriptación AES de 256 bits llamado MTProto para chats secretos. Sin embargo, este algoritmo es de código cerrado, por lo que Telegram ha sido ampliamente criticado.
Costo para hacer una aplicación de mensajería segura
El costo de hacer cualquier aplicación depende en gran medida del tiempo requerido para el desarrollo . En cuanto al número de funciones, los mensajeros no parecen demasiado complejos; sin embargo, el back-end solo para una aplicación de mensajería bien encriptada puede tardar alrededor de 520 horas en construirse .
Las opciones habituales del lenguaje de programación para un back-end de mensajería son Elixir o Erlang : Ruby on Rails no es una buena opción para una gran cantidad de datos en forma de mensajes de texto, medios y llamadas de audio / video. WhatsApp usa Erlang, mientras que Elixir es empleado por Discord.
En Mind Studios , desarrollamos una aplicación de mensajería con un back-end basado en Elixir. Sin embargo, Elixir en sí se basa en Erlang con algo de Ruby mezclado, por lo que un desarrollador experimentado de Elixir también puede escribir código en Erlang.
Aquí está nuestra opinión sobre el tiempo necesario para desarrollar una aplicación de mensajería segura :
Análisis comercial y creación de especificaciones: más de 96 horas
Diseño UI / UX: más de 168 horas
Aplicación móvil del lado del cliente de iOS: más de 450 horas para un MVP con las funciones más esenciales
Desarrollo de backend: más de 520 horas
Prueba de aplicaciones iOS - ~ 240 horas
El desarrollo de Android lleva un poco menos de tiempo que el de iOS, pero las pruebas tardan más debido a la mayor variedad de dispositivos.
Con esta estimación aproximada de tiempo, el costo de construir una aplicación de chat realmente segura comenzará en $ 51,590 y aumentará con funciones adicionales.
Conclusión
Los mensajeros seguros son excepcionalmente importantes, y la demanda de ellos es alta hoy y será mayor mañana. Pero también lo es la competencia. No todas las empresas pueden crear aplicaciones de mensajería cifrada. Para desarrollar una aplicación segura de mensajería instantánea como Signal, necesitará desarrolladores con experiencia en este nicho .
También deberá mantenerse al día con los líderes de la industria en lo que respecta al diseño. La aplicación Signal es simple y no es famosa por su intuición, pero gana a los usuarios que se preocupan por su privacidad más que por las campanas y los silbidos. WhatsApp y Telegram, por otro lado, se ven elegantes y son excepcionalmente intuitivos además de ser seguros (aunque su seguridad puede no estar al mismo nivel que Signal, sigue siendo impresionante). Entonces, para brillar intensamente en este nicho, su aplicación personalizada deberá ser segura y fácil de usar . Equilibrar estos requisitos no es un asunto insignificante. Pero con el equipo adecuado, es posible.