OpenPGP est un format decryptographie initialement proposé par l’Internet Engineering Task Force (IETF) dans laRFC 2440[1]. Cette RFC a été remplacée par laRFC 4880[2]. Elle-même remplacée par laRFC 9580 en Juillet 2024.
Cette proposition de « standard » décrit leformat des messages,signatures etcertificats que peuvent échanger des logiciels de cryptographie commeGNU 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[3] contiennent des informations sur le propriétaire. Chaque identité est certifiée par la clé principale.
OpenPGP sert par exemple auchiffrement et à l'authentification ducourrier électronique(en) « Email Encryption »[html], décrits notamment dans la RFC 3156[4]. L'utilisation de certificats OpenPGP lors de communications sécurisées parTLS est proposée dans la RFC 6091[5].
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.
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.
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 à lapersonne cible et que cette clé n’est pas compromise.
Les serveurs de clés permettent aux utilisateurs de s’échanger la partie publique de leurs clés. La plupart desdistributions Linux disposent d’unserveur de clés contenant au moins les clés ayant servi à signer les paquets.
Il existait une attaque[6] consistant à saturer ces serveurs avec des signatures tierces approuvant la légitimité d’une autre signature.