Titre d'identification du site
Format PDF
Menu principal :
Catégories :
À propos :

Plusieurs d'entre nous ont toujours ce désir d'apprendre de nouvelles choses afin d'enrichir leur savoir. Que ce soit pour parfaire une culture personnelle, pour des raisons professionnelles ou encore éducatives. On peut aussi avoir le désir de rafraîchir certaines notions qu'on a déjà apprises mais oubliées avec le temps. Par exemple, en faisant un retour plusieurs années plus tard sur des matières qu'on a aimées à l'école, et peut-être même sur celles qu'on a détestées!

Quoiqu'il en soit, ce site vous propose des contenus sur différents sujets de culture générale. Je me présente, Claude Mallette, retraité dans le domaine de l'informatique. Je suis toujours animé par cette soif d'étendre mon champ de connaissances et j'aimerais en partager le fruit avec vous. J'ai une préférence pour tout ce qui concerne la science mais j'ai aussi un intérêt pour d'autres domaines comme, par exemple, l'histoire.

Les sujets dans ce site sont présentés sous forme d'articles et de tableaux regroupés par catégories. Le tout est présenté dans un style condensé qui permet de prendre connaissance de plusieurs faits dans un même contenu. Pour emprunter une formule souvent entendue, ici on essaie de « faire plus avec moins »!

Bien que le site puisse être utilisé sur un appareil mobile comme un téléphone, il est toutefois recommandé de le consulter sur PC afin de bénéficier d'une meilleure expérience utilisateur en raison des tableaux qui peuvent s'étendre en largeur.

Fermer

Corps finis et chiffrement des données

Publication initiale : 4 juillet 2025

À savoir avant de commencer :

  • Notation hexadécimale;
  • Opérations modulo;
  • Opérations sur des bits : OU exclusif, décalage, etc.;
  • Si possible, quelques notions sur les polynômes (ex.  x3 + x + 1).

1. Introduction

La théorie des corps finis a été développée au début du XIXe siècle par le jeune mathématicien Évariste Galois, mort à seulement 20 ans. Elle est notamment utilisée en cryptographie informatique où elle joue un rôle fondamental. Certains principes généraux de cette théorie seront décrits de manière plus ou moins formelle dans cet article. L'accent sera davantage mis, avec des exemples, sur leur application dans le domaine du chiffrement des données et en particulier l'algorithme AES-256.

2. Description sommaire

Un corps fini est un ensemble contenant un nombre fini d’éléments (appelé son cardinal) dans lequel on peut effectuer les opérations d’addition, de soustraction, de multiplication et de division (sauf par zéro), avec les mêmes règles que dans les nombres usuels. On peut noter les propriétés suivantes d'un corps fini :

  • Le cardinal d'un corps fini est toujours une puissance d'un nombre premier p, soit pn;
  • p est un nombre premier appelé la caractéristique du corps;
  • n est un nombre entier positif appelé le degré d'extension du corps fini.

2.1 Notations employées

Un corps fini peut être noté comme suit :

Fq (où q = pn)

La notation suivante peut aussi être employée si q donne un nombre trop grand :

Fpn

Dans la documentation anglo-saxonne sur le sujet, on retrouve souvent la notation suivante :

GF(q) ou encore GF(pn) {GF pour Galois Field}

2.2 Cas particulier des corps de caractéristique 2

Les corps finis de caractéristique 2 se prêtent très bien au traitement en mode binaire par ordinateur en raison de l'utilisation de la base 2 et l'attention principale du présent article sera portée sur ceux-ci.

3. Représentation polynômiale

Les éléments d'un corps fini sont souvent représentés de manière formelle par des polynômes de degré inférieur au degré d'extension n du corps fini sous la forme suivante :

cn - 1 xn - 1  +  cn - 2 xn - 2  +  . . .  +  cx1  +  cx0

Chaque coefficient ci doit être une valeur entière comprise entre 0 et p - 1.

3.1 Adaptation en représentation binaire

Pour un corps de caractéristique p = 2, ce formalisme peut être ramené à une représentation binaire plus familière en dépit de l'utilisation du terme « polynôme ». Prenons par exemple un polynôme avec un degré d'extension n = 8. Celui-ci sera exprimé comme suit :

