Mostrando entradas con la etiqueta firma digital. Mostrar todas las entradas
Mostrando entradas con la etiqueta firma digital. Mostrar todas las entradas

domingo, 5 de junio de 2016

Cifrado WhatsApp

Con la entrada anterior quedan definidos los conceptos básicos sobre encriptación; hoy estudiaremos su aplicación en algo tan utilizado como WhatsApp el cual incorporó cifrado y otras mejoras como vimos en Regañar a los amigos con Whatsapp desactualizado.

Imagen 1. Cifrado WhatsApp

Introducción

Comenzar indicando que toda la información la he obtenido del whitepaper ofrecido en su propia web. El cual señala las siguientes características sobre el cifrado utilizado:
  • Cifrado de extremo a extremo: esto significa que la información está cifrada al salir del terminal emisor y se mantiene de este modo hasta que llega al terminal receptor.
  • Cifrado afecta a los mensajes, llamadas, vídeos, audio, imágenes y otros archivos como documentos enviados con WhatsApp.
  • De ser robadas las claves de encriptación, no pueden utilizarse para desencriptar mensajes ya transmitidos. Por el funcionamiento que veremos en esta entrada.
  • Comunicación con los servidores de WhatsApp se realiza en un canal encriptado; siendo los metadatos también encriptados impidiéndose la identificación del usuario. Aunque el artículo del suplemento XL Semanal del que hablo a continuación explica que no son encriptados, lo que conlleva a que se conozca información como la localización desde la que nos conectamos, cuándo, el tiempo de uso, etc.
  • Servidores solo almacenan claves públicas; ni guardan ni tienen acceso a las privadas.
¿A quién hay que agradecer esta característica? A la compañía Open Whisper; un artículo muy interesante puede encontrarse en el suplemento XL  Semanal del periódico ABC, donde se habla de WhatsApp, Telegram, criptógrafos y casos relacionados con el tema. En dicho artículo se indica que ni los empleados de WhastApp pueden romper el cifrado.

Imagen 2. XL Semanal, artículo sobre cifrado (imagen obtenida de su cuenta en Twitter)

Volviendo al funcionamiento del cifrado de WhatsApp, entran en juego muchas más variables de las explicadas en la entrada anterior; intentaré que el siguiente resumen del whitepaper sea lo más sencillo posible, pidiendo disculpas de antemano por algunas traducciones.

Claves utilizadas


Públicas

Generadas al instalar WhatsApp en nuestro dispositivo.
  • Claves de Identidad: firman la Clave de Firma.
  • Clave de Firma: es modificada (rotada) cada cierto tiempo.
  • Claves de Un-Uso: se modifica su valor cada vez que es necesario; el cual es utilizado una única vez.

De sesión

En la entrada anterior vimos que son claves conocidas por el emisor y el receptor. Como se ha dicho, al ser privadas el servidor de WhatsApp no tiene acceso a ellas.
  • Clave Raíz: utilizada para calcular las Chain Key.
  • Chain Key: crea la Clave de Mensaje.
  • Clave de Mensaje: encripta el contenido de los mensajes.

Registro del cliente

Para utilizar el cifrado extremo a extremo, al registramos tras instalar WhastApp, enviamos nuestras claves públicas a su servidor que las almacena y asocia con nuestro usuario.

Establecer sesión

La primera vez que nos comunicamos con alguien debe crearse una sesión encriptada con dicha persona. Esta sesión no termina hasta que ocurran casos como desinstalar la aplicación WhatsApp. Para establecer la sesión:

1. Quien inicia la comunicación pide al servidor las claves públicas del destinatario. El servidor borra de su almacenamiento la Clave de Un-Uso utilizada, de no quedar ninguna almacenada (cada usuario debe enviar conjuntos de nuevos valores al servidor) no se utilizará en la generación de nuevas claves, pero la comunicación encriptada se seguirá llevando a cabo.

2. El usuario guarda estas claves y las utiliza junto a su Clave de Identidad y un valor que acaba de generar para crear un master_secret utilizado para originar una Clave Raíz y unas Chain Keys.

