Public Key Infrastructure (PKI)

Les concepts de base de la cryptographie

Introduction

L’art et la science de garder un secret sont appelés cryptographie. De nos jours, ce sont les mathématiciens et les physiciens qui étudient la cryptologie. Cette science est exploitée par les informaticiens pour des applications. Le but de la cryptographie est d'assurer les points suivants :

Ces exigeances doivent être assurées si l'on souhaite effectuer une communication sécurisée.

Il n’existe pas une méthode simple et sûre pour permettre de telles exigences, mais une multitude de techniques permettent, en les combinant, de satisfaire ces besoins de sécurité. Cependant, une sécurité absolue basée sur les théories mathématiques est impossible. En effet, tout secret peut être découvert. Il s'agit donc de déterminer quelles seraient les conséquences et les dégâts engendrés si le secret était amené à être découvert. A partir de cette analyse, il faut définir les degrés de sécurité et la complexité des algorithmes pour protéger ce secret. Plus la complexité de l'algorithme utilisé est grande, plus le temps pour casser cet algorithme sera long.

De manière générale, "Si le coût nécessaire pour casser un algorithme dépasse la valeur de l’information chiffrée, alors cet algorithme peut être considéré comme sûr."

De récentes découvertes en cryptographie quantique devraient permettre de repousser considérablement le problème, ceci en replaçant la cryptographie actuelle basée sur des concepts mathématiques, par une cryptographie basée quant à elle sur des propriétés physiques.

Les algorithmes dits Symétrique

Les algorithmes dits "symétrique" sont des algorithmes utilisant une seule clef, cette clef est appelée clef secrète. En général, cette clef secrète va jouer le rôle de clef de chiffrement et de déchiffrement. Une fois qu'un message sera chiffré à l'aide de la clef secrète, il pourra être envoyé sur un réseau non-sécurisé.

La faiblesse de cet algorithme est qu'il repose uniquement sur la non divulgation de cette clef secrète. Si la clef secrète est dévoilée, alors n'importe qui pourra consulter les messages chiffrés avec celle-ci. De plus, le transport de la clef secrète entre Alice et Bob reste problématique.

Il existe deux types d’algorithmes à clef secrète. Certains traitent le message en clair un bit à la fois, ceux ci sont appelés stream cipher pour algorithmes de chiffrement continu. D’autres opèrent sur le message en clair par groupe de bits. Ces groupes sont appelé blocs, ces algorithmes sont appelés block ciphers ou algorithme de chiffrement par bloc.

Les algorithmes dits Asymétrique

Les algorithmes dits "asymétrique" sont des algorithmes utilisant une paire clef : une clef publique et une clef privée. Dans ce cas, la clef de chiffrement est différente de la clef de déchiffrement. De plus, on ne peut retrouver une clef à partir de l'autre clef ce qui garantie l'unicité de la paire de clef.