cx7  +  cx6  +  cx5  +  cx4  +  cx3  +  cx2  +  cx1  +  cx0

Pour avoir une représentation binaire, on enlève tous les termes en x et les opérateurs + dans le polynôme :

c7    c6    c5    c4    c3    c2    c1    c0

Comme mentionné plus haut, les coefficients ci sont des entiers compris entre 0 et p - 1. Étant donné que p ici est égal à 2, les coefficients ne peuvent donc avoir que la valeur 0 ou 1, ce qui correspond à des bits d'une représentation binaire d'un nombre.

Voyons maintenant avec un exemple dans le corps fini F256 :

Équivalence entre représentations polynômiale et binaire (exemple)
Fig. 1 : Équivalence entre représentations polynômiale et binaire (exemple)

Avec cet exemple on peut faire les constatations suivantes :

  • L'exposant de chaque terme du polynôme correspond à la position d'un bit en représentation binaire;
  • Le coefficient de chaque terme dans le polynôme correspond à la valeur du bit à la position selon l'exposant.

En étendant le principe pour l'ensemble du corps fini F256 qui comporte 256 éléments, on obtient un domaine composé des valeurs binaires de 00000000 à 11111111.

4. Addition et soustraction

4.1 Addition et soustraction en représentation polynômiale

L'addition et la soustraction selon la représentation polynômiale d'un corps fini de caractéristique p commencent de la même manière que celle employée pour les polynômes conventionnels. Voyons avec un exemple d'addition :

Exemple d'addition (1) - Polynômes à additionner

Pour débuter, on fait le regroupement des termes des polynômes selon les exposants :

Exemple d'addition (2) - Regroupement selon exposants

On additionne ensuite les coefficients pour chaque groupe selon l'exposant :

Exemple d'addition (3) - Additionner coefficients par groupe

À ce point-ci, l'addition et la soustraction de polynômes dans un corps fini diffèrent de celles pour les polynômes conventionnels. Lorsque les opérations sont effectuées dans un corps fini, il faut appliquer aux totaux des coefficients la réduction modulo selon la caractéristique p du corps. Si on prend la caractéristique 2 dans l'exemple, on utilise alors la réduction modulo 2 :

Exemple d'addition (4) - Modulo total coefficients par groupe

En récrivant le polynôme avec les nouveaux coefficients, on obtient le résultat de l'addition dans un corps fini :

Exemple d'addition (5) - Résultat addition

4.2 Addition et soustraction en représentation binaire

Lorsqu qu'on fait l'addition ou la soustraction dans un corps fini de caractéristique 2 en utilisant la représentation binaire, ces opérations sont équivalentes. On utilise alors simplement l'opération de OU exclusif entre les opérandes. On peut voir ci-dessous l'addition en représentation binaire avec le même exemple utilisé jusqu'ici sous forme de polynômes :

Exemple d'addition (6) - Représentation binaire

5. Polynôme irréductible

Dans un corps fini Fpn, la multiplication et les autres opérations qui en sont dérivées (inverse multiplicatif et division) nécessitent l'emploi d'un « polynôme irréductible » prédéfini. Celui-ci consiste en un polynôme de degré n qu'il n'est pas possible d'exprimer comme un produit de deux autres polynômes dans le corps fini, c'est pour cette raison qu'on dit que le polynôme est irréductible.

Le polynôme irréductible joue le même rôle dans un corps fini qu'un nombre premier parmi les nombres entiers. Il sert pour la multiplication de polynômes au même titre que le nombre premier dans une mulun nombre composétiplication afin d'obtenir un nombre composé.

Pour un corps fini donné, incluant F256, il est possible d'avoir plusieurs polynômes irréductibles. Pour l'algorithme AES-256, par exemple, qui utilise F256, le polynôme irréductible choisi est le suivant :

x8 + x4 + x3 + x + 1 (équivalent en mode binaire : 100011011, ou 11B en mode hexadécimal).

6. Multiplication dans un corps fini

Pour décrire la multiplication PQ entre deux polynômes dans un corps fini Fpn, nous allons examiner l'opération dans le contexte des corps finis de caractéristique 2 puisque l'article porte principalement l'attention sur ceux-ci.

