ASIR2 DOC 2025/26

Assignmets docs for asir2

View on GitHub

Práctica GPG. Pretty Good Privacy

Note

OpenPGP is the most widely used email encryption standard. It is defined by the OpenPGP Working Group of the Internet Engineering Task Force (IETF) as a Proposed Standard in RFC 9580

Contexto

El término criptografía proviene del griego kyptós 'oculto' y grafé 'escritura' y es definida como el arte de escribir con clave secreta o de un modo enigmático.

Gracias al uso de la criptografía se puede obtener una seria de ventajas de gran utilidad en el ámbito de la seguridad informáticfa como son:

En esta práctica se trabajará sobre estos cuatro conceptos mediante la herramienta de comandos gpg (Pretty Good Privacy)

Objetivos

Comandos GPG

Warning

Para el correcto funcionamiento de gpg en un contenedor linux (LXC) es necesario llevar a cabo la siguiente configuración

printf 'use-agent\npinentry-mode loopback\n' > ~/.gnupg/gpg.conf
printf 'allow-loopback-pinentry\n' > ~/.gnupg/gpg-agent.conf
  1. Cifrar y descifrar un mensaje mediante criptografía simétrica
gpg --armor --symetric --output <encrypted_file.asc>
gpg --armor --decrypt <encripted_file.asc> --output <plain_file.txt>

Important

  • Descubre como evitar que gpg solicite la contraseña para encriptar/desencriptar
  • Investiga sobre la opcion --armor, uso y finalidad
  • Investiga sobre los algoritmos de encriptación simétricos compatibles con gpg y como especificar el uso de uno en particular en el comando.
  • Desencripta el siguiente texto cifrado con la clave simétrica asir2
-----BEGIN PGP MESSAGE-----
jA0ECQMKBeD5Nh596bT/0ooBe1dQceySdZjYYgFFCzQlhkzIS9D2I7rdiR8E1r7L
KtM69GVltp1KfYP33RlXZPND7BDSLrQeFcO4zlD25IO2jePcZSzEU+O4lz10WGIl
6dnQE8SoTgVeLXNgHE+W0PB+C+8ab47bc0zoBCIDfwG4nWlTFrKdok4jz6Jcwh3F
51YTVHEIc2Qh7KU=
=kC55
-----END PGP MESSAGE-----
  1. Crear par de claves
$ gpg --full-gen-keys
$ gpg --batch --passphrase '' --quick-gen-key USER_ID default default 
  1. Listar/borrar claves pública/privada
$ gpg --list-key
$ gpg --list-secret-keys
$ gpg --list-public-keys
$ gpg --list-public-keys --keyid-format=short
$ gpg --delete-keys <key_id>

  1. Importar/exportar claves publicas y privadas
$ gpg --output <public_key.asc> --armor --export <keyid>
$ gpg --output <private_key.asc> --armor --export-secret-keys <keyid>
$ gpg --import <key_file.asc> 
  1. Importar y exportar de un servidor de claves
$ gpg --keyserver <URI> --search-keys <string of info>
$ gpg --keyserver <URI> --receive-keys <keyid>
$ gpg --keyserver <URI> --send-keys <keyid>
$ gpg --keyserver <URI> --refresh-keys
  1. Encriptar un documento con clave pública de destinatario
$ gpg --output <file_encrypted> --armor --encrypt --recipient 'some user ID value' <file_to_encrypt> 
  1. Desencriptar un documento cifrado con nuetra clave publica haciendo uso de clave privada
$ gpg --decrypt <encrypted-file>
  1. Firmar un mensaje y verificar la autoria de un mensaje
$ gpg --sign <file_to_sign>
$ gpg --output <file_signed> --armor --default-key <keyid> --clearsign <file_to_sign>
$ gpg --clearsing <file_to_sign> ##documento legible
$ gpg --armor --detach-sign <signed_file>
$ gpg --verify <signed_file>

Actividades

Warning

En cada una de las actividades, realizadas, deberás presentar un documento con una breve descripción de los pasos realizados en la tarea y las instrucciones. Utiliza un formato adecuado para el codigo

Tip

Puedes aprovechar y aprender a utilizar markdown un lenguaje de marcas muy sencillo con el que podrás hacer documentos como este mismo.

Integridad y autoría de un documento/mensaje**

Simula en esta actividad que alguien quiere cambiar un documento firmado, vamos a suponer que es un testamento. Actua como si fueras un notario con su par de claves (pública/privada) y has firmado la validez del testamento.

  1. Importa las claves del notarios (passphrase: sad)
  2. Usa las claves para firmar documento testamento.txt sin cifrar --clearsign
  3. Modifica el documento firmado y verifica
  4. Explica los comandos utilizados.

Firma un documento encriptado y verifica**

  1. Descarga el par de claves pública/privada de asir2_student
  2. Impórtalas a tu anillo de claves
    1. Necesitarás obtener el passphrase que obtendras descifrando el siguiente documento de forma simétrica con la clave 'n0l0dig4$'
  3. Descrifra el siguiente mensaje y haz lo que dice el mensaje
  4. ¿Quién ha firmado el mensaje?

Mailvelope

gpg --list-key <e-mail>
gpg --keyserver hkps://keys.mailvelope.com --send-keys <key-id>
* Alternativamente, si este método no funciona hay que copiar la clave en el portapapeles y subirla a través de la [página web](https://keys.mailvelope.com/manage.html), la clave pública, no se hara visible hasta que no se confirme el correo enviando de _mailevelope_

Firma claves de compañeros para crear un circulo de confianza

Tutorial En esta actividad debes desgargar del servidor de llaves usado en clase todas las claves de tus compañeros ) y firmarlas con tu clave privada.

  1. Actualiza el documento compartido con tu identificador de clave y descarga las claves de los demás compañeros
  2. Firma las claves públicas de tus compañeros con tu clave privada haciendo estas de confianza y ampliando el círculo de confianza.
  3. Súbelas a la carpeta compartida correspondiente para que tus compañeros puedan descargarse sus claves firmadas por ti. Sigue el siguiente estandard de nomenclatura. `<apellido_nombre>signed_by.asc'
  4. Descargate tus claves públicas firmadas por tus compañeros y súbelas al servidor