Cette algorithme est aussi appelé "clef publique" car cette clef est rendue publique, n'importe qui possédant cette clef peut chiffrer un message (Alice). Dans ce cas, seule la personne possédant la clef privée pourra déchiffrer le message (Bob). Ceci permet de s'assurer que le message (d'Alice) pourra être lu uniquement par la personne possèdant la clef privée (Bob) . De plus, si le message est chiffré avec la clef privée, alors quiconque déchiffrera le message à l'aide de la clef publique sera certains que le message provient de la personne possédant la clef privée.

Cet algorithme semble beaucoup plus adapter que les algorithmes à clef secrète pour sécuriser les communications. Cependant, cette algorithme ne peut pas substituer les algorithmes à clef secrète essentiellement pour une raison: Les algorithmes à clef publique sont généralement beaucoup plus lents à traiter que les algorithmes à clef secrète. C'est pourquoi, nous allons définir le principe de clef de session.

La clef de session est un algorithme hybride, qui utilise l'algorithme asymétrique à clef publique pour la négociation d'une clef de session, autrement dit, une clef secrète commune qui sera utilisée pour établir une communication sécurisée. Par exemple, Alice souhaite transmettre une clef de session à Bob. Pour cela, Alice génère une clef de session aléatoirement puis chiffre cette clef de session avec la clef publique de Bob. Bob sera donc le seul à pouvoir déchiffrer le message d'Alice à l'aide de sa clef privée. Les deux protagonistes possèdent donc la clef de session. Ils pourront communiquer en toute sécurité à l'aide de cette dernière.

Néanmoins, cette méthode reste sensible à l'attaque nommé : man in the middle.

Lorsque Alice interroge la base de données pour connaître la clef publique de Bob, Charlie se positionne entre les deux tiers et intercepte la clef publique de Bob. Il intervertit cette clef avec la sienne et la transmet à Alice. Alice pense donc posséder la clef publique de Bob et chiffre la clef de session avec cette clef. Cependant, elle a chiffré la clef de session avec la clef publique de Charlie. Il ne reste donc plus à Charlie d' intercepter le message d'Alice et de le déchiffrer à l'aide de sa clef privée pour connaître la clef de session. Ensuite il chiffre la clef de session avec la clef publique de Bob et lui transmettra le message. Ainsi, sans qu'Alice ou Bob s'en rendent compte, Charlie possèdera lui aussi la clef de session. A chaque communication d'Alice et Bob, Charlie n'aura qu'à intercepter le message et de le déchiffrer à l'aide de la clef de session. Alice et Bob croiront communiquer de façon sûre alors que Charlie pourra en fait lire tous les messages, voire même forger de faux messages.

Cette attaque est possible car les clef publiques de Bob et d’Alice ne sont pas authentifiées, c’est à dire qu’il n’y a pas de lien entre l’identité physique de ces personnes et leur clef publiques.

L'authentification

Nous venons de monter qu'il est possible d'assurer la confidentialité des données, mais que cette confidentialité ne permet pas de vérifier l'identité de l'interlocuteur. En effet, un intrus peut se faire passer pour notre interlocuteur et donc usurper son identité comme nous venons de le démontrer dans l'attaque : Man in the middle. Pour faire face à ce genre d'attaque, il faut s'assurer de l'identité de la personne avec laquelle on souhaite communiquer.

Avant même de parler d'authentification, il faut définir la fonction de hachage qui permet cela. Une fonction de hachage permet de convertir une chaîne de caractères de longueur quelconque en une chaîne de caractères de taille fixe. Cette chaîne de caractère de taille fixe est appelé empreinte. La principale caractéristique d'une fonction de hachage est que pour une entrée donnée, la fonction doit fournir une unique empreinte. En effet, il est impossible d'obtenir une empreinte unique sachant que l'empreinte est de taille fixe. Cependant, une bonne implémentation d'une fonction de hachage tend à viser ce résultat. De plus, une fonction de hachage doit permettre le calcul rapide de l'empreinte mais doit permettre le calcul de l'entrée à l'aide de l'empreinte quasi impossible.

C'est à l'aide des fonctions de hachage que nous allons pouvoir définir l'authentification. Il existe des algorithmes symétriques et asymétriques pour assurer l’authentification:

Le scellement consiste à utiliser une fonction de hachage sur un message à l'aide d'une clef secrète. Le résultat obtenu est appelé un sceau. L'émetteur n'aura qu'à envoyer son message accompagné du sceau. Pour vérifier l'identité de l'émetteur, le récepteur n'aura qu'a comparer le sceau générer par l'émetteur et générer son propre sceau à l'aide de la même fonction de hachage et de la clef secrète. Si les deux sceaux sont identiques, alors l'identité de l'émetteur est vérifiée.

Chiffrer un document avec sa clef privée engendre une signature numérique du document, car seul le propriétaire de la clef privée a été capable de le chiffrer. La signature est infalsifiable car c’est la clef privée qui la générée au moment de la signature. La signature n’est pas réutilisable car elle fait partie intégrante du document. Le document est immuable car la moindre falsification sur le document provoquerait une erreur lors du déchiffrement de celui-ci. Cependant, au lieu de signer le document lui même, il est plus préférable de signer l'empreinte du document car elle est de taille fixe et comme les chances d’avoir deux documents différents ayant la même empreinte est très faible, signer l’empreinte est aussi fiable que de signer le document tout entier. Pour vérifier l'identité de l'émetteur, il suffit de calculer, à partir du document original, l'empreinte par la fonction de hachage et de déchiffrer la signature de l'émetteur avec sa clef publique. Si les deux empreintes sont identiques, alors nous avons vérifié l'identité de l'émetteur et par la même occasion l'intégrité du document.

Le tierce de confiance

De manière générale, un tiers de confiance est un organisme habilité à mettre en œuvre des certificats. Dans notre exemple d'Alice et Bob, au lieu de communiquer directement entre eux, Alice et Bob vont faire confiance à une tierce personne. Cette tierce personne va leur assurer que tous les messages qui transiteront par lui seront confidentiels, identifiés et immuables. Cependant, Alice et Bob devront lui faire entièrement confiance. Pour cela, ils devront par eux même vérifier l'identité de cette tierce personne.

Concernant les certificats, ils sont l'une des mises en oeuvre de la signature électronique. Il permettent d'authentifier l'émetteur d'un document, d'un message ou d'une transaction électronique. Il fait intervenir un tiers de confiance (nommé Autorité de Certification ou AC) qui, sur réception d'une demande de certificat, vérifie que la clef publique de l'émetteur correspond bien à son identité. Ensuite, l'AC crée un certificat (généralement au format X.509) contenant des informations d'identité sur l'émetteur et sur elle-même, puis signe ce certificat en condensant les informations qu'il contient et en les chiffrant à l'aide de sa clef privée. A la réception de ce certificat, l'entité voulant vérifier l'authenticité du certificat applique la clef publique de l'AC au condensé. Si le déchiffrement fonctionne, cela signifie que le certificat provient bien de l'AC. Il applique ensuite à la partie lisible du certificat le même algorithme de condensation et compare le résultat avec le condensé reçu. S'il y a identité, cela signifie que le certificat n'a pas été modifié en cours de transmission. Cette authentification de l'émetteur est complétée d'un traitement similaire appliqué au document ou au message, afin de garantir qu'il n'a pas été modifié non plus en cours de transmission.

Ceci nous amène aux Infrastructures de Gestion de Clefs (ICP) ou encore Public Key Infrastructure (PKI) qui est un ensemble de composants et de procédures humaines en vue de gérer le cycle de vie des certificats numériques.