Seguridad en la comunicación entre contactos: GnuPG

Tagged:

Sin duda el mayor grado de seguridad posible en una comunicación se consigue usando cifrado punto-punto, es decir, que el emisor cifra su mensaje y solo el receptor sea capaz de descifrarlo. En Jabber es común usar GPG (GnuPG) ya que es un sistema libre, gratuito, y disponible en las plataformas más comunes. Enlace recomendado: Introducción GnuPG
Necesidad y guía rápida de 7 pasos
en Bulma.

Los mejores clientes Jabber soportan cifrado con GPG.

Tu llave pública GnuPG la puedes subir a algun servidor de claves (hay muchos, en RedIris mismo tienen uno) o exportarla a un ficherito de texto y publicarla en tu web (los miembros de JabberES.org podemos publicar la llave en nuestro perfil de la web), o enviarla por correo a quien te la pida, o ponerla en la vcard de tu cuenta Jabber.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Si el contacto te envía algo

Si el contacto te envía algo cifrado y eres capaz de descifrarlo no estás validando absolutamente nada.

Si adjuntamos una explicación, pues mejor

Repito el planteamiento: Tengo algo importante que decir a un contacto, y no quiero que nadie más pueda leerlo. Por tanto, yo cifraré mi mensaje con su clave pública, de forma que solo él, con su clave privada pueda descifrarlo. El problema es conseguir su clave pública y asegurarme de que realmente es la suya, y no la de un intermediario que pretende leer mi mensaje. Para asegurarme, una vez conseguida su supuesta clave pública le pediré que él me envie un mensaje que sólo él puede enviar (por ejemplo un dato personal o una vivencia comun que nadie más conozca) cifrado con su clave privada. Si soy capaz de descifrarlo con su supuesta clave pública entonces es que esa clave es realmente la suya, ya que si fuera de un intermediario:

  • O bien no habría podido descifrar el mensaje, ya que dada la clave privada de mi contacto solo existe una clave pública que realize el proceso inverso.
  • O bien el mensaje no contenía datos que solo mi contacto conociera. Que me diga su número de telefono no me da ninguna garantia.

Creo que esta es una posible forma de validar la llave pública de un contacto.



¿Hay algun error en la explicación? ¿Tienes un método más fiable, rápido o sencillo? ¿Tienes algun otro método? A ver si la próxima vez aportas una explicación junto con la aserción, que genera más dudas de las que resuelve.

Sí, hay errores en tu nueva

Sí, hay errores en tu nueva aserción. Perdón por no haberme extendido demasiado en el comentario anterior, pero no tenía tiempo en ese momento y tu afirmación no era del todo precisa. Igual que ahora. Tú dices:

"Para asegurarme, una vez conseguida su supuesta clave pública le pediré que él me envie un mensaje que sólo él puede enviar (por ejemplo un dato personal o una vivencia comun que nadie más conozca) cifrado con su clave privada. Si soy capaz de descifrarlo con su supuesta clave pública entonces es que esa clave es realmente la suya, ya que si fuera de un intermediario:"

El método que propones de verificación no es correcto del todo. Alice y Badlop (:-)) quieren intercambiar sus llaves. Eve interviene de forma que:

  • Eve da a Alice su llave pública
  • Eve da a Badlop su llave pública

Con esto, es evidente, que tu método de verificación de la llave casca ya que ni Alice ni Badlop, con lo que tu planteas, tienen forma de saber si realmente la llave es de Badlop/Alice o de Eve. Cualquier mensaje cifrado de Alice a Badlop puede ser descrifrado por Eve y por lo tanto conocer el número de cuenta, el piso secreto, o lo que quieras :-)

Ciertamente, no existe un método que sea 100% fiable, como tampoco puedes garantizar la seguridad de un sistema.

Una mejor solución es emplear el modelo de confianza del PGP. Valida la llave si un tercero de confianza te dice que es confiable. Y ya si nos ponemos paranoicos llama por teléfono y pide el fingerprint o cosas similares... pero eso ya es más caro y en la mayoría de contextos innecesario.

No era mi intención ofender... sólo pensé que había una pequeña imprecisión que convenía aclarar. Habéis hecho un gran trabajo por aquí.

Argg

Vaya, pues tiene un boquete como una casa el sistema que proponía. Entonces solo es fiable verificarla en persona, en tiempo real por voz o por confianza en un tercero. Pues nada, actualizo el texto.

Solucion, espero...

Estaba casi bien el planteamiento original. Voy a adaptarlo con usuario A y B, para simplificarlo:

Si A quiere enviar un mensaje cifrado a B , lo q hará serán 2 pasos: primero cifrara el mensaje con su llave privada, y a continuacion lo hara con la llave pública de B. Despues envia el mensaje ...

B recibe el mensaje , y lo descifra primero con su llave privada (solo la tiene él) , y luego descifra con la llave publica de A (que es la unica q puede descifrar el mensaje de A).

Con esto nos aseguramos que los mensajes son de A y que la comunicacion es segura.

Un saludo