Cryptosystème de McEliece

Cryptosystème de McEliece

Le cryptosystème de McEliece est un schéma de chiffrement asymétrique, inventé en 1978 par Robert McEliece. Ce système, reposant sur un problème difficile de la théorie des codes, n'a pas rencontré de véritable soutien dans la communauté cryptographique. L'une des principales raisons de cet état de fait est la taille de la clé. Pourtant, le cryptosystème de McEliece possède des propriétés intéressantes, citons notamment

  • la sécurité croît beaucoup plus avec la taille des clés que pour le système RSA.
  • la rapidité du chiffrement.

Un autre avantage est de reposer sur un problème très différent des algorithmes asymétriques usuels. Cela signifie qu'une percée théorique dans le domaine de la factorisation, qui ruinerait RSA, n'affecterait en rien ce système.

Le cryptosystème de McEliece résiste à ce jour à toute tentative de cryptanalyse, mais est rarement utilisé en pratique du fait de la grande taille des clefs. Cependant, il a été utilisé pour le chiffrement dans Entropy, une alternative à Freenet.

Sommaire

Principe

Un code correcteur d'erreurs permet de corriger une information qui se serait altérée lors de sa transmission via un canal (réseau, CD-ROM, temps, etc). Pour se faire, un mot (une suite de symboles) est transformé en un mot du code en rajoutant de l'information (appelée redondance). À la sortie du canal, la redondance est utilisée pour corriger les erreurs et ainsi retrouver le mot de code transmis en entrée. Ce mot est alors retransformé pour fournir le mot original.

L'idée de McElice est de masquer le mot de code correspondant au message en lui ajoutant autant d'erreurs que possible tout en gardant la possibilité de corriger celles-ci. Si la méthode de correction est gardée secrète, alors seul le destinataire sera en mesure de retrouver le message original. La méthode d'encodage peut, quant à elle, être laissée publique tant qu'elle ne révèle pas d'information sur le décodage.

Le cryptosystème de McEliece utilise les codes de Goppa. Les codes de Goppa sont faciles à décoder, mais une fois leur structure masquée par permutation, il est difficile de les distinguer des codes linéaires. De plus, il est difficile de décoder un code linéaire aléatoire. La sécurité du système repose donc sur deux problèmes distincts : l'indistingabilité d'un code de Goppa permuté d'une part et le problème du décodage borné d'autre part.

En 1986, Harald Niederreiter a proposé un autre cryptosystème fondé sur la théorie des codes. Le cryptosystème de Niederreiter a été prouvé équivalent à celui de McEliece en 1994 par Y.X. Li, R.H. Deng et X.M. Wang.

Description du schéma

Le cryptosystème de McEliece consiste en trois algorithmes: un algorithme probabiliste de génération des clefs qui produit une clef secrète et une clef publique, un algorithme (probabiliste) de chiffrement et un algorithme (déterministe) de déchiffrement. Tous les utilisateurs partagent des paramètres de sécurité : n,k,t.

Génération des clefs

  1. Sélectionner aléatoirement un (n,k)-code linéaire C capable de corriger t erreurs. Ce code doit posséder un algorithme de décodage efficace.
  2. Alice genère une matrice génératrice G pour le code C (matrice k \times n).
  3. Sélectionner aléatoirement une matrice binaire k \times k non singulière S.
  4. Sélectionner aléatoirement une matrice de permutation P n \times n.
  5. Calculer la matrice {\hat G} = SGP. Celle-ci est une matrice k \times n.
  6. La clef publique est ({\hat G}, t); la clef privée est (S,G,P).

Chiffrement

Pour chiffrer une suite binaire m de longueur k :

  1. Calculer le vecteur c^{\prime} = m{\hat G}.
  2. Générer un vecteur d'erreur e de poids t (une suite binaire de longueur n contenant t 1 et nt 0).
  3. calculer le chiffré c = c^{\prime} + e.

Déchiffrement

  1. Calculer {\hat c} = cP^{-1}.
  2. Utiliser l'algorithme de décodage de C pour décoder {\hat c} en un mot {\hat m}.
  3. Calculer m = {\hat m}S^{-1}

Critiques

Positives