La multiplication dans un corps fini se fait en deux grandes étapes :

  • Multiplication brute;
  • Réduction modulo selon le polynôme irréductible.

Nous allons voir plus en détail chacune de celles-ci dans les prochaines sections avec un exemple dans le corps fini F256 (donc de caractéristique p = 2 et de degré d'extension n = 8), avec le polynôme irréductible utilisé pour l'algorithme AES-256 : x8 + x4 + x3 + x + 1 (binaire : 100011011, hexadécimal : 11B).

À noter que le polynôme irréductible n'est pas utilisé pour l'étape de multiplication brute et est réservé pour celle de réduction modulo.

6.1 Première étape : multiplication brute

Cette étape sera décrite en employant la représentation polynômiale, qui est plus compliquée mais qui se rapproche plus du concept général, et la représentation binaire, plus simple mais applicable seulement aux corps finis de caractéristique 2.

6.1 1 Multiplication brute en représentation polynômiale

À titre d'exemple, prenons la multiplication à faire entre les polynômes P (multiplicande) et Q (multiplicateur) suivants :

Exemple de multiplication (1) - Polynômes à multiplier

La première chose à faire est de faire correspondre en paires chaque terme d'un des polynômes à chacun des termes de l'autre polynôme et à multiplier les termes de chaque paire :

Exemple de multiplication (2) - Correspondances terme à terme

Les résultats obtenus consistent en eux-mêmes des polynômes. On additionne ensuite chacun de ces polynômes selon la même méthode que celle exposée à la section 4. Pour cela, on fait le regroupement des termes selon les exposants :

Exemple de multiplication (3) - Regroupement selon exposants

On additionne les coefficients pour chaque groupe selon l'exposant :

Exemple de multiplication (4) - Additionner coefficients par groupe

Et on applique la réduction modulo 2 à chaque total de coefficients :

Exemple de multiplication (5) - Modulo total coefficients par groupe

En récrivant le polynôme avec les nouveaux coefficients, on obtient le résultat de la multiplication brute :

Exemple de multiplication (6) - Résultat multiplication brute

La valeur binaire équivalant au résultat de la multiplication brute est 110110111011100.

6.1 2 Multiplication brute en représentation binaire

Faisons la même démarche, en employant cette fois-ci la représentation binaire. Pour cela, employons la méthode suivante pour les polynômes P (multiplicande) et Q (multiplicateur) :

  • Utiliser les positions des bits du mutliplicateur Q qui ont la valeur 1;
  • Pour chacun de ces bits du multiplicateur Q, en partant du plus significatif, on décale vers la gauche la valeur du multiplicande P autant de fois selon la position du bit, en complétant par des 0 par la droite;
  • Additionner toutes les valeurs décalées avec un OU exclusif.

Le développement pour obtenir le résultat de la multiplication brute suivant cette méthode est montré ci-dessous.

Multiplication brute en représentation binaire
Fig. 2 : Multiplication brute en représentation binaire

On peut constater que le résultat de la multiplication brute obtenu ici avec la représentation binaire est le même que celui obtenu avec la représentation polynômiale.

6.2 Deuxième étape : réduction modulo selon le polynôme irréductible

Pour cette étape, nous allons strictement utiliser la représentation binaire. Comme on peut le constater, le résultat de la multiplication brute obtenu avec l'exemple, 110110111011100, est passablement long.

Plus particulièrement il excède la valeur maximale du corps fini F256 (11111111 en mode binaire) utilisé pour l'exemple et il doit donc être ramené à l'intérieur des limites du corps fini. C'est ici que la réduction modulo selon le polynôme irréductible entre en jeu.

Pour cela, nous allons nous inspirer de la division à crochet en appliquant la méthodologie suivante :

  • Utiliser le résultat de la multiplication brute comme dividende et comme premier résultat intermédiare;
  • Utiliser le polynôme irréductible comme diviseur;
  • Pour chaque calcul de nouveau résultat intermédiaire, décaler le polynôme irréductible vers la gauche, en le complétant pas la droite par des 0, jusqu'au bit le plus significatif du dernier résultat intermédiaire;
  • Appliquer l'opération de OU exclusif entre le polynôme irréductible décalé et le dernier résultat intermédiaire;
  • Appliquer le procédé tant que le résultat intermédiaire n'est pas à l'intérieur du corps fini.

Suivant cette méthodologie, le développement de la réduction modulo selon le polynôme irréductible pour le résultat de la multiplication brute en exemple est présenté ci-dessous.

Réduction modulo selon le polynôme irréductible
Fig. 3 : Réduction modulo selon le polynôme irréductible

Le dernier résultat intermédiaire, qui est à l'intérieur des limites du corps fini, constitue le resultat de la multiplication dans le corps fini.

6.3 Bijection de la multiplication dans un corps fini

Le tableau ci-dessous, applicable à l'exemple de multiplication dans un corps fini que nous venons de voir, montre les différents résultats de multiplications pour dans F256 avec le polynôme irréductible 100011011 (binaire) qu'il est possible d'avoir en utilisant D4 (hexadécimal) comme multiplicande. Les rangées représentent les 4 bits les plus significatifs du multiplicateur alors que les colonnes désignent les 4 bits les moins significatifs. Suivant ce principe, on retrouve bel et bien la valeur A4 comme résultat pour le multiplicateur 8B de l'exemple.

Table de multiplication dans F256 pour D4
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F
0_ 00 D4 B3 67 7D A9 CE 1A FA 2E 49 9D 87 53 34 E0
1_ EF 3B 5C 88 92 46 21 F5 15 C1 A6 72 68 BC DB 0F
2_ C5 11 76 A2 B8 6C 0B DF 3F EB 8C 58 42 96 F1 25
3_ 2A FE 99 4D 57 83 E4 30 D0 04 63 B7 AD 79 1E CA
4_ 91 45 22 F6 EC 38 5F 8B 6B BF D8 0C 16 C2 A5 71
5_ 7E AA CD 19 03 D7 B0 64 84 50 37 E3 F9 2D 4A 9E
6_ 54 80 E7 33 29 FD 9A 4E AE 7A 1D C9 D3 07 60 B4
7_ BB 6F 08 DC C6 12 75 A1 41 95 F2 26 3C E8 8F 5B
8_ 39 ED 8A 5E 44 90 F7 23 C3 17 70 A4 BE 6A 0D D9
9_ D6 02 65 B1 AB 7F 18 CC 2C F8 9F 4B 51 85 E2 36
A_ FC 28 4F 9B 81 55 32 E6 06 D2 B5 61 7B AF C8 1C
B_ 13 C7 A0 74 6E BA DD 09 E9 3D 5A 8E 94 40 27 F3
C_ A8 7C 1B CF D5 01 66 B2 52 86 E1 35 2F FB 9C 48
D_ 47 93 F4 20 3A EE 89 5D BD 69 0E DA C0 14 73 A7
E_ 6D B9 DE 0A 10 C4 A3 77 97 43 24 F0 EA 3E 59 8D
F_ 82 56 31 E5 FF 2B 4C 98 78 AC CB 1F 05 D1 B6 62

La présentation du tableau nous permet de faire les constatations suivantes  :

  • Toutes les valeurs dans F256 apparaissent comme multiplicateurs possibles pour D4;
  • Si on observe bien attentivement, toutes les valeurs dans F256 apparaissent également comme résultats possibles pour D4;
  • Chaque résultat n'apparaît qu'une seule fois que pour un seul multiplicateur;
  • Par la nature même du tableau, il n'y a qu'un seul résultat par multiplicateur.

En empruntant un terme issu de la théorie des ensembles, toutes ces propriétés font que la multiplication selon le tableau consiste en une bijection qui peut être illustrée par des correspondances comme suit.

Correspondances pour multiplication dans F<sub>256</sub> pour <span class="hexa">D4</span> (exemple)
Fig. 4 : Correspondances pour multiplication dans F256 pour D4 (exemple)

Au-delà de l'exemple montré ici, la nature bijective de la multiplication dans un corps fini s'applique de façon générale à tous les corps finis, pour les valeurs non nulles (i.e. différentes de 0).

6.4 Non-linéarité du produit

Une autre caractéristique de la multiplication dans un corps fini est que le résultat varie énormément sans qu'on puisse établir de lien avec la manière dont varie le multiplicateur, même si ce n'est que très légèrement. Cela fait en sorte que le résultat est « non linéaire » par rapport au multiplicateur et lui donne une apparence imprévisible en passant d'un multiplicateur à l'autre.

En reprenant la rangée pour les multiplicateurs commençant par 0 du tableau de multiplication dans F256 pour D4 montré précédemment, on peut constater le caractère quasi-aléatoire des résultats.

_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F
0_ 00 D4 B3 67 7D A9 CE 1A FA 2E 49 9D 87 53 34 E0

Toujours avec l'exemple de la multiplication dans F256 pour D4, le graphique de distribution montré ci-dessous permet de représenter visuellement la difficulté d'établir un lien entre le résultat et le multiplicateur.

Graphique de distribution du résultat pour multiplication dans F256 pour D4
Fig. 5 : Graphique de distribution du résultat pour multiplication dans F256 pour D4

Par sa capacité de produire des résultats presque imprévisibles, la multiplication dans un corps fini constitue la pierre angulaire dans le domaine du chiffrement des données, notamment avec l'algorithme AES-256. La non-linéarité des résultats permet de « brouiller les cartes » afin que des données secrètes puissent être échangées entre deux parties dans un format incompréhensible pour des observateurs indiscrets.

Outre le corps fini F256, l'algorithme AES-256 utilise aussi, lorsqu'il est employé avec le mode GCM (ce qui est la norme dans les échanges sur Internet), le corps F2128 afin d'augmenter exponentiellement l'apparence de caractère imprévisible de l'opération de multiplication dans un corps fini. L'utilisation de ce corps par AES-256 est accompagnée du polynôme irréductible suivant :

x128 + x7 + x2 + x + 1 (hexadécimal : 1 00000000 00000000 00000000 00000087)

7. Inverse multiplicatif

Pour un élément donné a d'un corps fini Fpn, son inverse multiplicatif est l'élément pour lequel le résultat de la multiplication de a avec celui-ci donne 1 (en employant le polyôme irréductible approprié).

En utilisant comme exemple le corps fini F256, une manière de déterminer l'imverse multiplicatif consiste à élever a à la puissance 254 pour obtenir directement le résultat voulu. Cela se fait en un nombre réduit d'étapes par un jeu de multiplications (modulo un polynôme irréductible) en reprenant le résultat de l'étape précédente comme indiqué ci-dessous.

  • a3 = aaa;
  • a7 = a3a3a;
  • a15 = a7a7a;
  • a31 = a15a15a;
  • a63 = a31a31a;
  • a127 = a63a63a;
  • a254 = a127a127.

7.1 Pourquoi la puissance 254?

Celle-ci tire son origine d'une des propriétés de l'ensemble des éléments non nuls d'un corps fini de former un « groupe multiplicatif cyclique ». Sans entrer dans les détails qui nous mèneraient un peu loin du cadre de cet article, cela permet de faire l'énoncé suivant pour le corps fini F256 pour tout entier non nul a appartenant au corps fini.

a255a0 (mod 256) {≡ : symbole de congruence qui signifie « est égal à, modulo une certaine valeur »}

Étant donné que tout nombre élevé à la puissance 0 donne comme résultat 1, on peut appliquer ce principe à l'énoncé, qui fait en sorte que a255 est lui aussi égal à 1 :

a255a0 (mod 256) = 1

Mais a255 est aussi égal à a254a. On a donc :

a255 = a254a = 1

Cela donne exactement ce que l'on cherche : la valeur a254 à multiplier à a pour avoir 1 comme résultat. Donc, a254 est l'inverse multiplicatif de a dans F256, et ce, peu importe le polynôme irréductible employé.

Il existe plusieurs autres méthodes, non montrées dans la présente section, pour déterminer l'inverse multiplicatif mais celle utilisant les multiplications successives donnée plus haut demeure simple et est relativement peu coûteuse en temps d'exécution.

Le tableau ci-dessous utilisé par l'algorithme AES-256 montre en notation hexadécimale tous les inverses multiplicatifs dans F256 selon le polynôme irréductible 100011011 (binaire). Les rangées représentent les 4 bits les plus significatifs du nombre dont on veut déterminer l'inverse multiplicatif alors que les colonnes désignent les 4 bits les moins significatifs. Suivant ce principe, on retrouve, par exemple, la valeur EF comme inverse multiplicatif pour B3.

Inverses multiplicatifs dans F256
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F
0_ -- 01 8D F6 CB 52 7B D1 E8 4F 29 C0 B0 E1 E5 C7
1_ 74 B4 AA 4B 99 2B 60 5F 58 3F FD CC FF 40 EE B2
2_ 3A 6E 5A F1 55 4D A8 C9 C1 0A 98 15 30 44 A2 C2
3_ 2C 45 92 6C F3 39 66 42 F2 35 20 6F 77 BB 59 19
4_ 1D FE 37 67 2D 31 F5 69 A7 64 AB 13 54 25 E9 09
5_ ED 5C 05 CA 4C 24 87 BF 18 3E 22 F0 51 EC 61 17
6_ 16 5E AF D3 49 A6 36 43 F4 47 91 DF 33 93 21 3B
7_ 79 B7 97 85 10 B5 BA 3C B6 70 D0 06 A1 FA 81 82
8_ 83 7E 7F 80 96 73 BE 56 9B 9E 95 D9 F7 02 B9 A4
9_ DE 6A 32 6D D8 8A 84 72 2A 14 9F 88 F9 DC 89 9A
A_ FB 7C 2E C3 8F B8 65 48 26 C8 12 4A CE E7 D2 62
B_ 0C E0 1F EF 11 75 78 71 A5 8E 76 3D BD BC 86 57
C_ 0B 28 2F A3 DA D4 E4 0F A9 27 53 04 1B FC AC E6
D_ 7A 07 AE 63 C5 DB E2 EA 94 8B C4 D5 9D F8 90 6B
E_ B1 0D D6 EB C6 0E CF AD 08 4E D7 E3 5D 50 1E B3
F_ 5B 23 38 34 68 46 03 8C DD 9C 7D A0 CD 1A 41 1C

8. Division dans un corps fini

Contrairement à la multiplication dans un corps fini, la division dans un corps fini est très peu utilisée dans les algorithmes de chiffrement.

Quoi qu'il en soit, la division d'un polynôme P par un polynôme diviseur Q dans un corps fini se fait en utilisant des concepts qui ont été montrés dans les sections précédentes, soit en multipliant P par l'inverse multiplicatif de Q.

9. Conclusion

Un corps fini ne s'applique qu'à un nombre premier positif, appelé la caractéristique du corps fini, ou à celui-ci élevé à une certaine puissance exprimée en un nombre entier plus grand que 0, appelée le degré d'extension du corps fini.

Les opérations usuelles d'addition, de soustraction, de multiplication et de division (sauf par 0) s'appliquent à un corps fini.

La multiplication dans un corps fini nécessite l'usage d'un polynôme irréductible. La règle est la même pour opérations de division et d'inverse multiplicatif dans un corps fini, qui sont basées sur la multiplication dans un corps fini.

La représentation polynômiale, qui est fréquemment utilisée pour les corps finis en général, est certes intimidante. Toutefois, lorsqu'il s'agit d'utiliser certains éléments de la théorie des corps finis pour le cas particulier des corps de caractéristique 2, qui sont utilisés pour le chiffrement des données, on peut utiliser à la place la notation binaire, qui est plus familière.

La multiplication et l'inverse multiplicatif dans un corps fini de caractéristique 2 sont les principales opérations utilisées pour le chiffrement des données. Étant par leur nature des bijections. Ces opérations ont le potentiel de produire le plus large éventail possible de résultats avec toutes les valeurs faisant partie du corps fini. Cette faculté et celle de produire des résultats quasi-imprévisibles (non-linéarité) constituent des atouts indispensables pour les algorithmes de chiffrement des données.

Références

Pages Wikipédia

© Claude Mallette 2025 – Tous droits réservés.
Corps finis et chiffrement des données :