Projet Codes

previous up next contents
Précédent : Logiciels Remonter : Projet CODES, Codage et cryptographie Suivant : Actions industrielles



Résultats nouveaux

Courbes et systèmes d'équations



Participants : Daniel Augot , Lancelot Pecquet , Gaétan Haché , Dominique Le Brigand


Ces dernières années, l'évolution des logiciels de calcul formel et le développement du thème Géométrie algèbrique et codage, ont amené les chercheurs à formuler d'importants problèmes de recherche en terme de résolution de systèmes d'équations sur les corps finis. Il en est ainsi pour la détermination du poids minimum (capacité de correction) de certains Codes, ou pour l'étude du rayon de recouvrement, paramètre qui mesure la distance d'un mot quelconque au code utilisé. Des techniques de décodage, fondées sur la recherche de bases standard, sont aussi à l'étude dont les applications intéressent le codage en général.

D'autre part, on assiste depuis une quinzaine d'années, à une diversification des applications, et donc des objets de codage. La communauté scientifique étudie activement d'autres environnements (ainsi les modules plutôt que les corps finis) d'autres Codes que ceux actuellement utilisés et de nouvelles techniques de décodage. Sur ce thème, nous nous situons plutôt en algorithmique Nous nous intéressons d'abord à la construction et les performances des nouveaux objets proposés ( problèmes posés par les implémentations, complexité, programmation de fonctionnelles issues de la géometrie algébrique ...).

Codes géométriques

Depuis les travaux de GOPPA (1960-70), on sait que les Codes géométriques constituent une classe importante de Codes correcteurs ; leurs ``bons'' paramètres et leur structure algébrique complexe les désignent naturellement pour certaines applications (construction de Codes longs, protocole de protection...). Constructions et classifications sont en cours d'étude, qui nécessitent une collaboration étroite entre Mathématiciens, Théoriciens du Codage et spécialistes de Calcul Formel. L'apport des logiciels de Calcul Formel, qui dans ce contexte doivent être utilisés et même développés par des spécialistes, est très important.


G. Haché a soutenu sa thèse fin 1996 [4]. Il a ensuite (Janvier-Juillet 97) effectué un séjour post-doctoral au département de mathématiques de Limoges, dans l'équipe de calcul formel de D. Duval (voir § 4.). G. Haché est actuellement ``Postdoctoral fellowship'' à l'Université Concordia - Montréal, Québec.

Algorithmes de décodage