Généralement, les codes de Goppa sont considérés comme de « bons » codes linéaires puisqu'ils permettent de corriger jusqu'à  {n^k} \choose {\log_2 n} erreurs. Aussi, ils se décodent efficacement, par les algorithmes d'Euclide et de Berlekamp-Massey, en particulier.

Négatives

Les clés publique et privée sont de grandes matrices, ce qui constitue un des plus grands désavantages de ce chiffre. Par exemple, la clé publique est de 219 bits (64 Kio).

Il y a eu des tentatives de cryptanalyse sur l'algorithme de McEliece, mais nulle n'a eu de succès. Néanmoins, cet algorithme n'est pas utilisé en pratique, d'une part à cause de la grandeur des clés, mais aussi parce que la grandeur du texte chiffré est de deux fois celle du texte d'origine.

La ressemblance entre ce problème et celui du sac à dos inquiète aussi une partie des spécialistes.

En 1991, E.M. Gabidulin et al. ont proposé une amélioration, qui, deux ans après, sera prouvée sans avantage par J.K. Gibson.

Bibliographie

  • R.J. McEliece, A public-key cryptosystem based on algebraic coding theory, JPL DSN Progress Report 4244 (1978), 114-116.
  • H. Niederreiter, Knapsack-type Cryptosystems and Algebraic Coding Theory, Problems of Control and Information Theory, 15(2), 1986, 159-166.
  • Y.X. Li, R.H. Deng and X.M. Wang, On the equivalence of McEliece's and Niederreiter's public-key cryptosystems, IEEE Transactions on Information Theory, 40(1), 1994, 271-273
  • E.M. Gabidulin, A.V. Paramonov, and O.V. Tretjakov, Ideals over a non-commutative ring and their application in cryptology, Advances in Cryptology - Eurocrypt '91, Springer-Verlag (1991), 482-489.
  • J.K. Gibson, Severely denting the Babidulin version of the McElience public key cryptosystem, Preproceedings of the 4th IMA Conference on Cryptography and Coding (1993).

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Cryptosystème de McEliece de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • Cryptosysteme de McEliece — Cryptosystème de McEliece Le cryptosystème de McEliece est un schéma de chiffrement asymétrique, inventé en 1978 par Robert McEliece. Ce système, reposant sur un problème difficile de la théorie des codes, n a pas rencontré de véritable soutien… …   Wikipédia en Français

  • Cryptosystème De McEliece — Le cryptosystème de McEliece est un schéma de chiffrement asymétrique, inventé en 1978 par Robert McEliece. Ce système, reposant sur un problème difficile de la théorie des codes, n a pas rencontré de véritable soutien dans la communauté… …   Wikipédia en Français

  • Cryptosystème de mceliece — Le cryptosystème de McEliece est un schéma de chiffrement asymétrique, inventé en 1978 par Robert McEliece. Ce système, reposant sur un problème difficile de la théorie des codes, n a pas rencontré de véritable soutien dans la communauté… …   Wikipédia en Français

  • Code De Goppa — En mathématiques et en théorie des codes correcteurs d erreur, les codes de Goppa, aussi appelé codes de géométrie algébrique, sont une généralisation des codes de Reed Solomon. Les codes de Goppa sont construits à partir d une courbe algébrique… …   Wikipédia en Français

  • Code de Goppa — En mathématiques et en théorie des codes correcteurs d erreur, les codes de Goppa, aussi appelé codes de géométrie algébrique, sont une généralisation des codes de Reed Solomon. Les codes de Goppa sont construits à partir d une courbe algébrique… …   Wikipédia en Français

  • Code de goppa — En mathématiques et en théorie des codes correcteurs d erreur, les codes de Goppa, aussi appelé codes de géométrie algébrique, sont une généralisation des codes de Reed Solomon. Les codes de Goppa sont construits à partir d une courbe algébrique… …   Wikipédia en Français

  • Code de géométrie algébrique — Code de Goppa En mathématiques et en théorie des codes correcteurs d erreur, les codes de Goppa, aussi appelé codes de géométrie algébrique, sont une généralisation des codes de Reed Solomon. Les codes de Goppa sont construits à partir d une… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”