![]() ![]() ![]() ![]() |
Systèmes modernes à clé publique2. Le protocole Diffie-Hellman
|
||||||||||||
GénéralitésStéganographieCryptanalyseLittératureTranspositionsSubs. monoα
|
Dans
les années 70, Whitfield Diffie et Martin Hellman ont eu,
indépendamment, l'idée du cryptage asymétrique, avant d'unir leurs
efforts de recherche au sein de l'Université de Stanford. Travaillant en commun, ils ont créé différents systèmes à clef publique qui n'ont pas connu le succès pour des raisons évoquées plus loin. Leurs travaux ont finalement débouché sur la mise au point d'un protocole d'échange de clefs. Il revient à M. Hellman d'avoir effectué le percée décisive [1]. Il a cependant tenu à associer son collègue W. Diffie à la découverte, indiquant qu'elle n'aurait pas été possible sans leurs échanges. Le protocole Diffie-Hellman est une méthode d'échange de clef secrète via un canal non sûr. Cette clef secrète peut à son tour être utilisée dans un procédé de chiffrage, même symétrique. Le système Diffie-Hellman permet lui-même le cryptage à clef publique ; voyons comment. ![]() Protocole d'échange de clefsRetrouvons nos héros favoris Alice et Bob.1. Ils s'accordent sur le choix d'un entier premier p∈ℙ et d'un autre entier g>1 (qui servira de base d'exponentiation). Cette étape n'est pas secrète. 2. En secret,
3. Alice calcule
cependant que Bob détermine de son côté
mais alors, Alice et Bob disposent d'une clef secrète commune, puisque :
En effet : s = Ba mod. p = (gb)a mod. p = gba mod p ; Il s'agit donc bien de la même valeur. L'échange de clef a été réalisé. Notons que le transfert de clefs peut être étendu à plus de deux membres, sur la base de relations telles que : (gab)c = (gba)c = (gac)b = gabc mod. p La généralisation est transparente ; nous ne la détaillons pas.![]() application au chiffrementLe système Diffie-Hellman peut être appliqué au chiffrage à clef publique. Reprenons les mêmes notations (et les mêmes personnages).La clef publique de Bob est (g, p, B). Il partage avec Alice la clef secrète s. Alice souhaite lui envoyer un message M -- typiquement, M représente un unique caractère noté binairement comme dans le cas du knapsack. Alice calcule puis envoie à Bob :
Pour déchiffrer le message codé S, il suffirait à Bob de calculer :
pour peu qu'il connaisse l'inverse modulaire de s = gab (mod. p). ... Il peut le faire ! En effet, dans le groupe multiplicatif 𝔽p*, qui est de cardinal n = p−1, l'ordre de tout élément x est un diviseur de n. On a donc xn = 1 [2]. Par conséquent, Bob peut calculer
(rappelons que Bob dispose de "A"), et ainsi reconstituer M. De même, Alice pourrait calculer en sens inverse
et ainsi déchiffrer les messages envoyés par Bob. Ainsi, le système Diffie-Hellman est aussi une méthode de chiffrage à clef publique. Il n'a pas connu le succès, pour des raisons tant commerciales qu'historiques. Un concurrent sérieux est arrivé avec l'invention du système RSA. Ce dernier avait un atout décisif : il permet l'authentification des messages. Ce que Diffie-Hellman ne sait pas faire [3]. ![]() ExempleInutile de préciser que les valeurs en jeu dans cet exemple sont bien trop faibles pour une utilisation réelle.Alice et Bob choisissent en commun p = 53 et g = 9. 1. Alice choisit a = 8. Pour calculer ga elle utilise l'exponentiation rapide (8 = 23) modulaire (càd, dans ℤ/pℤ) :
![]() Sécurité du protocoleSupposons que p, a et b soient "grands". Actuellement, cela veut dire : de l'ordre de 300 chiffres pour p, 100 pour a et b. Alors, connaissant p, g, gb mod. p et ga mod. p, il est "impossible" de retrouver a et b. Cette impossibilité n'est pas théorique, mais algorithmique : ce n'est pas faisable en un temps réaliste, puisque aucun algorithme polynomial n'est connu. C'est le problème du logarithme discret que nous avons déjà évoqué.Plus précisément : si le problème du logarithme discret était "résolu" (càd si un algorithme polynomial était découvert), le protocole Diffie-Hellman serait "cassé". Inversement, il n'est pas sûr que la cryptanalyse de Diffie-Hellman conduise à la résolution du problème du logarithme discret. Mais on admet généralement que les deux problèmes sont équivalents. En pratique, on estime donc que le système Diffie-Hellman est aussi sûr que le logarithme discret. ![]() L'algorithme de ShanksExpliquons pourquoi le problème du logarithme discret est "difficile". On se donne A, g, p et on cherche à résoudre
La recherche naïve exige p essais pour x. Elle est donc clairement exponentielle (p = exp(ln(p))). Selon Shanks, effectuons la division euclidienne de x par u (à préciser ultérieurement) :
On réécrit ensuite (1) sous la forme
et on calcule (en mettant en mémoire)
![]() Notes[1] Comme le dit joliment M. Hellman, "C'est à moi que la muse a parlé".[2] On a ainsi redémontré au passage le petit théorème de Fermat. [3] en tout cas, pas simplement |