3. Ya pueden enviarse mensajes al destinatario aunque esté desconectado, para ello cada mensaje incluirá en sus cabecera la información pública del emisor con el fin de que el destinatario al recibir los mensajes también pueda calcular el master_secret; este receptor borra la Clave de Un-Uso empleado por el emisor.

Para completar este apartado conviene complementarlo con el siguiente, 'Intercambio de mensajes'.

Intercambio de mensajes

Tras establecerse la sesión, los mensajes son encriptados con la llamada Clave de Mensaje, cuyas características son:
  • Varía en cada mensaje.
  • No es posible obtener/calcular su valor una vez se ha enviado el mensaje.
  • Generada a partir del Chain Key del emisor del mensaje.

Indicar que cada vez que se completa el ciclo de envío y respuesta se realiza un negociación para tener un nuevo valor del Chain Key y Clave Raíz, lo que otorga mayor seguridad al evitar que a partir de una Clave de Mensaje almacenada se calcule el Chain Key.

Gracias a que las claves cambian y al modo en que son generadas, los mensajes pueden llegar tarde, desordenados o incluso perderse sin que suponga un problema en el proceso de encriptación al calcular los valores requeridos.


Hasta aquí he detallado las claves utilizadas; en las siguientes explicaciones se realiza una visión más general y sencilla.

Intercambio de vídeo, audio, imágenes o documentos

A groso modo, el emisor genera una serie de claves y cifra el archivo adjunto con una de ellas y un valor aleatorio. El resultado es subido y almacenado como un archivo binario en una base de datos. 

Tras esto envía un mensaje cifrado al destinatario con la información requerida para realizar las verificaciones necesarias (incluida función hash vista en la anterior entrada) y acceder al archivo enviado inicialmente.

Mensajes en grupos

La primera vez que un miembro del grupo envía un mensaje lo hace a cada uno de los componentes de manera individual con la información necesaria para poder utilizar cifrado en la comunicación; esta información será eliminada por los integrantes si dicho usuario abandona el grupo. Con esto, cada vez que envíe un mensaje cifrado, llegará al servidor el cual se encargará de que llegue al resto de componentes.

El whitepaper destaca la eficiencia conseguida al emplear dos métodos usuales en la transmisión de mensajes a miembros de un grupo: enviar el mensaje de manera individual a cada uno de los componentes, o subirlo a un servidor y que este lo haga llegar al resto.

Llamadas

La base de funcionamiento del cifrado es la misma a la explicada en el intercambio de mensajes aunque variando el protocolo.

Verificar claves

Los usuarios podemos verificar el cifrado, para ello hay dos opciones: mediante código QR o con un número de 60 dígitos. El proceso queda explicado en este artículo de seguridadapple.com. De querer más información sobre las claves, leer el whitepaper proporcionado por la web de WhatsApp.

Conclusión

Por supuesto terminar agradeciendo a quienes han hecho posible el poder disfrutar de la encriptación en nuestra información; y para los apasionados del código, en GitHub se puede estudiar la librería del protocolo empleado en la encriptación de WhatsApp. Que sea Open Source refleja la filosofía de sus creadores.


¡Saludos!

Carlos A. Molina

Webs


Entrada Regañar a los amigos con Whatsapp desactualizado

Web WhatsApp apartado seguridad con el whitepaper (en 'Obtén todos los detalles')

Blog whispersystems
https://whispersystems.org/blog/

Código librería

Twitter XL Semanal
Artículo XL Semanal

Verificar cifrado de extremo a extremo

Imágenes de uso libre

domingo, 29 de mayo de 2016

Cifrado

Actualmente en la mayoría de las comunicaciones así como al trabajar con archivos en la red, la información queda protegida mediante encriptación. En la entrada de esta semana he querido resumir los aspectos básicos de los métodos utilizados para proteger la confidencialidad, integridad y autenticación, términos explicados a continuación.


Imagen 1. Cifrado

Cifrado

Se encarga de la confidencialidad, es decir, que únicamente puedan acceder a la información las personas autorizadas.


Criptografía de clave simétrica o privada

-    Base de funcionamiento


La información a transmitir es encriptada y desencriptada con la misma clave (simetría), la cual debe conocerla el emisor y el receptor (privada).


-    Ventajas


Rapidez en cifrado y descifrado.


