Les algorithmes de chiffrement asymétrique sont basés sur le partage entre
les différents utilisateurs d'une clé publique. Généralement le partage de cette clé
se fait au travers d'un annuaire électronique (généralement au format
LDAP) ou bien d'un site web.
Toutefois ce mode de partage a une grande lacune : rien ne garantit
que la clé est bien celle de l'utilisateur a qui elle est associée. En
effet un pirate peut corrompre la clé publique présente dans l'annuaire en la remplaçant par
sa clé publique. Ainsi, le pirate sera en mesure de déchiffrer tous les messages
ayant été chiffrés avec la clé présente dans l'annuaire.
Ainsi un certificat permet d'associer une clé publique à une entité
(une personne, une machine, ...) afin d'en assurer la validité. Le certificat est en quelque
sorte la carte d'identité de la clé publique, délivré par un organisme appelé autorité de certification (souvent notée CA pour Certification Authority).
L'autorité de certification est chargée de délivrer les certificats, de leur assigner une date
de validité (équivalent à la date limite de péremption des produits alimentaires), ainsi que de révoquer
éventuellement des certificats avant cette date en cas de compromission de la clé (ou du propriétaire).
Les certificats sont des petits fichiers divisés en deux parties :
- La partie contenant les informations
- La partie contenant la signature de l'autorité de certification
La structure des certificats est normalisée par le standard X.509 de l'UIT (plus exactement X.509v3),
qui définit les informations contenues dans le certificat :
- La version de X.509 à laquelle le certificat correspond ;
- Le numéro de série du certificat ;
- L'algorithme de chiffrement utilisé pour signer le certificat ;
- Le nom (DN, pour Distinguished Name) de l'autorité de certification émettrice ;
- La date de début de validité du certificat ;
- La date de fin de validité du certificat ;
- L'objet de l'utilisation de la clé publique ;
- La clé publique du propriétaire du certificat ;
- La signature de l'émetteur du certificat (thumbprint).
L'ensemble de ces informations (informations + clé publique du demandeur)
est signé par l'autorité de certification, cela
signifie qu'une fonction de hachage crée une empreinte de ces informations, puis ce condensé
est chiffré à l'aide de la clé privée de l'autorité de certification; la clé publique ayant été
préalablement largement diffusée afin de permettre aux utilisateurs de
vérifier la signature avec la clé publique de l'autorité de certification.
Lorsqu'un utilisateur désire communiquer avec une autre personne, il
lui suffit de se procurer le certificat du destinataire. Ce certificat contient le nom du destinataire, ainsi
que sa clé publique et est signé par l'autorité
de certification. Il est donc possible de vérifier la validité du message en appliquant d'une part la fonction
de hachage aux informations contenues dans le certificat, en déchiffrant d'autre part la signature de l'autorité
de certification avec la clé publique de cette dernière et en comparant ces deux résultats.
On distingue différents types de certificats selon le niveau de signature :
- Les certificats auto-signés sont des certificats à usage interne.
Signés par un serveur local, ce type de certificat permet de garantir la confidentialité
des échanges au sein d'une organisation, par exemple pour le besoin d'un intranet.
Il est ainsi possible d'effectuer une authentification des utilisateurs grâce à
des certificats auto-signés.
- Les certificats signés par un organisme de certification sont
nécessaires lorsqu'il s'agit d'assurer la sécurité des échanges
avec des utilisateurs anonymes, par exemple dans le cas d'un site web sécurisé accessible
au grand public. Le certificateur tiers permet d'assurer à l'utilisateur que le certificat
appartient bien à l'organisation à laquelle il est déclaré
appartenir.
Les certificats servent principalement dans trois types de contextes :
- Le certificat client, stocké sur le poste de travail de l'utilisateur
ou embarqué dans un conteneur tel qu'une carte à puce, permet d'identifier
un utilisateur et de lui associer des droits. Dans la plupart des scénarios il est
transmis au serveur lors d'une connexion, qui affecte des droits en fonction de l'accréditation
de l'utilisateur. Il s'agit d'une véritable carte d'identité numérique utilisant
une paire de clé asymétrique d'une longueur de 512 à 1024 bits.
- Le certificat serveur installé sur un serveur web permet d'assurer le lien
entre le service et le propriétaire du service. Dans le cas d'un site web, il permet
de garantir que l'URL et en particulier le domaine de la page
web appartiennent bien à telle ou telle entreprise. Par ailleurs il permet
de sécuriser les transactions avec les utilisateurs grâce au protocole SSL.
- Le certificat VPN est un type de certificat installé dans les équipement
réseaux, permettant de chiffrer les flux de communication de bout en bout entre
deux points (par exemple deux sites d'une entreprise). Dans ce type de scénario, les utilisateurs
possèdent un certificat client, les serveurs mettent en oeuvre un certificat serveur
et les équipements de communication utilisent un certificat particulier (généralement
un certificat IPSec.
|