Confiance cryptographique et OpenPGP expliqués
2026-02-18T19:57:27+08:00
Dans cet article, j'explique la confiance cryptographique, OpenPGP, leur fonctionnement et pourquoi ils sont importants.
Contexte technique : comment les mathématiques protègent la sécurité et la confidentialité
Si vous ne vous intéressez pas aux principes mathématiques sous-jacents de la cryptographie asymétrique et d'OpenPGP et que vous souhaitez seulement savoir comment utiliser la confiance cryptographique judicieusement, vous devez connaître ces points :
- La cryptographie asymétrique désigne des techniques qui produisent deux clés différentes : une clé publique et une clé privée.
- La clé publique est partagée publiquement ; la clé privée est conservée par son détenteur.
- La clé publique peut être utilisée pour chiffrer un message ; la clé privée correspondante sert à le déchiffrer.
- La clé privée peut être utilisée pour signer un message ; la clé publique correspondante permet alors de vérifier la signature.
Si vous ne voulez que des conseils pratiques, vous pouvez ignorer le reste de cette section.
Le chiffrement symétrique utilise la même clé pour chiffrer et déchiffrer. Il peut résister aux attaques par force brute, mais présente des inconvénients pratiques : Alice et Bob doivent convenir d'une clé partagée, ce qui nécessite généralement un canal sécurisé distinct (par exemple une rencontre en personne). C'est peu pratique, et la clé partagée ne doit pas être divulguée — si Mallory obtient la clé, la confidentialité est compromise.
La cryptographie asymétrique résout ce problème. Les schémas asymétriques utilisent des clés différentes pour le chiffrement et le déchiffrement — clé publique et clé privée respectivement. Les clés publiques peuvent être publiées sur un site personnel ou sur les réseaux sociaux, car une clé publique ne permet pas de dériver la clé privée correspondante ; la clé privée reste secrète.
Des algorithmes soigneusement conçus génèrent des paires de clés publiques/privées de façon à ce que les données chiffrées avec une clé publique ne puissent être déchiffrées que par la clé privée correspondante. Parmi les exemples : RSA et la cryptographie sur courbes elliptiques (ECC).
RSA est un algorithme asymétrique classique et historique. Comprendre RSA aide à se faire une intuition sur la cryptographie asymétrique.
En bref, la génération de clés RSA fonctionne ainsi. Alice choisit aléatoirement deux nombres premiers distincts p et q. Elle calcule n = p * q et Φ(n) = (p - 1) * (q - 1), puis choisit un entier e tel que 1 < e < Φ(n) et premier avec Φ(n). Elle calcule ensuite l'inverse modulaire de e modulo Φ(n) et l'affecte à d. La clé publique d'Alice est (n, e) et sa clé privée est (n, d). Pour chiffrer un message m, Bob calcule c = (m ** e) % n et envoie le chiffrement c à Alice ; Alice récupère m avec m = (c ** d) % n.
On peut se demander : à partir de la clé publique (n, e), peut-on retrouver d ? Pour calculer d il faut Φ(n), et pour Φ(n) il faut connaître p et q. Retracer p et q à partir de n exige la factorisation de n. Pour des tailles de clés RSA courantes (par exemple 4096 bits), factoriser n est actuellement hors de portée pratique. C'est le fondement de la sécurité de RSA.
Les schémas ECC suivent d'autres problèmes mathématiques difficiles, mais l'idée centrale est la même : il doit être pratiquement infaisable de déduire la clé privée à partir de la clé publique.
Dans la pratique, l'inverse modulaire choisi est le plus petit entier positif inférieur à Φ(n). Si g = gcd(d, Φ(n)) > 1, cela conduirait à une contradiction arithmétique (puisque e * d + k * Φ(n) = 1), donc g doit être 1 et d est premier avec Φ(n). Cette symétrie montre que e et d ont des propriétés complémentaires ; en théorie leurs rôles sont liés, mais en pratique on les emploie de façon distincte selon que l'on chiffre ou que l'on signe.
Concrètement, la signature RSA se calcule souvent par s = m ** d % n et la vérification par m == s ** e % n. Pour obtenir à la fois confidentialité et authenticité dans une communication, l'expéditeur signe d'abord le message avec sa clé privée, puis chiffre le bloc signé avec la clé publique du destinataire. Le destinataire déchiffre avec sa clé privée, puis vérifie la signature avec la clé publique de l'expéditeur.
Qu'est-ce que la confiance cryptographique et pourquoi est-elle importante
La surveillance et la censure affectent la communication dans le monde entier. Au-delà de juridictions à risque, certaines politiques suscitent des inquiétudes en Europe. Utiliser des messageries libres qui prennent en charge le chiffrement de bout en bout — comme XMPP, Matrix et SimpleX — contribue à protéger les communications. La cryptographie asymétrique permet à des paires de contacts d'établir des canaux sécurisés sans canal préalable : une clé chiffre, l'autre déchiffre, et seul le détenteur de la clé privée correspondante peut lire le contenu.
Cependant, un autre problème subsiste : Alice et Bob peuvent tenter d'échanger des clés publiques mais subir une attaque de l'homme du milieu. Si Mallory intercepte les clés publiques et envoie sa propre clé aux deux parties, Alice et Bob croiront chacun avoir la clé de l'autre. Mallory peut alors décrypter, modifier, reprocher et retransmettre des messages de façon à tromper le destinataire. Confidentialité et authenticité sont alors compromises.
Pour l'empêcher, Alice doit vérifier que la clé publique reçue appartient bien à Bob. Cette vérification exige un canal fiable (par exemple une rencontre en personne). Confirmer qu'une clé publique appartient à un titulaire particulier, c'est établir la confiance cryptographique.
Une fois la confiance dans une clé établie, il devient pratiquement impossible pour un attaquant de usurper l'identité sans extraire la clé privée correspondante.
Principe fondamental : vérification de la cohérence d'identité
On peut construire un vaste graphe de confiance entre identités, mais le principe est simple : on établit la confiance cryptographique d'une identité en vérifiant sa cohérence avec une identité déjà fiable.
En cryptographie, une clé publique correspond à une identité. Rappelez-vous : clé publique = identité (dans le contexte de la confiance basée sur les clés).
La vérification de la cohérence consiste généralement en deux étapes :
- Faire en sorte que l'identité A fournisse une attestation garantissant que l'identité B est cohérente avec A.
- Faire en sorte que l'identité B fournisse une attestation garantissant que l'identité A est cohérente avec B.
Par exemple, Alice qui veut vérifier qu'une clé publique appartient à Bob peut rencontrer Bob et demander l'empreinte de sa clé. Elle peut aussi demander à Bob de signer un défi. Si la signature se vérifie, Alice fait confiance à cette clé.
Si Alice fait déjà confiance à une clé A de Bob et souhaite vérifier une autre clé B de Bob, elle peut lier A et B par des attestations mutuelles (la clé A signe la présence de l'empreinte de B et la clé B signe l'empreinte de A). Si les deux signatures vérifient, la cohérence est établie et la confiance se propage.
Quelle identité faire confiance en premier ?
Le processus repose sur une identité déjà fiable. Pour un nouveau contact, on fait souvent confiance à la première identité rencontrée — c'est le principe ToFU (Trust On First Use), et cette identité initiale est l'initial identity.
Par exemple, si Alice et Bob se rencontrent en personne, l'identité initiale d'Alice pour Bob est la personne elle-même. Si c'est via Matrix, l'identité initiale peut être le compte Matrix et la clé publique associée. Si c'est via XMPP, Alice peut se fier à l'empreinte OMEMO du premier message.
C'est une pratique raisonnable : quand vous rencontrez quelqu'un rencontré en ligne, vous vérifiez généralement son identité réelle par le même canal que celui où vous l'avez connu.
Pratiques courantes de confiance cryptographique
En vérifiant des cohérences, Alice construit un graphe : identités = sommets, attestations = arêtes. L'ensemble des sommets connectés à l'identité initiale de Bob constituent les identités de confiance de Bob.
Stratégies courantes :
-
Chaîne/réseau de confiance non restreint. Toute identité de confiance peut vouvoyer une nouvelle identité.
Avantages : commodité, moindre risque de perdre la connectivité.
Inconvénients : moins robuste face aux usurpations ; une compromission peut avoir des effets en cascade. -
Centricité sur l'identité initiale. Seule l'identité initiale peut vouvoyer d'autres identités.
Avantages : robustesse si l'identité initiale est solide ; chaînes courtes.
Inconvénients : point de défaillance unique ; si l'identité initiale est compromise, tout le réseau l'est. -
Centricité sur une identité cryptographique unique. L'identité initiale établit d'abord une identité cryptographique unique (une paire de clés) ; seule cette identité sert ensuite à vouvoyer d'autres identités. C'est ma stratégie préférée ; j'utilise OpenPGP.
Avantages : bon équilibre entre robustesse et chaînes courtes.
Inconvénients : point de défaillance unique.
Une méthode courante : challenge–response
Si Alice fait déjà confiance à une clé publique de Bob mais veut vérifier que la personne en face possède bien la clé privée, elle peut effectuer un challenge–response :
- Alice génère une chaîne aléatoire (le défi).
- Alice envoie le défi à Bob ; Bob le signe avec sa clé privée.
- Bob renvoie la signature ; Alice la vérifie avec la clé publique.
Si la signature est valide, cela prouve que l'interlocuteur possède la clé privée.
Très important : ne compromettez pas votre clé privée
La sécurité de la confiance cryptographique repose sur la confidentialité de la clé privée. Compromettre la clé privée compromet la confiance.
Donc, ne compromettez pas votre clé privée. Si elle est exposée, la confiance à votre égard n'est plus valable.
Pour les utilisateurs d'OpenPGP : GARDER VOTRE CLÉ PRIVÉE OPENPGP STRICTEMENT SECRÈTE. Stocker la clé privée sur un token matériel (par exemple Nitrokey, CanoKey ou YubiKey) est une bonne pratique. À défaut, conservez la clé sur un appareil exécutant uniquement des logiciels libres.
OpenPGP et implémentations libres
OpenPGP est une norme qui définit un format pour organiser du matériel de clés afin d'utiliser le chiffrement, la signature et l'authentification. OpenPGP prend en charge RSA, ECC et d'autres algorithmes.
À titre d'exemple, GnuPG :
- Génération de clé :
gpg --full-generate-key. - Chiffrement :
gpg --encrypt(ex.cat <filename> | gpg --encrypt) ; utiliser--armorpour obtenir une sortie ASCII. - Signature en clair :
gpg --clear-sign. - Déchiffrement / vérification :
gpg --decrypt.
Sur GNU/Linux, *BSD, Windows et macOS, GnuPG est l'implémentation la plus utilisée ; Kleopatra est un front end graphique. Sur Android, OpenKeychain est populaire.
Pour aller plus loin, consultez la documentation officielle et des guides comme la FSF Email Self-Defense Guide ou le manuel GnuPG.
Comment utiliser OpenPGP pour chiffrer des courriels
Des clients e-mail libres comme Thunderbird intègrent le support OpenPGP. Vous pouvez chiffrer, déchiffrer et vérifier des signatures de façon fluide. Des extensions de navigateur telles que Mailvelope apportent le support OpenPGP aux webmails.
Consultez la documentation pour les étapes propres à votre client.
Comment utiliser OpenPGP pour établir la confiance cryptographique
La procédure est simple :
- Demandez la clé publique OpenPGP d'une personne.
- Vérifiez la cohérence entre la clé et l'identité initiale de la personne ; ainsi vous établissez la confiance.
- Pour d'autres identités futures, vérifiez leur cohérence face à la clé OpenPGP.
Derniers mots : adoptez et utilisez le logiciel libre avec sagesse
Grâce à la communauté du logiciel libre, nous disposons d'outils robustes. En apprenant à les utiliser, nous pouvons défendre la sécurité, la vie privée et les droits numériques, et nous protéger des menaces, de la surveillance et de la censure.
















































