Criptografía
Ejercicio 4.1
Genera un par de claves asimétricas de un empleado que tendrá tu nombre, apellidos y tu correo electrónico de gmail. Captura la pantalla el comando utilizado y el resultado obtenido.
Note
Se utilizará el correo pablo@carpet4you.site en vez de mi dirección personal de Gmail.
Para generar un par de claves asimétricas debemos seguir las siguientes instrucciones:
pablo@carpet:~$ gpg --gen-key
gpg (GnuPG) 2.2.12; Copyright (C) 2018 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.
gpg: keybox '/home/pablo/.gnupg/pubring.kbx' created
Note: Use "gpg --full-generate-key" for a full featured key generation dialog.
GnuPG needs to construct a user ID to identify your key.
Real name: Pablo González
Email address: [email protected]
You are using the 'utf-8' character set.
You selected this USER-ID:
"Pablo González <[email protected]>"
Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: /home/pablo/.gnupg/trustdb.gpg: trustdb created
gpg: key 48CF9B50966CC9B7 marked as ultimately trusted
gpg: directory '/home/pablo/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/pablo/.gnupg/openpgp-revocs.d/D5AA1DFFB6A4557305CECF4148CF9B50966CC9B7.rev'
public and secret key created and signed.
pub rsa3072 2021-10-23 [SC] [expires: 2023-10-23]
D5AA1DFFB6A4557305CECF4148CF9B50966CC9B7
uid Pablo González <[email protected]>
sub rsa3072 2021-10-23 [E] [expires: 2023-10-23]
Para ver las clave generada podemos utilzar el siguiente comando:
pablo@carpet:~$ gpg -k
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2023-10-23
/home/pablogontroya/.gnupg/pubring.kbx
--------------------------------------
pub rsa3072 2021-10-23 [SC] [expires: 2023-10-23]
D5AA1DFFB6A4557305CECF4148CF9B50966CC9B7
uid [ultimate] Pablo González <[email protected]>
sub rsa3072 2021-10-23 [E] [expires: 2023-10-23]
Ejercicio 4.2
Genera un par de claves asimétricas que servirán para tu empresa que tendrá como datos el nombre de tu empresa y el correo electrónico del administrador de tu empresa. Captura la pantalla el comando utilizado y el resultado obtenido.
Para generar un par de claves asimétricas ejecutar el comando siguiente. El comando nos pedirá el nombre y el correo electrónico que queremos utilizar para la generación. También la clave simétrica que protegerá la clave privada.
gpg gen-key
[...]
public and secret key created and signed.
pub rsa3072 2021-10-23 [SC] [expires: 2022-01-21]
0171E7FC0657E4CCFAEC3C23164857A2CDB61EEC
uid Carpet4You Management (Las mejores alfombras del universo) <[email protected]>
sub rsa3072 2021-10-23 [E] [expires: 2022-01-21]
Ejercicio 4.3
Muestra las claves privadas de tu empleado y de tu empresa. Captura la pantalla el comando utilizado y el resultado obtenido.
Para ver las claves privadas que tenemos en nuestro keyring debemos ejecutar el siguiente comando:
pablo@carpet:~$ gpg -k
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: next trustdb check due at 2022-01-21
/home/pablogontroya/.gnupg/pubring.kbx
--------------------------------------
pub rsa3072 2021-10-23 [SC] [expires: 2023-10-23]
D5AA1DFFB6A4557305CECF4148CF9B50966CC9B7
uid [ultimate] Pablo González <[email protected]>
sub rsa3072 2021-10-23 [E] [expires: 2023-10-23]
pub rsa3072 2021-10-23 [SC] [expires: 2022-01-21]
0171E7FC0657E4CCFAEC3C23164857A2CDB61EEC
uid [ultimate] Carpet4You Management (Las mejores alfombras del universo) <[email protected]>
sub rsa3072 2021-10-23 [E] [expires: 2022-01-21]
Ejercicios 4.4 y 4.5
Exporta las claves privadas/públicas de tu empleado y de tu empresa a archivos que se entregaran con el proyecto. Por cada uno de ellos se tendrán los archivos ClavePublicaNombreApellidos.key que contendrá la clave pública y ClavePrivadaNombreApellidos.key que contendrá la clave privada del usuario y ClavePublicaNombreEmpresa.key y ClavePrivadaNombreEmpresa.key de las empresas.
Para exportar las claves públicas:
pablo@carpet:~$ gpg --armor --output ClavePublicaPabloGonzalez.key --export D5AA1DFFB6A4557305CECF4148CF9B50966CC9B7
pablo@carpet:~$ gpg --armor --output ClavePublicaCarpet4You.key --export 0171E7FC0657E4CCFAEC3C23164857A2CDB61EEC
Para exportar las claves privadas (nos pedirá la clave simétrica):
pablo@carpet:~$ gpg --armor --output ClavePrivadaPabloGonzalez.key --export-secret-keys D5AA1DFFB6A4557305CECF4148CF9B50966CC9B7
pablo@carpet:~$ gpg --armor --output ClavePrivadaCarpet4You.key --export-secret-keys 0171E7FC0657E4CCFAEC3C23164857A2CDB61EEC
Ejercicio 4.6
En el moodle del instituto en el apartado del proyecto estarán las claves públicas y privadas de un tercer empleado genérico que tienes que importar al anillo de tu servidor de usuarios. Captura la pantalla el comando utilizado y el resultado obtenido.
Una vez descargadas desde el Aula Virtual las claves, debemos extraer los .key del archivo comprimido tar.gz:
pablo@carpet:~$ tar -xf 'ClavesPublicayPrivada Empleado genérico .tar.gz'
Warning
Se ha producido un error al importar la clave pública. Parece que ocupa 0 bytes:
pablo@carpet:~$ ls -lah
-rwxr-xr-x 1 pablo pablo 5241 Nov 11 2019 PrivateKeyEmpleadoGenerico.key
-rwxr-xr-x 1 pablo pablo 0 Nov 11 2019 PublicKeyEmpleadoGenerico.key
Importaremos la clave privada:
gpg --import PrivateKeyEmpleadoGenerico.key
Aunque no sepamos la contraseña simétrica, la clave pública será importada.
Para ver la clave pública importada:
user@server-carpet:~$ gpg --list-keys
/home/user/.gnupg/pubring.kbx
-----------------------------
pub rsa3072 2019-11-07 [SC] [expires: 2021-11-06]
2F537C9D14C7E613DE5C0EEDA540561B0E2FED4D
uid [ unknown] Empleado Generico Empresa <[email protected]>
sub rsa3072 2019-11-07 [E] [expires: 2021-11-06]
Ejercicio 4.7
Cifra un fichero con el texto “Hola Mundo” y encriptarlo con el empleado genérico. Captura la pantalla el comando utilizado y el resultado obtenido. Entrega el fichero encriptado.
pablo@carpet:~$ echo "Hola Mundo" > Empleado-PabloGonzález.txt
pablo@carpet:~$ gpg -a -r [email protected] --encrypt Empleado-PabloGonzález.txt
pablo@carpet:~$ ll E*
-rw-r--r-- 1 pablogontroya pablogontroya 11 Oct 23 23:03 Empleado-PabloGonzález.txt
-rw-r--r-- 1 pablogontroya pablogontroya 736 Oct 23 23:04 Empleado-PabloGonzález.txt.asc
Ejercicio 4.8
Desencripta el fichero. Captura la pantalla el comando utilizado y el resultado obtenido.
Para desencriptar el fichero debemos utilizar el comando que podemos ver a continuación. Nos pedirá la clave simétrica de la clave privada.
pablo@carpet:~$ gpg --decrypt Empleado-PabloGonzález.txt.asc
gpg: encrypted with 3072-bit RSA key, ID 8D27C3D26858C7E2, created 2021-10-23
"Pablo González <[email protected]>"
Hola Mundo
Ejercicio 4.9
Firma digitalmente con la clave asimétrica de tu empresa el fichero que has subido a la web en el anterior ejercicio creando una firma separada del archivo. Sube la firma y la clave pública a tu web junto a los hash para que un usuario pueda comprobar la autoría del fichero. Captura la pantalla el comando utilizado y el resultado obtenido.
pablo@carpet:~$ gpg --output plano_CPD.pdf.sign --sign plano_CPD.pdf
Para verificar la firma del archivo podemos ejecutar:
pablo@carpet:~$ gpg --verify plano_CPD.pdf.sign
gpg: Signature made Sat 23 Oct 2021 11:19:36 PM CEST
gpg: using RSA key D5AA1DFFB6A4557305CECF4148CF9B50966CC9B7
gpg: Good signature from "Pablo González <[email protected]>" [ultimate]
gpg: WARNING: not a detached signature; file 'plano_CPD.pdf' was NOT verified!