La Gaceta de Linux ... ¡ haciendo a Linux un poco más divertido !

Frente y reverso: KPGP y GPG

Por Jimmy O'Regan

Traducción al español por Ksaver
el día 6 de Abril de 2005, para La Gaceta de Linux

Una de las virtudes de Linux es que su herencia de Unix le ha dado una poderosa línea de comandos. Usar la línea de comandos puede ser difícil sin embargo, y mucha gente prefiere usar GNOME o KDE para hacer su trabajo. Afortunadamente, muchos desarrolladores eligen acoger la virtud de la "holgazanería" de Larry Wall, y en lugar de elegir reinventar la rueda, crean interfaces gráficas de uso fácil para aplicaciones CLI comunes.

Éste es el primer artículo de una serie ocasional que intenta mirar a algunas de éstas interfaces gráficas, mostrar al nuevo usuario cómo usarlas, y, más importantemente, proveer los comandos correspondientes para el modo de consola para futura referencia - nunca sabes cuándo puedes necesitar hacer algo sobre una conección SSH, después de todo!

KGPG y GPG

KGPG en una interfaz gráfica para GPG, el "GNU Privacy Guard" (Guardián de la Privacidad GNU). GPG fué creado para sustituír a PGP, el popular programa de encriptado. GPG es un componente común en sistemas Linux - casi todos los paquetes lo usan para verificación, por ejemplo.

GPG es una implementación de OpenPGP (RFC 2440), un estándar creado a partir del desarrollo de PGP, para proveer seguridad para, entre otras cosas, correo electrónico. PGP es mejor conocido como una implementación de criptografía de clave pública - cada usuario tiene dos claves, una pública, y una privada. Si yo quiero enviarle un correo electrónico a Mark, lo encripto usando mi clave privada y su clave púlica; Mark es capaz entonces de desencriptarlo usando su clave privada y mi clave pública.

El uso más común de PGP, sin embargo, en como una forma de firmar algo digitalmente - normalmente correo electrónico, o como se mencionó antes, paquetes de software - entonces el receptor puede verificar que el artículo viene de la persona que dice haberlo enviado.

Iniciando KGPG

KGPG Wizard

Cuando inicias KGPG por primera vez, presenta un Wizard que te ayuda a configurar GPG. Está bien dejar los defaults. El paso final, y en el que estamos interesados, es el diálogo de creación de claves.

Generate a key

El diálogo de generación de claves de KGPG contiene los valores comunes por defecto, todo lo que necesitas hacer es ingresar tu nombre y correo electrónico en las áreas apropiadas, y hacer click en OK. Observa que el "Modo Experto" te provee con una consola, e inicia GPG por tí.

After generation

KGPG entonces te presenta un diálogo que contiene la firma de tu clave ID y huella digital. También te ofrece crear un Certificado de Revocación. Puedes usar esta opción - la mejor opción es escoger "Guardar como", mover el fichero a un lugar seguro, y borrarlo de tu computadora. Ésta es una opción de la que desearía haber tomado ventaja - hay dos viejas claves que me pertenecen pululando por ahí de las que desearía haberme librado!

Si quieres generar un Certificado de Revocación en algún momento posterior, simplemente haz un click derecho en la llave en la ventana de Administración de Claves, y seleciona "Revocar Clave".

Iniciando con GPG

Crear un para de claves en GPG es muy fácil: usando el comando gpg --keygen se te ofrecen los mismos valores por defecto que en KGPG, simplemente presiona la tecla 'Enter' para aceptarlos y escribe 'y' seguido de 'Enter' cuando pregunte "Es esto correcto". Cuando lo pida, ingresa tu nombre y dirección de correo electrónico.

Aqui está una muestra de una sesión de creación de claves:

[foo@dhcppc0 foo]$ gpg --gen-key
gpg (GnuPG) 1.2.4; Copyright (C) 2003 Free Software Foundation, Inc.
Este programa no tiene ABSOLUTAMENTE NINGUNA GARANTÍA.
Es software libre, y eres bienvenido a redistribuírlo
bajo ciertas condiciones. Ver el archivo COPYING para detalles.

Por favor Selecciona que tipo de clave quieres:
   (1) DSA and ElGamal (default)
   (2) DSA (sólo firma)
   (4) RSA (sólo firma)
Tu selección?
Par de claves DSA tendrá 1024 bits.
Para generar un nuevo par de claves ELG-E.
	      tamaño mínimo de clave es 768 bits
	      tamaño por defecto de clave es 1024 bits
	      tamaño máximo aconsejado es 2048 bits

Que tamaño de clave quieres? (1024)
Tamaño solicitado es 1024 bits
Por favor especifica por cuánto tiempo será válida la clave.

         0 = la clave no expira
        = la clave expira en n días
      w = la clave expira en n semanas
      m = la clave expira en n meses
      y = la clave expira en n años
