Aller au contenu

X.509 : Recommandation UIT-T X.509

Gestion des clés

Norme de l'UIT-T qui définit le format des certificats à clé publique : une structure signée par une autorité de certification qui associe une clé publique à une identité. C'est le format qu'utilisent TLS, S/MIME, la signature de code et à peu près toutes les PKI en circulation.

Schéma de séquence entre trois acteurs : Serveur, Client et Magasin de confiance. 1. Le serveur envoie au client le certificat du site et le certificat intermédiaire. 2. Le client vérifie la signature du certificat du site avec la clé publique de l'intermédiaire. 3. Le client cherche dans le magasin de confiance la racine qui a signé l'intermédiaire. 4. Deux issues possibles : si la racine est trouvée et que les signatures et les dates sont valides, la connexion est acceptée ; si la racine est inconnue ou qu'une signature est invalide, la connexion est refusée.

Contenu d'un certificat : Un certificat X.509 v3 contient un sujet, un émetteur, une période de validité, un numéro de série, la clé publique et des extensions (noms DNS dans subjectAltName, usages autorisés, contraintes de base). Le tout est signé par l'émetteur ; modifier un seul octet invalide la signature.

Chaîne de confiance : Le certificat d'un site est signé par une autorité intermédiaire, elle-même signée par une racine présente dans le magasin de confiance du système ou du navigateur. Le client remonte la chaîne et vérifie chaque signature ; un seul maillon cassé suffit à tout refuser.

Encodage : La structure est décrite en ASN.1 et encodée en DER, un format binaire. On la croise surtout en PEM : le même DER passé en Base64 et encadré par les lignes BEGIN CERTIFICATE et END CERTIFICATE.

Expiration et révocation : Un certificat compromis se révoque via une CRL ou OCSP, mais beaucoup de clients vérifient la révocation avec la rigueur d'un contrôle de billets dans un train vide. D'où la tendance actuelle aux certificats de courte durée, renouvelés automatiquement.

Ce qui arrive si on s'en passe

Sans certificat X.509, une clé publique reçue n'est qu'une suite d'octets : rien n'atteste à qui elle appartient. Un client TLS qui ne vérifie pas la chaîne de certificats jusqu'à une autorité de confiance accepte la clé de n'importe quel interlocuteur, y compris celle d'un intermédiaire placé sur le chemin réseau. Le chiffrement reste actif, mais il protège alors une conversation avec l'attaquant, qui peut lire et modifier le trafic. En S/MIME comme en signature de code, la signature ne peut plus être rattachée à une identité vérifiable : un message ou un binaire signé avec une clé quelconque devient impossible à distinguer d'un envoi légitime. On perd aussi la date d'expiration et la révocation (listes CRL, OCSP) : une clé compromise reste acceptée sans limite, puisqu'aucune structure ne permet de la déclarer invalide.

Explication de la marmotte

Imagine une carte d'identité pour un site web. Elle indique le nom du site, sa date d'expiration et un cadenas numérique qui n'appartient qu'à lui. Le problème, c'est que n'importe qui pourrait fabriquer une fausse carte. Alors un organisme de confiance, un peu comme la mairie qui délivre les vraies cartes d'identité, y appose un tampon impossible à imiter. Ton navigateur connaît à l'avance la liste de ces organismes. Quand tu visites le site de ta banque, il vérifie le tampon : s'il est authentique et pas périmé, il affiche le petit cadenas. Sinon, il t'avertit que quelqu'un essaie peut-être de se faire passer pour ce site.

Où ce terme est utilisé

← Tout le glossaire