Accueil🇫🇷Chercher

X.509

X.509 est une norme spécifiant les formats pour les certificats à clé publique, les listes de révocation de certificat, les attributs de certificat, et un algorithme de validation du chemin de certification, définie par l'Union internationale des télécommunications (UIT)[1]. X.509 établit entre autres un format standard de certificat électronique et un algorithme pour la validation de chemin de certification. X.509 fait également l'objet de nombreuses RFC de l'IETF.

X.509 a été créée en 1988 dans le cadre de la norme X.500[2]. Elle repose sur un système hiérarchique d'autorités de certification, à l'inverse des réseaux de confiance (telle la toile de confiance OpenPGP), où n'importe qui peut signer les certificats d'autrui.

Certificats

Dans le système X.509, une autorité de certification attribue un certificat liant une clé publique à un nom distinctif (Distinguished Name) dont le format est défini par la recommandation X.500, ou encore à un nom alternatif (Alternative Name) tel qu'une adresse électronique ou un enregistrement DNS.

Ce certificat place la signature d'une autorité de certification dans le dernier champ. Concrètement cette signature est réalisée par un condensat de tous les champs précédents du certificat et un chiffrement de ce condensat par la clé privée de l'autorité de certification. N'importe qui possédant la clé publique de cette autorité de certification peut déchiffrer le condensat et le comparer au calcul de son propre condensat du certificat. Si les deux condensats sont identiques cela garantit que le certificat est intègre, il n'a pas été modifié. Le certificat de l'autorité de certification qui contient sa clé publique peut à son tour être signé par un autre certificat de plus haut niveau, formant ainsi une chaîne. Tout en haut de la chaîne on trouve les certificats les plus importants : les certificats racines.

Les certificats racines sont des clés publiques non signées, ou auto-signées, dans lesquelles repose la confiance. Les logiciels, comme les navigateurs web ou les clients de messagerie détiennent des certificats racines de nombreuses autorités de certification commerciales ou gouvernementales. Quand un navigateur ouvre une connexion sécurisée (TLS/SSL) vers un site possédant un certificat émis par une autorité connue, il considère le site comme sûr dans la mesure où le chemin de certification est validé. Le passage en mode sécurisé est alors transparent.

Si le logiciel (navigateur ou autre) ne connaît pas l'autorité de certification (certificat généré et auto-signé par un particulier ou autorité de certification pas encore connue ou volontairement retirée de liste des autorités acceptées), le navigateur propose d'examiner le certificat, puis de l'accepter ou de le refuser selon la confiance qu'on lui accorde.

X.509 peut être utilisé avec S/MIME, TLS/SSL, SET et IPsec.

Structure d'un certificat

La définition originelle est disponible dans la RFC 2459[3] (section 4) ou dans la dernière version (RFC 5280[4]), qui contient une spécialisation de X.509 pour les applications Internet. La partie authentifiée contient les champs suivants :

  • Version
  • NumĂ©ro de sĂ©rie
  • Algorithme de signature du certificat
  • DN (Distinguished Name) du dĂ©livreur (autoritĂ© de certification)
  • ValiditĂ© (dates limites)
    • Pas avant
    • Pas après
  • DN de l'objet du certificat
  • Informations sur la clĂ© publique
    • Algorithme de la clĂ© publique
    • ClĂ© publique proprement dite
  • Identifiant unique du signataire (optionnel, X.509v2)
  • Identifiant unique du dĂ©tenteur du certificat (optionnel, X.509v2)
  • Extensions (optionnel, Ă  partir de X.509v3)
    • Liste des extensions
  • Signature des informations ci-dessus par l'autoritĂ© de certification

Les noms de l'émetteur (également signataire) comme du titulaire sont des noms X.501, que l'on retrouve également dans les annuaires ISO et LDAP. Le contenu ci-dessus est suivi par une répétition de l'algorithme de signature et de la signature proprement dite.

Rien parmi les champs obligatoires ne permet de distinguer une autorité de certification (une organisation émettrice de certificats) d'un simple titulaire. L'extension basicConstraints définie dans X.509 version 3 comble cette limitation. Une autre imperfection du même type est que seul le nom permet de lier un certificat à celui de son émetteur alors que l'on ne peut pas garantir l'unicité des noms.

Extensions à la norme et usage spécifique d’un certificat

La RFC 5280 dĂ©finit une somme d’extensions indiquant l’usage auquel est destinĂ© le certificat. Voici les extensions les plus communes :

  • Basic Constraints, sont utilisĂ©es pour indiquer si le certificat est celui d’une autoritĂ© de certification.
  • KeyUsage, spĂ©cifie les usages cryptographiques possibles Ă  l’aide de la clĂ© publique du certificat; par exemple la clĂ© publique peut ĂŞtre utilisĂ©e pour des signatures cryptographiques mais pas pour chiffrer des donnĂ©es.
  • Extended Key Usage, est gĂ©nĂ©ralement utilisĂ© pour les certificats en bout de chaĂ®ne (certificat feuille), et indique les fonctionnalitĂ©s qu’offre la clĂ© publique. Il contient une liste d’objets permettant chacun une fonctionnalitĂ© particulière de la clĂ©. Par exemple l’objet { id-pkix 3 1 } indique que la clĂ© peut ĂŞtre utilisĂ©e pour chiffrer une session SSL/TLS ; {id-pkix 3 4 } indique que la clĂ© peut ĂŞtre utilisĂ©e pour chiffrer des emails.

