Comment fonctionne Certificate Transparency ?
Certificate Transparency (CT) fonctionne au sein de l’infrastructure existante des autorités de certification (AC). L’objectif est ici d’assurer une validation post-émission de l’autorisation d’émission de certificats SSL accordée à une entité.
Le processus d’émission d’un certificat est illustré ci-dessous, les nouvelles étapes introduites par CT étant indiquées en bleu.
- L’opérateur du serveur achète un certificat auprès de l’autorité de certification
- L’AC valide l’identité de l’opérateur du serveur
- L’AC crée un précertificat
- L’AC enregistre le précertificat sur le serveur de journalisation, qui renvoie un SCT (Signed Certificate Timestamp)
- L’AC émet un certificat SSL
- Le certificat SSL peut inclure un SCT
- Le navigateur valide le certificat SSL lors de la négociation TLS
- Le navigateur valide le SCT fourni pendant la négociation TLS, via l’agrafage OCSP (OCSP stapling) ou via une extension TLS ou bien encore à partir des informations intégrées dans le certificat
- Le navigateur établit la connexion avec le serveur
- Le certificat SSL chiffre toutes les données lorsqu’elles sont transmises du navigateur au serveur
Trois méthodes différentes permettent de fournir le SCT lors de la négociation TLS, comme expliqué ici. Un schéma illustrant l’un des trois cas de figure est présenté ci-dessous.
Composants du framework Certificate Transparency
Le framework CT repose sur quatre composants : une autorité de certification, un log de certificats, un contrôleur de certificats et un auditeur de certificats. Vous trouverez ci-dessous un schéma illustrant une configuration possible de ces éléments – chacun d’entre eux étant présenté plus en détail ci-après.
Autorité de certification
CT fonctionne au sein du système existant des autorités de certification reconnues comme dignes de confiance. Dans ce cadre, une AC peut inclure des preuves d’émission de certificat dans un log public, les navigateurs vérifiant ces SCT lors de la négociation. En pratique, la journalisation des certificats témoigne du bon fonctionnement de l’AC et offre un aperçu de ses opérations.
Log de certificats
Bien que le déploiement initial se limite aux certificats EV, les logs de certificats conservent idéalement un enregistrement de tous les certificats SSL émis. Dans cette optique, il est indispensable de s’appuyer sur plusieurs logs indépendants, et ce, pour plusieurs raisons : 1) sauvegarde possible en cas de défaillance d’un log ; 2) validation des certificats possible en cas de compromission d’un log ou d’un opérateur de log ; 3) impossibilité de supprimer une preuve d’émission de tous les logs suite à la demande d’une administration ; et 4) collusion impossible entre une autorité de certification et un opérateur de log en vue de dissimuler une erreur d’émission.
Tous les logs sont :
- En ajout seul – Les certificats peuvent uniquement être ajoutés à un log. Il est impossible de les supprimer, de les modifier ou de les insérer rétroactivement.
- Protégés cryptographiquement – Les logs utilisent un mécanisme cryptographique appelé arbre de Merkle pour empêcher toute modification.
- Vérifiables publiquement – Tout le monde peut interroger un log et rechercher les certificats émis par erreur ou non autorisés. L’URL et la clé publique de tous les logs de certificats doivent être publiques.
Contrôleur de certificats
Un contrôleur de certificats surveille les logs de certificats pour repérer toute activité suspecte. C’est notamment le cas des propriétaires de grandes marques ou des autorités de certification.
Les contrôleurs peuvent extraire des informations des logs à l’aide d’une commande HTTP GET. Chaque client peut assumer le rôle de contrôleur de certificats ou le déléguer à une tierce partie. À ce titre, DigiCert prévoit de fournir des services de contrôle de logs à ses clients.
Auditeur de certificats
Les auditeurs de certificats vérifient les logs pour s’assurer qu’ils sont cohérents avec les autres logs, qu’ils n’ont pas été corrompus suite à une opération rétroactive d’insertion, de suppression ou de modification d’un certificat et que de nouvelles entrées ont été ajoutées.
Le processus de vérification est souvent automatisé et intégré aux navigateurs. Toutefois, il peut se présenter comme un service autonome ou une fonction secondaire d’un contrôleur.