Le décodage des Codes correcteurs connaît un regain d'intêret parmi les codeurs (voir les recherches menées pour la cryptographie §[*]). On considère généralement que les algorithmes de décodage des Codes géométriques ne sont pas suffisamment efficaces. Il existe des Codes performants que l'on ne sait pas décoder, ainsi les Codes résidus quadratiques -- qui sont des codes cycliques. Il y a là une série de problèmes ouverts (conception et amélioration d'algorithmes spécifiques). D'autre part, il est maintenant bien compris que décoder revient à calculer une base de Groebner d'un idéal. Les algorithmes de ce type, encore trop lents pour être opérationnels, permettent toutefois de décoder au-dessus des bornes théoriques. On peut ajouter qu'il est difficile de décrire maintenant l'ensemble de leurs possibilités et les applications à venir.


C'est vers ce type de problème que nous nous sommes orientés cette année. D. Augot et L. Pecquet ont travaillé dans ce sens [45]. Un des éléments du travail effectué a été l'étude du langage MAGMA et de son package ``Codes Correcteurs'' dans le contexte décrit.

Etudes structurelles en théorie des Codes

Les chercheurs du projet s'intéressent aux propriétés générales structurelles des Codes, dans un espace ambiant donné. Il s'agit d'un sujet théorique en amont qui a pour but essentiellement de classifier un ensemble d'objets prédéfinis. L'ensemble de ces travaux constitue une base théorique fondamentale pour les actions à finalité cryptographique décrits plus loin (cf. §[*]). Il s'agit de caractériser des classes d'objets exceptionnels, de concevoir des outils pour les traiter, de reconnaitre une structure ...

Groupes d'automorphismes

 

Participants : Thierry Berger , Pascale Charpin


Reconnaitre deux Codes équivalents, reconnaitre un code destructuré par permutations, accélérer certaines procédures de décodage, tous ces problèmes relèvent de l'étude des automorphismes des Codes - i.e. des transformations isométriques conservant le code. Les chercheurs du projet ont obtenu des résultats importants dans ce domaine. Les plus marquants sont : la détermination du groupe de permutations des Codes BCH primitifs et un nouvel algorithme de preuve de l'équivalence de deux Codes linéaires binaires.

Utilisant les travaux de Delsarte (1969) et la description des Codes affine-invariants par antichaîne, due à P. Charpin (1987), T. Berger et P. Charpin ont pu mettre en place une série d'outils, algorithmiques ou combinatoires, permettant de déterminer effectivement les groupes de permutations. Ce travail, qui donne comme principale application, le groupe de permutations des Codes BCH primitifs, a été présenté dans plusieurs colloques internationaux. Un article complet est paru fin 96 [6]. Un autre article est en préparation.

D'autre part, T. Berger s'est intéressé aux groupes d'automorphismes des Codes alternants. Ces codes sont des sous-codes des codes de Reed-Solomon généralisés et contiennent les Codes de Goppa classique. Il a montré qu'il existe quatre classes de Codes alternants cycliques et que parmi ceux-ci certains sont des Codes de Goppa [20].

Codes équivalents.

 

Participant : Nicolas Sendrier


Deux Codes sont équivalents par permutation s'il existe une permutation des coordonnées de l'un le transformant en l'autre. Le problème de décision associé a été étudié récemment par PETRANK et ROTH [*] qui ont montré qu'il n'était pas NP-complet, mais était, en revanche, au moins aussi dur que le problème de décider de l'équivalence entre deux graphes. Trouver un algorithme efficace pour résoudre le problème de l'équivalence des Codes présente donc un intérêt certain.

N. Sendrier a conçu et mis en oeuvre un nouvel algorithme, permettant de tester l'équivalence de deux Codes linéaires donnés [46]. Cet algorithme est capable de décider, dans presque tous les cas, de l'équivalence (par permutation) de deux Codes à partir d'un invariant (i.e. une propriété d'un code invariante par permutation du support). Cet invariant devra pouvoir se calculer en temps polynômial, et devra être discriminant, c'est-à-dire prendre souvent des valeurs distinctes pour deux Codes non équivalents. La difficulté consiste à faire fonctionner l'algorithme lorsque souvent n'est pas très proche de tout le temps (par exemple une fois sur deux).

Cet algorithme utilise les invariants du Hull - i.e. intersection d'un code avec son dual. L'énumérateur des poids du hull d'un code (intersection du code avec son orthogonal) est un invariant facile à calculer sauf pour une proportion infime de Codes [17] et fournit une discrimination suffisante en pratique pour décider de l'équivalence de deux Codes et pour retrouver la valeur de la permutation.

Ces travaux ont été présentés au colloque IEEE de théorie de l'information [39]. Les diverses applications possibles de l'algorithme, en relation avec la solidité de certains cryptosystèmes (voir §[*]), sont aussi à l'étude.

Codes de Goppa



Participants : Francis Blanchet , Grégoire Bommier , Thierry Berger


Les Codes de Goppa binaires sont souvent dits quasi-aléatoires -- i.e. très "proches" des Codes aléatoires. C'est sans doute pour cette raison qu'ils sont utilisés dans certains cryptosystèmes (voir §[*]). D'autre part leurs propriétés, combinatoires ou algébriques, sont liées aux propriétés générales des polynômes sur les corps finis (en caractéristique 2), et ceci de façon plus évidente que pour n'importe quels autres Codes. Une partie de l'étude demandée par la DRET (voir §[*]) porte sur la structure des Codes de Goppa binaires et un certain nombre de travaux ont été effectués dans ce contexte (voir §[*] et [*]).


G. Bommier étudie dans le cadre de sa thèse les Codes de Goppa binaires dont le groupe d'automorphismes est non trivial. En collaboration avec F. Blanchet, il a exhibé certaines contraintes explicites sur les paramètres, induisant la quasi-cyclicité d'un code de Goppa. Un article est soumis [50] dont les résultats ont été présentés au colloque IEEE de théorie de l'information [21].

Codes cycliques

 

Participants : Pascale Charpin , Victor Zinoviev


Suite à une étude sur la distribution de poids des translatés des Codes BCH binaires $2$-correcteurs, P. Charpin a mis en place un ensemble d'outils permettant d'aborder de façon plus générale, les Codes cycliques de grande dimension. Ce travail s'est poursuivi avec V. Zinoviev. Dans [13], les auteurs montrent notamment que les propriétés obtenues pour les BCH 2-correcteurs ne sont plus vraies pour des capacités de correction supérieures.

