javiercampos.es/blog

Seguridad

El algoritmo de Diffie-Hellman

by javier on Jul.22, 2011, under Seguridad

A veces pasa que vuelves a leer algo después de un tiempo y te sorprende como la primera vez. Me ha pasado con la explicación del algoritmo de Diffie-Hellman, utilizado aún hoy (es de 1976) como punto de partida de muchos protocolos de seguridad.

Esto lo escribí hace unos años, para una memoria.

El algoritmo de Diffie-Hellman (en honor a sus creadores, Whitfield Diffie y Martin Hellman) permite acordar una clave secreta entre dos máquinas, a través de un canal inseguro y enviando únicamente dos mensajes. La clave secreta resultante no puede ser descubierta por un atacante, aunque éste obtenga los dos mensajes enviados por el protocolo. La principal aplicación de este protocolo es acordar una clave simétrica con la que posteriormente cifrar las comunicaciones entre dos máquinas.

El protocolo de Diffie-Hellman fue publicado en 1976. Actualmente se conoce que es vulnerable a ataques de hombre en medio (MitM): un atacante podría situarse entre ambas máquinas y acordar una clave simétrica con cada una de las partes, haciéndose pasar por el host A de cara al host B y viceversa. Una vez establecidas las 2 claves simétricas, el atacante haría de puente entre los 2 hosts, descifrando toda la comunicación y volviéndola a cifrar para enviársela al otro host.

Para corregir la vulnerabilidad del protocolo, éste debe ser utilizado conjuntamente con algún sistema que autentique los mensajes. Esto ocurre, por ejemplo, durante el establecimiento de la asociación HIP, donde los paquetes R1 e I2, además de contener los mensajes de Diffie-Hellman, están firmados digitalmente.

En la figura siguiente se muestra un ejemplo de funcionamiento del protocolo Diffie-Hellman.

Los valores de “p” y “g” son públicos y cualquier atacante puede conocerlos, pero esto no supone una vulnerabilidad. Aunque un atacante conociese dichos valores y capturara los dos mensajes enviados entre las máquinas A y B, no sería capaz de averiguar la clave secreta. A continuación se muestra la información capturada por un atacante en el escenario de la Figura 46:

(ga mod p) = 8 → (5a mod 23) = 8
(gb mod p) = 19 → (5b mod 23) = 19

A partir de las ecuaciones anteriores, intentar calcular los valores de “a” y “b” es lo que se conoce como el problema del algoritmo discreto, un problema que se cree computacionalmente intratable y cuya notación es la siguiente:

a = log discg (ga mod p) = log disc 5 (8)
b = log discg (gb mod p) = log disc 5 (19)

Con los valores del ejemplo sí que es posible encontrar la solución, ya que se ha escogido un número primo “p” muy pequeño (p = 23), y se sabe que “a” y “b” son menores que “p”. Por lo tanto, para obtener los valores secretos en este ejemplo, un atacante tendría que probar sólo 22 posibles valores.

Por suerte, las implementaciones actuales del protocolo Diffie-Hellman utilizan números primos muy grandes, lo que impide a un atacante calcular los valores de “a” y “b”. El valor “g” no necesita ser grande, y en la práctica su valor es 2 ó 5. En el RFC 3526 aparecen publicados los números primos que deben utilizarse. A modo de ejemplo, se facilita aquí el número primo de 1024 bytes propuesto. El valor “g” utilizado es 2:

p = 28192 – 28128 – 1 + 264 x ((28062 pi) + 4743158)

Leave a Comment más...

Artículo sobre seguridad y anonimato en redes ad-Hoc

by javier on Oct.03, 2010, under Seguridad

Recientemente ha aparecido en una publicación internacional un artículo sobre mi Proyecto Final de Carrera. Es mi primer artículo :)

Aquí abajo dejo la referencia. Junto a mi nombre, aparecen el resto de personas que lo han hecho posible. Gracias!

Javier Campos, Carlos T. Calafate, Marga Nácher, Pietro Manzoni, and Juan-Carlos Cano, “HOP: Achieving Efficient Anonymity in MANETs by Combining HIP, OLSR, and Pseudonyms,” EURASIP Journal on Wireless Communications and Networking, vol. 2011, Article ID 437868, 14 pages, 2011. doi:10.1155/2011/437868

Ir al artículo

Leave a Comment más...

Facebook y la privacidad por defecto

by javier on Jun.11, 2009, under Facebook, Seguridad

Lee detenidamente esta frase:

“Por defecto, cualquier usuario de Facebook puede acceder a los álbumes de fotos de cualquier otro usuario, aunque no sean amigos ni tengan amigos en común.”

