Introducción
En este laboratorio, aprenderá cómo generar pares de claves de firma utilizando el comando gpg, un paso fundamental para la comunicación segura y la distribución de software. Generará un nuevo par de claves RSA y RSA con un tamaño de clave y un período de validez especificados, proporcionando información esencial de identificación de usuario durante el proceso.
Después de la generación de la clave, aprenderá cómo ingresar y confirmar la frase de contraseña para su nueva clave, una medida de seguridad crucial. Luego verificará el archivo de clave pública generado para garantizar su corrección. Finalmente, explorará cómo generar un par de claves en un directorio específico, demostrando flexibilidad en la gestión de sus claves.
Generar un nuevo par de claves de firma
En este paso, aprenderá cómo generar un nuevo par de claves de firma utilizando el comando gpg. Un par de claves de firma consta de una clave privada y una clave pública. La clave privada se utiliza para firmar datos, y la clave pública se utiliza para verificar la firma. Este es un concepto fundamental en la comunicación segura y la distribución de software.
Primero, abra su terminal. Ya se encuentra en el directorio ~/project.
Para generar un nuevo par de claves, utilice el siguiente comando:
gpg --full-generate-key
Después de ejecutar el comando, se le pedirá que seleccione el tipo de clave que desea. Para este laboratorio, utilizaremos la opción predeterminada, que es RSA and RSA. Presione Enter para aceptar la opción predeterminada.
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.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
A continuación, se le preguntará sobre el tamaño de la clave. Un tamaño de clave más grande proporciona más seguridad, pero tarda más en generarse y utilizarse. Para este laboratorio, utilizaremos el tamaño de clave predeterminado de 3072 bits. Presione Enter para aceptar la opción predeterminada.
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)
Luego, se le preguntará cuánto tiempo debe ser válida la clave. Para este laboratorio, haremos que la clave sea válida durante un año. Escriba 1y y presione Enter.
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 1y
Confirme que la clave expirará en la fecha mostrada escribiendo y y presionando Enter.
Key expires at ...
Is this correct? (y/N) y
Ahora, necesita proporcionar información de identificación de usuario. Esta información se asocia con su clave pública y ayuda a otros a identificarte.
Primero, ingrese su nombre real. Para este laboratorio, puede utilizar LabEx User. Escriba LabEx User y presione Enter.
Real name: LabEx User
A continuación, ingrese su dirección de correo electrónico. Para este laboratorio, puede utilizar user@labex.io. Escriba user@labex.io y presione Enter.
Email address: user@labex.io
Opcionalmente, puede agregar un comentario. Para este laboratorio, dejará el campo de comentario vacío. Presione Enter para omitir el comentario.
Comment:
Revise la información que ingresó. Si es correcta, escriba O para Aceptar y presione Enter. Si necesita realizar cambios, escriba C para Cambiar o Q para Salir.
You selected this USER-ID:
"LabEx User <user@labex.io>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
Finalmente, se le pedirá que ingrese una frase de contraseña para proteger su clave privada. Este es un paso de seguridad crucial. Elija una frase de contraseña segura que pueda recordar. Necesitará ingresar esta frase de contraseña nuevamente en el siguiente paso.
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 more entropy.
El sistema luego generará el par de claves. Esto puede tomar un momento.
Ingrese y confirme la frase de contraseña para la nueva clave
En el paso anterior, inició el proceso de generación de un nuevo par de claves GPG. El último paso de este proceso es ingresar y confirmar una frase de contraseña para su clave privada. Esta frase de contraseña es esencial para proteger su clave privada del uso no autorizado.
Ahora debería ver un cuadro de diálogo o un aviso en su terminal pidiéndole que ingrese una frase de contraseña.
┌─────────┤ Please enter the passphrase to protect your new key ├─────────┐
│ │
│ Passphrase: _________________________________________ │
│ │
│ <OK> <Cancel> │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Ingrese una frase de contraseña segura en el campo "Passphrase". Recuerde esta frase de contraseña, ya que la necesitará cada vez que utilice su clave privada (por ejemplo, para firmar). Para este laboratorio, puede utilizar una frase de contraseña simple como mypassphrase123. Escriba mypassphrase123 y presione Enter o haga clic en <OK>.
Luego, se le pedirá que confirme su frase de contraseña ingresándola nuevamente. Esto ayuda a garantizar que escribió la frase de contraseña correctamente.
┌─────────┤ Please re-enter the passphrase to protect your new key ├─────────┐
│ │
│ Repeat passphrase: _________________________________________ │
│ │
│ <OK> <Cancel> │
│ │
└──────────────────────────────────────────────────────────────────────────┘
Ingrese la misma frase de contraseña (mypassphrase123) nuevamente en el campo "Repeat passphrase" y presione Enter o haga clic en <OK>.
Después de confirmar la frase de contraseña, GPG terminará de generar su par de claves. Debería ver una salida similar a esta, que indica que la generación de la clave se ha completado:
gpg: key ... marked as ultimately trusted
gpg: revocation certificate stored as '/home/labex/.gnupg/openpgp-revocs.d/....rev'
public and secret key created and signed.
pub rsa3072 2023-10-27 [SC]
...
uid [ultimate] LabEx User <user@labex.io>
sub rsa3072 2023-10-27 [E]
La salida muestra información sobre su nueva clave generada, incluyendo el tipo de clave (rsa3072), la fecha de creación, el ID de la clave (...) y la identificación de usuario que proporcionó (LabEx User <user@labex.io>). La línea pub se refiere a la clave pública, y la línea sub se refiere a la subclave (utilizada para el cifrado).
Ahora ha generado con éxito un par de claves GPG y ha protegido su clave privada con una frase de contraseña.
Verificar el archivo de clave pública generado
En los pasos anteriores, generó con éxito un par de claves GPG. Ahora, verifiquemos que la clave pública se haya generado correctamente y esté disponible. La clave pública es lo que compartirá con otros para que puedan verificar sus firmas o cifrar mensajes para usted.
Para listar las claves públicas en su anillo de claves, utilice el comando gpg --list-keys. Dado que especificó "LabEx User" como el nombre durante la generación de la clave, puede filtrar la salida para mostrar solo su clave.
gpg --list-keys "LabEx User"
Debería ver una salida similar a esta, que confirma la presencia de su clave pública:
pub rsa3072 2023-10-27 [SC]
...
uid [ultimate] LabEx User <user@labex.io>
sub rsa3072 2023-10-27 [E]
Esta salida muestra los detalles de su clave pública, incluyendo el tipo de clave (pub), el algoritmo (rsa3072), la fecha de creación (2023-10-27), las capacidades ([SC] para Firmar y Certificar), el ID de la clave (...), la identificación de usuario (LabEx User <user@labex.io>) y la información sobre la subclave de cifrado (sub).
Para exportar su clave pública a un archivo, puede utilizar el comando gpg --output <filename> --armor --export <user ID>. La opción --armor muestra la clave en formato ASCII armado, que es un formato de texto legible por humanos. Exportemos la clave pública de "LabEx User" a un archivo llamado labex_user_public.key en su directorio actual (~/project).
gpg --output labex_user_public.key --armor --export "LabEx User"
Este comando creará un archivo llamado labex_user_public.key en su directorio ~/project que contiene su clave pública.
Puede ver el contenido de este archivo utilizando el comando cat:
cat labex_user_public.key
La salida mostrará el bloque de la clave pública en formato ASCII armado, comenzando con -----BEGIN PGP PUBLIC KEY BLOCK----- y terminando con -----END PGP PUBLIC KEY BLOCK-----.
-----BEGIN PGP PUBLIC KEY BLOCK-----
... (your public key content) ...
-----END PGP PUBLIC KEY BLOCK-----
Esto confirma que su clave pública se ha exportado con éxito a un archivo. Ahora puede compartir este archivo con otros que necesiten verificar sus firmas o cifrar datos para usted.
Generar un par de claves en un directorio especificado
En los pasos anteriores, generó un par de claves GPG que se almacenó en el directorio de inicio predeterminado de GPG (~/.gnupg). A veces, es posible que desee generar claves y almacenarlas en una ubicación diferente, quizás para proyectos específicos o para mantenerlas separadas de su anillo de claves principal.
En este paso, aprenderá cómo generar un par de claves GPG y especificar un directorio diferente para almacenar los archivos de claves.
Primero, creemos un nuevo directorio donde almacenaremos el nuevo par de claves. Crearemos un directorio llamado mykeys dentro de su directorio ~/project.
mkdir ~/project/mykeys
Ahora, para generar un par de claves y almacenarlo en el directorio ~/project/mykeys, debe utilizar la opción --homedir con el comando gpg. Esta opción le indica a GPG que utilice el directorio especificado como su directorio de inicio en lugar del predeterminado.
Utilice el siguiente comando para iniciar el proceso de generación de claves, especificando el directorio ~/project/mykeys:
gpg --homedir ~/project/mykeys --full-generate-key
Se le guiará a través del mismo proceso de generación de claves que en el Paso 1 y el Paso 2.
- Seleccione el tipo de clave: Elija la opción predeterminada
RSA and RSApresionandoEnter. - ¿Qué tamaño de clave desea? Elija el tamaño predeterminado
3072presionandoEnter. - ¿Por cuánto tiempo es válida la clave? Ingrese
1ypara un año y presioneEnter. - ¿Es esto correcto? Escriba
yy presioneEnter. - Nombre real: Ingrese
Project Usery presioneEnter. - Dirección de correo electrónico: Ingrese
projectuser@labex.ioy presioneEnter. - Comentario: Deje el campo vacío presionando
Enter. - ¿Cambiar (N)ombre, (C)omentario, (E)mail o (O)k/(Q)uit? Escriba
Oy presioneEnter. - Ingrese la frase de contraseña: Ingrese una frase de contraseña (por ejemplo,
projectpassphrase456) y presioneEnter. - Repita la frase de contraseña: Ingrese la misma frase de contraseña (
projectpassphrase456) nuevamente y presioneEnter.
Después de completar estos pasos, GPG generará el par de claves y almacenará los archivos necesarios dentro del directorio ~/project/mykeys.
Puede verificar que la clave se haya generado en el directorio especificado listando las claves en ese directorio de inicio:
gpg --homedir ~/project/mykeys --list-keys "Project User"
Debería ver una salida similar a esta, que muestra la clave que acaba de generar:
gpg: directory '/home/labex/project/mykeys' created
gpg: keybox '/home/labex/project/mykeys/pubring.kbx' created
pub rsa3072 2023-10-27 [SC]
...
uid [ultimate] Project User <projectuser@labex.io>
sub rsa3072 2023-10-27 [E]
Observe las líneas que indican que el directorio de GPG y la caja de claves se crearon dentro de ~/project/mykeys. Esto confirma que la clave se generó en la ubicación especificada.
Resumen
En este laboratorio, aprendió cómo generar un nuevo par de claves de firma utilizando el comando gpg. Este proceso implica seleccionar el tipo de clave (por defecto, RSA y RSA), especificar el tamaño de la clave (por defecto, 3072 bits) y establecer el período de validez de la clave (establecido en un año en este laboratorio). También aprendió cómo ingresar y confirmar una frase de contraseña para la nueva clave para proteger la clave privada. Finalmente, verificó el archivo de la clave pública generada y exploró la generación de un par de claves en un directorio especificado, comprendiendo los conceptos fundamentales de las claves privadas y públicas para la comunicación segura y la distribución de software.



