4.6. Firma digital y certificados¶
Objetivo de la práctica¶
En esta práctica aprenderás a utilizar la firma digital de forma similar a como se hace en entornos reales, comprendiendo qué ocurre en cada paso.
Al finalizar, serás capaz de:
- Generar y gestionar claves criptográficas.
- Firmar digitalmente documentos.
- Verificar firmas de terceros.
- Detectar modificaciones en documentos firmados.
- Reconocer los elementos principales de un certificado digital real.
1. Recordatorio conceptual mínimo¶
Ten en cuenta estas ideas antes de empezar:
- La firma digital no cifra el documento.
- La firma garantiza:
- Identidad del firmante
- Integridad del contenido
- No repudio
- La confianza en una firma depende de la clave pública y de quién la valida.
2. Preparación del entorno¶
Requisitos:
- Sistema operativo: Ubuntu 24.04 LTS
- Herramientas: GPG y OpenSSL
Trabajarás en una máquina con Ubuntu 24.04, como todo el curso. Asegúrate de tener instaladas las herramientas necesarias.
2.1 Comprobación de herramientas¶
- Abre una terminal.
- Comprueba que están disponibles:
gpg --version
openssl version
Si alguna no está instalada, la instalas.
3. Generación de claves con GPG¶
3.1 Creación del par de claves¶
- Ejecuta el siguiente comando:
gpg --full-generate-key
-
Selecciona:
- Tipo de clave: RSA
- Tamaño: 3072 o 4096 bits
- Caducidad: 1 año
-
Introduce:
- Nombre
- Correo electrónico
- Contraseña segura
Anota:
- Tipo de clave
- Tamaño
- Fecha de caducidad
3.2 Listado de claves¶
- Muestra tus claves:
gpg --list-keys
gpg --list-secret-keys
Identifica cuál es tu ID de clave.
4. Creación y firma de un documento¶
4.1 Creación del documento¶
- Crea un archivo llamado
contrato.txt, puedes utilizar otro documento si lo prefieres. -
Incluye:
- Identificación del firmante
- Compromiso claro (pago, aceptación, acuerdo)
- Fecha
4.2 Firma digital¶
- Firma el documento con tu clave privada:
gpg --detach-sign contrato.txt
- Observa que se genera un archivo de firma independiente.
Reflexiona:
- ¿Por qué es útil separar documento y firma?
5. Verificación de firmas¶
5.1 Verificación propia¶
- Verifica tu firma:
gpg --verify contrato.txt.sig contrato.txt
Comprueba el resultado.
5.2 Intercambio con un compañero¶
- Exporta tu clave pública:
gpg --export -a "TU NOMBRE" > clave_publica.asc
-
Intercambia con un compañero:
- Clave pública
- Documento (
contrato.txt) - Firma (
contrato.txt.sig)
5.3 Importación y verificación¶
- Importa la clave pública del compañero:
gpg --import clave_companero.asc
- Verifica su firma:
gpg --verify contrato_companero.txt.sig contrato_companero.txt
Anota el resultado.
6. Prueba de integridad¶
- Modifica una línea del documento del compañero.
- Guarda los cambios.
- Intenta verificar la firma otra vez.
Responde:
- ¿Qué error aparece?
- ¿Qué propiedad de seguridad se demuestra?
7. Introducción a certificados con OpenSSL¶
7.1 Creación de un certificado autofirmado¶
- Genera una clave privada:
openssl genrsa -out clave_privada.pem 2048
- Crea un certificado autofirmado:
openssl req -new -x509 -key clave_privada.pem -out certificado.pem -days 365
Anota los datos que introduces.
7.2 Inspección del certificado¶
- Visualiza el contenido del certificado:
openssl x509 -in certificado.pem -text -noout
Identifica:
- Emisor
- Sujeto
- Periodo de validez
- Algoritmo de firma
8. Certificados digitales en el navegador¶
- Accede a una web segura (https).
- Visualiza su certificado desde el navegador.
-
Compara:
-
Certificado real vs. certificado autofirmado
9. Entrega de la práctica¶
Entrega un documento con:
- Capturas de los pasos clave.
- Respuestas a las reflexiones.
- Comparación breve entre firma GPG y certificados SSL/TLS.