You are on page 1of 6

IES B RIANDA DE M ENDOZA .

G UADALAJARA

Prctica: principios de criptografa.


GnuPG

1.

QU ES G NU PG?

Antes de empezar con lo interesante tenemos que saber que es GPG (GNU Privacy Guard),
que es un derivado libre de PGP y su utilidad es la de cifrar y firmar digitalmente, siendo adems
multiplataforma (podis descargarlo desde la pgina oficial) aunque viene incorporado en
algunos sistemas Linux, como en Ubuntu oi Wifislax (en Windows se encuentra solo con gestor
grfico).

2.

A NILLO DE CLAVES

GPG tiene un repositorio de claves (anillo de claves) donde guarda todas las que tenemos
almacenadas en nuestro sistema, ya sean privadas o pblicas (con la clave pblica cifraremos
un mensaje que solo podr descifrar el que posee la clave privada).
Ms adelante cuando veamos un anillo de claves debemos recordar que pub hace referencia
a la clave pblica y sub hace referencia a la privada (y que tenemos que tener a buen recaudo).

3.

S ERVIDORES DE CLAVES

Para que nos cifren un mensaje tenemos que compartir la clave pblica de nuestro par de
claves para cifrar, y como es un poco engorroso difundir una clave a muchas personas existen
los servidores de claves PGP (compatibles con GPG), donde subir una clave pblica para
el que quiera probar los ejemplos. Unos ejemplos de servidores son estos: pgp.rediris.es
(espaol, aunque falla algunas veces) o pgp.mit.edu (americano, del MIT y a mi no me ha
dado problemas).

4.

C IFRADO SIMTRICO

el cifrado simtrico es el tipo de cifrado ms sencillo que hay, es ms rpido de procesar y


por desgracia menos seguro que el cifrado asimtrico. Para empezar la prueba tenemos que
tener un archivo de cualquier tipo e introducir en la terminal de Linux el comando gpg con el
parmetro -c para cifrar y -d para descifrar.

echo En un lugar de la Mancha de cuyo nombre no quiero acordarme... >texto.txt


wifislax # cat texto.txt En un lugar de la Mancha de cuyo nombre no quiero
acordarme...
Tras crear un archivo de texto usamos el comando gpg -c [archivo], nos aparecer un
cuadro que nos pide la contrasea y se generar un archivo .gpg. Y despus lo descifraremos
con el comando gpg -d [archivo] (e introduciendo la clave).

wifislax # gpg -c texto1.txt wifislax 


# ls
DescargasDocumentosPlantillas
Vdeos
texto1.txt.gpg
DesktopImgenesPblicoswireless
Diccionarios-WPAMsicaQbittorrent
texto1.txt

wifislax # gpg -d texto1.txt.gpg


gpg: datos cifrados CAST5
gpg: cifrado con 1 contrasea
En un lugar de la Mancha de cuyo nombre no quiero acordarme...
gpg: ATENCIN: la integridad del mensaje no est protegida
wifislax # ls
DescargasDocumentosPlantillas
Vdeos
texto1.txt
DesktopImgenesPblicoswireless
texto1.txt.gpg
Diccionarios-WPAMsicaQbittorrent
texto.txt

5.
5.1.

C IFRADO ASIMTRICO
G ENERAR LAS CLAVES

Para poder cifrar asimtricamente primero tenemos que crear la pareja de claves (pblica y
privada) con el comando gpg gen-key.

wifislax # gpg gen-key


gpg (GnuPG) 1.4.19; Copyright (C) 2015 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.
Seleccione el tipo de clave deseado:

(1) DSA y ElGamal (por defecto)

(2) DSA y ElGamal (por defecto)

(3) DSA (slo firmar)

(4) RSA (slo firmar)
Su eleccin?1

GPG nos permite elegir el tipo de clave que queremos usar, hay opciones que solo permiten
firmar y otras que permiten firmar y cifrar, en este caso usaremos DSA y Elgamal. las claves

RSA pueden tener entre 1024 y 4096 bits de longitud.


De qu tamao quiere la clave? (2048)
El tamao requerido es de 2048 bits
Especifique el perodo de validez de la clave.

0 = la clave nunca caduca

<n>= la clave caduca en n das

<n>w = la clave caduca en n semanas

<n>m = la clave caduca en n meses

<n>y = la clave caduca en n aos
Validez de la clave (0)? 0

Nos piden el tamao de la clave que puede variar entre 1024 bits y 3072, esto es de libre
eleccin, yo tomar el trmino medio que es el que propone por defecto (2048).

A partir de aqu todo es ms trivial, nos pide la fecha en la que expirar la clave, la informacin del emisor de la clave (nombre, mail y algunos datos extra que queramos dar) y por
ltimo nos pedir la contrasea que salvaguarda la clave privada.
Tras generar las claves podemos verlas con el comando gpg -k que nos muestra nuestro
anillo de claves, lo importante de este paso es que veremos la identificacin de cada una, que
es necesaria para poderlas exportar y enviar.

wifislax # gpg -k
/root/.gnupg/pubring.gpg

