- Cryptosystème de Merkle-Hellman
-
Merkle-Hellman (MH) est un des premiers cryptosystème asymétrique, défini par Ralph Merkle et Martin Hellman en 1978[1]. Bien que l'idée soit élégante, et bien plus simple que RSA, il a été démontré comme vulnérable par Adi Shamir[2].
Sommaire
Description
Merkle-Hellman est un cryptosystème asymétrique. Cependant, contrairement à RSA, il est à sens unique, c'est-à-dire que la clé publique est utilisée uniquement pour le chiffrement, et la clé privée uniquement pour le déchiffrement. Il ne peut donc pas être utilisé pour un protocole d'authentification.
Il est basé sur le problème de la somme de sous-ensembles (un cas spécial du problème du sac à dos): étant donnés n entiers numérotés de 1 à n, ayant chacun une valeur, existe-t-il un sous-ensemble de ces éléments dont la somme des valeurs est nulle ? En règle générale, ce problème est connu pour être NP-Complet. Cependant, si l'ensemble, dit "sac à dos", est trié tel que chaque élément est plus grand que la somme de tous les nombres le précédant, alors le problème est "facile" et résoluble en un temps polynomial. On dit que le sac est supercroissant.
Génération de clefs
Pour ce cryptosystème, les clés sont des "sac à dos". La clé publique est un sac à dos dit "dur", la clé privée un sac dit "facile", tel que problème soit solvable en temps polynomial, avec un facteur multiplicatif et un modulo. On utilise ces nombre pour transformer le sac dur en sac facile, opération réalisable en temps polynomial.
Chiffrement
Pour chiffrer le message, on utilise un sous-ensemble du sac dur, choisi en le comparant avec un ensemble de bits (le texte en clair) de même longueur que la clé, et tel que chaque terme de la clé publique corresponde à un 1 du texte en clair. Les 0 sont ignorés. Dès lors, on fait la somme de ce sous-ensemble, constituant le texte chiffré.
Déchiffrement
L'algorithme de déchiffrement de Merkle-Hellman consiste à résoudre un problème de sac à dos, mais cette fois ci sur un sac supercroissant donc transformable en temps polynomial en la clé publique : le sac facile.
Plus formellement
Génération des clés
On procède en 3 étapes :
- Choix d'une séquence super-croissante et d'un nombre
- Choix d'un nombre A < N tel que pgcd(A,N) = 1
- Calcul des
Dès lors, on obtient une clé publique et une clé privée
Chiffrement
Considérons un mot c'est-à-dire un mot binaire. Si n est sa longueur et celle de la séquence alors,
représente le message chiffré.
Déchiffrement
Considérons le mot chiffré c. Posons . On peut alors écrire,
On a alors pour tout i,xi = wi.
Voir aussi
Notes et références
- Ralph Merkle and Martin Hellman, Hiding Information and Signatures in Trapdoor Knapsacks, IEEE Trans. Information Theory, 24(5), September 1978, pp525–530.
- http://dsns.csie.nctu.edu.tw/research/crypto/HTML/PDF/C82/279.PDF Adi Shamir, A Polynomial Time Algorithm for Breaking the Basic Merkle-Hellman Cryptosystem. CRYPTO 1982, pp279–288.
Catégorie :- Algorithme de cryptographie asymétrique
Wikimedia Foundation. 2010.