D'autre part P. Charpin et V. Zinoviev, en collaboration avec A. Tietäväinen (de l'université de Turku) étudient les Codes cycliques de grande dimension. Il s'agit de jeter les bases d'une classification des Codes engendrés par deux polynômes minimaux. Les objets étudiés sont fondamentaux, apparaissant dans plusieurs problèmes issus de la théorie des corps finis (séquences, fonctions booléennes, log. discret ...) [11,2].

Codes sur un module de type Z/pZ



Participant : Claude Carlet


L'introduction par Hammons et al. (1993) de la notion de code ${\bf Z}_4$-linéaire a ouvert un pan complet de recherche dans le domaine des Codes correcteurs d'erreurs. Il n'existait pas jusqu'a présent de généralisation de cette notion à celle de code $Z_{2^k}$-linéaire. C. Carlet a introduit récemment une telle généralisation. Il en a déduit de nouveaux Codes, qui généralisent les Codes de Kerdock et de Delsarte-Goethals [10]. Enfin, il a pouruivi l'étude des Codes de Kerdock du point de vue de leur ${\bf Z}_4$-linéarité dans un article présenté au colloque international Finite Fields and Applications [30].

Codes convolutifs



Participant : Eric Filiol


Les Codes convolutifs sont utilisés pour corriger des erreurs lorsque l'information est transmise par flot. E. Filiol, dans son mémoire de DEA, montre comment l'on peut reconstruire un codeur convolutif avec pour seule donnée la suite binaire obtenue en sortie [43]. Ce résultat sera exposé à la conférence internationale Cryptography and Coding [34].

Calcul dans les corps finis



Participants : Daniel Augot


Une étude algorithmique a été menée par P. CAMION et D. AUGOT pour calculer le polynôme minimal d'un endomorphisme, ainsi que d'autres paramètres invariants (notamment les ``diviseurs élémentaires''). Le problème de l'optimisation du calcul d'un vecteur cyclique a aussi été étudié. Le résultat principal est l'obtention d'un algorithme déterministe en $O(n^3)$ pour le calcul d'une base normale dans un corps fini. Les meilleurs algorithmes déterministes connus étaient de complexité $O(n^4)$. De plus, un algorithme de calcul du polynôme minimal de complexité $O(n^3)$ en moyenne sur un corps fini est proposé. La complexité dans le pire des cas est de $O(n^{3.5})$, alors qu'elle était $O(n^4)$ pour les algorithmes connus. Tous ces résultats constituent donc une avancée algorithmique en algèbre linéaire sur les corps finis.

Ces algorithmes ont été implantés en AXIOM, et, bien que déterministes, sont plus rapides que les algorithmes probabilistes déjà existant en AXIOM. Un article complet va paraître prochainement dans la revue Linear Algebra and Its Applications. [18]

Cryptographie

 

Protocoles basés sur les Codes correcteurs

 

Participants : Anne Canteaut , Nicolas Sendrier , Pierre Loidreau , David Chauvin


A. Canteaut, en collaboration avec F. Chabaud (GRECC, ENS-Ulm), a élaboré un algorithme de recherche de mots de poids faible dans un code linéaire quelconque. Cet algorithme améliore notablement les performances de tous les algorithmes connus précédemment. [7,22].

D'un point de vue cryptographique, il constitue une amélioration de toutes les attaques connues sur les systèmes cryptographiques fondés sur les Codes correcteurs d'erreurs. Il existe en effet plusieurs systèmes de chiffrement à clef publique (systèmes de McEliece et de Niederreiter) et schémas d'identification (schémas de Girault, de Stern et de Véron) qui reposent sur la difficulté de trouver un mot de poids minimum dans un code linéaire dont seule une matrice génératrice est connue. Leur principal intérêt est qu'ils constituent désormais une des rares alternatives connues aux systèmes à clef publique fondés sur la théorie des nombres (RSA). Une étude très précise de la complexité de cette nouvelle attaque par la théorie des chaînes de Markov a montré que le système de chiffrement de McEliece employé avec ses paramètres originaux n'assure pas une sécurité satisfaisante [3].

