GPG - GSyC

Anuncio
GPG
Departamento de Sistemas Telemáticos y Computación (GSyC)
http://gsyc.urjc.es
Febrero de 2013
GSyC - 2013
GPG
1
c
2013
GSyC
Algunos derechos reservados.
Este trabajo se distribuye bajo la licencia
Creative Commons Attribution Share-Alike 3.0
Incluye material original de M.Vidal, I.Herraiz
http://gsyc.es/ mvidal/docs/gnupg.pdf
GSyC - 2013
GPG
2
PGP, OpenPGP, GnuPG
PGP
¿Qué es PGP?
Pretty Good Privacy: primera implementación popular del
cifrado de clave pública (RSA)
Creado en solitario por Phil Zimmermann en 1991, un
activista de los ciberderechos
Lo puso a disposición de todo el mundo (código fuente
incluido) y se hizo muy popular
Zimmermann tuvo muchos problemas con la patente de RSA
y fue investigado por presunta violación de las leyes de
exportación de armas
Su caso fue finalmente archivado en 1996
GSyC - 2013
GPG
3
PGP, OpenPGP, GnuPG
OpenPGP
OpenPGP
Estándar abierto para PGP propuesto por Zimmermann.
Aceptado por la IETF en 1998.
RFC 4880 (noviembre 2007), sucesor del RFC 2440.
Tiene muchas implementaciones, sobre todo para clientes de
correo
La implementación libre de OpenPGP se llama GnuPG (GNU
Privacy Guard) o simplemente GPG (que es la herramienta
con la que se encripta y firma)
GSyC - 2013
GPG
4
PGP, OpenPGP, GnuPG
GnuPG
GnuPG
GnuPG: Implementación libre (GPLv3) de OpenPGP.
Promovido por la Free Software Foundation desde 1999.
Fue apoyado por el Gobierno alemán en sus inicios
(financiaron la documentación y el port a Windows).
Se basa en interfaz de lı́nea de mandatos
Existen versiones para los sistemas operativos más utilizados
Linux: Instalamos el paquete gnupg
Windows: gpg4win, cryptophane
MacOS: http://gpgtools.org
También hay diversos frontends gráficos. P.e. seahorse para
gnome y Cryptophane para Windows
GSyC - 2013
GPG
5
Uso de gpg
Uso de gpg
gpg puede usar
Criptografı́a simétrica
Ofrece privacidad
Cifro un mensaje con una clave simétrica y solo quien conozca
esa clave podrá descifrarlo
Criptografı́a asimétrica
Ofrece privacidad
Cifro un mensaje con la clave pública de un usuario, y solo él
(por tener la clave privada) podrá descifrarlo
Ofrece integridad
Firmo un mensaje con mi clave privada y cualquiera que tenga
mi clave pública, podrá comprobar que yo soy el autor y que
no ha sido alterado posteriormente
GSyC - 2013
GPG
6
Uso de gpg
Uso de gpg con criptografı́a simétrica
Uso de gpg con criptografı́a simétrica
Para cifrar un fichero:
gpg --symmetric ejemplo.txt
De forma abreviada:
gpg -c ejemplo.txt
Descifrado:
gpg -d ejemplo.txt.gpg > ejemplo.txt
GSyC - 2013
GPG
7
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Uso de gpg con criptografı́a asimétrica
Par de claves = Clave pública + Clave privada
Normalmente cada usuario tiene un par principal de claves que usa
para firmar
Este par principal tiene, además:
Uno o varios nombres aka uid = nombre de usuario + eMail
Un segundo par de claves, subordinado al primero, para cifrar
GSyC - 2013
GPG
8
Uso de gpg
Uso de gpg con criptografı́a asimétrica
koji@mazinger:~$ gpg --list-keys tino
pub
1024D/4D019CB0 2002-02-09
uid
José Celestino Pérez Pérez (Tino Pérez) <tinoperez@gmail.com>
uid
José Celestino Pérez <jcperez@empresa.com>
sub
1024g/900A4865 2002-02-09
pub: par principal, para firmar
1024D: La longitud son 1024 bits y es de tipo DSA
4D019CB0: Identificador del par, aka keyID (últimos 8
caracteres de la huella)
sub: par subordinado, para cifrar
1024g: La longitud son 1024 bits y es de tipo ElGamal
900A4865: Identificador del par subordinado
Si invocamos gpg --list-keys sin ningún argumento adicional,
nos muestra un listado de todas las claves de nuestro anillo
GSyC - 2013
GPG
9
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Creación de las claves
koji@mazinger:~$ gpg --gen-key
gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
Por favor seleccione tipo de clave deseado:
(1) RSA y RSA (predeterminado)
(2) DSA y Elgamal
(3) DSA (sólo firmar)
(4) RSA (sólo firmar)
¿Su selección?:
Podemos contestar (2) para una configuración como la del ejemplo
anterior, o (1), que es el valor por omisión actual
GSyC - 2013
GPG
10
Uso de gpg
Uso de gpg con criptografı́a asimétrica
La herramienta seguirá haciendo preguntas:
Tamaño de la clave. Podemos responder 1024 como en el
ejemplo anterior, 2048 o cualquier otro valor hasta 4096
Fecha de caducidad de la clave. Lo tı́pico es constar nunca
Nuestro nombre y apellidos
Dirección de correo
Comentario. Aparecerá entre paréntesis. Generalmente lo
dejaremos en blanco, pero podemos indicar, por ejemplo,
formas alternativas de identificarnos.
Maria Rosario Fuente López (Charo Fuente) <charo.fuente@correo.com>
Juan Carlos Ramos Garcı́a (Joan Carles Ramos Garcı́a) <jcramos@empresa.es>
Contraseña para proteger la clave secreta
No es ni la clave pública ni la clave privada, sino una
contraseña simétrica que impide que alguien que acceda a
nuestro equipo pueda usar nuestra clave privada
GSyC - 2013
GPG
11
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Generación de valores aleatorios
Para que las claves sean robustas, es importante partir de
valores aleatorios de calidad, verdaderamente aleatorios
A un ordenador no le resulta fácil generar este tipo de valores.
GPG toma como punto de partida la entrada de usuario: sus
movimientos de ratón, lo que teclee, su actividad
Por ello, mientras GPG está generando las claves, nos
solicitará que durante algún tiempo hagamos cualquier otra
tarea en otra ventana
GSyC - 2013
GPG
12
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Almacenamiento de las claves
Nuestras claves y las claves de nuestros contactos se
almacenan en nuestro anillo de claves (keyring)
El anillo de claves, junto con toda la configuración de gpg, se
guardan en el directorio ~/.gnupg
El contenido de este directorio es muy importante. Tras
crearlo, deberı́amos hacer una o varias copias de seguridad,
guardarlas cuidadosamente y no olvidar la contraseña de la
clave secreta. De lo contrario, perderı́amos nuestra identidad
GSyC - 2013
GPG
13
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Invocación de gpg
Para usar gpg, normalmente el esquema es
gpg -o fichero_salida --parametro1 bla --parametro2 bla fichero_entrada
En muchas ocasiones la salida es un documento binario. Si
preferimos salida en texto plano (para pegar en correo o en web),
añadimos la opción -a (ascii armor, armadura ascii)
GSyC - 2013
GPG
14
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Exportación de claves
Una vez creado el par, necesitaremos dar a conocer la clave pública
Podemos exportarla a un fichero de texto plano, p.e. para
colgarlo en nuestra web
gpg -o clave_pperez.asc -a --export pperez@gmail.com
Podemos exportarla a un servidor público (están federados)
gpg --keyserver pgp.rediris.es --send-keys 4D019CB0
GSyC - 2013
GPG
15
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Importación de claves
Si disponemos de un fichero con una clave pública , podemos
importarlo en nuestro anillo mediante la orden
gpg --import clave.asc
Si no tenemos la clave pública, podemos buscarla en el
servidor. P.e. en el servidor de claves de RedIRIS, accesible via
web.
Basta introducir en cualquier buscador las palabras rediris pgp,
lo que nos llevará a http://www.rediris.es/keyserver
En esta página, un formulario nos permite buscar una clave
pública introduciendo nombre y/o apellidos y/o correo
De esta manera, localizamos el keyID
GSyC - 2013
GPG
16
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Una vez que tenemos el keyID, importamos la clave a nuestro
anillo
gpg --keyserver pgp.rediris.es --recv-keys 4D019CB0
GSyC - 2013
GPG
17
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Integración en los clientes de correo
Los clientes de correo tradicionales de cierta calidad como
thunderbird, evolution, outlook, etc suelen tener funcionalidad
integrada para manejar gpg
Pero los clientes web (gmail, hotmail, etc) no incluyen estas
prestaciones y posiblemente nunca lo hagan, puesto que si el
usuario cifrara su correo, ya no serı́a posible mostrar
publicidad personalizada
Por tanto, es necesario cifrar en otro lugar, p.e. la shell y
luego cortar y pegar, o usar ficheros adjuntos
GSyC - 2013
GPG
18
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Cifrado y descifrado
Para cifrar un documento con la clave pública de alguien
gpg -o ejemplo.txt.gpg --encrypt \
--recipient jperez@gmail.com ejemplo.txt
Para que además de cifrar, también firme con nuestra clave
privada, añadimos la opción --sign
Estas son opciones muy comunes, se pueden abreviar ası́:
gpg -es -r jperez ejemplo.txt
Para descifrar un documento
gpg -o ejemplo.txt --decrypt ejemplo.txt.gpg
que se puede abreviar
gpg -d ejemplo.txt.gpg > ejemplo.txt
GSyC - 2013
GPG
19
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Firma
Para firmar un documento de forma que el resultado aparezca en
texto plano dentro de una armadura ascii
gpg --clearsign ejemplo.txt
Resultado:
-----BEGIN PGP SIGNED MESSAGE----Hash: SHA1
Hola mundo
-----BEGIN PGP SIGNATURE----Version: GnuPG v1.4.11 (GNU/Linux)
iD8DBQFPFGRPBvDObj0BnLkRAolKAJ992iBpkd0AeAVIxAn5q0PcSj/+tACfVKfR
4kjnoM1pJR8ULNQEDYcr4P0=
=TIFC
-----END PGP SIGNATURE-----
Para verificar la firma
gpg --verify
GSyC - 2013
ejemplo.txt.asc
GPG
20
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Gestión de la confianza
Para gestionar la confianza en claves y usuarios, emplearemos la
aplicación seahorse
Confianza en la clave:
Indicamos cómo de rigurosos hemos sido comprobando que
esa clave pertenece realmente a esa persona
Confianza en la persona:
Indicamos en qué medida confiamos en que esa persona firma
claves responsablemente
Esto permite crear cadenas de confianza
GSyC - 2013
GPG
21
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Confianza en la clave
Desde seahorse
Otras claves | (Clic con botón derecho en la clave) | Firmar clave
Podemos indicar si
No hemos comprobado que la clave pertenece a la persona
Lo hemos comprobado informalmente (casualmente)
Lo hemos comprobado cuidadosamente (nos ha enseñado un
carnet con validez legal y hemos comprobado que ese correo
es suyo)
GSyC - 2013
GPG
22
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Confianza en la persona
Otras claves | (Clic con el botón derecho en la clave) | propiedades |
detalles | indicar confianza
Desconocida
No se si la persona es responsable o no
Nunca
Se que firma claves inadecuadamente
Marginal
(Valor por omisión). Confı́o en que es responsable firmando
claves
Completa
Tengo confianza absoluta en la responsabilidad del usuario,
confı́o en él como en mi mismo
GSyC - 2013
GPG
23
Uso de gpg
Uso de gpg con criptografı́a asimétrica
Una vez indicada la confianza en la clave y la persona, esta
información permanece en mi anillo local
Normalmente querré exportar estos datos al servidor de claves
Primero añadimos a seahorse el servidor de rediris
Remota | Sincronizar y publicar claves | Servidores de
claves | A~
nadir servidor de claves | Tipo de servidor
de claves: personalizado
Anfitrión: hkp://pgp.rediris.es
Una vez añadido:
Publicar claves en: hkp://pgp.rediris.es |
sincronizar
GSyC - 2013
GPG
24
Descargar