-    Desventajas

Todo depende de la clave; en caso de querer que dentro de un grupo ciertas personas tengan acceso y otras no, tendrá que generarse una clave nueva por cada caso. Disminuyendo la seguridad cuantas más personas conozcan la clave así como en la manera de compartir dicha clave.


Criptografía de clave asimétrica o pública

-    Base de funcionamiento

Cada usuario dispone de dos claves, una de ellas se mantendrá en secreto por parte del usuario, clave privada, mientras que la otra es revelada a todo el que lo necesite, clave pública. Estas dos claves están relacionadas entre sí como se explica a continuación.

Cuando queramos comunicarnos con dicho usuario, ciframos la información con su clave pública y solo podrá ser descifrada por la clave privada, es decir, por el usuario objetivo; del mismo modo, el usuario puede cifrar la información con su clave privada y nosotros descifrarla con su clave pública. He aquí la relación entre ambas claves, cuando una se emplea para realizar el cifrado, el descifrado debe llevarse a cabo con la otra.

-    Ventajas

Solventa el problema de la criptografía de clave simétrica sobre la distribución de la clave.

-    Desventajas

Lentitud.


Combinación

Para hacer frente a las desventajas de cada tipo se realiza una combinación de los mejores aspectos de ambas. En ella la información primero se cifra con la clave simétrica que en este caso recibe el nombre de clave de sesión y el resultado se vuelve a cifrar con la clave pública del destinatario. Por tanto, lo recibido  se descifra con la clave privada del destinatario en primer lugar y luego con la clave de sesión.

Hash


Los algoritmos de Hash cubren la integridad de la información transmitida, lo que significa que esta no haya podido ser modificada por alguien no autorizado.

-    Base de funcionamiento

Estos algoritmos toman la información a transmitir y generan un valor mediante operaciones matemáticas. Sobre el valor generado destacar dos aspectos: a partir de él no puede obtenerse la información inicial y es muy improbable que dos entadas diferentes originen el mismo valor.

De esta manera el emisor del mensaje junto a la información a enviar indica también el valor hash, y en recepción se aplica el mismo algoritmo (existen varios) a la información recibida; de ser el resultado igual al obtenido por el emisor, la información no ha sido interceptada ni modificada.

Suelen utilizarse en la firma digital.

Firma digital


Encargada de la autenticidad de emisor, verificar la identidad de este; consiguiéndose también el no repudio, evitar que el emisor niegue el envío del mensaje. Del mismo modo también se encarga de la integridad del mensaje al hacer uso de los algoritmos hash, como se explica a continuación.

-    Base de funcionamiento

El emisor aplica un algoritmo hash sobre la información a enviar y cifra el resultado hash con su clave privada dando lo que se conoce como firma digital.

Se envía la firma digital, la información deseada y la clave pública del emisor. En recepción la firma digital solo puede descifrarse con la clave pública del emisor, por la relación entre las clave pública y la privada, de este modo se verifica la identidad del emisor; al descifrar la firma digital se obtiene el resultado hash del emisor. Con la información recibida se realiza lo explicado en el apartado 'Hash' para verificar la integridad del mensaje comparándose el hash recibido y el calculado.

Pero hay un punto que falla en la verificación del emisor y es que es posible generar un par de claves público y privada de modo que al enviar los mensajes se diga que pertenecen a un emisor que se quiera suplantar. Para evitar esto están los certificados digitales.

Certificados digitales

Son documentos electrónicos que relacionan cada clave pública con su propietario. Para otorgar validez a estos documentos existen autoridades de certificación destinadas a firmarlos, es decir, realizan la función de notario; por ejemplo, la Fábrica Nacional de Moneda y Timbre.


Con todo esto, un pequeño resumen que por lo menos a mí me ha ayudado a tener los conceptos más claros.

Saludos,

Carlos A. Molina

Recursos

Libros utilizados
Caballero, M.A., Cilleros, D. y Shamsaifar, A. (2015). El libro del Hacker. Madrid: Anaya.
Ramos, A., Barbero C.A., González, J.M., Picouto, F. y Serrano E. (2014). Seguridad perimetral, monitorización y ataques en redes. Madrid: Ra-Ma.

Letras título entrada