/volper/user1x/users/wschon/public_html/sr06/txPHP/maths/math.php
L'opération modulo retourne le reste d'une division entière.
ex : 12 % 5 = 2 (% est le symbole de l'opération modulo)
Cela se lit : A congru à B modulo P.
Soit, que A et B sont équivalents, à de multiples soustractions ou additions de P près.
Ainsi on peut définir :
Dans la suite de ce cours, il faut garder à l'esprit que toutes les opérations de somme seront modulées par 2.
Ainsi, tous coefficients rencontrés sera égal a 0 ou 1.
De plus, dans ce cas, la somme et la différence sont équivalentes ( pour tout élément X et -X sont congrus à X modulo 2).
Il est aussi possible de faire des congruences sur des polynômes
En effet, si les polynômes ont des coefficients entiers, alors la factorisation, soustraction, addition et division sont possibles.
Un groupe G est un ensemble muni d'une opération binaire * telle que :
Un corps F est un ensemble tel que :
Un corps de Gallois GF(N) est un corps avec un nombre finis d'élément
Pour l'AES, on utilise un corps premier. C'est à dire un corps de la forme :
avec p premier et
Tout nombre entier peut aisément être exprimé sous forme de puissance de 2, et ainsi être converti en binaire.
En binaire, une suite de 8 bits est un octet.
Le bit le plus à droite d'un octet est appelé bit de poids faible. Il correspond à 20 = 1.
Le bit le plus à gauche d'un octet est appelé bit de poids fort. Il correspond à 27 = 128.
Dans le cadre de l'AES, on utilise GF(28), soit une extension du corps de gallois GF(21).
Pour représenter ces éléments on utilise des polynômes dont les coefficients sont compris dans GF(2) (soit {0 ; 1}).
On peut donc représenter tout ces polynômes tels que :
avec
Les opérations usuelles étant possibles avec des polynômes, GF(28) représente l'ensemble des polynômes de degré inférieur ou égal à 7 (et de coefficients < 2).
Pour la compréhension future des applications, il faut bien différencier les polynômes de leur signification.
Pour l'AES, les polynômes sont issus de la conversion en binaire du texte clair.
Cela ne correspond donc pas à une valeur de l'ensemble des entiers naturels. Il faut rester dans GF(28), donc rester sous forme polynômiale.
La somme se fait par puissance :
Comme les coefficients prennent leurs valeurs dans GF(2), la somme est modulée par 2.
Elle correspond alors à un "OU" exclusif.
En effet :
Ce qui correspond à la table de vérité du "OU exclusif".
Dans le cas de la multiplication, il est possible de dépasser 27. Pour compenser cela, on module la multiplication par un polynôme :
Avec P(X) un polynôme irréductible (ici : qui ne peut pas être factorisé). Dans le cas de l'AES, ce polynôme fait partie du standard. il s'agit de :
Exemple :
Les coefficients se trouvent dans GF(2), on applique donc tout d'abord l'opération "+" modulée par 2 (correspondand à un XOR)
Dans l'exemple, le polynôme a un degré supérieur à 7. Il faut donc utiliser le polynôme P(x) donné précédemment pour moduler.
Pour moduler ce résulat, il faut éléver P(x) a un degré égal au polynôme à réduire.
On peut voir que le degré du polynôme est toujours strictement supérieur à 7.
On répète donc l'opération.
Désormais, le résultat est d'un degré strictement inférieur à 8. Il est donc compris par construction (degré inférieur ou égal à 7 et coefficients inférieurs à 2) dans le corps de Gallois utiisé (GF(28)).
Il est donc possible de le représenter sous sa forme binaire (sous la forme d'un octet), avec seulement ses coefficients :