Intercambio y firma de claves GnuPG con ayuda del DNIe

Recientemente he hecho un intercambio y firmado de claves GnuPG sin necesidad de encontrarse físicamente con la otra persona, gracias a la firma con DNI electrónico. El método tradicional es la fiesta de firmado de claves, pero yo nunca he podido asistir a ninguna. Os explico este método que viene muy bien porque se puede hacer completamente a distancia.

Lo primero es generar un documento PDF en el que nos identificamos y que contenga la información sobre nuestra clave pública:

$ gpg2 --fingerprint 0x12345678

Lo podemos hacer con LibreOffice y exportarlo a PDF.

Este documento lo firmamos con el DNIe. Yo he usado el programa Sinadura, que me ha dado algún problema en 64 bits, pero he conseguido solucionar haciendo un enlace simbólico de la librería OpenDNIe:

# ln -s /usr/lib64/opensc-pkcs11.so /usr/lib/opensc-pkcs11.so

Este documento PDF firmado, lo firmamos también con nuestra clave:

$ gpg2 --sign --detach-sign fichero.pdf

Esto nos genera un archivo fichero.pdf.sig. Ahora debemos enviar a la otra parte el pdf y el sig para la verificación.

El proceso de verificación sería de la siguiente forma:
Primero descargamos la clave del otro de algún servidor de claves

$ gpg2 --keyserver pgp.mit.edu --recv-keys 0x98765432

Vemos el fingerprint y lo comparamos con el del fichero pdf recibido:

$ gpg2 --fingerprint 0x98765432

Comprobamos la fima de GnuPG del fichero:

$ gpg2 --verify fichero.pdf.sig fichero.pdf

Ahora hay que verificar la firma del DNIe del documento PDF. Yo solo lo he podido hacer desde Adobe Reader, instalándole previamente la entidad certificadora raiz de los DNIe. Aseguraros de que el nombre del certificado del usuario coincide con el que dice que es, y que se ha realizado la comprobación por OCSP de la validez del certificado.

Hechas estas comprobaciones, ya tenemos la seguridad de la autenticidad de la firma, por lo que podemos firmarla con la nuestra:

$ gpg2 --sign-key --ask-cert-level 0x98765432
$ gpg2 --export --armor 0x98765432 > signedkey.asc

Para comprobar la dirección de e-mail de la clave, le mandaremos el fichero signedkey.asc a la otra persona  a la dirección indicada y de forma encriptada, para que sea él quien la exporte al servidor de claves y lo haga público.

Por último, cuando nosotros recibamos la firma, debemos importarla y publicarla:

$ gpg2 --import signedkey.asc
$ gpg2 --keyserver pgp.mit.edu --send-key 0x12345678

Si alguien se anima a intercambiarse firmas de claves conmigo, podéis mandarme un mail y usamos este método. Mi clave es: B6304B72DEEBD08B

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s