Du reste, cet algorithme a également été utilisé dans l'optique de la théorie des Codes puisqu'il a permis à Anne Canteaut de déterminer la distance minimale de certains Codes BCH en longueur 511, qui était jusqu'à ce jour inconnue [3].


L'étude des Codes permutés est un autre aspect de la recherche sur les protocoles basés sur les Codes correcteurs. Il s'agit de savoir dans quelle mesure l'action d'une permutation détruit la structure d'un code donné. C'est en ce sens que les travaux sur les Codes équivalents ont des applications en cryptographie (cf. §[*] et [*]). Cette attaque, dite attaque par structure, permettrait de retrouver la clé secrète d'un cryptosystème de type McEliece; de façon générale, il s'agit de déterminer des classes de clés (i.e. de Codes) faibles.

Une étude de la structure des Codes concaténés du premier ordre a permis à N. Sendrier d'obtenir des résultats concernant l'utilisation de ces Codes pour des systèmes cryptographiques à clé publique ; la forme très particulière des mots de petit poids du dual des Codes concaténés permet de retrouver la structure concaténée pourtant cachée par une permutation aléatoire [57]. Cette étude a des conséquences immédiates en cryptographie puisqu'elle montre que l'utilisation de ces Codes dans des cryptosystèmes à clé publique de type McEliece ou Niedereitter, n'est pas fiable. Des travaux récents sur les cryptosystèmes à clé publique envisagent l'utilisation de Codes concaténés dont le code externe est choisi dans une famille de Codes géométriques et le code interne est un code de parité simple. Cette famille de Codes concaténés permet d'éviter l'attaque mise au point par N. Sendrier en 1995. Il semble néanmoins possible de généraliser cette attaque et de fragiliser ainsi ce nouveau système.


Jusqu'à ce jour, il n'y a pas de résultat connu sur l'attaque par structure du système de McEliece basé sur les Codes de Goppa. La structure des Codes de Goppa semble suffisament complexe, la classe suffisamment large ... Toutefois nous avons obtenu trés récemment des résultats encourageants. Nous arrivons à isoler des classes de Codes de Goppa qui possèdent certains invariants, des isomorphismes de corps; il s'agit d'une application de l'algorithme de N. Sendrier (cf. [*]). Une étude précise des invariants utilisés a été réalisée par P. Loidreau[44].


D. Chauvin a étudié, pour son mémoire de DEA, les Codes de Gabidulin et leur implication dans les cryptosystèmes à clé publique [42].

Fonctions cryptographiques et chiffrement

 

Participants : Anne Canteaut , Claude Carlet , Pascale Charpin , Caroline Fontaine , Victor Zinoviev


Les fonctions booléennes sont un objet de codage, au sens large. Ainsi leur utilisation dans les protocoles de chiffrement ou dans la définition de séquences fortement autocorrélées est bien connue.

D'autre part, leurs propriétés ont surtout été étudiées par les théoriciens des Codes. En effet, ces propriétés sont étroitement liées aux propriétés des Codes cycliques. Plus précisemment, le degré d'une fonction détermine son appartenance à l'un ou l'autre des Codes de Reed et Muller, Codes de référence dans la théorie.

Il s'agit là d'un des thèmes de recherche important du projet. Le travail se poursuit surtout dans l'optique cryptographique. On veut étudier et construire des classes de fonctions qui augmentent la potentialité des systèmes ou leur résistance aux différentes cryptanalyses connues.

La haute non-linéarité

Une fonction est de haute non-linéarité lorsqu'elle se situe à grande distance de l'espace $R(1,m)$des fonctions affines de $m$ variables. Cela signifie qu'elle définit un translaté de l'espace $R(1,m)$ de poids de Hamming élevé.

La notion de fonction courbe, introduite en 1975, désigne la non-linéarité maximum des fonctions booléennes, lorsque $m$ est un nombre pair. Ce maximum est inconnu lorsque $m$ est impair. La classification des fonctions courbes et la détermination de la non linéarité en dimension impaire, sont des problèmes cruciaux, réputés très difficiles. Une partie de l'étude demandée par la DRET (voir §[*]) se situe dans ce contexte.

C. Fontaine mène une étude exploratoire de la propriété de non linéarité, s'appuyant sur un corpus de fonctions ayant une représentation courte. Ce corpus, algébriquement très structuré, est aisément manipulable. Les premiers résultats montrent surtout une bonne distribution des éléments du corpus dans l'ensemble des fonctions booléennes. Ces résultats font l'objet d'un article soumis pour publication [53]. C. Fontaine a exposé ses résultats dans plusieurs séminaires, comme par exemple au SCSSI et à l'école d'hiver de Mölle (Suède) [35].

