Para poder comunicarse con otros, el usuario debe intercambiar las claves públicas. Para obtener una lista de las claves en el fichero («anillo») de claves públicas, se puede usar la opción de la línea de órdenes --list-keys.
javier:~$ gpg --list-keys /home/javier/.gnupg/pubring.gpg -------------------------------- pub 1024D/D58711B7 1999-09-24 Javier (Paramo S.L.) <javier@casa.es> sub 1024g/92F6C9E3 1999-09-24 |
Para poder enviar una clave pública a un interlocutor, antes hay que exportarla. Para ello se usará la opción de la línea de órdenes --export. Es necesario un argumento adicional para poder identificar la clave pública que se va a exportar. Como en la opción anterior --gen-revoke, hay que usar el identificador de clave o cualquier parte del identificador de usuario para identificar la clave que se desea exportar.
javier:~$ gpg --output javi.gpg --export javier@casa.es |
La clave se exporta en formato binario, y esto puede no ser conveniente cuando se envía la clave por correo electrónico o se publica en una página web. Por tanto, GnuPG ofrece una opción de la línea de órdenes --armor[1] que fuerza que la salida de la orden sea generada en formato armadura-ASCII, parecido a los documentos codificados con uuencode. Por regla general, cualquier salida de una orden de GnuPG, v.g.. claves, documentos cifrados y firmas, pueden ir en formato armadura-ASCII añadiendo a la orden la opción --armor.
javier:~$ gpg --armor --output javi.asc --export javier@casa.es -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v0.9.8 (GNU/Linux) Comment: For info see http://www.gnupg.org [...] -----END PGP PUBLIC KEY BLOCK----- |
Se puede añadir una clave pública al anillo de claves públicas mediante la opción --import.
javier:~$ gpg --import arancha.gpg gpg: key B63E132C: public key imported gpg: Total number processed: 1 gpg: imported: 1 javier:~$ gpg --list-keys /home/javier/.gnupg/pubring.gpg -------------------------------- pub 1024D/D58711B7 1999-09-24 Javier (Paramo S.L.) <javier@casa.es> sub 1024g/92F6C9E3 1999-09-24 pub 1024D/B63E132C 1999-09-24 Aranzazu (A.G.deZ.) <arancha@nav.es> sub 1024g/581A915F 1999-09-24 |
Una vez que la clave haya sido importada, es necesario validarla. GnuPG usa un potente y flexible modelo de confianza que no requiere que el usuario dé validez personalmente a cada clave que importe. Sin embargo, algunas claves pueden necesitar que el usuario les dé validez de forma personal. Una clave se valida verificando la huella digital de la clave, y firmando dicha clave para certificar su validez. La huella digital se puede ver con la opción de la línea de órdenes --fingerprint, pero para certificar la clave hay que editarla.
javier:~$ gpg --edit-key arancha@nav.es pub 1024D/B63E132C created: 1999-09-24 expires: never trust: -/q sub 1024g/581A915F created: 1999-09-24 expires: never (1) Aranzazu (A.G.deZ.) <arancha@nav.es> Command> fpr pub 1024D/B63E132C 1999-09-24 Aranzazu (A.G.deZ.) <arancha@nav.es> Fingerprint: 4203 82E2 448C BD30 A36A 9644 0612 8A0F B63E 132C |
Después de comprobar la huella digital ya se puede firmar la clave con el fin de validarla. Debido a que la verificación es un punto débil en criptografía de clave pública, es aconsejable ser cuidadoso en extremo y siempre comprobar la huella digital de una clave con la que nos dé el propietario antes de firmar dicha clave.
Command> sign pub 1024D/B63E132C created: 1999-09-24 expires: never trust: -/q Fingerprint: 4203 82E2 448C BD30 A36A 9644 0612 8A0F B63E 132C Aranzazu (A.G.deZ.) <arancha@nav.es> Are you really sure that you want to sign this key with your key: "Javier (Paramo S.L.) <javier@casa.es>" Really sign? y You need a passphrase to unlock the secret key for user: "Javier (Paramo S.L.) <javier@casa.es>" 1024-bit DSA key, ID D58711B7, created 1999-09-24 Enter passphrase: |
Una vez firmada, el usuario puede comprobar la clave para obtener un listado de las firmas que lleva y para ver la firma que le acaba de añadir. Cada identificador de usuario tendrá una o más autofirmas, así como una firma por cada usuario que haya validado la clave en cuestión.
Command> check uid Aranzazu (A.G.deZ.) <arancha@nav.es> sig! B63E132C 1999-09-24 [self-signature] sig! D58711B7 1999-09-24 Javier (Paramo S.L.) <javier@casa.es> Command> quit |
[1] | Muchas opciones de la línea de órdenes que se usan con frecuencia, también se pueden configurar en un fichero de configuración. |