Public Key Infrastructure (PKI)

La PKI

Définition

L’utilisation massive de messages électroniques et l’expansion du commerce électronique est devenu une opération de plus en plus courante. En effet, les données qui transitent sur Internet, sont sujettes à diverses attaques comme l'attaque man in the middle lorsque les entités échangent leurs clefs publiques. Dans une petite structure, il pourrait être envisageable de générer sa paire de clefs localement et d’échanger les clefs publiques hors ligne (en main propre par exemple), mais cette solution est inimaginable pour une structure internationale. Dans ce cas de figure, une authentification automatique des clefs publiques est indispensable.

C’est dans ce contexte que la NIST (National Institute of Stantards and Technology) s’est vu imposer en 1994 la tâche d’étudier et de définir un standard afin de gérer l’authentification dans un environnement international. Ce projet avait pour but de permettre l’interopérabilité des différents systèmes électroniques opérant dans le commerce électronique. L’étude était porté sur la manière de générer les clefs, de les distribuer, d’obtenir les clefs publiques au moyen de certificats, et la publication des certificats obsolètes. L’étude visait à définir des recommandations techniques pour définir une architecture PKI au travers de divers composants.

A la même façon qu’un passeport ou d’une carte d’identité, la PKI va fournir une garantie d’identité numérique aux utilisateurs. Cette pièce d’identité numérique, appelée certificat numérique, contient la clef publique de l’utilisateur, mais également des informations personnelles sur l’utilisateur. Comme tout document formel, le certificat numérique est signé par l’autorité de certification et c’est cette signature qui lui donnera toute crédibilité aux yeux des utilisateurs. Le certificat numérique est largement publié, il n’a pas à être tenu secret, il est consultable via un annuaire.

Pour obtenir un certificat numérique, le client doit effectuer une requête auprès d’un organisme reconnu. Il transmet avec sa requête sa clef publique. L’organisme construit un certificat incorporant la clef publique du client, il signe le certificat à l’aide de sa clef privée. L’autorité de certification publiera le certificat signé comportant la clef publique et l’identité précise du propriétaire, quiconque consultera ce certificat aura l’assurance dans l’authenticité de la clef publique contenue dans celui-ci car il a confiance dans l’autorité de certification qui a délivré ce certificat.

La gestion des clefs

La gestion des clefs de l'infrastructure doit être rigoureuse. En effet, il a été démontré dans les faits qu'il est beaucoup plus facile de s'introduire dans un système et de se procurer illicitement les clefs plutôt que de casser un algorithme. Et le moment le plus propice pour espérer se procurer les clefs est sans conteste le moment où l’échange des clefs a lieu. C'est pourquoi, l'échange des clefs doit être fait avec la plus grande prudence car il représente le point de vulnérabilité de tout le système.

La gestion des clés proprement dite se compose des opérations suivantes :

Toutes ces étapes doivent être minutieusement effectuées et contrôlées pour que la PKI ne soit pas sujette à diverses attaques.

Les composants d'une PKI

Une PKI contient plusieurs composants principaux essentiels à son bon fonctionnement :

Dans le cadre des révocations de certificat, il subsiste un problème. En effet, les autorité de certification doivent constamment mettre à jour leurs listes de certificat en cours de validité et les utilisateurs doivent constamment interroger l'autorité de certification pour vérifier la validité d'un certificat. Si les demandes ne sont pas synchronisées, alors un certificat révoqué pourra être considéré comme valide. Pour contrer ce problème, les utilisateurs doivent disposer de la liste de révocation en temps réel, en vérifiant ces informations directement dans la base de données de la l'autorité de certification. Cette vérification est possible par l’intermédiaire d’un élément OCSP (Online Certificate Status Protocol) qui se chargera d’interroger l'autorité de certification sur la validité d’un certificat. Autrement dit, OCSP est considéré comme un répondeur afin de connaître les listes de révocation. C'est pourquoi, la liste de révocation de la PKI est le seul élément devant disposer d’un service d’annuaire obligatoirement connecté à Internet.

Un autre point important est la répartition des autorités des certifications. En effet, les autorités de certifications fonctionnent par une chaîne de confiance. Quelles seraient donc les conséquences si une chaîne venait à se briser. Toutes les autorités de certifications certifiées par l'autorité de certification supérieure seront donc remises en cause car elles n'auraient plus aucun moyen de pour prouver ses certificats car la communication entre ellses serait brisée (figure 1).

Pour parer à ce problème, il existe plusieurs modèles pour structurer les autorités de certifications:

Les politiques de la PKI

La politique d'une PKI se définit à deux niveaux:

Un exemple d'utilisation de la PKI

Voici un exemple qui illustre la demande de certification d'un utilisateur lambda dans une entreprise qui utilise le principe de la PKI :

L'utilisateur demande à l'autorité d'enregistrement, une demande de certificat. Lorsque l'autorité d'enregistrement reçoit la demande de l'utilisateur, il vérifie l'identité de l'utilisateur et valide sa demande s'il est apte à recevoir un certificat. Par la suite, il passe cette demande à l'autorité de certification qui va appliquer les procédures. Une fois que ces procédures sont faites, l'autorité de certification va générer une paire de clef. Dans notre exemple, le support du certificat est une carte à puce (d'autre cas d'utilisations comme une clef USB, la biométrie, etc. sont possibles). L'autorité de certification va signer un certificat contenant la clef publique de l'utilisateur avec sa clef privée. Par la suite, le certificat et la clef privée de l'utilisateur seront insérés dans la carte à puce. De plus, le certificat sera ajouté dans l'annuaire étant été signé par l'autorité de certification (la clef privée pourrait aussi être ajoutée dans l'annuaire dans le cadre du recouvrement de clef). La carte à puce sera remise à l'utilisateur.

Lorsque l'utilisateur voudra s'authentifier dans le système, il insèrera sa carte à puce dans un lecteur. Le lecteur générera un nombre aléatoire à chaque fois. Ce nombre aléatoire devra être le plus grand possible afin d'éviter les redondances. La carte chiffrera ce nombre aléatoire avec la clef privée qu'il contient. Ensuite, le système va vérifier les informations du certificat contenue dans la carte à puce afin de vérifier l'identité de l'utilisateur et du certificat (on pourra aussi ajouter des contrôles d'accès en fonction du certificat). Une fois que la vérification est faite, on déchiffre le nombre chiffré avec la clef publique. Si le nombre déchiffré est identique au nombre généré, alors l'authentification s'est bien déroulée (dans le cas de la biométrie, la clef privée de l'utilisateur est une partie de son corps: yeux, doigt, etc.).