PGP es un criptosistema híbrido que combina técnicas de criptografía simétrica y criptografía asimétrica. Esta combinación permite aprovechar lo mejor de cada uno: El cifrado simétrico es más rápido que el asimétrico o de clave pública, mientras que éste, a su vez, proporciona una solución al problema de la distribución de claves en forma segura y garantiza el no repudio de los datos y la no suplantación.

Cuando un usuario emplea PGP para cifrar un texto en claro, dicho texto es La compresión de los datos ahorra espacio en disco, tiempos de transmisión y, más importante aún, fortalece la seguridad criptográfica ya que la mayoría de las técnicas de criptoanálisis buscan patrones presentes en el texto claro para romper el cifrado. La compresión reduce esos patrones en el texto claro, aumentando enormemente la resistencia al criptoanálisis.


Genera una clave privada RSA de 4096 bits.

Para generar una clave RSA de 4096 bits vamos a utilizar el siguiente comando gpg --gen-key vamos a seleccionar la opción 4, la cual se trata de la la clave «RSA», si dejamos por defecto el periodo de validez va a ser «0» lo que significa, que la clave no caducara nunca.

Info! Si deseas obtener una clave que se pueda firmar y cifrar tendreis que crear una clave con la primera opcion (DSA y ElGamal).

Establece una caducidad para la clave. Valor mínimo el curso actual y máximo de un año.

Para ello vamos a poner que tenga un periodo de validez de un año máximo, por lo tanto cuando los pide que especifiquemos el tiempo de validez  escribimos lo siguiente:

¿Validez de la clave (0)? 1y
La clave caduca mié 13 dic 2017 17:29:28 CET
¿Es correcto? (s/n) s

Insertamos nuestros datos y confirmamos:

Posteriormente comenzará el proceso de creación de la clave y observaremos que es un proceso bastante lento, dado que necesitamos distintos procesos añadidos para que la clave se cree a mayor velocidad.

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.

No hay suficientes bytes aleatorios disponibles. Haga algún
otro trabajo para que el sistema pueda recolectar más entropía
(se necesitan 212 bytes más).
.............+++++

No hay suficientes bytes aleatorios disponibles. Haga algún
otro trabajo para que el sistema pueda recolectar más entropía
(se necesitan 123 bytes más).
........+++++
gpg: clave 71C08A02 marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

gpg: comprobando base de datos de confianza
gpg: 3 dudosa(s) necesaria(s), 1 completa(s) necesaria(s),
modelo de confianza PGP
gpg: nivel: 0  validez:   2  firmada:   0  confianza: 0-, 0q, 0n, 0m, 0f, 2u
gpg: siguiente comprobación de base de datos de confianza el: 2017-12-13
pub   4096R/71C08A02 2016-12-13 [caduca: 2017-12-13]

Las claves han de ser subidas a un servidor de claves públicas, donde el resto de usuarios pueden consultar la clave pública y las personas que han firmado dicha clave. Existen varios servidores, aunque los más conocidos y frecuentes son rediris.es o pgp.mit.edu. Incluye tu nombre y correo electrónico real.

Agrega tu clave PGP al servidor de pgp.rediris.es o pgp.mit.edu

Para subirla a algunos de los servidores que hemos dicho antes, vamos a ejecutar el siguiente comando gpg --keyserver pgp.mit.edu --send-key 71C08A02

Añadir subclave para firmar

Al principio del post hemos elegido la opción 4, como bien podemos observar dicha opción solo te permite firmar, pero no te deja cifrar. Si deseamos podemos o bien crear una clave nueva o cómo voy a explicar a continuación añadir una subclave.

En la terminal ejecutamos el siguiente comando gpg --edit-key [Clave], una vez ahí escribimos addkey. Por ultimo seleccionamos el tipo 6 RSA (solo cifrar) y se creara la nueva clave, la subimos a un servidor y ya tendremos una subclave.

Info! Recuerda subir la clave a uno de los servidores anteriormente descritos.

Borrar o eliminar una clave publica del almacén de claves.

Al borrar una clave vamos a utilizar el siguiente comando gpg --delete-key [Clave], pero al ejecutar el comando nos saltara el siguiente mensaje:

usuario@debian-virtual:~$ gpg --delete-key 7E6738E2
gpg (GnuPG) 1.4.18; Copyright (C) 2014 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: ¡hay una clave secreta para esta clave pública! "7E6738E2"!
gpg: use antes la opción "--delete-secret-key" para borrarla.

Por lo tanto, debemos primero borrar la clave privada con el siguiente comando gpg --delete-secret-key [Clave]

Y posteriormente ejecutamos el comando anterior para borrar la clave pública gpg --delete-key [Clave]

Cómo generar y revocar un certificado de revocación

Un certificado de revocación es un certificado que anula o revoca una determinada clave, aunque se emplee dentro de su período de vigencia.

Un certificado de revocación sirve para revocar una clave pública, en el caso de que perdamos la clave privada o la clave privada quede comprometida. En ese caso usaremos el certificado de revocación para avisar a los demás usuarios de que ya no usen esa clave pública, y de que ya no se podrá usar más.

Para generar un certificado de revocación usaremos las siguientes opciones en la herramienta GPG: --gen-revoke para generarlo y --output para darle salida al fichero.

gpg --output revoke.asc --gen-revoke [Especificador de clave]

Después lo importamos para revocar la clave local con la opción --import.

gpg --import revoke.asc

Posteriormente al ejecutar la herramienta GPG con la opción --list-keys, veremos que la clave está efectivamente revocada.

Una vez hemos revocado las claves localmente, podremos hacer lo mismo con las claves que hemos enviado al servidor de claves públicas.

gpg --keyserver [Servidor] --send-key revoke.asc

Firmar una clave pública

Firmar una clave pública es una forma de corroborar que esa clave corresponde a esa persona, creando así anillos de confianza.

Descargamos la clave publica

Para ello antes debemos de descargar la clave del servidor de claves: gpg --keyserver [Servidor] --recv [Clave]

Definimos el servidor «pgp.rediris.es» donde se ha subido y el numero de la clave «151A0D3A«.

Comprobamos la huella de la clave publica

Con el comando gpg --fingerprint [Clave] podemos ver la huella de la clave pública descargada. En ella aparece información como el UID con nombre, apellidos, comentario y email además de la huella de la clave. Es importante comprobar que la información de la clave pública es la asociada a esa persona física.

Firmamos la clave descargada

Una vez comprobada su validez procedemos a firmar la clave con el siguiente comando gpg --sign-key [Clave]

Subir la clave firmada

Una vez firmada la clave debemos volver a subirla al servidor del cual la hemos sacado gpg --keyserver pgp.rediris.es --send-key [Clave]