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 (souvent 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).
Structure d’un certificat ?
Les certificats sont des petits fichiers divisés en deux parties :
- La partie contenant les informations liées à l’entité et à la clef
- 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.
Signatures de certificats
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.
Types d’usages
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és asymétriques d’une longueur de 512 à 1 024 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 œuvre un certificat serveur et les équipements de communication utilisent un certificat particulier (généralement un certificat IPSec).