Esta es una introducción al protocolo de seguridad que usamos todos en nuestros servicios de mensajería instantánea como WhatsApp, pero, ¿qué significa exactamente estar seguros?.
WhatsApp, Telegram o Signal. ¿Cuál es la más segura de las tres? La respuesta cambia con el tiempo. Hace un año, Telegram era más segura que WhatsApp, aunque fueran clones. Luego de pronto era al revés. O no. Hace una semana volvió a cambiar la cosa. A veces la respuesta es quién te da más miedo, Putin o Trump. Los que están en la pomada saben que Signal es la plataforma más segura, apadrinada por Edward Snowden y gestionada por Open Whisper System, fundada en 2013 por el jefe de seguridad de Twitter Moxie Marlinspike. Pero teóricamente, WhatsApp, Facebook Messenger y Google Allo usan el mismo protocolo que Signal. Y hay expertos que aseguran que tiene un agujero. ¿De quién y de qué te puedes fiar?
DOS ALGORITMOS SE ENCUENTRAN EN UN BAR
Pongamos que saco a mi amigo David de una fiesta para contarle algo en privado. Si estamos solos en la habitación, que en esta metáfora es nuestro canal, podemos estar seguros de que la conversación solo puede ser escuchada por nosotros dos. Esto se llama confidencialidad. Si yo se que es David, porque reconozco su cara, la estoy viendo en este momento y no hay una mota de posibilidad de que se trate de otro haciéndose pasar por David, esto se llama autenticidad. Finalmente, si mis palabras llegan a sus oídos enteras, tal cual yo las he dicho, sin interferencias o manipulación, sin teléfono escacharrado, entonces estamos hablando de integridad en el canal.
Ahora imaginemos que, durante nuestra conversación, alguien ha entrado y salido del cuarto. Si el intruso escuchó parte de nuestra conversación, pero nada de lo que hemos hablado antes, eso se llama Forward Secrecy (FS o secreto-adelante). Si se va antes de que acabemos y no oye nada de lo que diremos después, esto es Future secrecy (secreto-futuro), también llamado B ackward secrecy. Pero si estamos seguros de que nadie ha estado en la habitación, hasta el punto de poder negar que la conversación misma haya tenido lugar sin miedo a que nos delaten, estamos hablando de negación creíble (deniability) . Si David contradice mi versión de los hechos, será su palabra contra la mía.
Estas son algunas de las propiedades de un algoritmo de cifrado, parámetros que definen su nivel de protección. Otras propiedades son consistencia, validación de destino, conservación de la causalidad, rechazo del mensaje, rechazo de participación y asincronicidad. En esta charla para no-iniciados, solo se habla de las más importantes para entender su funcionamiento y sus vulnerabilidades.
CÓMO NO COMPARTIR CARTAS DE AMOR CON EL CARTERO
En todos los servicios de mensajería centralizada hay al menos un tercero en la habitación: la empresa que nos proporciona el servicio. Eso incluye los SMS, el Messenger, WhatsApp, Telegram, etc. Es como mandar una postal: el mensaje pasa por muchas manos hasta llegar a su destino, y cualquiera puede leer su contenido. Peor aún: nuestro mensaje-postal ser modificado por el camino y hasta sustituido por otro completamente distinto, escrita por un impostor. No hay confidencialidad, integridad, o autentificación. No hay secreto, ni adelante ni futuro. Además, la empresa guarda el registro del envío por triplicado en sus data centers durante al menos siete años. Ellos tienen la evidencia de lo que tu haces en su servicio, pero tu nunca podrías probar que ellos leyeron, modificaron o compartieron tu mensaje. El cifrado es un proceso que convierte la postal en ilegible para todos salvo la persona a la que está dirigido, codificando el mensaje a la salida con una clave que solo su destinatario puede decodificar.
Hay diferentes clases de cifrado. El simétrico es el más simple: el emisor cifra el mensaje con una clave y el receptor lo descifra con la misma clave. Se llama simétrico porque la clave es la misma a ambos lados, como dos copias de la llave de la misma casa. El asimétrico hay dos claves distintas, pero son pareja. Una de ellas está hecha solo para descifrar lo que ha codificado la otra. Así funciona, por ejemplo, el cifrado de clave pública donde cada usuario tiene dos claves: una que puede ver todo el mundo y otra secreta. Si David quiere mandarme un mensaje secreto, no tiene que llamarme para pedirme mi clave: usa mi clave pública para encriptarlo y yo uso mi clave secreta para desencriptarlo. De esa manera, un desconocido puede enviar documentos secretos a un periodista sin que haya un intercambio previo entre ellos que delate sus comunicaciones.
CIFRADO SIMÉTRICO-ASIMÉTRICO
Este modelo consume muchos menos recursos del móvil y proporciona confidencialidad, integridad y autenticidad. Tener una sola clave hace que nadie pueda adivinar, mirando desde fuera, quién dijo qué o empezó la conversación. Como usamos la misma clave, todo parece venir de ambos interlocutores a la vez. Esto nos da negación creíble. Por otra parte, si alguien entra en nuestra conversación durante un breve periodo de tiempo, es porque la clave “está comprometida”. Esto le da acceso al resto de nuestra conversación (secreto-futuro), hasta que renegociemos la clave. Es decir, hay que cambiar la cerradura de la habitación. Pero no podemos porque la clave que generan nuestras claves públicas es siempre la misma clave.
IDENTIFICAR AL USUARIO: CHOQUE DE TELÉFONOS
Hay un problema con el sistema de clave pública: ¿cómo se yo que la clave pública de David es la de David y no una falsa de alguien que se hace pasar por él para leer los mensajes que le mando? En el caso de los mensajes, el servidor central se encarga de identificarnos y de anunciar nuestras claves públicas. Ahora, hay que fiarse de que el servidor central nos identifica correctamente. Si algo funciona mal, nosotros solo lo sabemos cuando es demasiado tarde (por ejemplo, si descubro que no estoy hablando con David sino con un impostor).
¿Qué es una identificación apropiada? Un número de teléfono es apropiada pero revela información confidencial sobre el usuario y no es tan fácil cambiar de número si cae en malas manos. Una dirección de correo también es un dato personal pero puede ser generada de manera temporal solo para mandar un mensaje. Lo que queremos es un sistema que permita verificar al usuario fuera del propio sistema, sin vincularlo con sus otros datos. La solución actual es que los interlocutores puedan verificar sus claves físicamente, como quien se estrecha la mano, en este caso con un código QR. Este es lo que usa el protocolo Threema.
METADATOS: EL QUIÉN, EL CUÁNDO Y EL CUÁNTO
Para tener una conversación privada no basta con que nadie nos oiga, es importante que nadie nos vea. Aunque no se puedan leer nuestros mensajes cifrados, un análisis de tráfico revela que David y yo nos mandamos una media de doce mensajes cada día sobre las 23 horas. Cualquiera que nos vea sabe que algo se cuece. Para evitar exponer la existencia de nuestras conversaciones, queremos que el sistema codifique no solo el mensaje sino a los interlocutores. Desde fuera, esto es lo que se verá. El servidor central, sin embargo, lo ve todo: quién habla, y cuánta información se mueve.
Hay maneras de ofuscar esa información. Podemos, por ejemplo, “engordar” el sobre de nuestras comunicaciones con paja digital para que nadie sepa cómo de grande o pequeño es el contenido. Pero el servidor central y la empresa o empresas que lo gestionan tienen soberanía sobre los metadatos que generamos. Recordemos que, si no pagas por el servicio, no eres el cliente, eres el producto. Si quieres saber exáctamente de qué hablamos cuando hablamos de metadatos, aquí hay un bonito resumen.
EL PROTOCOLO THEREEMA
Los ponentes han elegido Threema como ejemplo porque es el más popular en Alemania (aunque su dueño es una compañía suiza) porque usa el sistema de verificación con QR y porque, a diferencia de WhatsApp, no asocia las claves con los números de teléfono. Lamentablemente no es código abierto; uno de los aspectos más esenciales en el mundo de la seguridad informática es la capacidad de auditar las herramientas. Lo que Roland y su colega Frieder Steinmetz han hecho en este caso es lo que se llama un proceso de ingeniería inversa: coger la aplicación y destriparla, para ver cómo es.
Puesto que parte del código está protegido, su disección es limitada pero la explicación es larga, jugosa y reveladora. Los que sepan seguirla no necesitan manual de instrucciones. Para el resto, esta introducción a la seguridad de los servicios de mensajería ya es demasiado larga. Vayan con cuidado y practiquen el choque de QR.
Fuente: sinembargo.mx