next up previous contents index
suivant: Troisième étape : le monter: La fonction de codage précédent: Première étape   Table des matières   Index

Deuxième étape : un peu de maths

Le petit théorème de Fermat dit que :
si n est premier et si a est premier avec n alors an-1 = 1  mod n.
Une généralisation (simple) du petit théorème de Fermat est :
si p et q sont premiers, si a est quelconque, si n = p*q et si k est un entier, alors :
ak(p-1)*(q-1)+1 = a  mod p*q.
Montrons cette généralisation simple :
- si a est un multiple de n c'est évident puisque
a = 0 mod n donc ak(p-1)*(q-1)+1 = a = 0  mod n - si a est premier avec n alors a est premier avec q (car q est un diviseur de n),
puisque a est premier avec q on a :
aq-1 = 1  mod q (application du petit théorème de Fermat) et
donc ak(q-1)*(p-1) = 1  mod q
puisque a est premier avec p on a:
ap-1 = 1  mod p (application du petit théorème de Fermat)
donc ak(p-1)*(q-1) = 1  mod p .
On en déduit donc que :
ak(p-1)*(q-1) -1 = 0  mod p et ak(p-1)*(q-1) -1 = 0  mod q c'est à dire que :
ak(p-1)*(q-1) - 1 est un multiple de p et de q donc de n = p*q puisque p et q sont premiers.
donc ak(q-1)*(p-1) = 1  mod n et donc
ak(q-1)*(p-1)+1 = a  mod n
- si a n'est pas premier avec n et si a < n, c'est que a est soit un multiple de p soit un multiple de q (puisque a < n = pq).
Supposons que a soit un multiple de p :
a = 0 mod p donc ak(p-1)(q-1)+1 = a = 0 mod p
aq-1 = 1 mod q car q est premier et a est premier avec q (th de Fermat), donc
ak(p-1)(q-1)+1 = a mod q
Donc ak(p-1)(q-1)+1 - a est un multiple de p et de q donc est un multiple de n = pq (car p et q sont premiers).

Donc si n = p*q avec p et q premiers quelque soit a et quelque soit k entier on a :
ak(p-1)*(q-1) = a  mod n .

Revenons au codage.
Soit m un nombre premier avec (p - 1)*(q - 1) (par exemple on peut choisir pour m un nombre premier assez grand).
D'après l'identité de Bézout il existe deux entiers u et v tels que :
u*m + v*(p - 1)*(q - 1) = 1
donc :
au*m+v*(p-1)*(q-1) = a1 et comme a(p-1)*(q-1) = 1  mod n,
au*m = a  mod n
La fonction f de codage sera alors :
a - > au mod n pour a < p et a < q (pour avoir pgcd(a, n) = 1).
La fonction g de décodage sera alors :
b - > bm mod n.
et on a bien g(f (a)) = au*m = a mod n ou encore g(f (a)) = a car a < n
La clé publique se trouvant dans l'annuaire sera (u, n),
la clé secrète sera (m, n), mais bien sûr, p et q devront rester secrets.
Remarque : u et m jouent un rôle symétrique, par exemple u est aussi premier avec (p - 1)(q - 1) et donc si on connait u, p et q il sera aisé de retrouver m avec l'identité de Bézout ( u*m + v*(p - 1)*(q - 1) = 1).


next up previous contents index
suivant: Troisième étape : le monter: La fonction de codage précédent: Première étape   Table des matières   Index
Documentation de giac écrite par Renée De Graeve