¿Qué idiomas necesito para crear una aplicación de mensajería cifrada?

¡Un gran día y mañana para ti desde Ucrania!

Pregunta interesante: dependiendo de la plataforma a la que se dirija su aplicación. Un poco obvio, pero sería preferible Swift para iOS y Kotlin para Android 😀

Aparentemente sugeriría escribir backend en Ruby, para chats en tiempo real podría implementar Node. js o lenguaje Elixir con un marco Phoenix además de eso.

A la vista, hay un artículo reciente que publiqué sobre el nivel de seguridad que poseen los mensajeros de chat. Cómo hacer que la aplicación de mensajería sea realmente similar a Signal – Mind Studios

Por lo tanto, muchas aplicaciones de chat hoy en día tienden a hacer de la seguridad una de las cosas más atractivas que ofrecen, ya que las personas seguramente se asustarán si aprenden que sus conversaciones y llamadas se graban.

Hay dos formas en que la encriptación podría funcionar una vez que los chats en tiempo real están involucrados: encriptación punto a punto o encriptación de extremo a extremo. Como el cifrado entre pares ha sido ampliamente criticado recientemente, todos cambiaron al segundo enfoque. El cifrado E-to-E podría explicarse en esta imagen:

Todos los mensajeros de chat ahora funcionan sobre la base del cifrado e-to-e. Sin embargo, ¿son totalmente ciertas las fuertes proclamas de “la seguridad de nivel superior”?

Un poco no del todo.

  • Whatsapp recopila tus metadatos
  • Telegram solo tiene la opción segura de Chats seguros: todo el messenger no está protegido de ninguna manera
  • Google Allo ha sido muy criticado por transferir todos los datos de los usuarios directamente a los servidores de Google
  • Skype, Viber no están encriptados de la misma manera
  • Entonces, ¿hay una opción para seguir?

Sí, podría ser una solución personalizada o una aplicación de señal.

¿Qué hace que Signal sea diferente (y tal vez incluso mejor) a todas las demás soluciones?

Sorprendentemente, ya está utilizando Signal, incluso si no lo sabe: el protocolo TextSecure utilizado en cada mensajero desde entonces fue creado por primera vez por los desarrolladores de Signal.

Continúe leyendo sobre mensajeros seguros y cree uno en nuestro blog Cómo hacer una aplicación de mensajería realmente segura similar a Signal – Mind Studios

Cualquier idioma servirá. Bueno, casi ninguno, no sé si Algol 68 tiene soporte para TCP / IP. Cualquier idioma con el que te encuentres de manera realista hará lo que quieras. Algunos son mejores que otros, pero eso es todo.

En el peor extremo del espectro está COBOL porque trata de hacer matemáticas un dígito decimal codificado en binario a la vez. Muy pocos algoritmos de cifrado usan decimal.

Casi todos los idiomas vienen a continuación.

Si (y solo si) existe una versión paralela de un algoritmo de cifrado, Fortran encabezaría la lista porque es capaz de operaciones vectoriales.

Si (y solo si) se requiere una fiabilidad absoluta en todas las condiciones, incluso a costa de la velocidad, Ada y Spark2014 son absolutamente superiores.

Una velocidad decente con una confiabilidad decente sería una de la familia de lenguajes C (C, C validado, C ++, Aspecto C ++, Característica C ++, C #, Objetivo C, D, Swift), pero recuerde que la complejidad es el enemigo de la confiabilidad.

D, por ejemplo, tiene muchas funciones. Funciones que no deberías usar si tu objetivo es la simplicidad. Sin embargo, si desea vincular su código con algo en D, es más fácil comenzar allí que piratear cualquier incompatibilidad.

En términos de estilo de escritura, la comunidad criptográfica utiliza una plantilla estándar. Lo odio, pero los estándares son estándares y, a menos que tenga una buena razón para no hacerlo, debe seguir dicho estándar.

Necesita un servidor para crear una aplicación de mensajería; a menos que los dispositivos móviles estén en la misma red WIFI, es casi seguro que no podrán comunicarse directamente entre sí.

Por lo tanto, necesita un servidor con una dirección de Internet pública a la que puedan conectarse todos sus dispositivos móviles.

Para hacer que la comunicación entre un dispositivo móvil y el servidor esté “encriptada”, todo lo que tiene que hacer es usar SSL: haga que su servidor sea un servidor https: //. Las agencias gubernamentales de espionaje probablemente puedan descifrar SSL, pero esto debería ser adecuado para la comunicación comercial o personal normal.

Si necesita cifrado irrompible, debe buscar el cifrado de almohadilla de una sola vez. Incluso el gobierno de los Estados Unidos no puede romper los pads de una sola vez, siempre que la generación del pad sea lo suficientemente aleatoria. La desventaja es que eventualmente te quedas sin pad de mensajes. Por supuesto, esto ignora la posibilidad de que el gobierno tenga una puerta trasera a través de la cual simplemente podrían hackear su teléfono y ver qué escribe.

Su servidor: necesita crear un software de retransmisión para sus mensajes, así que use un lenguaje como PHP o Python.

Cordova puede comunicarse con el servidor usando javascript Ajax. Asegúrese de configurar su servidor de retransmisión de mensajes como un servidor de la Lista blanca, no estoy seguro acerca de Ionic, pero Cordova es quisquilloso con respecto a permitir que JavaScript en las páginas HTML de la aplicación se ponga en contacto con servidores aleatorios.

Esta no es una tarea trivial para crear una aplicación de mensajería porque necesita desarrollar tanto el lado del cliente como el del servidor. Si tiene alguna tarea específica y no desea crear un “monstruo” de mensajería instantánea pública como Skype, Telegram, WhatsApp, WeChat, etc., y la aplicación de mensajería está destinada únicamente a la oficina / empresa, esto evita la mayoría de las preguntas.

Otra forma rápida es usar el SDK / biblioteca de cualquier plataforma de mensajería existente para crear su propia aplicación de mensajería, como Bopup IM Client SDK, que es compatible con C / C ++, VB.NET, C # e incluso con Visual Basic para Aplicaciones (Microsoft Oficina). Revise la documentación en línea del SDK que explica mucho más.

No sé nada sobre los sistemas operativos de Apple, así que tómalo con un poco de sal.

Planifique qué función, en lo que respecta al cifrado, debe tener su aplicación, verifique qué bibliotecas existen que brinden estas funciones.

En base a eso, es una buena idea escribir su aplicación en el idioma en el que se escriben esas bibliotecas o en un idioma donde haya enlaces buenos y sólidos a esas bibliotecas a través de una interfaz de función externa o código de ajuste.

La criptografía se ocupa de muchas operaciones de bits de bajo nivel, por lo que a menudo se escribe en C o C ++.

Apple usa Objective-C hasta donde yo sé, sin embargo, no sé si es fácil llamar a las funciones C y C ++ desde el código Objective-C.