Algo relacionado con el post anterior sobre Signal.
Generalmente alguien necesita acceso físico a tu teléfono para ver tus datos, aunque eso no suele ser necesario.

FCM Tokens para Vigilancia
Hoy en día muchos gobiernos solicitan registros de notificaciones push a Apple y Google para sus investigaciones. No hace falta ser un criminal para ser un objetivo, preguntale a la gente del Reino Unido.
El gobierno de los EE.UU. en particular ha estado construyendo una gigantesca máquina de vigilancia que recopila muchos datos y metadatos no solo de ciudadanos estadounidenses sino del mundo entero, y esto incluye datos de notificaciones push de todos los teléfonos.
Todas las aplicaciones (incluso Signal) usan notificaciones push, así que estamos todos jodidos.
Cuando instalás Signal y le das permisos de notificación en tu teléfono, GMS registra tu dispositivo con FCM, lo que produce un FCM registration token único (como una dirección de entrega para la combinación dispositivo-cuenta-app). Este token se envía a los servidores de Signal para que sepan dónde mandarte los pings de activación, todo esto es normal.
La parte turbia es que Google también guarda su propia copia de este mapeo. Este FCM token pertenece a esta cuenta de Google, en este dispositivo, identificado por su Android ID e identificadores de hardware. En otras palabras, desde ese momento, cada evento de entrega de notificación de Signal genera una entrada en los registros de la infraestructura de Google: el FCM token de destino, el identificador de la app de Signal (org.thoughtcrime.securesms), y un timestamp de entrega.
Generalmente para aplicaciones “normales”, el contenido del mensaje de la notificación también se almacena en los servidores de Google, pero en el caso de Signal, solo se envían mensajes FCM de tipo data-only con payloads vacíos. Google no necesita el contenido completo del mensaje para rastrearte, saben que recibiste un mensaje, la hora, etc. Todo se trata de metadatos.
La cadena de desanonimización funciona así. Las fuerzas del orden identifican a una persona de interés que usa Signal con una cuenta anónima. Tienen un identificador de dispositivo, un patrón de uso de la app, o una pista que apunta a un FCM token específico. Con una orden judicial a Google, las fuerzas del orden ahora tienen el mapeo completo del token. El FCM token se resuelve a una cuenta de Google. La cuenta de Google se resuelve a una identidad real a través de registros de pago, un número de teléfono de recuperación, un email de recuperación, o simplemente el nombre con el que se registró la cuenta. El usuario “anónimo” de Signal es ahora un individuo identificado con un historial con timestamps de cuándo recibió mensajes de Signal (no los mensajes en sí, pero ya no sos anónimo).
Nada de esto requiere acceder al dispositivo del objetivo. Nada de esto requiere romper el cifrado de Signal. Es puramente un problema de metadatos, y los metadatos viven en Google, y la gente ha muerto por culpa de los metadatos.
¿No Habilitar Notificaciones?
El token existe en el momento en que le das permiso de notificación…
En el caso de Signal, el FCM token se genera y se registra en la infraestructura de Google la primera vez que GMS procesa un registro de notificación de Signal, lo cual ocurre en cuanto Signal se instala y le otorgás permisos de notificación. No necesitás recibir ningún mensaje. No necesitás enviar ninguno. El token existe en Google desde el momento en que la llamada de registro FCM de Signal se completa. Cada entrega de notificación posterior agrega un registro con timestamp a los logs de Google.
Este no es un problema específico de Signal. Cada app en tu dispositivo Android que use FCM (que son la mayoría, si no todas) genera un token que Google almacena y mapea a tu cuenta de Google.
Silent Push: Cuando Tu Teléfono Es Pineado para Revelar Tu Ubicación
Más allá del rastro de vigilancia de FCM, los gobiernos envían una silent push notification, que es un mensaje FCM de datos de alta prioridad sin payload de notification y sin contenido visible (puede enviarse a cualquier dispositivo con un FCM token válido). El dispositivo lo recibe, GMS despierta la app objetivo mediante onMessageReceived(), y la app hace lo que sea que esté programada para hacer en respuesta. Nada aparece en tu pantalla. Sin banner, sin sonido, sin badge. Tu teléfono simplemente se despertó silenciosamente en segundo plano.
El valor de vigilancia proviene de lo que ocurre cuando la app despertada realiza una conexión de red. Si la app se conecta a algún servidor en respuesta al wake-up para chequear actualizaciones, sincronizar estado, etc., y ese servidor registra la dirección IP actual de tu dispositivo (que se resuelve a tu ubicación).
El silent push es utilizado por:
- Plataformas de marketing y analytics. Por ejemplo, si una app se desinstala, el FCM token devuelve un error
NOT_REGISTERED, lo que significa que el dispositivo ya no tiene la app. - Para uso de las fuerzas del orden, el camino pasa por un desarrollador de la app. Un investigador con el FCM token de un objetivo y una orden judicial que obliga al desarrollador a cooperar puede hacer que el desarrollador envíe un silent push a ese token específico. La app se despierta, se conecta a sus servidores, el servidor registra la IP. Alternativamente, la propia infraestructura FCM de Google registra los eventos de conexión del dispositivo objetivo en respuesta a la entrega, revelando la IP a Google independientemente de lo que haga la app.
Entonces, cada app de Android que use FCM tiene la misma estructura: un token en Google, mapeado a tu cuenta, generando un log de entrega con cada notificación.

¿Y Ahora Qué?
Si usás Signal, cambiá la configuración de contenido de notificaciones a “No Name or Content” para cerrar la amenaza de forensia del dispositivo. La cadena "Signal message" termina en la base de datos en lugar de los nombres de los remitentes y el texto de los mensajes. Cualquiera que extraiga esa base de datos no encontrará nada útil.
De todas formas Google seguirá teniendo metadatos. Tu FCM registration token existe en Google independientemente de lo que diga tu configuración de contenido de notificaciones. Los timestamps de entrega se registran en Google de todas formas.
Lo único que elimina el FCM token de los registros de Google es no haberse registrado nunca con FCM desde el principio.