Académique Documents
Professionnel Documents
Culture Documents
Sommaire
Cryptographie : Fiche
Sommaire
1. Bases mathématiques
1.1. Congruences
1.1.1. Définition
1.1.2. Notation
1.1.3. Remarque
1.1.4. Définition
1.1.5. Exemple
1.1.6 Propriété
1.1.7. Définition
1.1.8. Propriété
1.1.9. Démonstration
1.1.10. Propriété
1.1.11. Propriété
1.2. Interprétation logique
1.2.1. Interprétation
1.3. Permutations d'un ensemble à n éléments
1.3.1. Définition
1.3.2. Notation
1.3.4. Définition
1.3.5. Exercice
1.3.6. Correction
2. Système de chiffrement
2.1. Définition
2.3. Chiffrement symétrique (à clé secrète)
2.3.1. Système DES (Data Encryption Standard)
2.3.1.1. Fonctionnement
3. Bases mathématiques 2 (AES)
3.1. Arithmétique des entiers, suite
3.1.1. Algorithme d'Euclide étendu
3.1.2. Exemple
3.1.3. Théorème de Bézout
3.1.4. Exercice
3.1.5. Correction
3.1.6. Conséquences
3.2. Arithmétique des polynômes
3.2.1. Division
3.2.2. Théorème
3.2.3. Exercice
3.2.4. Correction
3.2.5. Quotients
3.2.6. Exercice
3.2.7. Correction
3.2.8. Théorème
3.2.9. Exemples
3.2.10. Remarque
3.2.11. Exercice
3.2.12. Correction
3.2.13 Exercice
3.2.14 Correction
4. Bases mathématiques 3 (RSA)
4.1. Nombres premiers
4.1.1. Théorème d'Euclide (~-300)
4.1.2. Démonstration
4.2. Nombres premiers entre eux
4.2.1. Définition
4.2.2. Propriété
4.2.3. Remarque
4.3. Indicatrice d'Euler (1707 - 1783)
4.3.1. Définition
4.3.2. Exemples
4.3.3. Remarque générale
4.3.4. Propriété 1
4.3.5. Démonstration
4.3.6. Propriété 2
4.3.6.1. Cas particulier
4.3.7. Démonstration
4.3.8. Propriété 3
4.3.8.1. Remarques
4.4. Exemple d'algorithme d'exponentiation rapide
4.5. Retour sur l'autre façon de calculer x−1 comme application de la propriété 2
4.6. Remarque sur le décryptage RSA
4.7. Théorème chinois des restes
4.7.1. Exercices
4.7.2. Correction
4.7.3. Retour sur le théorème chinois des restes
4.7.4. Démonstration
4.7.5. Exemple : Système bancaire allemand (2015)
4.7.6. Contre-exemple au théorème chinois des restes
4.7.7. Remarque
4.7.8. Un peu d'histoire
5. Exercices
5.1. Exercice 1
1. Bases mathématiques
1.1. Congruences
On fixe un entier n ≥ 2.
1.1.1. Définition
Deux entiers (relatifs) x et y sont congrus modulo n si n divise x − y
Autrement dit : si x et y sont égaux à un multiple de n près.
1.1.2. Notation
x ≡ y mod n
x ≡ y [n]
1.1.3. Remarque
x ≡ y [n] ⇔ (∃k ∈ Z∣y = x + 2k)
1.1.4. Définition
Pour x dans Z, on appelle classe de x modulo n l'ensemble
x = {y ∈ Z ∣ y ≡ x [n]}
1.1.5. Exemple
Soit n = 2 :
0 = { entiers pairs }
1 = { entiers impairs }
1.1.6 Propriété
Pour n ≥ 2 quelconque, il y aura exactement n classes (de 0 à n − 1)
1.1.7. Définition
On note Z/nZ l'ensemble des classes modulo n. Z/nZ a exactement n éléments.
1.1.8. Propriété
On peut définir une opération + sur Z/nZ , en posant :
x + y := x + y
∀x, y , z ∈ Z/nZ , (x + y ) + z = x + (y + z )
∃e = 0 ∣ ∀x, x + e = x
∀x , ∃y ∣ x + y = 0
1.1.9. Démonstration
Hypothese :
x′ = x
Si { alors x′ + y ′ = x + y
y′ = y
Vérifions :
x′ = x ⇔ ∃k ∈ Z ∣ x′ = x + kn
y ′ = y ⇔ ∃l ∈ Z ∣ y ′ = y + ln
Alors x′ + y ′ = (x + y) + (k + l)n ⇒ x′ + y ′ = x + y
1.1.10. Propriété
On peut faire de même pour définir la multiplication dans Z/nZ :
x × y := x × y
∀x, y , z ∈ Z/nZ , (x × y ) × z = x × (y × z )
∃e = 1 ∣ ∀x, x × e = x
Il n'est pas vrai en général que ∀x, ∃y ∣ x × y = 1
1.1.11. Propriété
∀x, y , z ∈ Z/nZ , x × (y + z ) = x × y + x × z
+ 0 1 × 0 1
0 0 1 0 0 0
1 1 0 1 0 1
1.2.1. Interprétation
0 → Faux
1 → Vrai
Alors
+ → XOR
× → AN D
1.3.1. Définition
Une permutation de X est une application σ : X → X bijective, c'est-à-dire ∀y ∈ X, ∃!x ∈ X, σ(x) = y
1.3.2. Notation
1 2 3 ... n−1
σ=( )
n
σ(1) σ(2) σ(3) ... σ(n − 1) σ(n)
1.3.4. Définition
L'ordre de σ est le plus petit entier k ≥ 0 tel que σ k = idX (⇒ σ k−1 = σ −1 )
1.3.5. Exercice
Dans ces deux cas, déterminer les points fixes, l'ordre et la permutation inverse (= réciproque)
1 2 3 4
1. n = 4, σ1 = ( )
4 1 3 2
1 2 3 4 5 6 7 8 9 10
2. n = 10, σ2 = ( )
6 10 3 1 8 4 9 5 2 7
1.3.6. Correction
Question 1:
Points fixes : 3
1 2 3 4
4 1 3 2 1 2 3 4
Ordre : ⇒ σ13 = ( ) ⇒ ordre = 3
2 4 3 1 1 2 3 4
1 2 3 4
1 2 3 4
Inverse : σ1−1 = ( )
2 4 3 1
Question 2 :
Point fixe : 3
1 2 3 4 5 6 7 8 9 10
6 10 3 1 8 4 9 5 2 7
Ordre : 4 7 3 6 5 1 2 8 10 9 ⇒ ordre = 12
...
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
Inverse : σ2−1 = ( )
4 9 3 6 8 1 10 5 7 2
2. Système de chiffrement
2.1. Définition
Un système de chiffrement, ou cryptosystème, ou chiffrement, est la donnée de (P, C, ϵ, E, D)
P : ensemble, ses éléments sont appelés messages en clair (plaintext)
C : ensemble, ses éléments sont appelés messages chiffrés (cyphertext)
K : ensemble, ses éléments sont appelés clés (keys)
ϵ : {Ek , k ∈ K} : famille de fonctions Ek : P → C, ses éléments sont appelés fonctions de chiffrement
(encryption functions)
D : {Dk , k ∈ K} : famille de fonctions Dk : C → P, ses éléments sont appelés fonctions de déchiffrement
(decryption functions)
A chaque clé e ∈ K on sait associer une clé d ∈ K telle que Dd (Ee (p)) = p pour tout message p
P = C = {0, 1}64
S
K = {(b1 , ..., b64 ) ∈ {0, 1}64 ∣ ∀j = 0, ..., 7 ∑ bSj+1 ≡ 1[2]}*
i=1
2.3.1.1. Fonctionnement
Le coeur de DES consiste en 1- tours utilisant chacun une clé différente.
3.1.2. Exemple
Calculer le pgcd de a = 126 et b = 33 :
126 = 33 × 3 + 27
33 = 27 × 1 + 6
27 = 6 × 4 + 3
6=3×2+0
= 126 × 5 − 33 × 19
= a × 5 − b × 19
3.1.4. Exercice
Trouver u et v pour a = 261 et b = 25.
3.1.5. Correction
261 = 25 × 10 + 11
25 = 11 × 2 + 3
11 = 3 × 3 + 2
3=2×1+1
2=1×2+0
1=3−2×1
= 3 − (11 − 3 × 3)
= 3 × 4 − 11
= (25 − 11 × 2) × 4 − 11
= 25 × 4 − 11 × 9
= 25 × 4 − (261 − 25 × 10) × 9
= 25 × 94 − 261 × 9
= −9a + 94b
Par identification, u = −9 et v = 94
3.1.6. Conséquences
1. Soit n entier ≥ 2, alors a est inversible dans (Z/nZ , ×) ssi pgcd(a, n) = 1.
ua + vn = ua + vn = u × a + v × n = 0 dans Z/nZ
Remarque : l'algorithme d'Euclide étendu permet de calculer cet inverse (on admet la réciproque).
Rappel : Z/nZ est muni de + et ×. C'est un corps (commutatif) si tout élément non nul est inversible pour ×.
. Ainsi p est un élément non nul de Z/nZ qui n'a pas d'inverse : s'il existait x tel que p × x = 1, on aurait alors
On peut les ajouter, les multiplier mais aussi faire la division euclidienne.
3.2.1. Division
On divise le polynôme A par le polynôme B en écrivant : A = B × Q + R avec Q ∈ K[X] et R ∈ K[X]
Soit R = 0, soit d0 R < d0 B
3.2.2. Théorème
0 ∃! Q, R.
∀A, B =
3.2.3. Exercice
On prend K = F2 . Soient
A = 1 + X2 + X3 + X5 + X6
B = X + X2 + X3 + X4
1. Calculer A + B et A × B .
2. Trouver C tel que A + C = 0.
3.2.4. Correction
Question 1 :
A + B = 1 + X + 2X 2 + 2X 3 + X 4 + X 5 + X 6
= 1 + X + X4 + X5 + X6
A × B = X + X3 + X4 + X6 + X7
+ X2 + X4 + X5 + X7 + X8
+ X3 + X5 + X6 + X8 + X9
4 6 7 9 10
+X +X +X +X +X
= X + X 2 + X 4 + X 6 + X 7 + X 10
Question 2 :
Soit K = F2 :
A+C =0 ⟺ C =A
Question 3 :
X 6 + X 5 + X 3 + X 2 + 1 + (X 4 + X 3 + X 2 + X + 1) × X 2 = X 4 + X 2 + 1
X 4 + X 2 + 1 + (X 4 + X 3 + X 2 + X + 1) × 1 = X 3 + X + 1
Q = X2 + 1
R = X3 + X + 1
Donc A = (X 2 + 1) × B + (X 3 + X + 1)
d0 (X 3 + X + 1) = 3 < d0 B
3.2.5. Quotients
Retour à Z/nZ ≡ {0, 1, ..., n − 1}[n]. Avec :
Les objets de K[X]/(f ) sont les objets de la forme P (X) ∈ K[X], P (X) + f K[X] = {P (X) +
On peut calculer dans K[X]/(f ) avec les opérations suivantes (∀P , Q ∈ K[X]/(f ) )) :
Addition :
P (X) + Q(X) := P (X) + Q(X)
Multiplication :
P (X) × Q(X) := P (X) × Q(X)
On a ainsi sur K[X]/(f ) une sructure d'anneau (commutatif), mais pas de corps en général : un élément P (X) n'a
pas forcément d'inverse pour x. Il n'existe pas forcément de Q(X) tel que P (X) × Q(X) = 1.
3.2.6. Exercice
1. Qu'est-ce que R[X]/(X 2 +1) ?
2. Dans F2 [X], on prend f (x) = X 2 + X + 1. Faire la liste de éléments de F2 [X]/(f ) et les tables de + et ×.
3.2.7. Correction
Question 1 :
R[X]/(X 2 +1) ⇒ X 2 + 1 = 0
⇒ X2 +1=0
⇒ X2 = −1
⇒ g = a0 + a1 X + a2 X 2 + a3 X 3 → g = a0 + a1 X − a2 − a3 X
Opérations :
P +Q=P +Q
P ×Q=P ×Q
Question 2 :
Posons B = F2 [X]/(f ) .
F2 [X]/(f ) ⇒ X 2 + X + 1 = 0
⇒ X 2 = −(X + 1) = 1 × 1 + 1 × X
⇒ X3 =X× X2 = ... = 1
⇒ X 4 = X × X 3 = ... = X
P = a × 1 + b × X , a et b ∈ F2
1 + X = 1 × 1 + 1 × X}
+ 0 1 X 1+X
0 0 1 X 1+X
1 1 0 1+X X
X X 1+X 0 1
1+X 1+X X 1 0
Multiplication :
× 1 X 1+X
1 1 X 1+X
X X 1+X 1
1+X 1+X 1 X
Remarque : pour tout élément P (X) de B , il existe un unique élément Q(X) tel que P (X) × Q(X) = 1. Ainsi, B
est un corps commutatif. F2 [X]/(X 2 +X+1) est donc le corps à 4 éléments noté F4 .
3.2.8. Théorème
Pour tout nombre premier p et tout entier k ≥ 1, il exitste un unique corps commutatif à pk éléments. On le
notera Fpk .
Si k = 1, on a Fp1 = Z/pZ .
3.2.9. Exemples
p = 2 et k = 2, on a F22 = F4 = F2 [X]/(X 2 +X+1) .
3.2.10. Remarque
Désormais, on ne met plus les barres car c'est lourd
3.2.11. Exercice
Dans F256 , calculer :
1. (X 7 + X 4 + X 3 + X + 1) × (X 7 + X 6 + X 3 + X 2 + 1)
3.2.12. Correction
Question 1 :
=X 14 + X 13 + X 10 + X 9 + X 7
+ X 11 + X 10 + X 7 + X 6 + X 4
+ X 10 + X 9 + X 6 + X 5 + X 3
+ X8 + X7 + X4 + X3 + X
+ X7 + X6 + X3 + X2 + 1
=X 14 + X 13 + X 11 + X 10 + X 8 + X 6 + X 5 + X 3 + X 2 + 1
Question 2 :
On obtient R2 = R2 × 1
pgcd(f , a) = pgcd(a, R1 )
= pgcd(R1 , R2 )
= pgcd(R2 , R3 )
=1
En remontant :
1 = R1 − (X 4 + X 2 + X) × R2
= R1 + (X + X + X) × (a − (X 2 + 1) × R1 )
4 2
= R1 (1 + (X + X + X) × (X + 1)) + (X + X 2 + X) × a
4 2 2 4
= (f − Xa)(1 + X 6 + X 4 + X 3 + X 4 + X 2 + X) + (X 4 + X 2 + X)a
= f (X 6 + X 3 + X 2 + X + 1) + a(X 7 + X 4 + X 3 + X 2 + X + X 4 + X 2 + X)
U = X6 + X3 + X2 + X + 1
V = X7 + X3
ˋ V = X7 + X3
1 = 0 + Va ou
= (10001000)2
= (88)16
Question 3 :
s(a) = inv(a) ∗ A1 + A0 avec :
inv(a) = (88)16
A1 = (1F )16
A0 = (63)16
On a :
s(a) = (X 7 + X 3 ) ∗ (X 4 + X 3 + X 2 + X + 1) + (X 6 + X 5 + X + 1)
On prend R = F2 [X]/(g) ; g = X 8 + 1
= X3 + X2 + X + 1 + X6 + X5 + X4 + X3
= X6 + X5 + X4 + X2 + X + 1
Finalement :
s(a) = inv(a) ∗ A1 + A0
= X6 + X5 + X4 + X2 + X + 1 + X6 + X5 + X + 1
= X4 + X2
= (00010100)2
= (14)16
3.2.13 Exercice
1. Montrer que l'application S ⟶ S utilisée pour MixColumns est celle qui, à l'octet (a3 , a2 , a1 , a0 ) associe son
produit par la matrice d'octets (chaque octet est ici écrit comme un couple de nombres hexadécimaux)
02 01 01 03
03 02 01 01
M=
01 03 02 01
01 01 03 02
est le polynôme :
3.2.14 Correction
Question 1 :
S = F256 [Y ]/(Y 4 +1)
+ (02 × a3 + 01 × a2 + 01 × a1 + 03 × a0 )Y + (02 × a2 + 01 × a1 + 01 × a0 )Y 2
3
+ (02 × a1 + 01 × a0 )Y + 02 × a0
⇒ m(C) = 3a3 Y 6 + (a3 + 3a2 )Y 5 + (a3 + a2 + 3a1 )Y 4 + (2a3 + a2 + a1 + 3a0 )Y 3 + (2a2 + a1 + a0 )Y 2 + (2a1 + a0 )Y + 2a0
A comparer avec :
02 01 01 03
03 02 01 01
M=
01 03 02 01
01 01 03 02
2a3 + a2 + a1 + 3a0
=(2a3 + a2 + a1 + 3a0 )Y 3 + (3a3 + 2a2 + a1 + a0 )Y 2
3a3 + 2a2 + a1 + a0
MC =
a3 + a2 + 3a1 + 2a0
⇒ m(c)(2a3 + a2 + a1 + 3a0 )Y 3 + (3a3 + 2a2 + a1 + a0 )Y 2 + (a3 + 3a2 + 2a1 + a0 )Y + (a3 + a2 + 3a1 + 2a0 )
Question 2 :
Il faut vérifier que (03Y 3 + 01Y 2 + 01Y + 02)(0BY 3 + 0DY 2 + 09Y + 0E) modulo = 1.
Etape par étape :
3 3 2
03Y 3 (0BY 3 + 0DY 2 + 09Y + 0E)
= (00000011)2 Y 3 × ((00001011)2 Y 3 + (00001101)2 Y 2 + (00001001)2 Y + (00001110)2 )
Soit f = X 8 + X 4 + X 3 + X + 1, Calculons 03 × 0B :
03 × 0B = (00000011)2 × (00001011)2
⇒ (00011101)2 = 1D
Calculons la suite :
03 × 0D = (X + 1)(X 3 + X 2 + 1) = X 4 + X 2 + X + 1 = 17
03 × 09 = (X + 1)(X 3 + 1) = X 4 + X 3 + X + 1 = 1B
03 × 0E = (X + 1)(X 3 + X 2 + X) = X 4 + X = 12
Donc :
Suite :
02 × 0B = 16
02 × 0D = 1A
02 × 09 = 12
02 × 0E = 1C
…
On a :
= (00011100)2
= 1C
On obtient :
p = (1D)Y 6 + (1C)Y 5 + (1D)Y 4 + (00)Y 3 + +((OE) + (09) + (1A))Y 2 + ((0E) + (12))Y + (1C)
= 1DY 2 + 1CY + 1D + 1DY 2 + 1CY + 1C
= 1D + 1C = 01 = 1
4.1.2. Démonstration
Supposons qu'il n'existe qu'un nombre fini de nombres premiers. Alors, on peut les énumérer : p1 , p2 , … , pn . Posons
A = p1 × p2 × ⋯ × pn + 1 :
Sinon, A est divisible par un des pi mais pi divise p1 × p2 × ⋯ × pn donc ne peut diviser A.
4.2.1. Définition
a et b sont dits premiers entre eux si leur plus grand diviseur commun est égal à 1.
4.2.2. Propriété
a et b sont premiers entre eux si et seulement si il existe u, v dans Z tels que ua + vb = 1.
4.2.3. Remarque
L'algorithme d'Euclide étendu permet de trouver explicitement u et v vérifiant cette égalité, alors pour tout entier k ,
(u + kb, v − ka) marchera aussi :
(u + kb)a + (v − ka)b = ua + vb = 1
4.3.1. Définition
1≤m≤n−1
On note Φ(n) le nombre d'entiers m vérifiant : {
m est premier avec n
4.3.2. Exemples
Calculer Φ(7) et Φ(8). On trouve :
Φ(7) = 6 car 1, 2, 3, 4, 5, 6 sont premiers avec 7.
Φ(8) = 4 car 1, 3, 5, 7 sont premiers avec 8.
4.3.4. Propriété 1
Φ(n) est le nombre d'éléments inversibles dans le groupe (Z/nZ )∗ des éléments inversibles de Z/nZ pour la
multiplication.
4.3.5. Démonstration
Si a est inversible dans (Z/nZ , ×), cela veut dire qu'il existe u dans (Z/nZ , ×) tel que a × u = 1. C'est-à-dire a × u = 1.
Ainsi au est congru à 1 modulo n. Donc il existe un entier k tel que au = 1 + kn.
Posant v = −k , on obtient ua + vn = 1. Par l'identité de Bézout, a et n sont premiers entre eux.
Réciproquement, si pgcd(a,n) = 1, par Bézout : ∃(u, v) ∈ Z2 ∣ua + vn = 1, alors modulo n : ua + 0 = 1. Donc u ×
a = 1, donc a est inversible dans (Z/nZ , ×).
4.3.6. Propriété 2
Soient n ≥ 2 et x premier avec n. Alors xΦ(n) ≡ 1 mod n.
4.3.7. Démonstration
Pour un tel x, considérons :
f : (Z/nZ )∗ ⟶ (Z/nZ )∗
t ⟼ x, t
⇒t= t′
Ainsi :
∏ f (t ) = ∏ t
t∈(Z/nZ )∗ t∈(Z/nZ )∗
Or :
∏
t= ∏
x×t
t∈(Z/nZ )∗
t∈(Z/nZ )∗
= ∏ x× ∏ t
t∈(Z/nZ )∗ t∈(Z/nZ )∗
∏
∗
= xcard((Z/nZ ) ) ×
t
t∈(Z/nZ )∗
=x Φ(n)
× ∏ t
t∈(Z/nZ )∗
D'où, en simplifiant :
4.3.8. Propriété 3
Si m et n sont deux nombres premiers entre eux, alors Φ(mn) = Φ(m) × Φ(n).
4.3.8.1. Remarques
L'hypothèse est nécessaire, voici un exemple : Φ(2) = 1 et Φ(4) = 2 =
1 = Φ(2) × Φ(2)
Si p et q sont premiers, on a donc Φ(pq) = (p − 1)(q − 1).
Démonstration avec le "théorème chinois des restes".
z = 1
Pour i allant de 1 à 37 faire :
z = z * x
37 produits.
Idée : x37 = x32+4+1
On calcule x2 , x4 , (x4 )2 = x8 , (x8 )2 = x16 , (x16 )2 = x32
Alors z = x32 × x4 × x → 32 = (100101)2
7 produits.
4.5. Retour sur l'autre façon de calculer x−1 comme application de la propriété 2
En effet, dans Z/nZ cette congruence devient :
xΦ(n) = 1
Donc x × xΦ(n)−1 = 1. C'est-à-dire que xΦ(n)−1 est l'inverse de x dans Z/nZ .. or pour n premier, Φ(n) = n − 1 et si n =
Φ(N )
1−
N
≃
2n
pq
n
en considérant que p et q sont de même ordre de grandeur : p ≃ q ≃ N ≃ 2 2 . Donc ce risque est négligeable.
On va noter :
x mod n ⟼ x (mod m)
4.7.1. Exercices
1. f2,3 est-elle bien définie ? Si oui, est-il vrai que ∀a, b ∈ Z/nZ :
f2,3 (a + b) = f2,3 (a) + f2,3 (b) et f2,3 (ab) = f2,3 (a) × f2,3 (b)
⎧x ≡ 1 (mod 3) (1)
∗ ⎨x ≡ 2 (mod 4) (2)
⎩
x ≡ 0 (mod 5) (3)
4.7.2. Correction
Question 1 :
Pour f2,3 , on a :
~ ~ ~
Z/2Z = {0, 1}, Z/3Z = {0, 1, 2}
~
x⟼x
0 = {0 + 2k, k ∈ Z}
1 = {1 + 2k, k ∈ Z}
~
f2,3 : 0 ⟼ 0 = {0, 3, 6, 9, … , −3, … }
~
= 2 ⟼ 2 = {2, 5, 8, 11, … , −1, … }
Pour f6,3 , on a :
x = {x + 6k, k ∈ Z} ⟼ x ~ = {x + 3l, l ∈ Z}
~ ~ dans Z .
Si x = x′ , on peut écrire x′ = x + 6k, k ∈ Z alors x′ = 3 × (2k), avec 2k ∈ Z donc x′ = x /3Z
Opérations :
f6,3 (a + b) = f6,3 (x + y )
= f6,3 (x + y )
=x+y
~ + y~
=x
De même pour ×.
Question 2 :
Soit x dans Z vérifiant ∗.
40 1 0 0
50 2 2 0
60 0 0 0
70 1 2 0
… … … …
4.7.4. Démonstration
Il reste à montrer que f est bijective. On va construire sa réciproque.
Comme n et m sont premiers entre eux, par l'identité de Bezout, il existe u, v dans Z tels que un + vm = 1, alors :
En effet, Φ(n) est le nombre d'élements inversibles pour x dans Z/nZ , c'est-à-dire $\text{card }((\mathbb Z_{/n \mathbb
Supposons de plus que les pi , qi définissant Ni = pi qi soient tous distincts. On peut alors utiliser le théorème chinois
1
des restes. On a alors X dans Z tel que X ≡ c1 (mod Ni ) pour tout i = 1, … , e. On peut donc calculer X e dans Z.
1
Alors m = X e (mod u ∩ Ni ).
Rappel:
Z/nZ ⟶ Z/mZ
x (mod n) ⟼ x (mod m)
Table de (Z/4Z , +) :
0 1 2 3
0 0 1 2 3
1 1 2 3 0
2 2 3 0 1
3 3 0 1 2
Nous regardons où nous retrouvons des 0 dans la table de (Z/4Z , +), et nous regardons où nous retrouvons des
1=0+1
2=1+1
3=1+1+1
Nous voyons que Z/2Z × Z/2Z ne l'est pas ((0, 0) dans la diagonale) :
(1 , 0 )
= (0 , 1 ) + (0 , 1 )
4.7.7. Remarque
Soit :
{
x ≡ a1 (mod N )1
x ≡ a2 (mod N )2
x ⟼ (a1 , a2 )
{
x ≡ a1 (mod N )1
x ≡ a2 (mod N )2
Avec :
N1 = 28, N2 = 365
5. Exercices
5.1. Exercice 1
Sujet :
On pose x = [1, 0, 1, 0, 1, 0, 1, 0]
Calculer SubBytes(x).
Méthode :
1. Cacluler inv(x) dans F256 = F8 [X]/(f ) par l'algorithme d'Euclide étendu.