Les techniques utilisées en cryptographie ont évoluées, passant de procédés gardés secrets à des algorithmes mathématiques connus utilisant des paramètres secrets que l'on a nommés « clés ».
Actuellement, la cryptographie classique (dite symétrique ou à clé secrète) repose sur ce principe.
Pour chiffrer un message, on utilise un algorithme répertorié ou correspondant à un standard s'appuyant sur un paramètre secret, la clé, qui est un nombre connu des différents interlocuteurs. Il est relativement facile de construire de tels algorithmes et seuls les besoins d'interopérabilité des systèmes de cryptographie limitent leur nombre.
Il existe deux systèmes de chiffrement :
- le chiffrement symétrique,
- le chiffrement asymétrique.
Ils reposent sur le partage entre deux interlocuteurs en communication, d'une même clé secrète S qui sert à paramétrer un algorithme à la fois pour le chiffrement d'un message et pour son déchiffrement. La clé S doit faire l'objet d'un échange physique préalablement à toute communication.
Pour le stockage de messages chiffrés, le principe reste le même avec un seul interlocuteur.
Cette clé prend en général la forme d'un ensemble de bits de taille limitée.
En général, la clé secrète commune S n'est pas utilisée directement pour chiffrer les messages, mais pour chiffrer une autre clé K qui est un nombre tiré au hasard par l'émetteur à chaque session et qui sert comme clé secrète pour chiffrer les messages. Cette clé K chiffrée est envoyée en début de session ou de message ou, dans le cas de stockage, conservée avec le message.
Exemple : Alice et Bob souhaitent communiquer de façon sécurisée. Ils ont besoin de se mettre d’accord sur l’algorithme de calcul utilisé pour chiffrer et déchiffrer les données. Ils ont alors besoin d’une clé commune : la clé secrète. Ils utilisent la même clé pour chiffrer et déchiffrer.
Figure 31 : Chiffrement symétrique
Le code de César est la méthode de cryptographie la plus ancienne communément admise par l'histoire. Il consiste en une substitution mono alphabétique, où la substitution est définie par un décalage de lettres. Par exemple, si on remplace A par D, on remplace B par E, C par F, D par G, etc…
Il n'y a que 26 façons différentes de chiffrer un message avec le code de César. Cela en fait donc un code très peu sûr, puisqu'il est très facile de tester de façon exhaustive toutes les possibilités. Pourtant, en raison de sa grande simplicité, le code de César fut encore employé par les officiers sudistes pendant la guerre de Sécession, et même par l'armée russe en 1915.
Blaise de Vigenère, né en 1523, fut l'initiateur d'une nouvelle façon de chiffrer les messages qui domina 3 siècles durant.
Blaise de Vigenère était diplomate au service des ducs de Nevers et des rois de France. C'est en 1586 qu'il publie son « Traité des chiffres ou Secrètes manières d'écrire » qui explique son nouveau chiffre.
L'idée de Vigenère était d'utiliser un chiffre de César, mais où le décalage utilisé change de lettres en lettres. Pour cela, on utilise une table composée de 26 alphabets, écrits dans l'ordre, mais décalés de ligne en ligne d'un caractère. On écrit encore en haut un alphabet complet, pour la clé, et à gauche, verticalement, un dernier alphabet, pour le texte à coder soit :
Figure 32 : Le chiffre de Vigenère
Pour coder un message, on choisit une clé qui sera un mot de longueur arbitraire. On écrit ensuite cette clé sous le message à coder, en la répétant aussi souvent que nécessaire pour que sous chaque lettre du message à coder, on trouve une lettre de la clé. Pour coder, on regarde dans le tableau l'intersection de la ligne de la lettre à coder avec la colonne de la lettre de la clé.
Il existe un algorithme de chiffrement parfaitement sûr (il est d'ailleurs unique, comme l'a prouvé Shannon en 1949). Cet algorithme est tellement sûr qu’il est utilisé pour les communications au plus haut niveau : le téléphone rouge entre Moscou et Washington est codé grâce à lui. Cet algorithme a été mis au point par Gilbert Vernam en 1917, et est simplement un chiffre de Vigenère, mais où la clé est de la taille du message à envoyer, et où les lettres de cette clé sont choisies totalement aléatoirement. Si la clé ne sert qu'une fois (chiffre à usage unique), ce système est absolument sûr : il n'y a aucune corrélation entre le message de départ et sa version codée.
Les inconvénients de ce mode de chiffrement sont la génération et le transport des clés. Cette clé doit être parfaitement aléatoire, et sa longueur est énorme.... tout cela pour une seule utilisation!
Les cryptoanalystes ont donc été conduit à approcher ce mode de fonctionnement. A partir de clés de tailles rédigées (par exemple, codées sur 128 bits, ce qui est très peu par rapport à la longueur du message, typiquement, plusieurs milliards de bits). A partir de cette clé et du texte à coder qu'on découpe en blocs, on effectue des transformations toujours réversibles, mais suffisamment compliquées pour que le texte obtenu donne l'impression d'être aléatoire.
Les États-Unis, dans les années 1970, ont tenté d'imposer un algorithme, unique, baptisé DES (Data Encryption Standard), en insistant sur les problèmes d'interopérabilité et aussi de sécurité et d'économie. Pour cela, le département du Commerce a fait réaliser par la Société IBM un algorithme qui devait être publié, de manière à permettre son évaluation par tous, et qui devait être libre de tous droits d'usage. Plus de vingt ans après, la seule faiblesse révélée de cet algorithme est la longueur de la clé (56 bits), jugée trop courte pour les moyens de calcul actuels.
Même si le DES n'a jamais obtenu le statut de norme internationale, essentiellement pour des raisons politiques car certains États s'opposaient alors à la prolifération de dispositifs cryptographiques, il a été pendant des années l'algorithme employé de façon systématique dans le domaine commercial et reste aujourd'hui le plus employé. Il a quelques concurrents, essentiellement dans le domaine des produits logiciels, comme le RC4 ou IDEA, qui sont mieux adaptés à des implantations logicielles. Les applications gouvernementales utilisent pour des raisons de sécurité des algorithmes non publiés ; il en va de même dans le domaine des télécommunications où les opérateurs ont en général préféré définir leurs propres normes[2].
La clé du DES est une chaîne de 64 bits (succession de 0 et de 1), mais en fait seuls 56 bits servent réellement à définir la clé. Les bits 8, 16, 24, 32, 40, 48, 56 et 64 sont des bits de parité (c'est-à-dire bits de détection d'erreur). Le 8ème bit est calculé de sorte que sur les 8 premiers bits, il y ait un nombre impair de 1. Par exemple, si les 7 premiers bits sont 1010001, le 8ème bit est 0. Ceci permet d'éviter les erreurs de transmission.
Il y a donc pour le DES 256 clés possibles, soit environ 72 millions de milliards possibilités.
Les grandes lignes de l'algorithme sont :
- Phase 1 : Préparation - Diversification de la clé :
o Le texte est découpé en blocs de 64 bits.
o On diversifie aussi la clé K, c'est-à-dire qu'on fabrique à partir de K 16 sous-clés K1,...,K16 à 48 bits. Les Ki sont composés de 48 bits de K, pris dans un certain ordre.
- Phase 2 : Permutation initiale :
o
Pour chaque bloc de 64 bits x du texte, on calcule
une permutation finie y=P(x).
y est représenté sous la forme y=G0D0, G0
étant les 32 bits à gauche de y, D0 les 32 bits à droite.
- Phase 3 : Itération :
o On applique 16 rondes d'une même fonction. A partir de Gi-1Di-1 (pour i allant de 1 à 16), on calcule GiDi en posant :
§ Gi=Di-1.
§ Di-1=Gi-1 XOR f(Di-1,Ki) : XOR est le OU exclusif bit à bit, et f est une fonction de confusion, suite de substitutions et de permutations.
- Phase 4 : Permutation finale :
o On applique à G16D16 l'inverse de la permutation initiale.
o Z=P-1(G16D16) est le bloc de 64 bits chiffré à partir de x.
Cet algorithme peut être représenté par le schéma ci après :
Figure 33 : Schéma de l'algorithme DES
L’algorithme DES a régulièrement fait l'objet de polémiques. A l’examen approfondi de celui-ci on constate que toute sa sécurité repose sur la fonction de confusion f, et en particulier à l'intérieur de celle-ci sur des tableaux d'entiers compris entre 0 et 15, aux valeurs mystérieuses. Certains ont affirmé que la NSA, qui a finalisé l'algorithme, a placé dans ces boîtes S des trappes qui lui permettaient de tout décrypter, tout en affirmant que l'algorithme est sûr. Rien n'a toutefois objectivement étayé cette assertion. En particulier, l’algorithme DES a toujours résisté aux travaux des cryptoanalystes non basés sur la force brute.
L’arrêt de mort de l’algorithme DES a été en revanche signé avec l’extraordinaire progression de la puissance des ordinateurs, leur mise en réseau et l’application d’un procédé, connu sous le nom d' « attaque par force brute », utilisé pour retrouver le contenu des communications et qui consiste à essayer toutes les clés possibles[3]. Leur nombre dépend de la taille de ces clés : pour une clé de n bits, il y a 2n clés possibles ; la complexité d'un produit est donc bornée par la taille de cet ensemble. Le 17 juin 1997, le DES est cassé en 3 semaines par une fédération de petites machines sur Internet. Et on estime très officiellement (dans un rapport présenté au Sénat Américain) à cette date à quelques secondes le temps nécessaire à un Etat pour percer les secrets d'un message chiffré avec le DES.
Face à la faiblesse de l’algorithme DES, la solution a semblé être dans un premier temps l'adoption de l’algorithme surnommé triple DES, algorithme consistant en trois applications de l’algorithme DES à la suite les uns des autres avec 2 clés différentes (d'où une longueur de clé de 2*56 = 112 bits) ou 3 clés différentes (d’où une longueur de clé de 3*56=168 bits). Les deux schémas suivants illustrent les deux implémentations possibles de l’algorithme triple-DES :
Figure 34 : Schéma de l'algorithme Triple – DES – 112 bits
Figure 35 : Schéma de l'algorithme Triple – DES – 168 bits
Si l’algorithme triple DES est largement suffisant à l'heure actuelle en terme de chiffrement d’informations, il est par contre trois fois plus lent que le DES. C'est pourquoi, en janvier 1997, le NIST (National Institute of Standards and Technologies) a lancé un nouvel appel d’offres pour créer un successeur au DES : l’AES (Advanced Encryption System).
Le cahier des charges de l’algorithme AES comportait les points suivants :
- évidemment, une grande sécurité ;
- une large portabilité : l'algorithme devant remplacer le DES, il est destiné à servir aussi bien dans les cartes à puces, aux processeurs 8 bits peu puissants, que dans des processeurs spécialisés pour chiffrer des milliers de télécommunications à la volée ;
- la rapidité ;
- une lecture facile de l'algorithme, puisqu'il est destiné à être rendu public ;
- un chiffrement par blocs de 128 bits, les clés comportant 128,192 ou 256 bits.
En réponse à cet appel d’offre, 21 projets ont été déposés. Certains sont l'oeuvre d'entreprises (IBM), d'autres regroupent des universitaires (CNRS), les derniers sont écrits par à peine quelques personnes. Après deux ans d’évaluation, l’algorithme surnommé Rijndael des noms de ses inventeurs Vincent Rijmen et Joan Daemen est finalement choisi.
Le chiffrement symétrique des données, s’il présente l’avantage d’être rapide, présente néanmoins un certain nombre d’inconvénients :
- le nombre de clés secrètes à posséder augmente de façon exponentielle en fonction du nombre d’interlocuteurs ;
- le changement de clé doit être fréquent de manière à éviter une compromission de clés ;
- un mécanisme d’échange de clés de façon sécurisée doit être mis en place.
La cryptologie asymétrique, encore appelée cryptologie à clé publique s’est attachée à résoudre le problème de la procédure à suivre pour s’accorder initialement sur une clé secrète partagée en chiffrement symétrique. Cette question qui pose peu de problèmes dans le cadre d’applications restreintes à de petits réseaux reliant peu de participants devient fondamentale dans celui de grands réseaux ouverts à l’image d’Internet.
Son principe fondamental est de donner à chaque utilisateur deux clés associées, l’une secrète et l’autre rendue publique.
Afin de chiffrer un message à l’intention d’un utilisateur, l’idée consiste à utiliser la clé publique du destinataire alors que le déchiffrement nécessite la connaissance de la clé privée. Ce concept naturel permet de communiquer de manière confidentielle sans avoir à partager la moindre information secrète initialement.
Les mécanismes permettant la réalisation d’une telle asymétrie se fondent sur l’utilisation d’opérations mathématiques que l’on ne sait pas inverser efficacement d’un point de vue algorithmique.
Exemple : Bob et Alice souhaitent communiquer de façon sécurisée via un chiffrement asymétrique. Les deux interlocuteurs doivent posséder une paire de clés (bi-clé clé publique/clé privée) et le destinataire du message doit posséder la clé publique de l’émetteur.
Figure 36 : Chiffrement asymétrique
La cryptologie asymétrique permet notamment :
- d’assurer l’authentification de l’émetteur,
- d’assurer la confidentialité des données.
Exemple 1 : Authentification de l’expéditeur
Bob veut être certain que l’expéditeur du message est bien Alice. Alice chiffrant le message avec sa clé privée, Bob est certain de l’expéditeur s’il arrive bien à déchiffrer le message avec la clé publique d’Alice.
Figure 37 : Authentification de l’émetteur par chiffrement à clé publique
Exemple 2 : confidentialité des données
Alice veut envoyer des données confidentielles à Bob et veut s’assurer que seul Bob pourra lire les données. Elle chiffre alors les informations à transmettre avec la clé publique de Bob qui sera le seul à pouvoir les déchiffrer à l’aide de sa clé privée.
Figure 38 : Confidentialité des données par chiffrement à clé publique
En 1976, Whitfield Diffie et Martin Hellman ont été les premiers à formaliser les concepts de la cryptographie asymétrique et à proposer un algorithme permettant l’échange d’une clé secrète sur un lien non sécurisé.
Illustrons le principe de fonctionnement de l’algorithme de Diffie-Hellman à l’aide d’un exemple d’envoi de message chiffré entre Alice et Bob :
- Phase 1 : Alice et Bob partagent deux nombres premiers p et g avec p>g ;
Figure 39 : Algorithme de Diffie-Hellman - Phase 1
- Phase 2 : Alice et Bob créent chacun un nombre secret : YA et YB basés sur p, g et sur deux nombres choisis aléatoirement Xa et Xb ;
- Phase 3 : Alice et Bob s’échange les deux nombres YA et YB ;
Figure 40 : Algorithme de Diffie-Hellman - Phase 2
- Phase 4 : Alice et Bob calcule la clé de session Z basée sur YA et YB : cette clé Z servira de clé secrète pour chiffrer et déchiffrer les données dans le cadre de la mise en œuvre d’un algorithme symétrique ;
Figure 41 : Algorithme de Diffie-Hellman - Calcul de la clé secrète
Le premier cryptosystème asymétrique, RSA, a été proposé en 1978 par Ronald Rivest, Adi Shamir et Leonard Adleman. Il repose sur la difficulté d’un problème proche de celui de la factorisation.
Déchiffrer un message codé avec RSA sans connaître la clé secrète correspondante nécessite d’être capable de résoudre un problème très difficile. Les connaissances actuelles en théorie algorithmique des nombres ne permettant pas de réaliser une telle opération, même en disposant d’une très importante puissance de calcul, une telle hypothèse apparaît bien improbable, d’où une forme de preuve de sécurité ramenant le problème de l’attaque contre une système de chiffrement à un problème mathématique bien défini et étudié. On ne peut cependant pas parler de sécurité inconditionnelle car rien n’exclut que d’importants progrès mathématiques ou matériels ne viennent à bout d’un problème actuellement réputé insoluble. La solidité de l’algorithme RSA tient notamment dans la longueur de la clé publique (on considère qu’a l’heure actuelle un chiffrement à l’aide d’un algorithme RSA basé sur une clé publique de 1024 bits est inviolable. On raconte qu’une armée d'un milliard d'ordinateurs opérant un milliard de calculs à la seconde n'en viendrait à bout avant la fin de l'univers !).
Reprenons l’exemple d’un échange de message entre Alice et Bob chiffré en utilisant l’algorithme RSA pour mieux comprendre le fonctionnement de cet algorithme.
Si Bob souhaite recevoir des messages chiffrés en utilisant l’algorithme RSA, il procède de la façon suivante :
- Phase 1 : Création des clés : Bob crée 4 nombres p, q, e et d :
ð p et q sont deux grands nombres premiers distincts. Leur génération se fait au hasard, en utilisant un algorithme de test de primalité probabiliste. Le produit de ces deux nombres est noté n ;
ð e est un entier premier avec le produit (p-1)(q-1) ;
ð d est tel que ed=1 modulo (p-1)(q-1) c'est-à-dire que ed-1 est un multiple de (p-1)(q-1).
- Phase 2 : Distribution des clés : Le couple (n, e) constitue la clé publique de Bob qu’il rend disponible à tous. Le couple (n, d) constitue sa clé privée. Bob garde celle-ci secrète.
- Phase 3 : Envoi du message codé : Alice veut envoyer un message chiffré à Bob. Elle le représente sous la forme d'un ou plusieurs entiers M compris entre 0 et n-1. Alice possède la clé publique (n, e) de Bob. Elle calcule C=Me mod n. C'est ce dernier nombre qu'elle envoie à Bob.
- Phase 4 : Réception du message codé : lorsque Bob reçoit C, il calcule à l’aide de sa clé privée D=Cd (mod n). D'après un théorème du mathématicien Euler, D=Mde=M (mod n). Il a donc reconstitué le message initial.
Comme les algorithmes à clé publique sont lents à exécuter, on chiffre toujours les messages avec des algorithmes à clé symétrique, et on utilise le dispositif à clé asymétrique pour chiffrer la clé de session générée aléatoirement, comme dans le cas des systèmes à clé secrète.
Une fonction de hachage est une fonction qui calcule à partir d’une large chaîne de caractères une chaîne de caractère réduite. Le résultat est dénommé un « digest » ou « empreinte ». Une fonction de hachage permet de représenter les données de façon certaine tout en réduisant la taille utile qui sera réellement chiffrée.
Ce type de fonction ne doit pas être réversible (il doit être impossible de retrouver le message original à partir de l’empreinte ; on parle de fonction à sens unique) et l’algorithme utilisé doit présenter un taux de collision très faible (il doit être extrêmement improbable de trouver deux messages aléatoires M et M’ tels que les résultats du hachage des deux messages soient identiques). Le fonctionnement d’une fonction de hachage peut être résumée par le schéma ci-dessous :
Figure 42 : Fonction de Hachage
Les algorithmes de hachage les plus utilisés sont :
- MD4 et MD5 (Message Digest version 4 et 5) qui furent développées par Ron Rivest. MD5 produit des hachés de 128 bits en travaillant les données originales par blocs de 512 bits.
- SHA-1 (Secure Hash Algorithm, Algorithme de Hachage Sécurisé version 1), comme MD5, est basé sur MD4. Il fonctionne également à partir de blocs de 512 bits de données et produit par contre des condensés de 160 bits en sortie.
- SHA-2 (Secure Hash Algorithm 2) a été publié récemment et est destiné à remplacer SHA-1. Les différences principales résident dans les tailles de hachés possibles : 256, 384 ou 512 bits. Il sera bientôt la nouvelle référence en termes de fonction de hachage.
On peut se demander pourquoi il existe plusieurs tailles de condensés ou encore pourquoi celle-ci est fixe. Il faut garder à l'esprit le but ultime d'un haché qui est d'être le plus court possible, tout en gardant ses propriétés.
Prenons l’exemple d’un haché H, qui présente une longueur de n bits. Nous pouvons d'ores et déjà déduire qu'il n'existe que 2n hachés de ce type possibles (puisque chaque bit n'a que 2 valeurs possibles, 0 ou 1). Face à l’infinité de textes ou données initiaux (dont la taille, elle, n'est pas fixée), la probabilité de produire un haché qui corresponde à un autre texte original (ou à plusieurs) n’est pas nulle : il s’agit de la mise en évidence du phénomène de collision ou l’on assiste à la perte de la propriété principale d'un condensé, l'unicité.
Le théorème des anniversaires prouve qu'il faut 2n-1 essais pour trouver une collision au hasard. C'est le chiffre qui sera utilisé pour évaluer la force d'une fonction de hachage. Il ne faut cependant pas négliger le fait que la collision citée précédemment a été obtenue au hasard, ce qui n'est pas exploitable par une personne malveillante dont le but serait de trouver un message significatif et bien formé conduisant au même haché. Ceci augmente considérablement les essais et calculs nécessaires (et le rend quasiment impossible). Quoiqu'il en soit, cela suffit en théorie pour briser la propriété d'unicité de notre condensé...
D'un point de vue pratique, et dans l'état de l'art actuel, il est généralement accepté que 256 calculs représentent un défit réalisable. En conséquence, avec n/2=56 et n=112, le théorème des anniversaires nous indique que les hachés de 112 bits sont faibles et donc insuffisants à l'heure actuelle. De la même manière, les hachés de 128 bits (n/2=64) ne représentent plus une sécurité à moyen terme. C'est pour cela que la norme actuelle est à 160 bits (n/2=80) voire plus dans le cas de SHA-2.
La cryptographie asymétrique résout le problème de la mise en accord de clés. Deux problèmes se posent cependant. D’un point de vue pratique tout d’abord, la cryptographie à clé publique nécessite des calculs bien plus complexes que ceux requis par la cryptographie symétrique. Un second problème, bien plus fondamental, est celui de la certification des clés publiques. En effet, il est très facile pour quiconque de générer des couples de clés publiques et secrètes associées. Comment peut-on alors s’assurer que la clé publique que l’on utilise pour chiffrer un message à l’intention d’un correspondant lui appartient effectivement et n’est pas celle d’un pirate ? Une solution consiste à faire signer la clé publique par une autorité certifiant son appartenance à un individu. Ceci nécessite par conséquent de disposer d’un équivalent numérique à la signature manuscrite.
Un algorithme de signature numérique doit concilier diverses propriétés ; le signataire doit pouvoir générer facilement une information attachée à un document numérique quelconque de manière à ce que n’importe qui puisse en vérifier la validité. Toutefois, la vérification ne doit pas donner à celui qui l’exécute la capacité de reproduire une telle signature. La signature électronique jouit d’une propriété fondamentale dite de non-répudiation ; puisque seul le signataire est capable de générer des signatures valides, une telle signature attachée à un document est nécessairement authentique et le signataire ne peut par conséquent pas contester l’avoir générée. La définition d’une signature numérique fait donc apparaître de nouveau une asymétrie entre le processus de signature proprement dit et celui de vérification qui doit être réalisable par n’importe qui. L’idée consiste à utiliser sa clé secrète afin de signer un document de manière à ce que la signature puisse être vérifiée à l’aide de la clé publique uniquement.
La signature permet d’authentifier un message comme provenant bien d’un émetteur. Un problème similaire concerne l’authentification d’une entité ou d’un individu. Dans le monde courant, l’authentification se fait en général par présentation de papiers d’identité dont on suppose qu’ils ne sont ni falsifiables, ni duplicables. Dans un contexte numérique, la modification et la copie sont rendues particulièrement aisées d’où la nécessité de définir de nouveaux mécanismes d’authentification. La notion de preuve interactive à divulgation nulle de connaissance permet de résoudre ce problème de manière particulièrement élégante : afin de démontrer que l’on est bien celui que l’on prétend être, on dispose d’une clé secrète, par exemple deux grands nombres premiers, et d’une clé publique, le produit des deux entiers secrets. On a de plus un certificat signé par une autorité attestant que tel individu possédant telle clé publique est bien celui qu’il prétend être. Afin de faire la preuve de son identité, on produit sa clé publique et le certificat associé et on prouve que l’on connaît bien la clé secrète correspondant à la clé publique, par exemple sa factorisation. Une telle preuve doit convaincre un vérifieur sans pour autant lui fournir d’information sur le secret afin d’éviter qu’un espion ou bien que le vérifieur lui-même puisse ensuite se faire passer pour vous. C’est ainsi que l’on a défini la norme de signature DSS (Digital Signature Standard).
D’un point de vue technique, la signature numérique est une empreinte chiffrée jointe au document originel. Elle peut ainsi être utilisée pour prouver l’identité de l’expéditeur et l’intégrité du document. De manière à détailler le mécanisme de la signature numérique, reprenons l’exemple d’un message envoyé par Alice à Bob, message pour lequel Alice veut assurer être l’expéditeur :
- Phase 1 : Création de la signature numérique :
ð Alice et Bob décident de l’algorithme de chiffrement à clé publique à utiliser : ils créent leurs bi-clés (clé publique/clé privée) et s’échangent leur clé publique ;
ð Ils décident de l’algorithme de la fonction de hachage à utiliser pour vérifier leur signature ;
ð Alice crée une empreinte de son message à envoyer à l’aide de la fonction de hachage et chiffre celle-ci avec sa clé privée. Cette empreinte chiffrée est une signature numérique jointe au document original ;
ð La combinaison du document et de la signature numérique est envoyée à Bob.
Figure 43 : Création d’une signature numérique
- Phase 2 : Vérification de la signature numérique :
ð Bob déchiffre l’empreinte chiffrée à l’aide de la clé publique d’Alice. Il conserve cette empreinte ;
ð Bob crée une empreinte du message à l’aide de la fonction de hachage ;
ð Bob compare l’empreinte obtenue avec l’empreinte originale : s’ils sont identiques, l’intégrité du message et l’authentification de l’émetteur sont assurés.
Figure 44 : Vérification d’une signature numérique
Si les notions de signatures et de certificats numériques sont souvent liées c’est qu’il s’agit de deux mécanismes opposés. S’il est vrai que la signature numérique permet d’authentifier de façon formelle l’expéditeur, le certificat numérique permet lui de s’assurer de l’identité d’un destinataire potentiel.
Un certificat numérique est un message signé numériquement à l’aide de la clé privée d’un tiers de confiance reconnu par les deux parties (on parle de Certificate Authority). Le standard « de jure » reconnu par tous est le format X509 version 3 (cf. chapitre sur les acteurs du marché) et contient au minimum les informations suivantes :
- le numéro de version X509 ;
- le numéro de série associée au certificat ;
- l’algorithme de signature utilisé ;
- l’émetteur du certificat ;
- les dates de début et de fin de validité du certificat ;
- la clé publique de l’objet du certificat ;
- la signature de l’autorité émettrice.
De manière à détailler le mécanisme, reprenons l’exemple d’un message envoyé par Alice à Bob, message pour lequel Alice veut s’assurer que Bob est bien le destinataire qu’il prétend être :
- Phase préalable : Création du certificat de Bob
ð Bob a transmis à une autorité de certification un certain nombre d’informations constituant une véritable « fiche d’identité » ;
ð L’autorité de certification a :
§ Vérifié les informations fournies par Bob ;
§ Ajouté ses propres informations (clé publique) aux informations fournies ;
§ Calculé une empreinte du tout chiffrée avec la clé privée de l’autorité de certification ;
§ Signé un certificat au nom de Bob à l’aide de cette empreinte.
- Phase 1 : Vérification de l’identité du destinataire :
ð Alice récupère auprès de l’autorité de certification le certificat de Bob ;
ð Alice calcule l’empreinte correspondante aux informations contenues dans le certificat ;
ð Alice déchiffre la signature du certificat à l’aide de la clé publique de l’autorité ;
ð Si les deux empreintes sont identiques, Alice a bien affaire a Bob.
Ce mécanisme peut être résumé par le schéma suivant :
Figure 45 : Vérification du destinataire à l’aide d’un certificat numérique
Le mécanisme de certificats numériques est mis en œuvre au sein d’architectures logicielles et matérielles complexes nommées IGC (infrastructure de gestion de clés) ou PKI (Public Key Infrastructure) ou encore ICP (Infrastructure à Clés Publiques).
Sans vouloir présenter de façon exhaustive et complexe, l’ensemble des mécanismes mis en œuvre au sein d’une IGC, ce paragraphe se borne à en présenter les grandes lignes et les principaux acteurs.
7.2.1.E.3.b.1° - Le fonctionnement simplifié d’une IGC :
Les mécanismes d’une IGC s’appuient fondamentalement sur les mécanismes associés aux certificats numériques. La complexité majeure dans la mise en œuvre d’une IGC repose sur l’ensemble des procédures organisationnelles à mettre en œuvre permettant de garantir :
- L’assurance de la véracité des informations communiquées par l’utilisateur lors de la demande de certificat ;
- Le caractère réellement aléatoire des nombres utilisés dans les différents algorithmes permettant la génération du certificat ;
- L’assurance de la délivrance du certificat au bon propriétaire ;
- la validité d’un certificat à un instant donné.
Une autorité de certification peut être elle même certifiée par une autorité de certification de niveau supérieur. Dans le cas d’un utilisateur devant pouvoir reconnaître la validité de certificats délivrés par une autorité de certification donnée, les choix suivants sont possibles :
- l’utilisateur admet l’autorité de certification comme autorité de confiance ;
- l’utilisateur admet une autorité de niveau supérieur comme autorité de confiance.
7.2.1.E.3.b.2° - Les principaux acteurs d’une IGC :
7.2.1.E.3.b.2.I° - L’autorité locale d’enregistrement :
Cette autorité locale d’enregistrement est en charge de recueillir les informations communiquées par l’utilisateur lors de la demande initiale ou du renouvellement d’un certificat. Cette autorité est également en charge de la délivrance des nouveaux certificats. Elle génère des demandes de certificats à l’attention de l’autorité d’enregistrement.
7.2.1.E.3.b.2.II° - L’autorité d’enregistrement :
Cette autorité d’enregistrement concentre les demandes de certificats émanant des autorités locales d’enregistrement et prépare les certificats à valider.
7.2.1.E.3.b.2.III° - L’autorité de certification :
Cette autorité est la plus importante de toutes puisque son rôle est de signer les certificats à l’aide de sa clé privée. L’importance de l’alea utilisé dans la génération de la paire clé privée/clé publique y est fondamentale.
7.2.1.E.3.b.2.IV° - L’autorité de séquestre :
Le but de cette autorité est de pouvoir conserver ou régénérer un certificat de chiffrement délivré à un utilisateur de manière à être toujours capable de déchiffrer un message de celui-ci dans les cas suivants :
- le certificat de chiffrement utilisé n’est plus valable ;
- le certificat de chiffrement utilisé est perdu ou détruit.
Il est important de noter qu’il est strictement interdit de séquestrer les certificats destinés à la signature des messages par les utilisateurs.
7.2.1.E.3.b.2.V° - La publication des listes de révocation de certificats :
Une liste de révocation de certificats (on parle de CRL, Certificats Revocation List) contient la liste des certificats invalidés ou révoqués par une autorité de certification. L’emplacement permettant la consultation de cette liste est systématiquement intégré au sein de chaque certificat délivré par une autorité de certification.
Il est important de noter qu’il appartient aux logiciels clients de consulter ou non cette liste avant d’affirmer la validité d’un certificat donné.
7.2.1.E.3.b.2.VI° - L’annuaire LDAP :
Il est courant de stocker l’ensemble des certificats générés par une autorité de certification au sein d’un annuaire au format LDAP. Les certificats font alors partie intégrante de la définition des utilisateurs stockée au sein de l’annuaire.
7.2.1.E.3.b.3° - Schéma de fonctionnement d’une IGC :
Le fonctionnement d’une infrastructure de gestion de clés peut être résumé par le schéma suivant :
Figure 46 : Le fonctionnement simplifié d’une infrastructure de gestion de clés