En octobre 2022, Proton a développé sa propre autorité de certification OpenPGP (CA), ProtonCA, et a commencé à signer les clés de chiffrement pour garantir qu’elles appartiennent à un compte spécifique. Cela permet aux utilisateurs d’OpenPGP de faire confiance aux clés PGP d’autres utilisateurs et facilite l’envoi de messages chiffrés de bout en bout (E2EE).
Cet article explique pourquoi les CA sont nécessaires pour OpenPGP, pourquoi nous avons décidé de développer une CA et comment fonctionne notre CA.
Pourquoi Proton agit-elle en tant qu’autorité de certification ?
OpenPGP, le standard de chiffrement open source que nous utilisons pour chiffrer les e-mails de bout en bout sur Proton Mail, est l’une des méthodes de communication en ligne les plus sécurisées, mais elle présente de petites vulnérabilités potentielles. Un problème est que n’importe qui peut créer une clé et prétendre qu’elle appartient à une adresse e-mail spécifique. Cela pourrait potentiellement permettre à un attaquant de substituer une clé PGP qu’il a créée à la vôtre, lui donnant accès à tous les messages chiffrés avec cette clé.
Ce problème existe également dans d’autres protocoles de cryptographie. Par exemple, le protocole de sécurité de la couche de transport (TLS) qui protège tous les sites internet utilisant HTTPS repose sur quelques CA centralisées pour vérifier qu’une clé spécifique appartient bien à la personne ou au site internet qui la revendique. Pour résoudre ce problème, la communauté OpenPGP a récemment développé OpenPGP CA(nouvelle fenêtre), rendant facile le déploiement de CA décentralisées. L’objectif est de créer un système étendu avec de nombreuses CA travaillant ensemble pour éliminer les points de défaillance.
Nous avons décidé de lancer ProtonCA car nous sommes particulièrement bien placés pour agir en tant que CA. Nous pouvons facilement confirmer qu’une clé spécifique appartient à une adresse e-mail particulière car nous contrôlons le domaine de messagerie. Bien que les utilisateurs de Proton ne verront pas de différence majeure dans le service, cela facilitera grandement la vie des personnes qui utilisent PGP pour envoyer des e-mails E2EE aux utilisateurs de Proton. Désormais, peu importe comment vous obtenez la clé PGP d’un utilisateur Proton, vous pouvez être sûr qu’elle est valide et récente (utilisée activement au cours des six derniers mois) si ProtonCA l’a signée.
Signatures de tiers
La technologie sous-jacente utilisée par OpenPGP CA — les signatures de tiers — existe depuis des années. Les signatures de tiers sont l’outil principal que les CA utilisent pour authentifier une clé. En gros, si vous êtes une CA, vous ajoutez votre signature à la clé de quelqu’un d’autre, affirmant que vous avez vérifié qu’elle lui appartient. Cela crée une liaison inviolable entre la clé et l’utilisateur.
Par exemple, Alice souhaite envoyer un e-mail à Bob, donc sa première étape est de récupérer sa clé publique de chiffrement. Cette clé téléchargée contient une signature de Ted indiquant qu’il certifie que cette clé appartient à Bob. Si Alice fait confiance à Ted pour vérifier correctement l’identité de Bob, alors elle fait indirectement confiance à la clé de Bob. Ted est l’autorité de confiance dans ce cas, agissant comme une CA (très petite).
Fonctionnement de ProtonCA
Chez Proton, nous avons développé ProtonCA selon le système décrit par OpenPGP CA pour agir en tant que CA pour les clés de millions d’utilisateurs Proton.
Toutes les adresses e-mail hébergées par Proton disposent d’une clé qui leur permet de recevoir des messages E2EE. ProtonCA ajoute une signature tierce à chaque clé de chiffrement d’e-mail en utilisant une clé maîtresse appelée la clé CA. Cela certifie que Proton garantit que la clé appartient à l’adresse qui lui est associée. Lorsqu’une clé est générée ou importée vers Proton Mail, ProtonCA vérifie qu’elle est uniquement associée à une seule adresse e-mail, celle pour laquelle elle a été importée. Nous signons ensuite la clé et la stockons sur nos serveurs. Proton ne vérifie pas l’identité des utilisateurs individuels (par exemple, nous ne demandons pas à nos utilisateurs de fournir une pièce d’identité gouvernementale). ProtonCA confirme simplement qu’une adresse e-mail particulière correspond à une clé spécifique.
Revenons à notre exemple initial avec Alice et Bob, mais remplaçons Ted par ProtonCA. Maintenant, lorsque Alice récupère la clé de Bob, elle recevra une clé avec une signature ProtonCA indiquant que [email protected] utilise cette clé. Alice, qui pourrait utiliser un client OpenPGP externe, peut vérifier l’authenticité de cette signature et, si elle fait confiance à Proton, elle fera indirectement confiance à cette clé automatiquement. Cette confiance s’applique quel que soit le moyen par lequel Alice a obtenu la clé de Bob. Même si elle l’a trouvée sur un support non sécurisé, la signature de ProtonCA la rend inviolable.
La signature de ProtonCA ajoute également une non-répudiation aux clés fournies par Proton. En d’autres termes, si Proton fournit une mauvaise clé, la signature de ProtonCA prouve que la clé a été téléchargée depuis Proton. Cela réduirait la confiance en Proton et nous dissuaderait de fournir des clés malveillantes.
Pour éviter de certifier des clés obsolètes, ProtonCA applique une politique d’expiration stricte. Chaque clé est certifiée pour six mois à la fois. Un mois avant l’expiration d’un certificat, ProtonCA vérifie que l’adresse e-mail associée est toujours active et que la clé actuelle n’a pas été retirée. Si ces deux critères sont remplis, ProtonCA renouvellera la certification pour six mois supplémentaires.
Comment faire confiance à ProtonCA dans d’autres clients OpenPGP
La clé ProtonCA peut être récupérée ici(nouvelle fenêtre) et possède l’empreinte suivante :
Vous pouvez importer cette clé dans votre trousseau GnuPG en utilisant la commande suivante :
$ gpg -- import -key pubkey.asc |
Vous devez ensuite définir le niveau de confiance suivant :
$ gpg --edit-key 0xD806C1AF5978E8C7 > trust > 5 > y > quit |
PGP marquera alors automatiquement cette clé comme fiable et toutes les clés signées par cette clé comme indirectement fiables.
Le niveau de confiance cinq (ultime) est nécessaire si vous n’avez pas votre propre clé OpenPGP. Chaque chemin de confiance indirect doit commencer par une clé de confiance ultime.
Pour définir un niveau de confiance inférieur à cinq, vous devez signer localement la clé [email protected]. Vous pouvez le faire avec les commandes suivantes :
$ gpg --edit-key 0xD806C1AF5978E8C7> lsign> y> save |
Cela créera une signature non exportable sur la clé ProtonCA. Une fois cette étape effectuée, vous pouvez définir un niveau de confiance différent :
$ gpg --edit-key 0xD806C1AF5978E8C7> trust> 4> quit |
Utiliser vos propres certifications
Puisque l’objectif de OpenPGP CA est de mettre en place un système de signature décentralisé, avoir une autorité de certification centrale unique qui émet des signatures irait à l’encontre du but recherché. C’est pourquoi nous avons ajouté une prise en charge des certifications sur les clés PGP importées.
Vous pouvez configurer votre propre instance de OpenPGP CA(nouvelle fenêtre) ou signer les clés en utilisant Sequoia ou GnuPG, puis les importer directement dans Proton. Il vous suffit d’importer la clé privée signée pour l’adresse souhaitée. La clé publique que nous avons rendue accessible aux utilisateurs de Proton Mail via l’Annuaire de Clés Web (WKD)(nouvelle fenêtre) ou notre Serveur de Clés Public (PKS) contient la signature importée.
Notez que si vous souhaitez ajouter une nouvelle clé, la signature ne sera pas automatiquement transférée vers la nouvelle clé. Vous devrez la signer à nouveau manuellement après son ajout.
MISE À JOUR 28 octobre 2022 : Cet article a ajouté trois paragraphes expliquant comment définir votre niveau de confiance en dessous de cinq.