Comunicaciones cifradas para gente importante (VIP) o como evitar que espíen a nuestros políticos

Esta semana ha sido bastante movida, pues el lunes llegué a Ávila donde se celebraba la primera edición del congreso C1b3rwall, en la propia academia de la policía nacional y, donde he dado una charla y he impartido un par de cursos hablando de diversos temas como fraude telefónico, ataques realizados usando infraestructuras de VoIP, traceo e identificación de llamadas, protocolo SIP, sistemas Cisco, autenticación, cifrados, ataques contra infraestructuras de VoIP, ataques contra dispositivos, etc. Y aprovechando que me encuentro en el tren, de regreso a mi querida Alicante, aprovecho para escribir sobre un tema por el que me han preguntado varias personas. Me refiero a las comunicaciones cifradas y a cómo evitar que nos espíen.

Este tema siempre ha llevado de cabeza a mucha gente, y lo vemos a diario cada vez que el ex-comisario Villarejo abre la boca y lanza otro bombazo. Sin embargo, nuestra gente VIP sigue fiándose de las soluciones mágicas que lanzan las grandes empresas, sin conocer realmente cómo hacen esa magia para que no se pueda interceptar una llamada.

He aquí un tweet con la aplicación COMSec de Indra, que ni sé lo que vale ni la he probado, pero aseguran ellos mismos que lo usan más de 12.000 directivos, además de ministros, o el propio Rajoy cuando era presidente del gobierno. Y esto es un tweet de hace unos años, por lo que seguramente el número de usuarios sea mucho más elevado.

COMSec de Indra

Luego vemos otras noticias como esta: https://www.genbeta.com/seguridad/la-app-que-utiliza-el-gobierno-para-comunicarse-podria-no-ser-tan-segura-como-cree donde se cuestiona la seguridad de COMSec dado que pueden haberse grabado algunas conversaciones de Rajoy, el cual, como he comentado, es usuario de esta aplicación. Entonces, ¿es seguro o no es seguro usar estas herramientas?

Yo sinceramente ni sé cómo funciona por dentro COMSec ni digo que sea insegura, ni tampoco lo contrario. Creo que el uso de una aplicación de este estilo, sea la de Indra o cualquier otra, es una decisión que debe tomar cada uno por sí mismo, pero sí que es interesante conocer cómo funciona este tipo de comunicaciones cifradas usando tecnología de VoIP, que paso a explicar de forma lo menos técnica posible, para que todo el mundo lo entienda.

Siempre que se mantiene una comunicación por VoIP, tecnología que usa COMSec y cualquier aplicación de cifrado de comunicaciones, hay un servidor de relay de por medio, es decir, el audio NO viaja de un teléfono a otro sino que siempre pasa por un servidor que se encarga de enrutar el tráfico entre los dos teléfonos. Esto es así por temas técnicos que no voy a explicar, pero básicamente, un teléfono está en una red local, detrás de un NAT, y es necesario un servidor de relay que encamine las comunicaciones a las IPs públicas de los teléfonos. En el caso de COMSec, obviamente el servidor será propiedad de Indra. Y aquí es donde nos puede surgir la duda de si se monitorizan nuestras comunicaciones o no, a pesar de que vayan cifradas.

Y pongo un ejemplo sencillo. Yo desde mi teléfono me conecto de forma cifrada con un servidor de relay para mandar audio usando el mejor sistema de cifrado del mundo que nadie puede descifrar, el que más rabia os de. El servidor deberá reenviar el tráfico hasta el otro teléfono para mantener un canal seguro de comunicaciones. Hasta aquí todo correcto y seguro.

Pero el servidor podría usar dos canales en lugar de uno, es decir, crea un canal seguro con el primer teléfono y otro canal seguro con el otro teléfono, pero él está en medio y ve todo SIN CIFRAR, por lo que puede escuchar en tiempo real o grabar las comunicaciones. Y repito que no acuso a Indra de hacer esto, pero sí que existe esa posibilidad y el usuario no se enteraría. Y esto ocurre con cualquier proveedor de nos ofrezca este tipo de servicios.

¿Cómo podemos asegurarnos de que una comunicación es segura? Para que sea así, debemos cerciorarnos de que sólo hay un canal y no dos. Y eso podemos hacerlo usando ZRTP, un protocolo creado por Phil Zimmermann, el creador de PGP, y que añade una capa de seguridad al cifrado de nuestras comunicaciones. Para ser más exactos, lo que hace es mantener un intercambio de claves Diffie-Hellman que nos permite asegurarnos de que tenemos un único canal seguro y de que nadie nos está interceptando y, por tanto, escuchando o grabando, nuestras comunicaciones.

Para verificar esto, con el protocolo ZRTP, realizaremos una comprobación manual, donde ambos teléfonos deben ver la misma clave, que indica que sólo hay un canal:

Intercambio de claves Diffie-Hellman en ZRTP

Pero ojo, que esto también tiene su peligro, pues si usamos una aplicación de código cerrado, nadie nos puede asegurar que el código que aparece no esté alterado.

Por ejemplo una de las pocas herramientas de las que me fiaría y, que además es gratis, es RedPhone de Moxie Marlinspike, dado que ofrece el código fuente de la aplicación. Moxie además es el creador de otras aplicaciones como TextSecure, que permite cifrar la mensajería y, hace unos años decidió unificar todas estas herramientas en una, conocida como Signal y, que se supone que es tan segura que hasta Edward Snowden se jacta de usarla.

Signal puede usarse desde un dispositivo móvil o desde un navegador web, gracias a la tecnología WebRTC. En Github podemos descargar el código fuente, tanto de las aplicaciones móviles como de todo el proyecto.

No obstante, y ya como crítica personal, ¿tan difícil es para un gobierno montar un servidor de comunicaciones propio y crear una App para Android e iOS? De verdad, salen concursos para hacer una web y pagan una millonada por algo que hace un niño en un rato con un WordPress y, ¿no son capaces de tener un equipo de gente que programe una App y configure un servidor Kamailio? Hay cosas que no entiendo y que lamentablemente van a seguir así.

Spain is different

4 comentarios

  1. Conozco bastante como funciona COMSec y, por matizar, es importante añadir que, primero, los gateways de acceso y las integraciones con PBX las puedes hacer on premise en tu propia infraestructura (es decir, todo se conecta a tus servidores, no a los de Indra) y, segundo, aun en caso de que uses los servicios cloud, los dispositivos tienen un par de claves para comunicarse con otros dispositivos. El protocolo no es exactamente ZRTP (es una implementación propietaria), pero sí hay intercambios al estilo DH.

    Y sí, Spain is different, porque Spain is better 😉

  2. No he querido hacer un alegato hacia la imposibilidad de vulnerar la seguridad de COMSec. Todos sabemos que no hay absolutamente nada invulnerable y menos frente a adversarios comprometidos.

    Sin detalles sobre el proceso, no puedo afirmar si ha sido atacando esta aplicación, pero se me ocurren distintas formas más sencillas que ir a por la app de cifrado de voz.

    P.D: tengo tu blog en feedly xD aunque no postee lo leo habitualmente 😉

  3. Yo opino igual respecto a que nada es invulnerable y a que faltan datos para pronunciar un veredicto, pero hablamos de un Diffie-Hellman donde visualmente puedes verificar si el canal es seguro. A mi me convence más la idea de un botón rojo 🙂

Deja un comentario