Sí, es muy probable que después de leer este artículo puedas acceder a las fotos de ese jefe que te cae mal, o a las fotos de tu exnovio o exnovia, o por qué no, a las fotos de la ministra xD. Y todo ello sin tener que agregarlos como amigos.

Vayamos por partes.

1. Cómo ver las fotos de un no-amigo en facebook.

  1. Iniciamos sesión en www.facebook.com
  2. Buscamos a la persona que nos interesa pero que no es amiga nuestra. Pinchamos en su nombre.
  3. Desde el perfil público de dicha persona, nos situamos sobre el link “Añadir como amigo” (sin pinchar). Dicho enlace será de la forma http://www.facebook.com/addfriend.php?id=XXXXXXX, donde XXXXXXX es el identificador de esa persona. Nos apuntamos ese identificador.
  4. Sin cerrar la sesión de facebook, visitamos http://developers.facebook.com/tools.php?api
  5. Rellenamos los campos del formulario de la siguiente forma:
    • Aplicación: Test Console (este campo no sale siempre).
    • Formato de respuesta: Cliente PHP de Facebook.
    • En el siguiente desplegable elige: fql.query
    • Query (sustituyendo XXXXXXX por el identificador del paso 3):
      1
      2
      3
      SELECT name, link
      FROM album
      WHERE owner=XXXXXXX
  6. Pulsa el botón. Si esa persona tiene álbumes de fotos y no ha cambiado la privacidad por defecto, a la derecha aparecerán los links a dichos álbumes. Abre otra pestaña en tu navegador web y prueba esos enlaces. Podrás ver sus fotos sin restricción.

Una imagen del formulario anterior rellenado correctamente:
facebook formulario API

2. Explicación.

Lo que acabas de leer no es un fallo en la seguridad de facebook. Por defecto, todos los álbumes que creemos en facebook serán visibles para todos los usuarios, aunque no sean amigos nuestros, ni tengamos amigos en común.

Desde la página web de facebook (facebook.com), un desconocido no puede conocer los links de nuestros álbumes (a menos que en el perfil público pongamos nuestras fotos, cosa que nadie debería hacer). Pero desde la web para desarrolladores de facebook (http://developers.facebook.com/tools.php?api) hemos visto que se pueden hacer consultas directamente al sistema, y podemos obtener los links de los álbumes, siempre que estos tengan la privacidad por defecto, que es “visibles a todos”.

3. Cómo evitar que un desconocido vea mis fotos de facebook.

La solución es simple. Leyendo despacito todos los mensajes que aparecen en pantalla (cosa que a veces no hacemos :( ).

Cuando se va a crear un nuevo álbum de fotos, facebook muestra esta ventana:

facebook crear álbum

Como se observa en la imagen, el último campo del formulario pregunta “¿Quién puede ser este álbum?”, y la respuesta marcada por defecto es “todos”.

Cambia la configuración de todos tus álbumes para que su privacidad sea “Sólo amigos” o “Amigos de amigos”. Para los álbumes ya creados, esto se hace visitando tu perfil, pinchando en la pestaña “fotos”, y en la parte inferior aparecen los álbumes. Justo arriba de los álbumes está el link “Privacidad del álbum”. Desde ese enlace se puede cambiar la privacidad de tus álbumes.

4. Para terminar…

Si me conoces en persona, quizás sepas que he hecho algunas aplicaciones para Facebook. A algunos de vosotros os he comentado la enorme potencia que tienen estas aplicaciones, y la cantidad de información a la que puede acceder una aplicación de Facebook cuando el usuario la utiliza por primera vez y pincha en “Permitir”.

Por suerte, en Facebook se toman en serio lo de la privacidad, y nos permiten restringir el acceso de las aplicaciones a nuestros datos. Podemos restringir el acceso de forma general para todas las aplicaciones, en lugar de hacerlo una por una. Para ello, hay que ir a “Configuración | configuración de privacidad | Aplicaciones | Configuración”. Se debería llegar a una página como ésta:

facebook configurar acceso información aplicaciones

Tal y como se observa en la imagen, cada vez que pulsamos en “Permitir” al acceder por primera vez a una aplicación estamos: dándole acceso a nuestras fotos, a nuestro muro, a nuestras notas, a nuestro estado sentimental, a nuestra lista de amigos, entre otras muchas cosas.

Como conclusión: presta mucha atención a tu privacidad en las redes sociales, y antes de “Permitir” una nueva aplicación de Facebook, piensa si estarías dispuesto a agregar como amigo a su creador, o restringe mucho la información a la que tienen acceso estas aplicaciones.

El truco lo vi en carlosleopoldo.com.

14 Comments más...

¿Buscando algo?

Usa este formulario para buscar en el blog

¿No encuentras lo que buscas? Deja un comentario en el post o envíame un email.

Links recomendados