• Aucun résultat trouvé

d’un cryptosystème à clef secrète

Dans le document Cryptographie appliquée (Page 44-47)

Comment deux parties peuvent-elles communiquer de manière sûre? Ils chiffrent leur communication bien sûr. Le protocole complet est plus compliqué que cela. Voyons comment Alice peut envoyer un message chiffré à Bernard :

Alice et Bernard choisissent un cryptosystème.

Alice et Bernard choisissent une clef.

Alice chiffre son texte en clair à l ’aide de l ’algorithme choisi et avec la clef sélectionnée. Cette étape produit un texte chiffré.

Alice envoie le texte chiffré à Bernard.

Bernard déchiffre le texte chiffré avec le même algorithme et la même clef, et finalement lit le message.

Que peut apprendre Estelle un espion qui se place entre Alice et Bernard, en écoutant le protocole? Si tout ce qu’elle peut entendre est la transmission de l’étape 4, elle peut essayer de cryptanalyser le texte chiffré. Cette attaque passive est une attaque à texte chiffré seulement. Il existe des algorithmes qui sont résistants (pour autant que l’on sache) peu importe la puissance de calcul dont Estelle dispose pour s’y attaquer.

Toutefois, Estelle n’est pas stupide. Elle sait que si elle peut écouter les étapes 1 et 2 du protocole, elle aura ce qu’il lui faut. Elle connaîtra alors l’algorithme et la clef;

elle en saura autant que Bernard. Quand le message est transmis à l’étape 4, tout ce qu’elle a à faire est de le déchiffrer pour elle-même.

Un bon cryptosystème est un système où la sécurité est inhérente à la connaissance de la clef et non pas à celle de l’algorithme. C ’est pourquoi la gestion des clefs est un problème si important en cryptographie. Avec un algorithme à clef secrète, Alice et Bernard peuvent réaliser l’étape 1 en public mais ils doivent réaliser l’étape 2 en secret.

La clef doit rester secrète avant, pendant et après le protocole, sinon, le message ne serait plus confidentiel3.

3. La cryptographie à cle f publique résout ce problèm e d ’ une autre manière qui sera décrite dans le paragraphe 2.5.

Martin, un attaquant actif, peut faire d ’autres choses. Il peut essayer de casser le canal de communication de l’étape 4, s’assurant ainsi qu’Alice ne peut pas transmettre du tout son message à Bernard. Martin peut aussi intercepter les messages d’Alice et les remplacer par d’autres de son cru. Si de plus Martin connaît la clef (en interceptant la communication de l’étape 2 par exemple), il peut chiffrer ses propres messages et les envoyer à Bernard en lieu et place des messages interceptés. Bernard n’aurait aucun moyen de détecter que ces messages ne viennent pas d ’Alice. Si Martin ne connaissait pas la clef, les messages qu’il enverrait en remplacement seraient du charabia lorsqu’ils seraient déchiffrés par Bernard. Bernard, pensant que le message vient d’Alice, croirait que le réseau, ou Alice, ont de sérieux problèmes.

Quant à Alice, que peut-elle faire pour fausser le protocole? Elle peut donner une copie de la clef à Estelle. A l’aide de celle-ci, Estelle peut lire tout ce que Bernard dit. Elle peut reproduire ses propos dans le New York Times. Bien que cela soit grave, la faute n’est pas imputable au protocole. Il n’y a rien dans le protocole qui puisse empêcher Alice de donner une copie du texte en clair à Estelle. Bien sûr, Bernard peut faire tout ce qu’Alice peut faire. Ce protocole présume qu’Alice et Bernard se font confiance mutuellement.

En résumé, un cryptosystème à clef secrète a les problèmes suivants :

- Les clefs doivent être distribuées secrètement. Elles ont autant de valeur que tous les messages chiffrés avec elles car connaître les clefs donne accès à tous les messages. Pour des cryptosystèmes utilisés à l’échelle de la planète, la distribution des clefs peut être une tâche décourageante. Souvent, des messagers apportent les clefs à leur destination (de la main à la main).

- Si la clef est compromise (volée, devinée, extorquée, achetée, etc.) alors Estelle peut déchiffrer tous les messages chiffrés à l’aide de cette clef. Elle peut alors se faire passer pour l’un des participants et insuffler ses propres messages pour tromper l’autre participant.

- Si une clef différente est utilisée pour chaque paire d’utilisateurs d’un réseau, le nombre total de clefs croît très vite par rapport au nombre d ’utilisateurs. Par exemple, 10 utilisateurs ont besoin de 45 clefs différentes pour pouvoir mener n’importe quelle conversation deux à deux ; 100 utilisateurs ont besoin de 4950 clefs différentes. Ce problème peut être minimisé en gardant un petit nombre d’utilisateurs mais cela n’est pas toujours possible.

2.3 Fonctions à sens unique

La notion de fo n ctio n s à sens u n iqu e est fondamentale pour la cryptographie à clef publique. Bien qu’elles ne constituent pas un protocole en elles-mêmes, les fonctions à sens unique sont des éléments de base de la plupart des protocoles décrits dans ce livre.

Une fonction à sens unique est une fonction relativement aisée à calculer mais considé­

rablement plus difficile à inverser. En d’autres termes, étant donné un x, il est facile de calculer f(x), mais étant donné f ( x ) il est difficile de calculer x. Dans ce contexte, « dif­

ficile » veut dire qu’il faudrait des millions d ’années pour calculer la fonction inverse même si tous les ordinateurs du monde s’attelaient à la tâche.

Casser une assiète est un bon exemple de fonction à sens unique. Il est facile de cas­

ser l’assiète en mille morceaux. Toutefois, il est très difficile de recoller les morceaux ensembles pour reconstruire l’assiète.

