Este programa desarrollado por Philip Zimmermann integra los principales algoritmos criptográficos existentes en la actualidad y mediante unos pocos comandos de fácil uso, proporciona autenticación y confidencialidad tanto en el envío de mensajes como en la protección de ficheros almacenados.
Fundamentalmente PGP utiliza cuatro tipos distintos de claves:
Clave de sesión: Es utilizada para cifrar/descifrar el contenido de un mensaje. Se genera una para cada mensaje y se utiliza una sola vez.
Clave pública: Se usa para cifrar las claves de sesión que se envian junto a los mensajes. Emisor y receptor han de tener una copia de esta.
Clave privada: Se utiliza para cifrar el resumen de un mensaje y obtener la firma digital. Sólo la puede conocer el emisor del mensaje. Para su generación se utiliza un test probabilístico de números primos..
Clave basada en una frase de permiso (passphrase): Su misión es la de cifrar, con el algorítmo de cifrado simétrico, las claves privadas que ha de mantener almacenadas el emisor.
Dado que el usuario puede tener varios pares de claves pública/privada activas a la vez PGP cuenta con dos estructuras que facilitan su almacenamiento:
Anillo de claves privadas: Almacena los pares pública/privada. Es una tabla con los siguientes campos:
Sello de tiempo: fecha y hora de generación del par de claves.
ID de clave: los 64 bits menos significativos de la clave pública del par.
Clave pública.
Clave privada: cifrada.
ID de usuario: normalmente es la dirección de correo pero puede elegirse un nombre diferente.
Anillo de claves públicas: Almacena las claves públicas de usuarios conocidos. Es una tabla que consta de los siguientes campos:
Sello de tiempo: fecha y hora en la que la clave entró en la tabla.
ID de clave: 64 bits menos significativos de la clave.
Clave pública.
ID de usuario: propietario de la clave. Varios ID's de usuario pueden estar asociados a una única clave.
Firma.
Campos en los que se indica la confianza en la clave y en la firma.
La gestión de claves que realiza el PGP se basa en un entorno de confianza debido a que no existen las autoridades certificadoras; cada usuario se encarga de generar su propia clave y de distribuirla y los usuarios son quienes firman las claves públicas de los otros. Así pues cada usuario es libre de decidir en quien puede confiar. De hecho cada entrada del anillo de claves públicas es un certificado de clave pública. A pesar de que cada usuario gestione sus claves existen los llamados servidores de claves PGP que son bases de datos a las que los usuarios envian sus claves PGP para que esten al alcance de otros usuarios.
El principal problema del esquema del PGP reside en la revocación de claves. Si un usuario quiere revocar su clave pública ha de enviar un certificado de revocación de claves firmado con su clave privada. Éste es un certificado normal pero con un indicador especial activado para la revocación. El usuario ha de darle la máxima difusión porque de lo contrario podría recibir mensajes cifrados con una clave obsoleta y que ya no es segura.