/volper/user1x/users/wschon/public_html/sr06/txPHP/maths/math.php AES demonstration tool

Modulo et congruences

L'opération modulo retourne le reste d'une division entière.
ex : 12 % 5 = 2 (% est le symbole de l'opération modulo)

Dans ,AB mod PA=B+k·P; k
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 :

  • 12 congru à 5 modulo 7 : 125 mod 712+(-1)*7
  • 12 congru à 33 modulo 7 : 1233 mod 712+(3)*7
  • 12 congru à -2 modulo 7 : 12-2 mod 712+(-2)*7

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.

Les ensembles : Groupes

Un groupe G est un ensemble muni d'une opération binaire * telle que :

  • L'opération * est une loi de composition interne. Cela signifie que :
     α,β G ; α * β  G
  • L'operation * est associative, soit :
     a,b,c  G ; a*b*c = a*b*c
  • L'opération * possède un élément neutre, soit :
     e  G,  α  G; α*e = e*α
  • L'opération * admet l'existence d'un élément inverse :
     α  G,  α-1 ; α * α-1 = α-1 * α = e
  • Si l'opération * est commutative, G est abélien :
    G abélien α,β G;  α*β = β*α

Les ensembles : Corps

Un corps F est un ensemble tel que :

  • Tout élément de F forme un groupe additif , avec 0 comme élément neutre pour l'opération +
  • Tout élément de F (sauf 0) forme un groupe multiplicatif, avec 1 comme élément neutre pour l'opération *
  • Quand les deux groupes sont joins, la loi de distributivité s'applique :
    a,b,c  F; a*b+c = a*b + a*c

Corps de Gallois

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 : GFpn avec p premier et n  

Représentation sous forme de polynômes

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 :
AG(28);A=a7·X7+a6·X6+a5·X5+a4·X4+a3·X3+a2·X2+a1·X1+a0·X0
avec ai{0;1}
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.

Calculs polynômiaux : Somme

La somme se fait par puissance :
A+B = (a7+b7)*X7+(a6+b6)*X6+(a5+b5)*X5+(a4+b4)*X4+(a3+b3)*X3+(a2+b2)*X2+(a1+b1)*X+(a0+b0)*1
Comme les coefficients prennent leurs valeurs dans GF(2), la somme est modulée par 2.
Elle correspond alors à un "OU" exclusif.
En effet :

  • Si les coefficients valent tout les deux 0, alors leurs somme donnera 0.
    00 mod 20+(0)*2
  • Dans le cas où ils sont tout les deux égaux à 1, alors la somme congru à 0 modulo 2.
    20 mod 20+(-1)*2
  • Dans le cas où les coefficients sont 0 et 1, alors la somme congru à 1 modulo 2.
    11 mod 20+(0)*2

Ce qui correspond à la table de vérité du "OU exclusif".

Calculs polynômiaux : Multiplication

Dans le cas de la multiplication, il est possible de dépasser 27. Pour compenser cela, on module la multiplication par un polynôme :
A,BG(28); A*B = A(X)×B(X) mod P(X)
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 :
P(X)=X8+X4+X3+X+1

Exemple :
SoitA=X5+X4+1, B=X5+X2+XdoncA·B=(X5+X4+1)·(X5+X2+X)doncA·B=X10+X9+X7+X6+X6+X5+X5+X2+X

Les coefficients se trouvent dans GF(2), on applique donc tout d'abord l'opération "+" modulée par 2 (correspondand à un XOR)
Ainsi A·B=X10+X9+X7+(X6+X6)+(X5+X5)+X2+X=X10+X9+X7+X2+X

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.
Ainsi, degré(A·B)=10, degré(P)=8or 10-8=2Ainsi, A·BA·B+P·X2 mod P
Or A·B+P·X2X10+X9+X7+X2+X+(X8+X4+X3+X+1)·X2 mod PX10+X10+X9+X7+X6+X5+X3+X2+X2+X mod PX9+X7+X6+X5+X3+X mod P

On peut voir que le degré du polynôme est toujours strictement supérieur à 7.
On répète donc l'opération.
Or A·B+P·XX9+X7+X6+X5+X3+X+(X8+X4+X3+X+1)·X mod PX9+X9+X7+X6+X5+X5+X4+X3+X2+X+X mod PX7+X6+X4+X3+X2 mod P

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 :
R=(1 1 0 1 1 1 0 0)2