# OpenPGP

OpenPGP est un format de cryptographie initialement proposé par l’Internet Engineering Task Force (IETF) dans la RFC 2440. Cette RFC a été remplacée par la RFC 4880. Elle-même remplacée par la RFC 9580 en Juillet 2024.
Cette proposition de « standard » décrit le format des messages, signatures et certificats que peuvent échanger des logiciels de cryptographie comme GNU Privacy Guard. Ce n’est donc pas un logiciel mais un format pour l’échange sécurisé de données qui doit son nom à l’application de cryptographie historique, Pretty Good Privacy (PGP).
Une clé est composée d’un ensemble de sous-clés aux usages différents (certification, signature et chiffrement) et d’une liste d’identités. Les identités contiennent des informations sur le propriétaire. Chaque identité est certifiée par la clé principale.

## Utilisations

OpenPGP sert par exemple au chiffrement et à l'authentification du courrier électronique(en) « Email Encryption » [html], décrits notamment dans la RFC 3156. L'utilisation de certificats OpenPGP lors de communications sécurisées par TLS est proposée dans la RFC 6091.

### Signature

La signature numérique permet de vérifier l’intégrité d’un document. L’auteur du document ou une autorité de confiance utilise sa sous-clé de signature et une valeur numérique représentant le document (hash) pour produire la signature, un document que tout le monde peut vérifier mais que seule l’émetteur aurait pu produire.
La signature n’est pas une partie du document lui-même car le document ne doit pas être modifié sinon la signature est invalide. Elle prend généralement la forme d’un fichier sig séparé et disponible à proximité du document complet.

### Certificat

Un certificat s’applique sur une identité et une clé publique. La clé utilisée pour valider le certificat n’est pas nécessairement la clé contenue dans le certificat. Il existe généralement une clé maîtresse destinée uniquement à la signature des autres clés.
Un certificat contient les informations d’identification d’une personne (nom, prénom, adresse de messagerie) et la partie publique de la clé certifiée. Cette clé publique peut permettre de vérifier les signatures émises par cette personne et de chiffrer des messages que seule cette personne pourra lire.

### Chiffrement

Le chiffrement d’un message garantit que seul le destinataire sera en mesure de le lire. Il doit être combiné avec une signature pour également garantir la provenance.
Le chiffrement utilise la sous-clé publique dédiée au chiffrement. L’utilisateur doit s’assurer que la clé utilisée appartient bien à la personne cible et que cette clé n’est pas compromise.

## Serveurs de clés

Les serveurs de clés permettent aux utilisateurs de s’échanger la partie publique de leurs clés. La plupart des distributions Linux disposent d’un serveur de clés contenant au moins les clés ayant servi à signer les paquets.
* (en) « Keys.openpgp.org », sur openpgp.org (consulté le 31 décembre 2023)
* « PGP Global Directory », sur pgp.com (consulté le 31 décembre 2023)
* (en) « OpenPGP Keyserver », sur ubuntu.com (consulté le 31 décembre 2023)
Il existait une attaque consistant à saturer ces serveurs avec des signatures tierces approuvant la légitimité d’une autre signature.