Cifrado asimétrico con gpg y openssl
Tarea 1: Generación de claves
-
Genera un par de claves (pública y privada). ¿En que directorio se guarda las claves de un usuario?
-
Al generar las claves nos pedirá: - Nombre. - Apellidos. - Correo electrónico.
-
El comando con el que generaremos la clave es:
gpg --gen-key
gpg (GnuPG) 2.2.27; Copyright (C) 2021 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.
**Nota**: Usa "gpg --full-generate-key" para el diálogo completo de generación de clave.
GnuPG debe construir un ID de usuario para identificar su clave.
Nombre y apellidos: Maria Jesus Alloza
Dirección de correo electrónico: mariajesus.alloza@outlook.es
Ha seleccionado este ID de usuario:
"Maria Jesus Alloza <mariajesus.alloza@outlook.es>"
¿Cambia (N)ombre, (D)irección o (V)ale/(S)alir? V
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.
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.
gpg: clave 75F8A403F54FF4B4 marcada como de confianza absoluta
gpg: creado el directorio '/home/maria/.gnupg/openpgp-revocs.d'
gpg: certificado de revocación guardado como '/home/maria/.gnupg/openpgp-revocs.d/D7D76217F9DA9045296C1EBC75F8A403F54FF4B4.rev'
claves pública y secreta creadas y firmadas.
pub rsa3072 2022-11-29 [SC] [caduca: 2024-11-28]
D7D76217F9DA9045296C1EBC75F8A403F54FF4B4
uid Maria Jesus Alloza <mariajesus.alloza@outlook.es>
sub rsa3072 2022-11-29 [E] [caduca: 2024-11-28]
- El directorio donde se guardan las claves es:
~/.gnupg
maria@maria-debian:~/.gnupg$ ls
openpgp-revocs.d private-keys-v1.d pubring.kbx pubring.kbx~ trustdb.gpg
maria@maria-debian:~/.gnupg$
-
Lista las claves públicas que tienes en tu almacén de claves. Explica los distintos datos que nos muestra. ¿Cómo deberías haber generado las claves para indicar, por ejemplo, que tenga un 1 mes de validez?
-
El comando que vamos a usar para listar las claves públicas es:
gpg --list-keys
maria@maria-debian:~/.gnupg$ gpg --list-keys
/home/maria/.gnupg/pubring.kbx
------------------------------
pub rsa3072 2022-11-29 [SC] [caduca: 2024-11-28]
D7D76217F9DA9045296C1EBC75F8A403F54FF4B4
uid [ absoluta ] Maria Jesus Alloza <mariajesus.alloza@outlook.es>
sub rsa3072 2022-11-29 [E] [caduca: 2024-11-28]
maria@maria-debian:~/.gnupg$
-
Los datos que nos muestra son: - pub: Indica que es una clave pública. - uid: Identificador único de la clave. - sub: Indica que es una clave pública secundaria.
-
Para genetar las claves con un mes de validez, deberíamos haber usado el comando:
gpg --full-gen-key
maria@maria-debian:~/.gnupg$ gpg --full-generate-key
gpg (GnuPG) 2.2.27; Copyright (C) 2021 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 (por defecto)
(2) DSA y ElGamal
(3) DSA (sólo firmar)
(4) RSA (sólo firmar)
(14) Existing key from card
Su elección:
las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (3072)
El tamaño requerido es de 3072 bits
Por favor, 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)? 1m
La clave caduca jue 29 dic 2022 10:49:56 CET
¿Es correcto? (s/n) s
GnuPG debe construir un ID de usuario para identificar su clave.
Nombre y apellidos: Maria Jesus Alloza
Dirección de correo electrónico: mariajesus.alloza@outlook.es
Comentario:
Ha seleccionado este ID de usuario:
"Maria Jesus Alloza <mariajesus.alloza@outlook.es>"
¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? v
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.
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.
gpg: clave CA1C968B84D4B041 marcada como de confianza absoluta
gpg: certificado de revocación guardado como '/home/maria/.gnupg/openpgp-revocs.d/57F9092579AC46D5B93972F7CA1C968B84D4B041.rev'
claves pública y secreta creadas y firmadas.
pub rsa3072 2022-11-29 [SC] [caduca: 2022-12-29]
57F9092579AC46D5B93972F7CA1C968B84D4B041
uid Maria Jesus Alloza <mariajesus.alloza@outlook.es>
sub rsa3072 2022-11-29 [E] [caduca: 2022-12-29]
-
Lista las claves privadas de tu almacén de claves.
-
Si listamos las claves, podremos ver la fecha de caducidad que tiene:
maria@maria-debian:~/.gnupg$ gpg --list-key
/home/maria/.gnupg/pubring.kbx
------------------------------
pub rsa3072 2022-11-29 [SC] [caduca: 2024-11-28]
D7D76217F9DA9045296C1EBC75F8A403F54FF4B4
uid [ absoluta ] Maria Jesus Alloza <mariajesus.alloza@outlook.es>
sub rsa3072 2022-11-29 [E] [caduca: 2024-11-28]
pub rsa3072 2022-11-29 [SC] [caduca: 2022-12-29]
57F9092579AC46D5B93972F7CA1C968B84D4B041
uid [ absoluta ] Maria Jesus Alloza <mariajesus.alloza@outlook.es>
sub rsa3072 2022-11-29 [E] [caduca: 2022-12-29]
Tarea 2: Importar / exportar clave pública
- Exporta tu clave pública en formato ASCII y guardalo en un archivo nombre_apellido.asc y envíalo al compañero con el que vas a hacer esta práctica.
maria@debian gpg --armor --export -a "Maria Jesus Alloza" > mjar.asc
- Importa las claves públicas recibidas de vuestro compañero.
maria@debian gpg --import juan_jesus.asc
- Comprueba que las claves se han incluido correctamente en vuestro keyring.
maria@debian gpg --list-key
Tarea 3: Cifrado asimétrico con claves públicas
-
Cifraremos un archivo cualquiera y lo remitiremos por email a uno de nuestros compañeros que nos proporcionó su clave pública.
-
Creamos el fichero que vamos a cifrar:
maria@debian nano cifrar-mjar.txt
maria@debian cat cifrar-mjar.txt
- Ciframos el fichero:
maria@debian gpg --encrypt --recipient githubemail1asir@gmail.com cifrar-mjar.txt
-
Nuestro compañero, a su vez, nos remitirá un archivo cifrado para que nosotros lo descifremos.
-
Nos descargamos el fichero ya cifrado de nuestro compañero y procedemos a descifrarlo:
maria@maria-debian:~/Descargas$ gpg --output descifrado.txt -d criptoarchivo.txt.gpg
gpg: cifrado con clave de 3072 bits RSA, ID AB63968A54C787E9, creada el 2022-11-29
"Maria Jesus Alloza <mariajesus.alloza@outlook.es>"
maria@maria-debian:~/Descargas$
- Tanto nosotros como nuestro compañero comprobaremos que hemos podido descifrar los mensajes recibidos respectivamente.
maria@debian cat descifrado-ipc.txt
- Por último, enviaremos el documento cifrado a alguien que no estaba en la lista de destinatarios y comprobaremos que este usuario no podrá descifrar este archivo.
maria@debian gpg --encrypt --recipient <correo jjas> cifrar.txt
maria@debian gpg --output descifrado.txt -d cifrar-mjar.gpg
- Para terminar, indica los comandos necesarios para borrar las claves públicas y privadas que posees.
maria@debian gpg --delete-key "maria"
Se ha eliminado la clave pública *****************
Tarea 4: Exportar clave a un servidor público de claves PGP
- Genera la clave de revocación de tu clave pública para utilizarla en caso de que haya problemas.
maria@debian gpg --gen-revoke 57F9092579AC46D5B93972F7CA1C968B84D4B041
- Exporta tu clave pública al servidor pgp.rediris.es
gpg --keyserver pgp.rediris.es --send-key 57F9092579AC46D5B93972F7CA1C968B84D4B041
-
Borra la clave pública de alguno de tus compañeros de clase e impórtala ahora del servidor público de rediris.
- gpg –delete-key “Ivan”
- gpg –keyserver pgp.rediris.es –recv-keys 278C14EB1CE76FEF397C83058A550974B7DF5CB8
Tarea 5: Cifrado asimétrico con openssl
- Genera un par de claves (pública y privada).
openssl genrsa -aes128 -out maria_jesus_ssl_key.pem 2048
openssl rsa -in maria-ssl.pem -outform PEM -pubout -out public-maria-ssl.pem
-
Envía tu clave pública a un compañero.
-
Utilizando la clave pública cifra un fichero de texto y envíalo a tu compañero.
echo "Hola, soy María Jesús, esto es mi archivo cifrado ssl" > maria_jesus_criptoarchivossl.txt
openssl rsautl -encrypt -inkey juanje-ssl.pub.pem -pubin -in maria_jesus_criptoarchivossl.txt -out maria_jesus_criptoarchivossl.txt.enc
- Tu compañero te ha mandado un fichero cifrado, muestra el proceso para el descifrado.
openssl rsautl -decrypt -inkey maria-ssl.pem -in criptoarchivossl-juanje.txt.enc -out prueba.txt
cat prueba.txt