- Estréllate y Arde - https://www.estrellateyarde.org -
Software de encriptación en Linux: GPG
GPG (GNU Privacy Guard, gnupg.org, paquete gnupg) es un software de encriptación utilizado para cifrar y firmar documentos digitales, especialmente el correo, que utiliza criptografía híbrida: combina criptografía simétrica (por su rapidez), con criptografía asimétrica (por no necesitar compartir claves secretas). Sigue el estándar OpenPGP del IETF (Internet Engineering Task Force) y está integrado en numerosos programas como Secure-APT, Kmail, Evolution, Mozilla-Thunderbird, etc.
Equivalencias en Windows: PGP.
Recursos
$ gpg --gen-key
La primera vez que lo ejecutemos creará el directorio ~/.gnupg y los archivos:
A continuación tendremos que responder a una serie de preguntas:
Por favor seleccione tipo de clave deseado: (1) DSA y ElGamal (por defecto) (2) DSA (sólo firmar) (5) RSA (sólo firmar) Su elección:
Seleccionamos el tipo de clave por defecto, 1.
El par de claves DSA tendrá 1024 bits Las claves ELG-E pueden tener entre 1024 y 4096 bits de longitud ¿De qué tamaño quiere la clave? (2048)
Seleccionamos la longitud por defecto, 2048.
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)?
Seleccionamos un año: 1y.
Necesita un identificador de usuario para identificar su clave. El programa construye el identificador a partir del Nombre, Comentario y email de esta forma: "Heinrich Heine (Der Dichter) <[email protected]>" Nombre y apellidos: frans berns Email: [email protected] Comentario: francis Ha seleccionado este ID de usuario: "frans berns (francis) <[email protected]>" ¿Cambiar (N)ombre, (C)omentario, (D)irección, (V)ale o (S)alir?
Si está bien pulsamos (V)ale y continuamos.
Necesita una Frase contraseña para proteger su clave privada Introduzca Frase contraseña: Repita Frase contraseña:
Una vez introducidos todos los datos, generará el par de claves. Durante este proceso GPG recoge datos aleatorios que usará para generar las claves:
++++++++++++++++++ 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. ++++++++++++++++++
Cuando termine nos mostrará el mensaje final:
~/.gnupg/trustdb.gpg: se ha creado base de datos de confianza. Clave ED4B2ABA marcada como de confianza absoluta. Claves pública y secreta creadas y firmadas. Comprobando base de datos de confianza: 3 dudosas necesarias, 1 completa necesaria. Modelo de confianza PGP: Nivel: 0 Validez: 1 Firmada: 0 Confianza: 0-, 0q, 0n, 0m, 0f, 1u Siguiente comprobación de base de datos de confianza el 2007-04-09 pub 1024D/ED4B2ABA 2006-04-09 [caduca: 2007-04-09] Huella de clave: C8F1 06C9 27C9 C2D1 2205 95F3 14BB 1129 ED4B 2ABA uid frans berns (francis) <[email protected]> sub 2048g/D223B5B2 2006-04-09 [caduca: 2007-04-09]
$ gpg --list-keys /home/francis/.gnupg/pubring.gpg -------------------------------- pub 1024D/ED4B2ABA 2006-04-09 [caduca: 2007-04-09] uid frans berns (francis) <[email protected]> sub 2048g/D223B5B2 2006-04-09 [caduca: 2007-04-09]
El UID lo utilizaremos cuando tengamos que seleccionar una clave. El UID de nuestra clave es ED4B2ABA.
$ gpg --list-secret-keys /home/francis/.gnupg/secring.gpg -------------------------------- sec 1024D/ED4B2ABA 2006-04-09 [caduca: 2007-04-09] uid frans berns (francis) <[email protected]> ssb 2048g/D223B5B2 2006-04-09
$ gpg --fingerprint ED4B2ABA Huella de clave: C8F1 06C9 27C9 C2D1 2205 95F3 14BB 1129 ED4B 2ABA
Vemos que el UID de una clave son los últimos 8 caracteres de su fingerprint. El fingerprint lo utilizaremos para comprobar las claves que recibamos antes de certificarlas, y con nuestra clave para dárselo en mano o por teléfono a otros usuarios.
$ gpg --edit-key ED4B2ABA
Entraremos en modo interactivo, donde disponemos de numerosos comandos. Por ejemplo, para modificar la fecha de caducidad ejecutaremos el comando:
Command> expire
Nos pedirá la passphrase y guardaremos los cambios con:
Command> save
$ gpg -a --export ED4B2ABA > <archivo>.gpg
La opción -a genera un archivo ASCCI.
keyserver pgp.rediris.es
Para enviar nuestra clave pública, cuyo UID es ED4B2ABA, al servidor RedIRIS, haremos:
$ gpg --send-keys ED4B2ABA
Podemos añadir más servidores de claves en ~/.gnupg/gpg.conf, por ejemplo el MIT:
keyserver pgpkeys.mit.edu
Para conectar con un servidor específico usaremos la opción --keyserver, por ejemplo:
$ gpg --keyserver pgpkeys.mit.edu --send-keys ED4B2ABA
$ gpg -a -o cert_revoc.asc --gen-revoke ED4B2ABA ¿Crear un certificado de revocación para esta clave? (s/N)
Nos preguntará porqué revocamos la clave.
Elija una razón para la revocación: 0 = No se dio ninguna razón 1 = La clave ha sido comprometida 2 = La clave ha sido reemplazada 3 = La clave ya no está en uso Q = Cancelar
Elegiremos 3 = La clave ya no está en uso.
Nos pedirá un comentario opcional. Pondremos:
Certificado por si pierdo la passphrase
Por último tendremos que introducir la passphrase. El mensaje final es:
Certificado de revocación creado. Cuidado: si alguien consigue este certificado puede inutilizar su clave. Es inteligente imprimir este certificado por si acaso lo pierde.
Se habrá generado el archivo ~/.gnupg/cert_revoc.asc (la opción -a genera un archivo ASCCI).
Si más adelante necesitamos revocar la clave, añadiremos a nuestro listado de claves el certificado de revocación:
$ gpg --import cert_revoc.asc
y luego enviaremos al servidor la clave revocada:
$ gpg --send-keys ED4B2ABA
$ gpg --delete-key aa8e6a57
$ gpg --delete-secret-key ED4B2ABA
$ gpg --import <archivo>
$ gpg --search-key aa8e6a57
Para bajarnos la clave cuyo UID es aa8e6a57, haremos:
$ gpg --recv-keys aa8e6a57
Para conectarnos a un servidor específico usaremos la opción --keyserver, por ejemplo:
$ gpg --keyserver pgpkeys.mit.edu --recv-keys aa8e6a57
Cualquier usuario puede certificar una clave, pero existen instituciones que se dedican expresamente a la tarea de certificar claves públicas: son las llamadas Autoridades Certificadoras (CA, Certificate Authority), como VeriSign, OpenCA, EnTrust, etc.
Por ejemplo, si quiero enviar un documento cifrado a alguien y su clave pública no está certificada, la certificaré yo haciendo:
$ gpg --sign-key aa8e6a57
o bien:
$ gpg --edit-key aa8e6a57
Entraremos en modo interactivo, y ejecutaremos la orden:
Command> sign
Nos pedirá la passphrase, confirmaremos que queremos certificar la clave y guardaremos los cambios:
Command> save
Previamente tengo que asegurarme de que esa clave es suya.
Si he certificado la clave, puedo enviarla al servidor de claves incluyendo ese certificado:
$ gpg --send-keys aa8e6a57
Si no estoy seguro de que la clave sea suya pero de todos modos quiero utilizarla para cifrar un documento, lo que hare será certificar su clave (así podré usarla) pero de manera que mi certificado no se exporte a los servidores, haciendo:
$ gpg --edit-key aa8e6a57
En vez de:
Command> sign
pondremos:
Command> lsign
Esto significa que nuestro certificado es local y no se exportará. Confirmaremos que queremos certificar la clave y guardaremos los cambios.
Existen servidores de claves públicas repartidos por todo el mundo, como por ejemplo el de RedIRIS (rediris.es/cert/servicios/keyserver/). Es suficiente enviar la clave pública a un servidor: la información que mandemos se distribuirá rápidamente por otros servidores de claves, y ya no podremos borrar esos datos, sólo revocar la clave si tenemos el certificado de revocación.
$ gpg --list-sigs /home/francis/.gnupg/pubring.gpg -------------------------------- pub 1024D/ED4B2ABA 2006-04-09 [caduca: 2007-04-09] uid frans berns(francis)<[email protected]> sub 2048g/D223B5B2 2006-04-09 [caduca: 2007-04-09] sig ED4B2ABA 2006-04-09 frans berns(francis)<[email protected]>
Vemos que sólo tiene nuestro certificado.
$ gpg -a -o <archivo_cifrado> -r <UID> -e <archivo>
Por ejemplo, para cifrar el archivo /etc/hostame con nuestra clave pública (para que sólo nosotros podamos descrifrarlo, con nuestra clave privada) y generar el archivo cifrado hostame_cifrado (texto), haremos:
$ gpg -a -o hostame_cifrado -r ED4B2ABA -e /etc/hostame
$ gpg -o <archivo> -d <archivo_cifrado>
Por ejemplo, para descifrar el archivo hostame_cifrado y generar el archivo descifrado hostame_new, haremos:
$ gpg -o hostame_new -d hostame_cifrado Necesito la passphrase del usuario: frans berns (francis) <[email protected]> para la clave primaria ED4B2ABA, creada el 2006-04-09
Introducimos la passphrase que protege la clave privada y descifrará el archivo, que es idéntico al original /etc/hostame.
$ gpg -r <UID> --sign <archivo>
Nos pedirá la passphrase y generará un archivo comprimido (binario) que incluye la firma. Por ejemplo, si hacemos:
$ gpg --sign hostame_new
obtenemos hostame_new.gpg, un archivo comprimido (binario) que incluye la firma.
$ gpg --clearsign <archivo>
Nos pedirá la passphrase y generará un archivo de texto que incluye la firma. Por ejemplo, si hacemos:
$ gpg --clearsign hostame_new
obtenemos hostame_new.asc, un archivo de texto que incluye la firma.
$ gpg --detach-sign <archivo>
Nos pedirá la passphrase y generará un archivo binario que contiene sólo la firma. Esto se utiliza normalmente para firmar archivos binarios o comprimidos. Por ejemplo, si hacemos:
$ gpg --detach-sign hostame_new
obtenemos hostame_new.sig, un archivo binario que contiene sólo la firma.
Para que el archivo que contiene la firma sea un archivo de texto, incluiremos la opción -a. Por ejemplo, si hacemos:
$ gpg -a --detach-sign hostame_new
obtenemos hostame_new.asc, un archivo de texto que contiene sólo la firma.
$ gpg --verify <archivo>
$ gpg --refresh-keys
$ gpg --check-trustdb
Article printed from Estréllate y Arde: https://www.estrellateyarde.org
URL to article: https://www.estrellateyarde.org/discover/gpg
Click here to print.
Copyright © 2010 Estrellate y Arde