PGP Party (2014/12/04)

¿Por qué / para qué podemos utilizar PGP/GPG ?

Los dos objetivos fundamentales de PGP son:

  • La firma mensajes y documentos. Esto permite que el receptor del mensaje pueda verificar que yo soy la persona que ha enviado el mensaje / creado el documento y que nadie ha intervenido la comunicación / modificado el documento durante el envío.
  • Cifrar mensajes / comunicaciones y documentos. Podemos crear un canal seguro de comunicación entre los participantes en la comunicación. Como, por ejemplo, las comunicaciones establecidas entre Edward Snowden y el periodista Micah Lee

Información de Utilidad

Alicia y Benito viven en continentes separados, entre los cuales sólo hay canales de comunicación en los que no confían (el teléfono puede ser pinchado, los emails leídos por las compañías proveedoras y el correo ordinario puede ser interceptado).

  • Alicia quiere enviarle un mensaje privado a Benito...
  • Alicia quiere estar segura de que los mensajes que recibe de Benitolos ha escrito él, y no otra persona suplantando su identidad...

La criptografía asimétrica, usando claves PGP, es probablemente una de las mejores herramientas que puede usar Alicia para sus propósitos. Conociendo la clave pública de Benito, puede enviarle un mensaje privado y asegurarse de que los mensajes que recibe son de él. Pero... ¿cómo puede conseguir Alicia la clave de Benito y asegurarse de que es suya? 

Un anillo de confianza o "Web of Trust" es una forma de solucionar el problema que tiene Alicia para conseguir la verdadera clave de Benito: en vez de tener que viajar hasta donde está Benito para asegurarse, puede buscar a alguien en quien confíe que esté seguro de cuál es la clave de Benito. Éste, a su vez, puede estar seguro, no porque haya visitado a Benito, sino porque confíe en alguien que sepa cuál es la clave de Benito...

Una "key signing party" es un evento que pretende expandir o crear anillos de confianza. En ella, los asistentes verifican la identidad de los otros asistentes y certifican, mediante firmas digitales, que son los propietarios de sus claves.

Para apuntarte a la que estamos organizando en la Facultad de Informática, puedes rellenar el formulario de inscripción para el que necesitarás hacerte una clave PGP. Si no tienes ninguna, descárgate el software libre GnuPGverifica su integridad y ejecuta el siguiente comando:

gpg --gen-key

Para saber cómo hacerte una clave, cómo usarla para firmar o cifrar mensajes y aprender más sobre criptografía asimétrica y anillos de confianza puedes consultar el siguiente tutorial:

Otros enlaces con información de utilidad

Keysigning Party

  • LA INSCRIPCIÓN YA ESTÁ CERRADA

Antes del evento

  • Rellenar el formulario de registro
  • Asegúrate que tu(s) clave(s) está(n) disponible(s) en uno de los siguientes servidores de claves públicos: pool.sks-keyservers.net, pgp.mit.edu, keys.gnupg.net, pgp.rediris.es
  • Si tienes más de una clave que quieras que te firmen, debes rellenar el formulario de registro tantas veces como claves poseas.
  • La fecha tope de registro es el día 3/12/2014 a las 18:00. Una vez cerrado el plazo de inscripción, se generará y publicará una lista con todos los participantes de la party (La lista será firmada por la clave del organizador Id: 3924202A). Es recomendable que traigas una copia impresa de esta lista para asegurarte que es la lista correcta (también tendremos copias disponibles durante el evento que podrás verificar)

Durante el evento

  • Trae algo para escribir (bolígrafo, lápiz, etc.)
  • Trae tu ID y fingerprint impresos de la(s) clave(s) que quieres firmar. Te hará falta para que puedas verificar la autenticidad (ver más abajo) de las claves que han sido registradas para la keysigning party.
  • NO traigas el ordenador
  • Trae al menos un documento identificativo con foto oficial (DNI, Pasaporte, NIE)
  • Llega a tiempo!. La party empezará a las 17:15 y tendrá lugar en el Salón de Actos de la Facultad y terminará justo antes de la conferencia de Richard Stallman (18:00 horas)
  • Al comienzo del evento se proyectará la lista de participantes y las huellas (fingerprints) de las claves a firmar.
    • Se pedirá (por orden de lista) que cada participante verifique su ID de clave y su fingerprint.
    • Cada participante marcará en su lista las claves que sean verificadas por sus propietarios.
  • Una vez verificadas las claves se verificarán las identidades:
    • Se organizará una cola según el orden de la lista:

      1 - 2 - 3 - 4 - 5 - 6 - 7 - 8

    • La cola se plegará sobre sí misma, de manera que cada uno tenga en frente a otro participante:

      1 - 2 - 3 - 4


      8 - 7 - 6 - 5

    • Después de que todos los participantes hayan verificado la identidad de la persona que tiene en frente (y anotado en la lista), la cola se mueve una posición a su derecha (teniendo en cuenta que los participantes de los extremos pasarán a la otra mitad de la cola).

           2 - 3 - 4 - 5


      1 - 8 - 7 - 6



      2 - 3 - 4 - 5


      1 - 8 - 7 - 6