De façon générale, si un certificat possède plusieurs extensions contraignant son usage, toutes les conditions doivent être remplies pour que l’usage soit approprié. La RFC 5280 donne l’exemple spécifique d’un certificat contenant à la fois keyUsage et extendedKeyUsage, dans ce cas les 2 contraintes doivent être satisfaites pour que le certificat puisse être utilisé conformément aux usages prévus.

Noms de fichiers pour les certificats

Voici les extensions communes des certificats au format X.509 :

  • .pem– (Privacy-enhancedElectronic Mail) certificat DER encodĂ© en Base64, encadrĂ© par les mentions "-----BEGIN CERTIFICATE-----" et "-----END CERTIFICATE-----"
  • .cer, .crt, .der– certificat DER au format binaire
  • .p7b,.p7c– PKCS#7, contient plusieurs certificats ou CRL(s)
  • .p12– PKCS#12, contient un bloc clĂ© privĂ©e et certificat (protĂ©gĂ© par mot de passe)
  • .pfx– PFX, prĂ©dĂ©cesseur de PKCS#12, contient Ă©galement un bloc clĂ© privĂ©e et certificat

Certification en chaîne

Une chaĂ®ne de certificats est une liste de certificats (commençant par une entitĂ© Ă  certifier comme un serveur) comprenant une ou plusieurs autoritĂ©s de certifications (la dernière Ă©tant signĂ©e par elle-mĂŞme), ayant les propriĂ©tĂ©s suivantes :

  1. Le signataire de chaque certificat (sauf le dernier) est l’autorité qui lui succède dans la chaîne
  2. Chaque certificat (excepté le dernier) a été signé par la clé privée de l’autorité suivante dans la chaîne (la signature d’un certificat peut être vérifiée à l’aide de la clé publique de l’autorité)
  3. Le dernier certificat de la liste est le point d’entrée de la chaîne de confiance, considéré comme délivré de manière légitime

Les chaînes de certificat sont utilisées pour s’assurer que la clé publique et les données du certificat (le 1er de la chaîne) correspondent bien au possesseur de celui-ci. Pour s’en assurer, la signature numérique est vérifiée à l’aide de la clé publique de l’entité suivante dans la chaîne, elle-même vérifiée par la clé publique de l’entité suivante jusqu’à arriver à la dernière entité de la chaîne. Comme le dernier certificat est considéré comme étant de confiance, remonter jusqu’à celui-ci revient finalement à authentifier le 1er certificat.

Liste de révocation

Un certificat peut devenir invalide pour de nombreuses raisons telles que l'expiration naturelle (dépassement de la date de validité), la perte ou la compromission de la clé privée associée au certificat, le changement d'au moins un champ inclus dans le nom du titulaire / détenteur du certificat et cas extrême la perte ou la compromission de la clé privée de l'autorité de certification ayant signé le certificat en question.

C'est pourquoi la norme définit le format d'une liste indiquant les certificats devenus invalides pour une autorité de certification donnée. Cette liste est signée par l'autorité de certification pour en empêcher toute modification par une personne non autorisée.

Elle comprend une date d'émission, une date de mise à jour (toutes deux optionnelles) et la liste proprement dite sous la forme de paires (numéro de série du certificat révoqué ; motif éventuel de révocation). Le motif ne peut être présent que dans les CRL au format version 2.

Une limitation parfois gênante des CRL est le délai de propagation des informations de révocation. Pour le réduire, le protocole OCSP de validation de certificat a été développé. Défini initialement dans la RFC 2560[5] puis de nouveau dans la RFC 6960[6], ce protocole donne à peu près les mêmes informations que les CRL, mais potentiellement plus à jour.

Sécurité

À la suite de la publication d'une attaque de recherche de collisions complètes contre MD5 en 2004[7], Arjen Lenstra, Wang Xiaoyun et Benne de Weger s'intéressèrent au X.509 utilisant MD5 pour l'authentification du certificat. Leur attaque a permis de forger deux certificats avec des signatures identiques.
L'utilisation de la fonction de hachage cryptographique SHA-1 ne résout que partiellement le problème car une attaque similaire est possible en théorie, même si la complexité de la recherche de collisions sur SHA-1 est bien plus grande que sur MD5.

Notes et références

Voir aussi

Articles connexes

Liens externes

Solutions :

Autorités de certification :

Outils (gratuits) :

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.