Key Signing Party
Contents
Key Signing Party (KSP) es una actividad que se realiza cuando un grupo de personas con relativa confianza se reúnen, como tienen cierto grado de confianza y pueden validar físicamente su identidad comparten sus llaves PGP o compatibles (como las creadas con GnuPG). Generalmente durante dicha actividad la persona se presenta e identifica, para ello puede validar su identidad con una identificación oficial de su país, un pasaporte, licencia de conducir, carné del seguro médico u otros, no obstante algunas personas debido a la trayectoria de amistad con la persona les bastaría con un simple "Soy yo", otras por el contrario desean reunirse varias con la persona antes de compartir las llaves.
Durante dichas actividades no puede existir sentimientos de rechazo, si no mas bien de respeto, que una persona rechace compartir sus firmas no significa que no sea tu amigo o que no lo vaya a hacer en un futuro, simplemente necesita obtener un grado de confianza mayor. Nadie está obligado en un KSP a compartir sus llaves.
¿Que debo hacer?
Es conveniente que usted tenga conocimiento sobre el uso de llaves PGP o compatibles, como crearlas, con que fin crearlas, no obstante en esta guía le ayudará a crear su llave PGP (tal vez la primera). Es conveniente que esté enterado de que si es su primera llave PGP las personas podrían no firmar su llave.
Existen dos pasos antes del KSP, los llamaremos Antes y Después, no obstante es conveniente que realice la preparación del software y de su sistema operativo antes de la actividad para facilitar el proceso.
Es posible que durante la organización del KSP se instruyan requerimientos para crear las llaves, modifique los pasos según se le indique.
Antes
Usted deberá contar una nueva llave PGP o compatible, esta llave podría ser una nueva, una para reemplazar una llave comprometida o una llave que superó su fecha de caducidad.
Instalar el software necesario
Una excelente alternativa para crear llaves compatibles con PGP es GnuPG, puede instalarlo ejecutando lo siguiente:
aptitude install gnupg
Crear una llave GPG
Existe un archivo de configurar para GnuPG en su directorio $HOME, pero este no está creado, simplemente ejecute en la consola:
gpg --list-keys
Esto listará las llaves que tenga en su sistema, si tiene, también creará el archivo ~/.gnupg/gpg.conf (note que es un directorio escondido).
Edite el archivo, por ejemplo con vim:
vim.tiny ~/.gnupg/gpg.conf
Y agregue al final las siguientes líneas:
personal-digest-preferences SHA256 cert-digest-algo SHA256 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
Ahora vamos a proceder a crear la llave:
gpg --gen-key
Siga los pasos del asistente, es importante que sus datos sean reales y que su correo corresponda correctamente. Va a obtener una salida similar a la siguiente
emonge@debian:~$ gpg --gen-key gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Por favor seleccione tipo de clave deseado: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sólo firmar) (4) RSA (sólo firmar) Su elección: 1 las claves RSA pueden tener entre 1024 y 4096 bits de longitud. ¿De qué tamaño quiere la clave? (2048) El tamaño requerido es de 2048 bits Por favor, especifique el período de validez de la clave. 0 = la clave nunca caduca <n> = la clave caduca en n días <n>w = la clave caduca en n semanas <n>m = la clave caduca en n meses <n>y = la clave caduca en n años ¿Validez de la clave (0)? 1y La clave caduca sáb 13 jul 2013 14:39:56 CST ¿Es correcto? (s/n) s Necesita un identificador de usuario para identificar su clave. El programa construye el identificador a partir del Nombre Real, Comentario y Dirección de Correo Electrónico de esta forma: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Nombre y apellidos: Roberto Gomez Bolanos Dirección de correo electrónico: el.chavo@del8.com Comentario: Chanfle Ha seleccionado este ID de usuario: "Roberto Gomez Bolanos (Chanfle) <el.chavo@del8.com>" ¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V Necesita una frase contraseña para proteger su clave secreta. Introduzca frase contraseña: Es necesario generar muchos bytes aleatorios. Es una buena idea realizar alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar la red y los discos) durante la generación de números primos. Esto da al generador de números aleatorios mayor oportunidad de recoger suficiente entropía.
Luego de este paso usted tendrá la llave creada.
Envía la nueva llave a un servidor público
Muy probablemente sabe que las llaves PGP tienen dos llaves, una privada y una pública, en el siguiente paso vamos a subir la llave pública a un servidor para que las demás personas puedan firmarla y otras tareas.
Para subir la llave se necesita identificarla, puede listar todas las llaves que están en su computadora con el siguiente comando:
gpg --list-keys
Debe obtener un resultado similar al siguiente:
/home/lavecindad/.gnupg/pubring.gpg ------------------------------- pub 4096R/170434B2 2012-07-08 [caduca: 2013-07-08] uid Roberto Gomez Bolanos (Chanfle) <el.chavo@del8.com> sub 4096R/BDF456E8 2012-07-08 [caduca: 2013-07-08]
Ahora vamos a tomar el siguiente dato: 170434B2 ese será el identificar de su llave. Con el siguiente comando puede enviar la llave al servidor:
gpg --keyserver subkeys.pgp.net --send-key 170434B2
Existen muchos servidores de llaves PGP alrededor del mundo, no obstante ellos replican la información de las llaves entre ellos, si sube una llave a otro servidor este replicará al que utilizó la primera vez, considere que esto podría llevar algo de tiempo.
Obtener su huella digital
Para que los usuarios puedan compartir la información entre ellos es necesario identificarlo de alguna manera, para ello se utiliza el "fingerprint" o huella digital. Usted puede conocer la suya con el siguiente comando:
gpg --fingerprint 170434B2
Con lo cual obtendrá un mensaje similar al siguiente:
pub 4096R/170434B2 2012-07-08 [caduca: 2013-07-08] uid Roberto Gomez Bolanos (Chanfle) <el.chavo@del8.com> Huella de clave = 9ETD 0853 68BE 493B 36D4 311Z A270 92D6 1704 12B2 sub 4096R/BDF456E8 2012-07-08 [caduca: 2013-07-08]
Es posible que necesite imprimir este dato para entregarlo a las personas con las cuales desee compartir su llave. También es posible que el dato deba ser enviado a un organizador de la actividad para que tabule los datos y los facilite en formato digital a los demás participantes del KSP. Existen otras maneras de presentar la información de su llave las cuales serán indicadas por los organizadores del KSP.
Muy seguramente la actividad pueda realizarse en idioma inglés, si ejecuta el comando anterior de la siguiente manera:
LANG=C gpg --fingerprint 170434B2
Obtendrá el mismo resultado pero en inglés.
Durante la actividad
Esta es la parte divertida que usted disfrutará y a propósito no la mencioné como paso en el wiki... ¡porque es mas divertido!
Durante el KSP usted deberá presentarse físicamente con una identificación con fotografía, ya sea la oficial de su país, licencia de conducir, carné de seguro médico o uno mas práctico como el pasaporte, algunas personas podrían solicitar mas de una identificación.
Dependiendo de la persona, podría bastar con conocerlo durante una gran cantidad de años, haber dormido en su casa en la niñez o emborracharse en un país extranjero.
Sea cual sea la posición de la persona con la que se desea compartir la llave, hay que respetar "sus condiciones".
En las KSP llegan personas que tienen años de compartir sus llaves con muchas personas, incluso existen "rankings" que indican el grado de confianza de las llaves de las personas, entre mas personas firman las llaves mas ranking se obtiene, así como no es lo mismo que te firme la llave Don Ramón a que te la firme Doña Clotilde, es muy probable que la gente sienta mas afecto por Don Ramón y tenga mas firmas que Doña Clotilde, además Don Ramón podría tener las firmas de Quico y la Chilindrina, mientras que Doña Clotilde tiene la del Señor Hurtado. Lo cual posiciona mejor a Don Ramón.
Después
Si todo sale bien... muy seguramente tendrá que trabajar varias firmas, para ello necesita instalar varias herramientas que facilitarán el trabajo. Generalmente recomiendo esperar a que la persona de mas rango firmen tus llaves y luego le firmas tu a ellos, además la persona de mayor rango podría considerar que no es seguro compartir la llave contigo, pero durante la KSP parecía que si lo iban a hacer, eso podría ahorrarte tiempo valioso.
Los siguientes pasos se pueden realizar antes de la actividad, pero por cuestiones de ilustración se organizó en el wiki así
Debian tiene un paquete especializado para la firma de llaves, puede instalarlo con:
aptitude install signing-party
Existe una herramienta que automatiza un poco el proceso de que usted realice el firmado, se llama caff, vamos a indicarle que utilice la misma configuración que tiene GnuPG según se configuró anteriormente o según indicaron en el KSP. Este proceso debe realizarse con el mismo usuario que creo la llave PGP.
$ grep ^cert-digest-algo ~/.gnupg/gpg.conf cert-digest-algo SHA512 $ mkdir -p ~/.caff/gnupghome $ mv ~/.caff/gnupghome/gpg.conf ~/.caff/gnupghome/gpg.conf.old $ ln -s ~/.gnupg/gpg.conf ~/.caff/gnupghome/gpg.conf
caff requiere que usted tenga configurado correctamente un MTA (un Agente de Transporte de Correo) en su computadora, esa configuración sale del alcance de esta guía, pero sería conveniente que verifique el Wiki de Debian con un ejemplo de configuración para el agente sSMTP.
Ahora debe crear el archivo ~/.caffrc y configurar las opciones según sus preferencias, el archivo debe tener un aspecto similar al siguiente:
# .caffrc -- vim:ft=perl: # This file is in perl(1) format - see caff(1) for details. $CONFIG{'owner'} = 'Roberto Gomez'; $CONFIG{'email'} = 'el.chavo@del8.com'; $CONFIG{'gpg-sign-args'} = "save"; $CONFIG{'keyserver'} = "pgp.mit.edu"; $CONFIG{'caffhome'} = $ENV{'HOME'}.'/.caff'; # Specify the last 16 characters of your key $CONFIG{'keyid'} = [ qw{R2709276170434B2} ]; $CONFIG{'also-encrypt-to'} = [ qw{E2709276170434B2} ]; # Mail template to use for the encrypted part $CONFIG{'mail-template'} = << 'EOM'; Hola, please find attached the user id{(scalar @uids >= 2 ? 's' : '')} {foreach $uid (@uids) { $OUT .= "\t".$uid."\n"; };}of your key {$key} signed by me. If you have multiple user ids, I sent the signature for each user id separately to that user id's associated email address. This gives you also the chance to upload only specific signatures if you don't want my signature on all your user ids. You can import the signatures by running each through `gpg --import`. Note that I did not upload your key to any keyservers. If you want this new signature to be available to others, please upload it yourself. With GnuPG this can be done using gpg --keyserver subkeys.pgp.net --send-key {$key} If you have any questions, don't hesitate to ask. Saludos {$owner} EOM
Algunas líneas importantes:
$CONFIG{'owner'} : Debe indicar su nombre $CONFIG{'email'} : Debe indicar su correo electrónico, en efecto el que utilizó para firmar la llave $CONFIG{'keyid'} = [ qw{R2709276170434B2} ]; : Los últimos 16 caracteres del fingerprint de su llave $CONFIG{'also-encrypt-to'} = [ qw{E2709276170434B2} ]; : Los últimos 16 caracteres del fingerprint de su llave
Ahora bien, para firmar la llave usted obtuvo el fingerprint de la llave de la persona que quiso compartirla con usted durante el KSP.
Debe indicarle a caff que utilice dicho fingerprint para firmar las llaves. Por ejemplo:
caff -mR 9ETD085368BE493B36D456ZA2709RT6170412B2
Note que al poner el fingerprint no deben haber espacios entre los caracteres.
caff enviará un correo a la persona con el mensaje encriptado con su llave y listo para ser firmado por la otra persona.
Ahora tocará hacer lo contrario, importar las llaves. Para ello recibiremos un archivo con la llave encriptada, el primero paso es des encriptar el mensaje, para ello ejecute:
gpg --decrypt msg.asc > msg.firmado
En la pantalla se le solicitará la contraseña de su llave, y si la introduce correctamente se almacenará en el archivo la llave..
Para importar la llave ejecute lo siguiente:
gpg --import < msg.firmado
Se le solicitará confirmar la acción y eso es todo, tendrá entre sus círculos de confianza la llave de su conocido.
Es conveniente que suba de nuevo la llave a los servidores,
gpg --keyserver subkeys.pgp.net --send-key 170434B2
Links Externos
Otro página del wiki sobre firmas de llaves, en Inglés: http://wiki.debian.org/Keysigning
Instrucciones para firmar llaves del Debconf 12 realizado en Managua, en Inglés http://people.debian.org/~anibal/ksp-dc12/ksp-dc12.html
Otrá página de Debian que explica como firmar llaves, en Inglés: http://keyring.debian.org/creating-key.html
Manual del paquete kspsig: https://github.com/tmarble/kspsig