Categories
Seguridad

Signal la aplicación de mensajería segura que necesitas

Whatsapp, la aplicación de mensajería dominante actualmente para transmitir mensajes se ha visto envuelta en una polémica debido al cambio en sus condiciones de uso. Signal es una alternativa muy buena y que te va a permitir escribir sabiendo que tus datos no se comparten y están encriptados.

La decisión de Whatapp de cambiar sus condiciones de uso se ha vuelto en su contra puesto que la comunidad no ha visto con buenos ojos que los datos se compartan con otras empresas. Decir que hace años que hace esto whatsapp como ya comenté en esta entrada Facebook ya accedía a los datos de WhatsApp hace años. Sin embargo, y como hoy en día para las empresas es muy importante escuchar a la comunidad al final han decidido postergar esta decisión en una entrada de su blog, Se extenderá el plazo para nuestra reciente actualización.

En este artículo voy a hablar de todos los algoritmos y métodos de cifrado que componen esta aplicación. Son Diffie-Hellman, Double Ratchet, Sesame, Curve25519, AES-256 y HMAC-SHA256.

Signal la alternativa libre y encriptada

Dentro del catálogo de aplicaciones de mensajería una que está de moda ahora mismo es Signal. Es una aplicación que se focaliza en la privacidad, con lo importante que son los datos hoy en día. Somos nuestros datos. Signal está bien construido pero como dice Jack Dorsey, CEO de twitter, más importante aún es cómo está construido: código abierto, revisado por pares y financiado en su totalidad por subvenciones y donaciones. Un modelo refrescante de cómo se deben construir los servicios críticos importantes en el mundo actual.

Quizás lo más importante es el cifrado de punta a punta de última generación (impulsado por el protocolo de señal de código abierto) mantiene tus conversaciones seguras. Los propios desarrolladores no pueden leer los mensajes ni escuchar las llamadas, y nadie más puede hacerlo tampoco. La privacidad no es un modo opcional, es simplemente la forma en que funciona Signal. Cada mensaje, cada llamada, cada vez.

Especificaciones de Signal

La encriptación consiste en codificar un mensaje de forma que si una persona es capaz de capturar lo que están escribiendo dos personas o un grupo en un chat no poder saber qué están diciendo al tener un texto con palabras que codifican el mensaje original. la encriptación en el desarrollo de mensajes integra muchas ideas las cuales a menudo puede ser desarrolladas en varias aplicaciones. En el caso de Signal utilizan diferentes proyectos que cito a continuación:

XEdDSA y VXEdDSA

Este documento describe como crear una firma verificable EdDSA-compatible usando formatos de llave pública y llave privada inicialmente definido para las funciones Diffie-Hellman de curva elíptica X25519 y X448. En 1976 dos criptógrafos, Whitfield Diffie y Martin Hellman, publicaron un método criptográfico. La idea consistía en que cada uno de los extremos de una comunicación (emisor y
receptor), debían tener una pareja de claves (pública y privada). De manera que las claves públicas son conocidas e intercambiadas por el emisor y el receptor. La clave privada es personal e intransferible.

El funcionamiento de esta función podría definirse así. Alice quiere intercamibar información confidencial con Bob haciendo uso de la criptografía de clave pública. El primer caso es que cada uno de ellos obtenga una pareja de claves. Cada uno de ellos comunica la clave pública al otro por cualquier método. No pasaría
absolutamente nada si algún intruso la obtuviese. Cuando Alice quiera transmitir un mensaje a bob utilizará la clave pública de éste para cifrarlo y cuando Alice lo reciba deberá descifrarlo utilizando su propia clave privada.

X3DH

Este documento describe el protocolo de acuerdo de claves “X3DH” (o “Extended Triple Diffie-Hellman”). X3DH establece una clave secreta compartida entre dos partes que se autentican mutuamente basándose en claves públicas. X3DH proporciona secreto hacia adelante y negación criptográfica.

Con “X3DH”, Alice y Bob crean pares de claves para su identidad a largo plazo (IDA e IDB) y los publican en un servidor de confianza (como WhatsApp o Signal). A continuación, cada uno de ellos genera un rango de claves públicas previamente compartidas y las firma con su clave privada. En el caso de que Alice se comunique con Bob, Bob tendrá una serie de claves firmadas previamente compartidas. Esto se ilustra en el lado izquierdo del siguiente gráfico:

Figura 1. Extraído de https://medium.com/asecuritysite-when-bob-met-alice/alice-whispers-to-bob-at-the-core-of-privacy-in-the-21st-century-is-extended-triple-51736dad527d

Double Ratchet

Este documento describe el algoritmo Double Ratchet. Es utilizado por dos partes para intercambiar mensajes cifrados basados en una clave secreta compartida. Las partes también envían valores públicos a Diffie-Hellman adjuntos a sus mensajes. Los resultados de los cálculos de Diffie-Hellman se mezclan con las claves derivadas para que las claves posteriores no se puedan calcular a partir de las anteriores. Estas propiedades brindan cierta protección a los mensajes cifrados anteriores o posteriores en caso de que se comprometan las claves de una parte.

Sesame

Este documento describe el algoritmo Sesame para administrar sesiones de cifrado de mensajes en una configuración asincrónica y multidispositivo. En abril de 2017, Open Whisper Systems (la empresa que desarrolló Signal) lanzó Sesame. Se trata de un nuevo protocolo dedicado a la mensajería segura multidispositivo. Sesame consiste en establecer sesiones de Signal entre todos los dispositivos.

Si Alice tiene nA dispositivos y Bob nB, requiere para Alice (nA − 1) · nB encriptaciones para cada mensaje que envía, y tantas ejecuciones de trinquete. Es posible agregar o quitar un dispositivo del grupo de dispositivos de un usuario abriendo / cerrando el canal correspondiente por pares. Tanto en Sesame como en Facebook Messenger, Alice sabe que Bob se comunica desde varios dispositivos, e incluso puede identificar qué canal, por lo tanto, qué dispositivo envió el mensaje.

Resumen

El protocolo de la aplicación de mensajería Signal utiliza un conjunto de primitivas criptográficas. Hoy en día es muy importante nuestros datos y las aplicaciones deben velar porque datos seguros y sin intromisiones.

En Signal la criptografía de clave pública se lleva a cabo con Elliptic curve Diffie-Hellman usando la función Curve25519. El algoritmo Double Ratchet proporciona cifrado extremo a extremo basado en una clave secreta compartida derivada de 3DH. El protocolo cumple las propiedades de seguridad estándar tales como:

  • confidencialidad (solo ve el mensaje quien tiene que verlo),
  • autenticación (lo envías tu, no otra persona)
  • e integridad del mensaje (los mensajes no se alteran tras su envío).

Si algunas vez has tenido la idea de cambiar de aplicación de mensajería es ahora el momento de moverte a Signal y dejar a un lado WhatsApp.

Referencias

Estudio de la HerramientaCriptogr ́afica Signal

https://security.stackexchange.com/questions/139596/signal-protocol-implementations-pub-key-authentication-and-inspectability-all

https://ssd.eff.org/en/module/deep-dive-end-end-encryption-how-do-public-key-encryption-systems-work

https://eprint.iacr.org/2019/1363.pdf

Leave a Reply