PGP est un protocole utilisé pour sécuriser les communications. Il peut utiliser plusieurs algorithmes d'encryptage, tels que RSA et AES, et sert de gestionnaire de clés.
Seul le destinataire peut lire le message, même s'il est intercepté en chemin.
Prouve que l'expéditeur est bien l'auteur et que le contenu n'a pas été modifié.
Protège un document, une sauvegarde ou une archive stockés ou échangés.
1991 : création par Phil Zimmermann.
OpenPGP : la norme ouverte qui décrit le format (RFC 4880, mise à jour par la RFC 9580).
GnuPG (gpg) : l'implémentation libre la plus répandue.
Complément : informations ajoutées en plus du cours.
Symétrique une seule clé secrète pour chiffrer et déchiffrer (AES, XOR…). Rapide, mais comment partager la clé ?
Asymétrique une paire : une clé publique et une clé privée (RSA). C'est le cœur de PGP : voir les onglets suivants.
Schéma inspiré de bibmath.net/crypto (© bibmath.net), tel que présenté dans le cours.
• Toute personne qui détient ma clé publique peut chiffrer un message ou un fichier qui m'est destiné.
• Ce message ne pourra être déchiffré que par ma clé privée (secrète).
• Elle peut servir à vérifier qu'une signature est authentique et que le contenu n'a pas été modifié.
Peut être diffusée librement
• Déchiffre les messages chiffrés avec la clé publique correspondante : c'est la seule capable de le faire.
• Permet de signer : preuve que l'expéditeur et le contenu sont d'origine. Le destinataire vérifie avec la clé publique.
• Générée en même temps que la clé publique, protégée par un mot de passe.
Ne doit JAMAIS être partagée
Avec de très petits nombres, on peut tout calculer à la main. Illustration pédagogique : de vraies clés RSA font 2048 bits ou plus, jamais 12.
| Deux nombres premiers secrets | p = 61 · q = 53 |
| Module public | n = p × q = 3233 |
| φ(n) = (p − 1)(q − 1) | 60 × 52 = 3120 |
| Exposant public (premier avec φ) | e = 17 |
| Exposant privé : e × d ≡ 1 (mod φ) | d = 2753 (17 × 2753 = 15 × 3120 + 1) |
Clé publique : (n = 3233, e = 17) Clé privée : (n = 3233, d = 2753)
Pour retrouver d, il faudrait factoriser n en 61 × 53 : facile pour 3233, impossible pour un n de 2048 bits.
Chiffrer : c = me mod n (clé publique). Déchiffrer : m = cd mod n (clé privée). Chaque caractère est ici chiffré séparément (code ASCII).
L'expéditeur calcule une empreinte (hachage) du message, puis la « chiffre » avec sa clé privée : c'est la signature. Le destinataire la déchiffre avec la clé publique et compare avec l'empreinte du message reçu.
| 1. Empreinte du message | |
| 2. Signature = empreinted mod n |
Empreinte simplifiée (calcul pédagogique, modulo 3233). Les vrais systèmes utilisent SHA-256 (256 bits).
| 3. Signaturee mod n | |
| 4. Empreinte du message reçu |
Chiffrer un long message directement avec RSA serait trop lent. PGP combine donc les deux familles : le message est chiffré par un algorithme rapide (AES), et seule la petite clé qui l'a chiffré est protégée par la clé publique (RSA).
| Symétrique (AES) | Asymétrique (RSA) | |
|---|---|---|
| Clés | 1 clé secrète partagée | 1 paire : publique + privée |
| Vitesse | Très rapide | Lent (chiffre de petites données) |
| Usage dans PGP | Chiffre le message ou le fichier | Chiffre la clé de session, signe |
| Défi | Comment partager la clé ? | Être sûr que la clé publique est la bonne |
PGP range ses clés dans un trousseau : vos clés privées, et les clés publiques de vos correspondants.
La clé privée est protégée par une phrase de passe.
Pour s'assurer qu'une clé publique est bien celle de la bonne personne, on compare son empreinte (fingerprint), par téléphone ou en direct.
Sinon, un pirate pourrait faire passer sa propre clé pour celle de Bob.
Chacun signe les clés des personnes qu'il connaît : c'est la toile de confiance (web of trust). Des serveurs de clés publient les clés publiques.
Une clé perdue ou compromise se révoque ; elle peut aussi avoir une date d'expiration.
L'option « --armor » produit du texte ASCII : c'est du Base64 accompagné d'une somme de contrôle (CRC-24). Voir la page « Base64 et XOR ».
Choisis une réponse par question. La correction apparaît immédiatement.