Cela a l’air correct mais on ne peut pas en démontrer la véracité. D ’un point de vue strictement mathématique, il n’y a pas de preuve que des fonctions à sens unique existent ni même d ’indice qu’elles peuvent être définies [233, 532, 603, 662]. Cependant, de nombreuses fonctions ont l’air d’être à sens unique: nous pouvons facilement les calculer et, à ce jour, nous ne connaissons pas de moyen simple pour les inverser. Par exemple, x 2 dans un corps fini est facile à calculer mais le calcul de \fx est nettement plus difficile. Par la suite, je prétendrai que des fonctions à sens unique existent. Nous en reparlerons dans le paragraphe 11.2.

Mais à quoi peuvent bien servir des fonctions à sens unique? On ne peut pas les utiliser telles quelles pour le chiffrement. Un message chiffré à l’aide d’une fonction à sens unique n’est pas d ’une grande utilité: personne ne peut le déchiffrer4. Pour la cryptographie à clef publique, nous avons besoin de ce que l’on appelle une fo n c tio n à sens u n iqu e à b rè ch e s e c r è t e 5.

Une fo n c tio n à sens u n iqu e à b rè ch e se crè te est un type spécial de fonction à sens unique. Il est facile de la calculer dans un sens et difficile de le faire dans l’autre sens.

Mais pour celui qui connaît le secret, il est aisé de calculer la fonction dans l’autre sens.

En d ’autres termes, il est facile de calculer f ( x ) étant donné x et difficile de calculer x étant donné f {x). Toutefois, il existe une information secrète, y, telle qu’étant donné f (x) et y, il est facile de calculer x.

Une montre est un bon exemple de fonction à sens unique à brèche secrète. Il est facile de démonter une montre en ses centaines de pièces. Il est très difficile de remettre les pièces ensemble pour reconstruire une montre qui fonctionne. Toutefois, grâce à l’information secrète que constitue le plan de montage de la montre, il est bien plus facile de reconstruire la montre.

2.4 Fonctions de hachage à sens unique

Une fo n c tio n d e h ach age à sens u n iqu e porte de nombreux noms: fonction de compression, fonction de contraction, digest, empreinte digitale, code correcteur cryptographique, code de vérification d ’intégrité, code de détection de manipulation6.

Peu importe comment on les appelle, de telles fonctions sont fondamentales pour la cryptographie moderne. Ces fonctions interviennent comme éléments de base dans de nombreux protocoles.

Des fonctions de hachage ont été utilisées en informatique depuis longtemps. Une fonc­

tion de hachage est une fonction, mathématique ou autre, qui convertit une chaîne de caractères de longueur quelconque en une chaîne de caractères de taille fixe (souvent de taille inférieure, cette chaîne est appelée em p rein te). Un exemple de fonction de hachage simple est une fonction qui à partir d’une chaîne de caractères calculerait un

4. E xercice : écrivez un message sur une assiette, cassez l’ assiette en mille m orceaux, et donnez ensuite les m orceaux à un ami. Dem andez-lui de lire le message. Constatez à quel point votre am i est im pressionné par cette fonction à sens unique.

5. Il existe des applications cryptographiques des fonctions à sens unique tou t cou rt (voir § 3.2).

6. N ote du traducteur : les fonctions de hachages sont parfois appelées « fonctions à adressage dispersé ».

octet qui serait le résultat du ou exclusif de tous les caractères de la chaîne donnée.

Le but de l’opération est de déterminer une empreinte digitale de la chaîne de caractères d’entrée. Cette empreinte permettrait de déterminer si une autre chaîne a des chances d’être identique à celle pour laquelle l’empreinte a été calculée. Comme les fonctions de hachage ont la caractéristique de faire correspondre plusieurs valeurs d ’entrée dif­

férentes à une même valeur de sortie, on ne peut pas s’en servir pour déterminer avec certitude si deux chaînes sont égales mais on peut l’utiliser pour avoir une garantie raisonnable d ’égalité.

Une fonction de hachage à sens unique est une fonction de hachage qui est aussi une fonction à sens unique ; il est aisé de calculer l’empreinte à partir de la chaîne d ’entrée mais il est difficile d’engendrer des chaînes qui ont une certaine empreinte. La fonction de hachage du paragraphe précédent n’est pas à sens unique : étant donné un octet, il est trivial d’engendrer une chaîne dont le « ou exclusif » de ses caractères donne cet octet-là. Vous ne pourriez pas faire cela pour des fonctions de hachage à sens unique.

Avec une bonne fonction de hachage à sens unique, il est aussi difficile de produire deux chaînes ayant la même empreinte.

La fonction de hachage est publique; il n’y a pas de secret dans l’opération. Une fonction de hachage est sûre parce qu’elle est à sens unique. La sortie ne dépend pas de l’entrée de manière observable. Tout changement d ’un bit quelconque à l’entrée entraîne le changement, en moyenne, de la moitié des bits du résultat. Etant donné une empreinte il est irréalisable par calcul de trouver une chaîne ayant cette empreinte.

Pensez à cela comme un moyen d ’associer une empreinte à des fichiers. Si vous vou­

lez vérifier que quelqu’un possède un fichier donné (que vous avez aussi) sans qu’il vous l’envoie, vous lui demandez alors l’empreinte du fichier. S’il vous envoie la bonne empreinte, alors il est très probable que la personne a le fichier en question. C ’est particulièrement adapté aux transactions financières où l’on ne veut pas qu’un retrait de cent francs devienne un retrait de mille francs. Normalement, vous utiliseriez une fonction de hachage à sens unique sans clef de telle manière que n’importe qui puisse calculer l’empreinte. Si vous voulez que seul votre correspondant soit capable de la calculer, alors lisez le paragraphe suivant.

Dans le document Cryptographie appliquée (Page 44-47)