Logo EMF

114 - Chiffrement - PGP

1. PGP : Pretty Good Privacy

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.

✉️ 1. Chiffrement des courriels

Seul le destinataire peut lire le message, même s'il est intercepté en chemin.

✍️ 2. Signature numérique

Prouve que l'expéditeur est bien l'auteur et que le contenu n'a pas été modifié.

🗄️ 3. Chiffrement des fichiers

Protège un document, une sauvegarde ou une archive stockés ou échangés.

Pour situer PGP

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.

Deux familles de clés

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.

2. PGP en image : la cryptographie à clé publique

Alice
Bob

Schéma inspiré de bibmath.net/crypto (© bibmath.net), tel que présenté dans le cours.

3. La clé publique (cadenas) et la clé privée (clé du cadenas)

🔒 La clé publique (cadenas)

• 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

🗝️ La clé privée (clé du cadenas)

• 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

À toi : quelle clé utiliser ?

4. RSA en miniature : voir la clé publique et la clé privée à l'œuvre

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.

Fabrication des clés

Deux nombres premiers secretsp = 61 · q = 53
Module publicn = 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, puis déchiffrer

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).

5. La signature numérique

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.

✍️ Expéditeur (clé privée)

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).

🔎 Destinataire (clé publique)

3. Signaturee mod n
4. Empreinte du message reçu

6. Le chiffrement hybride : ce que fait vraiment PGP

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és1 clé secrète partagée1 paire : publique + privée
VitesseTrès rapideLent (chiffre de petites données)
Usage dans PGPChiffre le message ou le fichierChiffre la clé de session, signe
DéfiComment partager la clé ?Être sûr que la clé publique est la bonne

7. Gérer ses clés : PGP est aussi un gestionnaire de clés

🗂️ Le trousseau

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.

🔖 L'empreinte

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.

🤝 La confiance

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.

Avec GnuPG en ligne de commande (complément)

# créer sa paire de clés gpg --full-generate-key # exporter sa clé publique (texte ASCII, à envoyer) gpg --armor --export alice@example.com # chiffrer un fichier pour Bob, puis le déchiffrer (côté Bob) gpg --encrypt --armor --recipient bob@example.com fichier.txt gpg --decrypt fichier.txt.asc # signer et vérifier gpg --detach-sign --armor fichier.txt gpg --verify fichier.txt.asc fichier.txt # lister les clés et afficher les empreintes gpg --list-keys --fingerprint

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 ».

8. Défi CFC · Vérifie tes connaissances

Choisis une réponse par question. La correction apparaît immédiatement.