Fonctions courbes

C. Carlet a introduit plusieurs constructions de fonctions sans corrélation definies sur des corps de Galois et des anneaux de Galois généraux de caractéristiques paires (EUROCRYPT'97 [29]). Ces nouvelles constructions établissent un lien nouveau avec la notion de fonction courbe. Il a caractérisé, en collaboration avec Philippe Guillot, les fonctions courbes en termes de géométries discrètes [8]. Plus récemment, il a obtenu, toujours avec Philippe Guillot, une caractérisation univoque de ces fonctions qui apporte un nouvel outil pour leur étude, dans la perspective, sans doute lointaine, de leur classification [9].

Fonctions presque courbes et chiffrement à clé secrète

La cryptanalyse linéaire et la cryptanalyse différentielle sont les principales attaques connues des systèmes de chiffrement à clé secrète. Dans les systèmes de type DES, on envisage actuellement de remplacer la fonction itérée par une permutation sur un corps fini d'ordre élevé. L'étude des fonctions résistantes aux cryptanalyses linéaire et différentielle est donc un sujet de recherche important dans lequel plusieurs chercheurs du projet se sont investis.

Au plan théorique, C. Carlet, P. Charpin et V. Zinoviev on mené une étude fondamentale sur ces fonctions, mettant en évidence les liens avec la classification des Codes cycliques de grande dimension . Ceci permet d'utiliser la ``boite à outil'' des Codes cycliques dans ce contexte [51]. Ce travail a fait l'objet de plusieurs conférences [26,27], en particulier au Workshop IEEE de théorie de l'information, session ``Coding and Cryptography''. Une étude complémentaire est menée avec A. Tietäväinen (cf. §[*]).

Les chiffrements de Feistel, famille dont fait partie le DES, sont des systèmes de chiffrement itératifs opérant sur des blocs de message de \(2n\) bits (on choisit généralement \(n\) égal à 32 ou 64) qui sont construits sur la base d'une permutation \(f\) de \({\bf F}_2^n\). A. Canteaut a récemment établi un critère permettant d'assurer qu'un chiffrement de Feistel résiste à la cryptanalyse différentielle [25,24]. Ce critère ne dépend que de la permutation \(f\)utilisée et ne nécessite aucune hypothèse supplémentaire, contrairement à un résultat précédent de Nyberg et Knudsen qui était valide uniquement si l'on supposait que la valeur des clefs utilisées n'avait aucune influence sur le comportement statistique de l'algorithme. Précisemment, elle a montré que la résistance à la cryptanalyse différentielle d'un chiffrement de Feistel utilisant une permutation \(f\) de \({\bf F}_2^n\) dépend uniquement du nombre de solutions \(x\) de l'équation \(f(x+a)+f(x) = b\) pour \(a\) et \(b\) non nuls dans \({\bf F}_2^n\). Lorsque chacune de ces équations a au plus \(\delta\) solutions, la fonction \(f\) est dite différentiellement \(\delta\)-uniforme et la complexité de la cryptanalyse différentielle du système est une fonction en \( 1/ \delta^2\).

Fonctions t-résilientes

Les fonctions t-résilientes forment une classe de fonctions booléennes très utilisées en cryptographie, en particulier pour l'assemblage des sorties de registres à décalage pour le chiffrement par flux. Elles interviennent également dans la conception de nombreuses primitives conventionnelles telles les fonctions de hachage. P. Camion et A. Canteaut ont récemment établi plusieurs caractérisations générales de ces fonctions en exploitant certaines propriétés de leur transformée de Fourier et leur lien avec les Codes correcteurs [41]. Ces travaux leur ont permis de construire de nouvelles classes de fonctions résilientes particulièrement bien adaptées aux applications cryptographiques. La mise à jour, par ce biais, de nouvelles propriétés algébriques des fonctions résilientes et sans corrélation a également conduit à la définition d'un nouveau critère de sécurité pour les primitives cryptographiques conventionnelles.


Notes:

...ROTH
E. Petrank and R.M. Roth. ``Is code equivalence easy to decide?'' preprint, 1997.



previous up next contents Précédent : Logiciels Remonter : Projet CODES, Codage et cryptographie Suivant : Actions industrielles