Cómo funciona la App de «Tsunami Democràtic»

Cómo funciona la App de «Tsunami Democràtic»
¡Compártelo!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Tras el hilo de Twitter en que se mencionaban algunos detalles sobre esta App, decidí descargarla y desensamblarla para ver qué más se podía averiguar. Os hago un breve resumen, y os dejo el material en GitHub por si alguien quiere echar un ojo.

Conclusiones principales

  • Es una App muy bien pensada: a priori no la puede «tirar» un juez ni la policía, es segura (cifrada) y asegura el anonimato.
  • A pesar de lo que han dicho algunos medios, no es que sea tremendamente sofisticada per se, sino que han sabido escoger muy bien qué arquitectura de comunicaciones usar y qué librería de programación emplear.
  • Basado en RetroShare (repo GitHub), con conexiones entre pares en malla (peer-to-peer mesh).
  • Sobre la web desde la que se ofrece descargar la App (https://app.tsunamidemocratic.cat/), ya se ha dicho todo: DNS registrado en julio 2019 en CloudFlare.com con la opción de protección de datos. Haría falta petición judicial a EEUU para solicitar información sobre el autor.

Detalles técnicos

Para poder entrar a «la red» se necesita obtener de alguien que ya sea miembro un código QR. De esta forma se evita (en principio) que entren agentes indeseados para los miembros del grupo, o si entran, sólo podrían acceder a las direcciones IP de sus pares, estando aislado de la inmensa mayoría de usuarios.

Esto es así porque RetroShare tiene (ver paper) un balance entre permitir que mensajes lleguen a todos los miembros del grupo, pero sin permitir comunicaciones directas, sino haciéndolo a través de una «malla» ad hoc, que según la suposición de «Red de Mundo Pequeño» permite difundir rápida y fácilmente mensajes a todos los miembros:

(Fuente)

En definitiva, la App es básicamente una pequeña interfaz construida sobre Retroshare, así que hereda todas sus propiedades, incluyendo conexión a través de NATs.

En teoría, la librería ofrece las opciones de un mayor anonimato usando Tor o I2P, pero hasta donde he llegado, no veo pruebas de su uso en el código.

Sobre la interfaz, frameworks, etc. la aplicación utiliza Kotlin y Flutter (introducción a ambos aquí).

El código fuente de la página web (NO de la App, como he leído en algún periódico) es público en este repo de GitHub, bajo un nombre de usuario que se registró ayer. Los datos whois del dominio indican sin embargo que el dominio ya se registró en julio 2019:

$ whois tsunamidemocratic.cat  

Domain Name: tsunamidemocratic.cat
Registry Domain ID: Dkppa213300-CAT
Registrar WHOIS Server:
Registrar URL: http://www.tucows.com
Updated Date: 2019-07-23T08:33:16.507Z
Creation Date: 2019-07-23T08:21:54.385Z
Registry Expiry Date: 2020-07-23T08:21:54.385Z
Registrar Registration Expiration Date: 
Registrar: Tucows Domains Inc.
Registrar IANA ID: 69
Registrar Abuse Contact Email: pdm@tucows.com
Registrar Abuse Contact Phone: +1.11111111
Reseller: 
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Registry Registrant ID: Cdkdp1590659-CAT
Registrant Name: Host Master
Registrant Organization: 1337 Services LLC
Registrant Street: P.O. Box 590
Registrant City: Charlestown
Registrant State/Province: Charlestown
Registrant Postal Code:
Registrant Country: KN
Registrant Phone: +883.510008346319
Registrant Phone Ext:
Registrant Fax:
Registrant Fax Ext:
Registrant Email: whois+tsunamidemocratic.cat@njal.la
Registry Admin ID: Cblbz1590656-CAT
Admin Name: Data Protected Data Protected
Admin Organization: Data Protected
Admin Street: 123 Data Protected
Admin City: Toronto
Admin State/Province: ON
Admin Postal Code: M6K 3M1
Admin Country: CA
Admin Phone: +1.0000000000
Admin Phone Ext:
Admin Fax: +1.0000000000
Admin Fax Ext:
Admin Email: noreply@data-protected.net
Registry Tech ID: Ctnba1590658-CAT
Tech Name: Data Protected Data Protected
Tech Organization: Data Protected
Tech Street: 123 Data Protected
Tech City: Toronto
Tech State/Province: ON
Tech Postal Code: M6K 3M1
Tech Country: CA
Tech Phone: +1.0000000000
Tech Phone Ext:
Tech Fax: +1.0000000000
Tech Fax Ext:
Tech Email: noreply@data-protected.net
Registry Billing ID: Cmian1590657-CAT
Billing Name: Data Protected Data Protected
Billing Organization: Data Protected
Billing Street: 123 Data Protected
Billing City: Toronto
Billing State/Province: ON
Billing Postal Code: M6K 3M1
Billing Country: CA
Billing Phone: +1.0000000000
Billing Phone Ext:
Billing Fax: +1.0000000000
Billing Fax Ext:
Billing Email: noreply@data-protected.net
Name Server: david.ns.cloudflare.com
Name Server: beth.ns.cloudflare.com
DNSSEC: unsigned
Canonical Name: tsunamidemocratic.cat
IDN Tag: ca

Existen dos versiones precompiladas listas para descargar de su web como ficheros «.apk», para las arquitecturas armv7 (móviles más antiguos) y armv8 (arm64, los más modernos).

El paquete descomprimido que os dejo en GitHub se corresponde a la versión para armv7.

En el AndroidManifest.xml podemos ver que la App require permisos para uso de la cámara (lógico para leer códigos QR), para grabar audio y para localizar al usuario.

El grueso del código de la aplicación (descontando copias de frameworks, etc. que no son relevantes) está compilado de forma nativa (para arm) en «/lib/armeabi-v7a/libapp.so«. No he tenido tiempo de analizar el desensamblado de esta librería, pero a priori no creo que se pueda encontrar nada más relevante que lo ya expuesto arriba, ya que la propia arquitectura de la red está diseñada ex profeso para ocultar quién o quienes la iniciaron o pertenecen a ella, y la mayor parte del código de esta librería parecen ser librerías de soporte para la GUI (frameworks). Aún así, ahí la dejo por si alguien con más tiempo quiere echarle un ojo y descubre algo 😉

Fragmento de sección de datos de libapp.so, donde se ve la mención al grupo de Telegram «tsunamid».

¡Compártelo!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •