Certification X.509

Cadenas HTTPS

Dernière mise à jour de l'article : 07/01/2016.

For a few pixels more... Et pour quelques pixels de plus, oh ! trois fois rien : un tout petit cadenas. Et vous voilà partis pour de longues heures de discussion autour d'un bon apéro, à expliquer le processus à l'œuvre — probablement magique — qui se cache derrière ces quelques pixels supplémentaires sensés sécuriser vos transactions en ligne ; et permettre d'acquérir cette si charmante collection de cocottes en papier dont vous rêvez tant.

Cadenas HTTPS
Cadenas HTTPS

Cryptographie à clef publique

En cryptographie asymétrique, un message chiffré par une clef A n'est déchiffrable que par une clef B — et réciproquement. Si la clef A est précieusement gardée secrète, il s'agit d'une clef privée. Si la clef B est rendue publique, un message chiffré par la clef privée est déchiffrable par tous. Le message n'est donc pas confidentiel, mais on a l'assurance qu'il est bien émit par le détenteur de la clef privée. On dit que le message est signé. Par contre, un message chiffré avec la clef publique n'est déchiffrable que par le détenteur de la clef privée. La confidentialité du message est assurée, sans aucune certitude quant à son origine.

Sur la base de ce mécanisme, il est possible de concevoir des systèmes de communication sécurisés garantissant la confidentialité et l'intégrité du message ainsi que l'authenticité des entités impliquées.

Certificat électronique

Lorsqu'on souhaite initier une communication avec l'une de ces entités, il faut non-seulement disposer de sa clef publique mais également s'assurer de son authenticité. Dans le cadre d'une infrastructure à clef publique (public key infrastructure, ou PKI), deux principaux modèles existent. L'un, comme X.509, repose sur un système hiérarchique d'autorités de certification. L'autre, comme OpenPGP, repose sur un réseau de confiance entre les usagers. Avec X.509, la clef publique est accompagnée d'éléments identifiant l'entité concernée ainsi que de la signature numérique d'une autorité de certification garantissant son authenticité. Il s'agit d'un certificat d'identité numérique.

Sa valeur réside dans la confiance que l'on attribue à l'autorité de certification qui s'en porte garant. En fonction de sa réputation et du soin apporté à confirmer l'identité du requérant, obtenir un certificat émanant d'une autorité de certification reconnue peut coûter cher. Certaines autorités proposent néanmoins des certificats de moindre « qualité » à faible coût — voire gratuitement [1] — tandis que d'autres fonctionnent sur un modèle communautaire reposant sur une toile de confiance entre les usagers [2].

Certificat X.509
Certificat X.509

Pour obtenir un certificat d'identité numérique, il est donc nécessaire de soumettre une demande à une autorité de certification. La création de cette demande de certification (certificate signing request, ou CSR) nécessite quant à elle de disposer d'une clef privée. Si la démarche vous intéresse, je conseille la lecture du tutoriel relatif à la création d'une demande de certification.

Récapitulons

Pour obtenir un certificat signé par une autorité de certification, il faut commencer par se doter d'une clef privée. Il est primordial que cette clef reste secrète. Il est ensuite nécessaire de générer une demande de certification contenant une clef publique ainsi que plusieurs informations concernant son identité. Cette requête est alors soumise à une autorité de certification qui peut légitimement demander de prouver la véracité des informations transmises. Ceci fait, elle génère à son tour le certificat demandé et assure par sa signature son authenticité. Plus grand est l'effort déployé par l'autorité pour vérifier l'identité du requérant, plus grande est la valeur du certificat — et plus cher il coûte. Une fois le certificat en poche, à nous la conquête de l'univers !

L'algorithme de chiffrement asymétrique le plus couramment utilisé se nomme RSA. Il est mis en œuvre par le protocole TLS dont l'implémentation libre la plus répandue est OpenSSL.

Mais... à quoi ça sert ?

Lorsqu'on propose un accès sécurisé à un service en ligne, il est indispensable d'assurer la confidentialité de la communication entre le client et le serveur par le chiffrement. Pour cela, un certificat auto-signé peut suffir. Si l'on souhaite apporter un tant soit peu de garantie quant à l'identité du gestionnaire du service, il est coutumier de requérir aux services d'une autorité de certification reconnue. L'utilisation d'un certificat d'identité numérique est donc justifié pour l'usage d'un grand nombre de protocoles de communication de l'Internet. Surfer sur le web, échanger des fichiers, envoyer et recevoir des e-mails ou des messages instantanés, et bien plus encore, sont autant de pratiques ayant recourt aux certificats X.509 par leurs protocoles respectifs HTTPS, FTPS, POP3S, SMTPS, IMAPS, XMPP, etc.

À l'heure de la surveillance généralisée, autant dire qu'il s'agit d'une technologie indispensable qui devrait être systématique. Elle ne garantie la sécurité des données ni sur le poste client ni sur le serveur — pour cela, d'autres technologies existent — mais durant leur transfert de l'un à l'autre.

Sur Wikipédia

Voici la liste des articles afférents disponibles sur l'encyclopédie en ligne.

Cryptographie : https://fr.wikipedia.org/wiki/Cryptographie
Chiffrement : https://fr.wikipedia.org/wiki/Chiffrement
Cryptographie asymétrique : https://fr.wikipedia.org/wiki/Cryptographie_asymétrique
Signature numérique : https://fr.wikipedia.org/wiki/Signature_numérique
Infrastructure à clefs publiques : https://fr.wikipedia.org/wiki/Infrastructure_à_clés_publiques
X.509 : https://fr.wikipedia.org/wiki/X.509
Autorité de certification : https://fr.wikipedia.org/wiki/Autorité_de_certification
Certificat électronique : https://fr.wikipedia.org/wiki/Certificat_électronique
Certificate signing request (CSR) : https://en.wikipedia.org/wiki/Certificate_signing_request (anglais)
RSA : https://fr.wikipedia.org/wiki/Rivest_Shamir_Adleman
SSL/TLS : https://fr.wikipedia.org/wiki/Transport_Layer_Security
OpenSSL : https://fr.wikipedia.org/wiki/OpenSSL

 

1. Voir, par exemple, StartSSL : https://www.startssl.com.
2. Voir, par exemple, CAcert : https://www.cacert.org.

Article sous licence Creative Commons BY-SA 3.0 France.

Vus : 2306
Publié par Cyprien Pouzenc : 27