¿Una forma de hacer un intercambio seguro de datos en Android?

Que yo sepa, todas las aplicaciones actuales de Android con permiso de Internet habilitado son propensas a que las aplicaciones roben datos. Por ejemplo, si tiene una aplicación de mensajería, la empresa que proporciona la aplicación puede leer todos sus mensajes y, a su vez, cualquiera que pueda piratear/sobornar a la empresa. La empresa podría usar el cifrado de extremo a extremo, pero eso no es verificable a menos que la aplicación sea de código abierto. Incluso si lo es, cada versión de la aplicación debe auditarse por separado, lo que no es realista.

¿Hay alguna forma (de terceros o nativa) o algún plan para implementar el intercambio seguro de datos para Android?

La forma en que espero que funcione es mediante el uso de un permiso específico que solo permitiría que los datos cifrados por el sistema operativo se envíen a través de la red o algún tipo de estado compartido a través del sistema de archivos + una aplicación de terceros que realiza el cifrado y compartiendo solamente.

Comparar el binario y el código fuente de una aplicación de código abierto (basada en Java) no es tan problemático en Android, ya que el entorno construido no tiene tantas variantes (como en C/C++). Creo que incluso las comparaciones automatizadas deberían ser posibles. Por lo tanto, solo se tendrían que auditar las diferencias entre las versiones.
Gracias por el aporte. No creo que las auditorías continuas sean una opción viable, incluso si solo se auditan las diferencias. Es trabajo manual de alta especialización que es extremadamente costoso e incluso propenso a errores.

Respuestas (1)

Lo más cerca que estarías de tal cosa es una VPN. El proveedor de VPN puede aplicar cualquier cifrado que desee a los datos. Incluso podría configurar un servidor VPN con un filtro de dirección IP incorporado (como un sistema de bloqueo de anuncios), que no permite que la aplicación se comunique con los servidores de su desarrollador.

Todo eso suena bien, pero eso no impediría que Facebook lea tus mensajes de WhatsApp. La mayoría de las aplicaciones de mensajería están diseñadas para comunicarse a través de sus propios servidores, en lugar de hacerlo directamente desde su teléfono al de su amigo. Esto es importante por un par de razones:

  1. La mayoría de los proveedores de telefonía celular bloquean las conexiones entrantes de Internet a un teléfono, posiblemente en combinación con NAT, lo que hace que varios teléfonos compartan una sola dirección IP. La mayoría de las redes Wi-Fi también usan NAT. Para pasar mensajes de un lado a otro, necesita un punto final fijo para conectarse, y ese es el servidor que ejecuta la aplicación.

  2. Los servidores también se utilizan para almacenar los mensajes cargados y mantenerlos sincronizados entre todos sus dispositivos (teléfono, tableta, interfaz web y cualquier otro). También permiten mensajes fuera de línea, al igual que el correo de voz en el servidor del proveedor de telefonía celular, no en su teléfono.

Entonces, si desea que sus aplicaciones de chat convencionales funcionen, necesita que hablen con sus servidores. Su mejor alternativa para solo chatear es una aplicación donde puede alojar su propio servidor y estar a cargo de su propia seguridad. Jabber (también conocido como XMPP) es uno de esos sistemas de chat y hay varios clientes de código abierto para Android. Puede verificar que el cliente que le gusta no se comunique con nada más que su servidor Jabber, o ponerlo detrás de un firewall que solo le permita comunicarse con ese servidor.

El alojamiento propio es la única opción libre de confianza para otros servicios similares, como el correo electrónico o el almacenamiento en la nube.

Para ser claros, no estoy buscando una aplicación de chat. Estoy investigando el problema en el diseño/ecosistema de Android y estoy pensando en posibles soluciones. Una aplicación de chat es solo un ejemplo de un caso de uso en el que me gustaría compartir datos entre varios dispositivos, tener una aplicación de código cerrado y estar seguro de que la aplicación no puede enviar ninguno de mis datos sin cifrar a sus servidores. No creo que una VPN sea útil en este caso, ya que si no permito que la aplicación pase datos sin cifrar a sus servidores, la aplicación no funcionará correctamente.