La clave es válida por? (0)
La clave no expira en absoluto
Es correcto (y/n)? y

Necesitas un ID de usuario para identificar tu clave; el programa construye la id de usuario
a partir del Nombre Real, Comentario y Dirección de Correo Electrónico en ésta forma:
    "Heinrich Heine (Der Dichter) "

Nombre real: Foo McBar
E-mail: foo@bar.com
Comentario:
Selecionaste este ID de usuario:
    "Foo McBar <foo@bar.com>"

Cambiar (N)ombre, (C)omentario, (E)mail o (O)K/(Q)uit? o
Necesitas una frase secreta para proteger tu clave secreta.

Necesitamos generar muchos bytes aleatorios. Es una buena idea hacer
alguna otra acción (escribir en el teclado, mover el ratón, utilizar los 
discos) durante la primera generación; esto da al generador de números
aleatorios una mejor oportunidad de tener suficiente entropía.
+++++.++++++++++.+++++++++++++++++++++++++.++++++++++++++++++++++++++++++..+++++
+++++.+++++++++++++++..+++++.+++++..+++++.+++++++++++++++.+++++>+++++.+++++>
+++++......<++++++++++
claves pública y secreta creadas y firmadas.
clave marcada según lo confiado en última instancia.

Para generar un certificado de revocación, puedes usar gpg --gen-revoke. Necesitas dar a GPG alguna manera de identificar para cuál clave deseas crear un certificado - GPG puede hacer uso de varios pares de claves, lo que es útil si quieres mantener identidades separadas para el trabajo y para uso privado, o si usas un pseudónimo por cualquier razón.

[foo@dhcppc0 foo]$ gpg --gen-revoke "Foo McBar"

sec  1024D/EA4A9540 2004-06-28   Foo McBar <foo@bar.com>

Crear un certificado de revocación para ésta clave? y
Por favor selecciona la razón para la revocación:
  0 = Ninguna razón especificada
  1 = La clave ha sido comprometida 
  2 = La clave es reemplazada
  3 = La clave ya no es usada 
  Q = Cancelar
(Probablemente quieras seleccionar 1 aquí)
Tu decisión? 3
Ingresa una descripción opcional; terminala con una línea vacía:
>
Razón para revocación: La clave ya no es usada
(Sin descripción)
Es correcto? y

Necesitas una frase secreta para desbloquear la clave secreta para
usuario: "Foo McBar "
clave DSA 1024 bits, ID EA4A9540, creada 2004-06-28

Salida ASCII blindada forzada. 
Certificado de revocación creado.

Por favor muevelo a un medio que puedas esconder lejos; si alguien malintencionado
tiene acceso a este certificado puede usarlo para hacer tu clave inservible.
Es inteligente imprimir este certificado y guardarlo lejos, sólo en caso
de que tu medio se vuelva ilegible. Pero ten algo de cuidado: el sistema de impresión
de tu máquina puede guardar los datos y hacerlos disponibles para otros!

Importando claves

Find a key

Para encontrar una clave con KGPG, escoge "Archivo->Diálogo del servidor de claves". En el diálogo, ingresa el nombre, dirección de correo electrónico o ID de la clave que deseas importar. Si hay múltiples coincidencias, se te presenta un diálogo desde el que puedes escoger la clave correcta.

Select a key

Para hacer ésto en GPG, usa gpg --search-key "Algo a encontrar", donde "Algo a encontrar" es un nombre, dirección de correo electrónico o ID de clave. Si hay múltiples concordancias, GPG también te avisa para hacer una seleccion:

[foo@dhcppc0 foo]$ gpg --search-keys "Jimmy O'Regan"
gpg: buscando "Jimmy O'Regan" en servidor HKP subkeys.pgp.net
Claves 1-3 de 3 para "Jimmy O'Regan"
(1)     Jimmy O'Regan <jimregan@o2.ie>
	  1024 bit clave DSA 773730F8, creada 2004-06-19
(2)     Jimmy O'Regan <jimregan@o2.ie>
	  1024 bit clave DSA DA974449, creada 2004-06-05
(3)     Jimmy O'Regan <jimregan@lit.compsoc.com>
	  1024 bit clave DSA FF5D8291, creada 2000-08-22
Ingresa número(s), N)ext, o Q)uit > 1
gpg: key 773730F8: "Jimmy O'Regan <jimregan@o2.ie>" importada
gpg: Número total procesado: 1
gpg:              importado: 1

Observa que si no tienes un servidor de claves configurado en ~/.gnupg/gpg.conf puedes agregar la opción --keyserver [servidor de claves]. Por ejemplo:

gpg --keyserver subkeys.pgp.net --search-keys "Jimmy O'Regan"

Si ya tienes una clave pública en un fichero, puedes importarla a KGPG usando "Claves->Importar clave", donde puedes también ingresar el nombre de archivo, o navegar hasta él. Este diálogo también da la opción de importar desde el portapapeles - He encontrado ésto útil cuando necesito contactar al administrador de sistemas de Gaceta Linux, Kayos, quien mantiene su clave en su página de contactos.

En GPG, para importar desde un fichero, usa gpg --import nombre-de-archivo. Nota que ésto acepta tuberías estándard, entonces hay maneras de emular la entrada del portapapeles de KGPG. El modo más usado para trabajar donde sea es usar un "documento de este directorio":

[foo@dhcppc0 jimmy]$ gpg --import <<EOF
> (pegar clave pública)
>EOF

Cómo obtener el contenido del portapapeles en las "X" llegó recientemente en The Answer Gang, donde Ben apuntó a su tip de xclip del Número 78. Para usar ésto con GPG, puedes intentar:

xclip -o|gpg --import

Alternativamente, si usas KDE, pero no usas KGPG, puedes intentar:

dcop klipper klipper getClipboardContents|gpg --import

Viendo claves

KGPG Key Management

No hay pasos especiales a seguir en KGPG para ver clave o firmas - la ventana de Administración de Claves muestra todas las claves en tu llavero. Puedes hacer click en el signo '+' junto a cada nombre de clave para ver alternadas las UIDs, firmas, IDs de foto etc. Si deseas, puedes tener IDs de foto apareciendo en la ventana principal seleccionando una de las opciones in "Ver->IDs de foto".

En GPG, puedes usar una de varias opciones, dependiendo de que quieres ver. Si deseas ver claves públicas, usa --list-keys; si deseas ver claves secretas, usa --list-secret-keys; y si deseas ver claves secretas y sus firmas, usa --list-sigs. Con todas estas opciones si especificas un nombre, GPG mostrará sólo los detalles para ése nombre.

Exportando Claves

Para exportar tu clave pública en KGPG, escoge "Claves->Exportar Claves Púbicas", o presiona Ctrl-C. Esto te ofrece exportar la clave en un correo electrónico, al portapapeles, al servidos de claves por defecto, o a un archivo - $HOME/$USER.asc por defecto.

En GPG, para exportar una clave, usa gpg --export -a [id de clave]. La opción -a es importante si quieres usar la clave en correo electrónico, ésto codifica la clave en "armadura" ASCII. si no deseas especificar la ID de clave, el comportamiento por defecto es exportar todas las claves, que probablemente no es lo que tú quieres.

Alternar IDs

Si tienes múltiples direcciones de correo electrónico, y deseas usar la misma clave para cada una de ellas, puedes desear agregar una ID de usuario extra. En KGPG, simplemente haz un click derecho en el archivo y selecciona "Agregar ID de Usuario". Esto te muestra un diálogo que te pide un nombre, dirección de correo electrónico y un comentario opcional.

En GPG, usa gpg --edit-key [id de clave]. Esto te da un prompt diciendo Command>. En este prompt, escribe adduid, e ingresa el nombre, correo electrónico, y un comentario opcional según te lo pida.

Para agregar una ID de foto en KGPG, haz un click derecho en el nombre al que deseas agregar la foto, escoge "Agregar foto", y navega hasta la localización del archivo. En GPG, debes usar otra vez gpg --edit-key. Esta vez, desde el prompt Command> escribe addphoto. Cuando te lo pida, escribe la ruta hacia la foto.

Es importante señalar que KGPG, o al menos KGPG1.1, como viene con Mandrake 10.0, define una nueva UID como la UID primaria, en lugar de una alternativa, como lo hace GPG. Para cambiar la UID primaria, debes usar el modo de edición de GPG. Selecciona el número de la UID, sigue los pasos de arriba, y usa el comando primary

Borrando

En KGPG, ésto es muy sencillo. Selecciona la clave o firma que deseas borrar, y presiona la tecla 'Borrar'. No es posible borrar todas las firmas desde KGPG sin embargo - las firmas en una UID alternativa o ID de foto deben ser borradas desde la línea de comando. Puedes tener acceso rápidamente a GPG desde "Claves-> Editar Clave en Terminal", o presionando Alt-Enter.

En GPG, para borrar una clave pública, usa gpg --delete-keys [id de clave]; para borrar una clave secreta, usa gpg --delete-secret-keys [id de clave]. Para borrar una firma, debes usar otra vez el modo de edición. GPG enumera los UIDs de la clave por tí. Para trabajar en una UID, escribe su número. GPG entonces listará cada UID otra vez, con un asterisco junto a cada clave seleccionada. Usa el comando delsig para borrar una firma. GPG te preguntará con cada firma en turno; presiona 'y', 'n' o 'q' seguido de 'Enter' para borrar, saltar una firma, o dejar el modo de borrado de firmas, respectivamente. Simplemente presionando 'Enter' escoge la opción por defecto, lo cual es saltarse la firma.

Firmado de claves

Para firmar una clave, primero impórtala. En KGPG, escoge "Claves->Firmar Clave(s)"; en GPG, usa gpg --sign-key [id de clave]. Ambos te solicitarán confirmar ésto, y ambos preguntarán que tan bien has verificado la identidad del dueño de la clave. En GPG ésto aparece como:

   (0) No contesto. (por defecto).
   (1) No lo he comprobado en absoluto.
   (2) He hecho una comprobación informal.
   (3) Lo he comprobado meticulosamente.

Si no puedes decir que has hecho una comprobación meticulosa, es recomendable que no firmes la clave en absoluto. Una vez que hayas firmado la clave, puedes exportarla, entonces el dueño puede importar tu firma. Para mayor información sobre firmado de claves, ver el CÓMO de firmado de claves GPG o La Guía de firmado de claves de Debian.

Encriptando, desencriptando y firmando

Con KGPG instalado, puedes encriptar cualquier archivo que desees desde konqueror haciendo un click derecho, y seleccionando "Acciones->Encriptar archivo"; o soltándolo sobre el ícono DE KGPG en la Barra de Tareas. Selecciona a la persona que deseas que reciba el fichero, y KGPG creará una versión codificada en ASCII del archivo encriptado. Para desencriptarlo, de la misma forma arrastra el fichero sobre la barra de tareas.

En GPG, usa gpg -e [nombre de archivo], e ingresa la ID de la clave cuando te lo pida. Puedes usar entonces gpg --enarmor [nombre de archivo] para codificarlo en ASCII. Usa gpg --decrypt [nombre de archivo] para desencriptarlo.

Para firmar ficheros en KGPG, primero debes cambiar las preferencias para permitirlo. Ve a "Preferencias->Configurar KGpg"; en el panel "Interfaz de usuario", cambia "Acción al soltar un archivo sin cifrar" a "Preguntar" (o "Firmar" si no tienes intenciones de usar el encriptado). Esto te permite soltar ficheros sobre la barra de tareas para firmado.

En GPG, para firmar un fichero usa gpg --sign [nombre de archivo]. Puedes codificar ésto en formato ASCII, como para encriptado, si deseas enviar por correo electrónico el fichero.

Conclusión

Espero que alguien ahí afuera encuentre ésto útil - si aún un usuario de KGPG encuentra un comando GPG correspondiente usando ésto, estaré feliz. Si alguien lo encuentra útil como una introducción a cualquiera, KGPG o GPG, siéntase libre de enviarme un correo electrónico encriptado - mi clave pública está disponible aquí. Hasta la próxima, cuídense!

P.D.

Me gustaría tomar un momento para corregir un error en el artículo sobre las Extensiones Mozilla del último mes, y agradecer a quienes hicieron observaciones.

Mencionando PopUpALT, dije "Esta caracterísitica, que estaba presente en Netscape 4, fué removida desde Mozilla por alguna razón desconocida." Lo que Quise decir fué "por alguna razón que no he descubierto".

Marcin Gil fué el primero en escribir, diciendo "PopUpALT fué probablemete removido de mozilla porque (si mi memoria no me falla) el atributo ALT es para lectores de pantalla, navegadores de texto, etc. Tal uso es recomendado por W3 en las especificaciones de XHTML (creo que Jeffrey Zeldman lo escribe en su libro). El atributo TITLE es para presentar textos en pop-ups.."

Crystle aclaró ésto: "De hecho, el W3 dice que el alt tag debe ser usado cuidadosamente, y he visto algunos alt tags realmente largos - esto causa problemas si tu navegador traduce a voces o braile, lo cual es el propósito del alt tag.
" Ver: http://www.w3.org/TR/html401/struct/objects.html#alternate-text

A lo cual Josh Ockert agregó: "El comportamiento correcto es desplegar el valor *entero* de un atributo alt si la imagen no es cargada".

 


[BIO] Jimmy ha estado usando computadoras desde la tierna edad de siete años, cuando su padre le heredó una Amstrad PCW8256. Después de unos pocos flirteos breves con una Atari ST y numerosas versiones de DOS y windows, Jimmy fué introducido a Linux en 1998 y no ha vuelto atrás.

Jimmy es padre de un tecnofílico de siete años de edad llamado Mark. En su tiempo libre, disfruta salir de su círculo personal de Hell, trabajando en una fábrica, a Jimmy le gusta tocar la guitarra y editar la Wikipedia.

Copyright © 2004, Jimmy O'Regan. Publicado bajo los términos de la Open Publication license

Publicado en el número 104 de la Gaceta de Linux, Julio 2004