Después del evento

  • Tendrás que importar las claves de los participantes de la PGP party. Después del evento y en esta misma página colgaremos un keyring con todas las claves públicas de los participantes del evento.
  • Una vez importadas tienes que firmar las claves. Para simplificar el proceso, se recomienda utilizar la herramienta PIUS (http://www.phildev.net/pius/).
    • Esta herramienta te asistirá en el proceso de firma y se encargará de enviar las claves firmadas a sus respectivos propietarios.

Instrucciones de uso de PIUS

Instalación de PIUS

Si utilizas Ubuntu o una distribución de derivada de Ubuntu, existe un paquete, por lo que simplemente tienes que ejecutar: sudo apt-get install pius

Otra posibilidad es instalar PIUS manualmente, descargando y verificando el programa desde: http://www.phildev.net/pius/.

Descarga el keyring generado para la Keysigning Party

Con las claves de los participantes de la keysigning party generaremos un keyring que te podrás descargar en esta página (NOTA: Lo generaremos al día siguiente del evento).

Firmado de todas las claves verificadas en la Keysigning Party

Una vez terminado el evento, tendrás una lista impresa con las claves de las personas que han asistido al evento y en la que habrás marcado si asistió al evento y si has verificado la identidad de su propietario, sólo firma las claves que cumplan estas dos condiciones. No estás obligado a firmar todas las claves.

Ejecuta el siguiente comando para firmar y enviar las claves firmadas a cada uno de sus propietarios:

pius --all-keys --keyring=party-20141204.gpg --mail=<mi email> --signer=<mi ID de clave> --mail-user=<mi usuario email> --mail-host=<mi servidor SMTP>

donde:

  • <mi servidor SMTP>: Es el servidor de correo SMTP de tu proveedor de email, por ejemplo, smtp.gmail.com si vas a utilizar una cuenta de GMail.
  • <mi email>: Dirección de email que se utilizará para enviar los correos, por ejemplo,XXXXXX@gmail.com si vas a utilizar una cuenta de GMail.
  • <mi usuario email>: Usuario que utilizas para autenticarte en tu proveedor de email, por ejemplo, XXXXXX@gmail.com si vas a utilizar una cuenta de GMail.
  • <mi ID de clave>: El ID de la clave con la que vas a firmar las claves de los participantes de la keysigning party. Lo normal es que sea el ID de la clave con la que te has registrado al evento.

A continuación PIUS te preguntará:

  1. La contraseña de tu clave privada PGP.
  2. La contraseña de tu propeedor de email. Si utilizas GMail es:
    • Si NO tienes activado el 2 Factor Authentication (2FA): La contraseña que utilizas para conectarte por el navegador.
    • Si SÍ tienes activado el 2FA: Tendrás que dar de alta una nueva APP en tu cuenta para obtener una contraseña.

Una vez suministrada esta información, PIUS recorrerá todas las claves y todos los IDs asociados a las claves preguntándote si deseas firmarlas, responde:

  • Responde 'n' a toda clave que no hayas verificado (porque no apareciera su propietario o porque no identificaras debidamente a su propietario).
  • Responde '3' si verificaste exhaustivamente la clave, es decir:
    • Verificaste la "fingerprint" o huella de clave con el propietario en persona, y esta coincide con la que te está mostrando PIUS.
    • Verificaste la identidad del propietario mediante un documento con fotografía dificil de falsificar (e.g. DNI, NIE o pasaporte) y que su nombre coincide con el que aparece en la información de la clave.

Si PIUS no muestra ningún mensaje de error, PIUS firmará la clave, la exportará y la enviará cifrada a la cuenta de email del propietario de la misma, de este modo nos aseguramos que el propietario de la clave además también es propietario de la cuenta de correo email que aparece en la clave pública. NOTA: PIUS te pone en copia oculta del correo que envia al destinatario, de este modo podrás saber si se han enviado las claves correctamente.

Si algo no funciona con PIUS

Si por ejemplo PIUS no es capaz de enviar por email las claves firmadas, todavía es posible firmar y enviar manualmente las claves, eso sí una a una. Para ello ejecuta pius de la siguiente manera, donde <mi ID de clave> es la id de tu clave: 

pius -A -r keyringfile -o claves -s <mi ID de clave>

Las claves firmadas se habrán guardado en la carpeta "claves" (NOTA: si no utilizas una ruta absoluta la carpeta se creará dentro de ~/.gnupg) en archivos con nombre parecido a AB12345CD__username_at_domain.com__1234A56D.asc. Envia cada archivo al propietario de la clave, en este caso username@domain.com.

 

Si todavía sigues teniendo problemas con PIUS puedes utilizar el método tradicional directamente con gpg. (http://www.dewinter.com/gnupg_howto/spanish/gpgminicomo.html#toc3.6). Para firmar la clave 654321D, ejecuta:

gpg --recv-keys 654321D

gpg --sign-key 654321D

gpg --armor --export 654321D --output 654321D.signed-by.1234A56D.asc

donde 123456D al igual que antes es el ID de tu clave. Envia el archivo 654321D.signed-by.1234A56D.asc al email que aparece en la información de la clave.

 

Instrucciones para importar las claves públicas firmadas

Ya sea utilzando PIUS o manualmente, recibirás por correo electrónico las firmas de tu clave, para importar y compartir estas firmas sigue los siguientes pasos:

  1. Importa las claves públicas del anillo de la party: gpg --import party-20141204.gpg
  2. Copia el contenido del email recibido a un archivo de texto, por ejemplo "clavefirmada.asc.enc"
  3. Descifra el archivo: gpg -d clavefirmada.asc.enc > clavefirmada.asc
  4. Importa la clave firmada: gpg --import clavefirmada.asc
  5. Repite los pasos del 1-4 con cada firma recibida
  6. Cuando termines de importar claves firmadas, no te olvides de enviar las firmas a un servidor de claves:
    • gpg --keyserver <your_key_server> --send-key <your_key_id>
    • Donde <your_key_server> es tu servidor de claves preferido, por ejemplo: pool.sks-keyservers.net y <your_key_id> es tu identificador de clave, por ejemplo: 1234A56D