3. Objetivos
En este modulo de "Sistemas de Detección de Intrusos, y
Tecnicas Basicas de Ataques y Aseguramiento", se brindara al
estudiante el conocimiento para generar un par de claves,
intercambiar y comprobar la autenticidad de claves, cifrar y
descifrar documentos, y firmar documentos y verificar firmas
digitales.
Por medio de la fundamentacion de una herramienta de
seguridad en comunicaciones electrónicas GnuPG, y la
aplicacion de Laboratorios practicos, que nos permitan conocer de
manera practica la implementacion e integracion de esta
herramienta de encriptación y seguridad
4. Tabla de Contenido
GPG – Gnu Privacy Guard
Uso y Gestión de las Claves
Generando un par de claves primarias
Generar un certificado de Revocación
Intercambiar claves
Exportar una clave publica
Importar una clave publica
Cifrar / Descifrar Documentos
Firmar y verificar firmas
Firmas acompañantes
5. GPG - GNU Privacy Guard
Citemos a Wikipedia:
“GPG o GNU Privacy Guard es una herramienta para cifrado y firmas digitales, que viene
a ser un reemplazo del PGP (Pretty Good Privacy) pero con la principal diferencia que es
software libre licenciado bajo la GPL. GPG utiliza el estándar del IETF denominado
OpenPGP.”
6. GPG - GNU Privacy Guard
GPG cifra los mensajes usando pares de claves individuales asimétricas generadas
por los usuarios. Las claves públicas pueden ser compartidas con otros usuarios de
muchas maneras, un ejemplo de ello es depositándolas en los servidores de claves.
También es posible añadir una firma digital criptográfica a un mensaje, de esta manera
la totalidad del mensaje y el remitente pueden ser verificados en caso de que se desconfíe
de una correspondencia en particular.
GPG no usa algoritmos de software que están restringidos por patentes, entre estos se
encuentra el algoritmo de cifrado IDEA que está presente en PGP casi desde sus inicios.
En su lugar usa una serie de algoritmos no patentados como ElGamal, CAST5,
Triple DES (3DES), AES y Blowfish.
GPG es un software de cifrado híbrido que usa una combinación convencional de
criptografía de claves simétricas para la rapidez y criptografía de claves públicas
para el fácil compartimiento de claves seguras.
7. Uso y Gestión de las Claves
Generar una Clave
$ gpg –gen-key
Exportar Claves
$ gpg --export [UID]
Importar Claves
Cuando se recibe la clave pública de otra persona hay que añadirla a la base de datos
(anillo de claves) para poder hacer uso de ella. La orden para importarlas es la siguiente:
$ gpg --import [fichero]
Revocar Claves
Existen diversos motivos por los que se puede desear revocar una clave. Por ejemplo,
si la clave secreta ha sido robada, o si se ha olvidado la contraseña de ésta. En cualquier
caso la orden de revocación es:
$ gpg --gen-revoke
8. Uso y Gestión de las Claves
Administrar las Claves
Existe un fichero que es a modo de una base de datos, en el que se guardan todos
los datos relacionados con las claves, incluido los valores relativos al grado de
confianza (Ownertrust); para más información
sobre esto leer Firmar las claves. Con orden
$ gpg --list-keys
se muestran todas las claves presentes. Para poder ver también las firmas en
cada clave, usar:
$ gpg --list-sigs
(ver Firmar las claves para más información). Para ver las huellas digitales (fingerprints):
$ gpg --fingerprint
Las «huellas digitales» sirven para confirmar la identidad de la persona. Esta orden nos
muestra una lista alfanumérica que podemos comprobar, por ejemplo, por teléfono.
9. Uso y Gestión de las Claves
Para ver el listado de las claves secretas:
$ gpg --list-secret-keys
Nota: el listado de las huellas digitales y las firmas de las claves secretas no es de ninguna
utilidad.
Para eliminar una clave pública:
$ gpg --delete-key UID
Para eliminar una clave secreta:
$ gpg --delete-secret-key
Existe otra orden que es relevante para trabajar con las claves:
$ gpg --edit-key UID
10. Uso y Gestión de las Claves
Firmar las Claves
Como se ha mencionado anteriormente en la introducción, existe un talón de Aquiles
en el sistema: la autentificación de las claves públicas.
Si se obtiene una clave pública errónea, ya se puede despedir uno del valor del cifrado.
Para evitar estos riesgos está la posibilidad de firmar las claves. Cuando tenemos la
certeza de que una clave es válida y pertenece a quien dice, podemos firmarla digitalmente,
de modo que otros que confíen en nuestra firma la puedan dar por válida.
Usando el comando
$ gpg --edit-key UID
para la clave que queremos firmar, nos llevará al subcomando
Command> sign
¡¡¡Sólo se debe firmar una clave cuando se esté ABSOLUTAMENTE SEGURO de que dich
clave es auténtica!!!
En realidad, sólo se puede estar totalmente seguro cuando la clave se ha recibido en mano,
o por ejemplo si se ha recibido por correo y a continuación se han comprobado las huellas
digitales por correo. Una clave no debe ser nunca firmada en base a una suposición.
11. Generando un par de claves primario
root@bt:~# gpg --gen-key
La opción 1 genera dos pares de claves( par de DSA - claves primario
que se usará sólo para firmar). Un par de claves subordinadas ElGamal
que se usará para el cifrado.
La opción 2 genera un par de claves DSA.
La opción 4 genera un único par de claves ElGamal, que se usará tanto
para firmar como para cifrar.
12. Generando un par de claves
El tamaño de una clave DSA debe estar entre los 512 y 1024
bits, y una clave ElGamal puede ser de cualquier tamaño. Sin
embargo, GnuPG requiere que las claves no sean menores de
768 bits.
El identificador de usuario se usa para asociar la clave que se
está creando con una usuario real.
GnuPG necesita una contraseña con el fin de proteger las claves
privadas, primarias y secundarias, que posea el usuario
13. Generar un certificado de revocación
root@bt:~# gpg --gen-revoke Dinosaurio
Si el usuario olvidara la contraseña, o si su clave privada
estuviera en peligro o extraviada, este certificado de revocación
podría ser hecho público para notificar a otros usuarios que la
clave pública no debe ser usada nunca más. Una clave pública
revocada puede ser usada para verificar firmas hechas por el
usuario en el pasado, pero no puede ser usada para cifrar datos
15. Exportar una clave pública
root@bt:~# gpg --output Dino.gpg --export Dinosaurio
Para poder enviar una clave pública a un interlocutor, antes hay
que exportarla.
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 que fuerza que la
salida de la orden sea generada en formato armadura-ASCII,
parecido a los documentos codificados con uuencode.
16. Importar una clave pública
root@bt:~# gpg --import Dino2.gpg
Añadiendo una llave publica al anillo de claves
17. Importar una clave pública
root@bt:~# gpg -edit-key d7n0s4ur70@gmail.com
Una vez que la clave haya sido importada, es necesario
validarla. Una clave se valida verificando la huella digital de la
clave, y firmando dicha clave para certificar su validez. La huella
digital de una clave se verifica con el propietario de la clave
18. Cifrar y descifrar documentos
root@bt:~# gpg --import Dino2.gpg
Se puede pensar en una clave pública como en una caja fuerte de
seguridad. Cuando un remitente cifra un documento usando una clave
pública, ese documento se pone en la caja fuerte, la caja se cierra, y
el bloqueo de la combinación de ésta se gira varias veces.
La parte correspondiente a la clave privada, esto es, el destinatario,
es la combinación que puede volver a abrir la caja y retirar el
documento. Dicho de otro modo, sólo la persona que posee la clave
privada puede recuperar un documento cifrado usando la clave
pública asociada al cifrado.
19. Cifrar y descifrar documentos
root@bt:~# gpg --output docgpg.gpg --encrypt --recipient d7n0s4ur70@gmail.com docgpg
root@bt:~# gpg --output docgpg --decrypt docgpg.gpg
El usuario debe tener las claves públicas de los pretendidos
destinatarios. El programa espera recibir como entrada el
nombre del documento que se desea cifrar o, si éste se omite,
una entrada típica.
Para descifrar un mensaje se usa la opción --decrypt. Para ello
es necesario poseer la clave privada para la que el mensaje ha
sido cifrado. De igual modo que en el proceso de cifrado, el
documento a descifrar es la entrada, y el resultado descifrado la
salida.
20. Cifrar y descifrar documentos
root@bt:~# gpg --output docgpg.gpg --symmetric docgpg
En su lugar, se puede usar sólo una clave de cifrado simétrico
para cifrar el documento. La clave que se usa para el cifrado
simétrico deriva de la contraseña dada en el momento de cifrar el
documento, y por razones de seguridad, no debe ser la misma
contraseña que se esté usando para proteger la clave privada. El
cifrado simétrico es útil para asegurar documentos cuando no
sea necesario dar la contraseña a otros.
21. Firmar y verificar firmas
root@bt:~# gpg --output docgpg.sig --sign docgpg
Una firma digital certifica un documento y le añade una marca de
tiempo. Si posteriormente el documento fuera modificado en
cualquier modo, el intento de verificar la firma fallaría. La utilidad
de una firma digital es la misma que la de una firma escrita a
mano, sólo que la digital tiene una resistencia a la falsificación.
Por ejemplo, la distribución del código fuente de GnuPG viene
firmada con el fin de que los usuarios puedan verificar que no ha
habido ninguna manipulación o modificación al código fuente
desde que fue archivado.
El documento se comprime antes de ser firmado, y la salida es
en formato binario.
22. Firmar y verificar firmas
root@bt:~# gpg --output docgpg --decrypt docgpg.sig
Con un documento con firma digital el usuario puede llevar a
cabo dos acciones: comprobar sólo la firma o comprobar la firma
y recuperar el documento original al mismo tiempo. Para
comprobar la firma se usa la opción --verify. Para verificar la
firma y extraer el documento se usa la opción --decrypt. El
documento con la firma es la entrada, y el documento original
recuperado es la salida.
23. Firmas acompañantes
root@bt:~# gpg --output docgpg.sig --detach-sig docgpg
Un documento firmado tiene una utilidad limitada. Los otros
usuarios deben recuperar la versión original del documento de la
versión firmada, y aun en el caso de los documento firmados en
ASCII, el documento firmado debe ser editado para poder
recuperar el original. Por tanto, existe un tercer método para
firmar un documento, que genera una firma acompañante. Para
generar una firma acompañante se usa la opción --detach-sig.
24. Firmas acompañantes
root@bt:~# gpg --verify docgpg.sig docgpg
Tanto el documento como la firma acompañante son necesarios
para poder verificar la firma. La opción --verify se usará para
comprobar la firma.
Basado en: http://www.gnupg.org/gph/es/manual.html
http://www.dewinter.com/gnupg_howto/spanish/gpgminicomo-4.html
http://es.wikipedia.org/wiki/GNU_Privacy_Guard