Cryptosystème de McEliece

Un article de Wikipédia, l'encyclopédie libre.

Le cryptosystème de McEliece est un schéma de chiffrement asymétrique, inventé en 1978 par Robert McEliece[1]. 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[réf. nécessaire], entre autres car la clé de chiffrement est particulièrement grande et que le message chiffré est deux fois plus long que l'original. Pourtant, le cryptosystème de McEliece possède des propriétés intéressantes : la sécurité croît beaucoup plus rapidement avec la taille des clés que pour le système RSA, et le chiffrement est plus rapide.

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, réalisable par des algorithmes quantiques, qui ruinerait RSA, n'affecterait en rien ce système. Cet avantage lui permet d'être sélectionné par le NIST comme candidat à la standardisation des algorithmes de chiffrement post-quantique[2].

Des attaques efficaces ont été publiées contre le cryptosystème de McEliece, ainsi que contre de nombreuses variantes. Cependant, des améliorations ont été proposées afin d'éviter ces attaques. Il est rarement utilisé en pratique du fait de la grande taille des clefs, mais a été utilisé pour le chiffrement dans Entropy, une alternative à Freenet.

Principe[modifier | modifier le code]

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 ce 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 McEliece 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[3]. 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[4].

Description du schéma[modifier | modifier le code]

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é : .

Génération des clefs[modifier | modifier le code]

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

Chiffrement[modifier | modifier le code]

Pour chiffrer une suite binaire de longueur  :

  1. Calculer le vecteur .
  2. Générer un vecteur d'erreur de poids (une suite binaire de longueur contenant 1 et 0).
  3. calculer le chiffré .

Déchiffrement[modifier | modifier le code]

  1. Calculer .
  2. Utiliser l'algorithme de décodage de pour décoder en un mot .
  3. Calculer

Critiques[modifier | modifier le code]

Positives[modifier | modifier le code]

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

Négatives[modifier | modifier le code]

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 bits (64 Kio).

Il y a eu des tentatives de cryptanalyse sur l'algorithme de McEliece, mais des changements ont permis de les rendre inopérantes. Néanmoins, cet algorithme n'est pas utilisé en pratique, d'une part à cause de la taille importante de ses clés, mais aussi parce que la taille du texte chiffré est de deux fois celle du texte d'origine[réf. nécessaire].

La ressemblance entre ce problème et celui du sac à dos inquiète aussi une partie des spécialistes[réf. nécessaire].

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

Notes et références[modifier | modifier le code]

  1. McEliece 1978.
  2. (en-US) Information Technology Laboratory Computer Security Division, « Round 3 Submissions - Post-Quantum Cryptography | CSRC | CSRC », sur CSRC | NIST, (consulté le )
  3. Niederreiter 1986.
  4. Li, Deng et Wang 1994.
  5. Gabidulin, Paramonov et Tretjakov 1991.
  6. Gibson 1995, Version journal parue en 1995, une version préliminaire est parue à 4e édition de la conférence IMA Conference on Cryptography and Coding de 1993.

Annexes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

  • [McEliece 1978] (en) Robert J. McEliece, « A Public-Key Cryptosystem Based on Algebraic Coding Theory », Jet Propulsion Laboratory DSN Progress Report,‎ , p. 42–44 (lire en ligne)
  • [Niederreiter 1986] Harald Niederreiter, « Knapsack-type Cryptosystems and Algebraic Coding Theory », Problems of Control and Information Theory 15, vol. 1, no 6,‎ , p. 159–166
  • [Li, Deng et Wang 1994] Yuan Xing Li, Robert H. Deng et Xin Mei Wang, « On the equivalence of McEliece's and Niederreiter's public-key cryptosystems », IEEE Transactions on Information Theory, vol. 40, no 1,‎ , p. 271–273
  • [Gabidulin, Paramonov et Tretjakov 1991] E.M. Gabidulin, A.V. Paramonov et O.V. Tretjakov, « Ideals over a non-commutative ring and their application in cryptology », Eurocrypt, Springer-Verlag,‎ , p. 482-489 (DOI 10.1007/3-540-46416-6_41)
  • [Gibson 1995] J.K. Gibson, « Severely denting the Gabidulin version of the McEliece public key cryptosystem », Design, Codes and Crypto, vol. 6,‎ , p. 37—45 (ISSN 1573-7586, DOI 10.1007/BF01390769)

Articles connexes[modifier | modifier le code]