- Cryptosystème de merkle-hellman
-
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é uniquement pour le chiffrement, et la clé privée uniquement pour le déchiffrement. Il ne peut dont 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 solvable en un temps polynomial. On dit que le sac est supercroissant.
Key generation
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.
Encryption
Pour crypter 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é.
Decryption
L'algorithme de décryptage 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 crypté 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.
- ↑ Adi Shamir, A Polynomial Time Algorithm for Breaking the Basic Merkle-Hellman Cryptosystem. CRYPTO 1982, pp279–288. http://dsns.csie.nctu.edu.tw/research/crypto/HTML/PDF/C82/279.PDF
- Portail de la cryptologie
Catégorie : Algorithme de cryptographie asymétrique
Wikimedia Foundation. 2010.