pub 
2048R/8F442CC9 2015-11-14 uid yo mismo (yo) <yo@yomismo.com>sub 
2048R/2AF25F25
2015-11-14
5.2.

E XPORTAR Y ENVIAR LA CLAVE PRIVADA

El objetivo de esta pareja de claves es que cualquiera nos pueda mandar un archivo cifrado
que solo veremos nosotros y esto se hace difundiendo la clave pblica que acabamos de
crear (la pblica, nunca la privada), para exportarla en un archivo usaremos el comando
gpg -output [archivo destino] export [ID de a clave pblica] (la clave pblica
generada antes tiene la ID 8F442CC9).

wifislax # gpg output CPub.gpg export 8F442CC9 wifislax 


# ls
CPub.gpgDiccionarios-WPAMsica
Qbittorrent
texto1.txt
DescargasDocumentosPlantillas
Vdeos
texto1.txt.gpg


DesktopImgenesPblicoswireless

Este archivo ahora se puede difundir por el medio que queramos, tenemos que tener en
cuenta que el nico problema de seguridad que habra en difundir la clave es que alguien se
hiciese pasar por otro al mandarnos un mensaje, algo que pasara igual si no estuviese cifrado,
por eso el que nos enve algo lo debera de firmar (si fuese pertinente).
Podis descargar esta clave pblica, que ahora veremos como importar y sirve para mandarme un archivo cifrado o para comprobar que un archivo lo he firmado yo.

5.3.

S UBIR UNA CLAVE PBLICA A UN SERVIDOR DE CLAVES

Los servidores de claves suelen ser de acceso pblico (al no haber mucho problema por
difundir una clave pblica) y en este caso subiremos una clave a los servidores del MIT
(pgp.mit.edu) usando el comando gpg send-keys keyserver [Direccin del servidor]
[ID de la clave pblica] (al igual que antes la ID es 8F442CC9).

wifislax # gpg send-keys keyserver pgp.mit.edu 8F442CC9


gpg: enviando clave 8F442CC9 a hkp servidor pgp.mit.edu

A partir de este momento la clave estar accesible desde este servidor especfico.

5.4.

I MPORTAR LA CLAVE DESDE EL ARCHIVO O SERVIDOR DE CLAVES

Para poder usar la clave pblica para cifrar o comprobar la identidad del remitente tenemos que importar previamente la clave, desde un archivo debemos de usar el comando gpg

import [Archivo de la clave pblica] (el que hemos descargado anteriormente).


wifislax # gpg import CPub.gpg
gpg: clave 8F442CC9: yo mismo (yo) <yo@yomismo.com> sin cambios
gpg: Cantidad total procesada: 1
gpg: sin cambios: 1
Al tener la clave ya en mi anillo de claves me contesta que no hay cambios. Para realizar la
importacin desde el servidor tenemos que usar el comando gpg keyserver [Direccin
del servidor] recv-keys [ID de la clave].

wifislax # gpg keyserver pgp.mit.edu recv-keys 8F442CC9


gpg: solicitando clave 8F442CC9 de hkp servidor pgp.mit.edu
gpg: clave 8F442CC9: yo mismo (yo) <yo@yomismo.com> sin cambios
gpg: Cantidad total procesada: 1
gpg: sin cambios: 1

Como podemos ver al tener ya la clave nos devuelve el mismo mensaje. /subsectionCifrar
con la clave pblica
Ahora tenemos que pensar que hemos importado una clave pblica, por ejemplo de nuestro
jefe y tenemos que mandarle un documento, para cifrar el documento usaremos el comando

gpg encrypt recipient [ID de la clave] [Archivo]


wifislax # echo .El paraso lo prefiero por el clima, el infierno por la compaa.
Mark Twain mitexto.txt
wifislax # gpg encrypt recipient 8F442CC9 mitexto.txt
wifislax # ls
CPub.gpgDiccionarios-WPAMsica
Qbittorrent
mitexto.txt.gpg
texto1.txt.gpg
DescargasDocumentosPlantillas
Vdeos
swireless
DesktopImgenesPblicomitexto.txt
texto1.txt
Y ya tenemos el archivo listo para mandarlo de forma segura!!!!

5.5.

D ESCIFRAR UN ARCHIVO CON LA CLAVE PRIVADA

Y ahora es el momento de descifrar con nuestra clave privada el documento tras recibirlo, con el comando gpg -d [Archivo] e introduciendo la contrasea que creamos para
salvaguardar la clave privada.

wifislax # gpg -d mitexto.txt.gpg


Necesita una contrasea para desbloquear la clave secreta
del usuario: o mismo (yo) <yo@yomismo.com>"
clave RSA de 2048 bits, ID 2AF25F25, creada el 2015-11-14(identificador de
clave primaria 8F442CC9)
gpg: cifrado con clave RSA de 2048 bits, ID 2AF25F25, creada el 2015-11-14
yo mismo (yo) <yo@yomismo.com>
El paraso lo prefiero por el clima, el infierno por la compaa. Mark Twain
2

Si queremos especificar la salida debemos de usar el parmetro -o [Archivo de salida]


LATEX