Académique Documents
Professionnel Documents
Culture Documents
Chap1.crypto Prelim Maths
Chap1.crypto Prelim Maths
I. Fonctions
Soit X un ensemble d'objets : X= {a, b, c}
Définition 1: Une fonction est définie par deux ensembles X et Y et une règle ( une
application ou une transformation) qui à chaque élément de X associe un élément de
Y.
X: appelé le domaine
Y: appelé le codomaine
Si x 𝜖 X, l'image de x est l'élément de Y associé par la règle ( 𝑦 = 𝑓(𝑥) ).
Exemple1:
X={a, b, c} , Y={1, 2, 3, 4}
𝑋 ⎯⎯⎯⎯⎯ 𝑌 :
f(a)=2, f(b)=4, f(c)=1
f
a 1 Im(f) = {1, 2, 4}
b 2
C 3
4
1
1) Fonctions 1-1
Définition 2: une fonction est 1-1 (one to one) si chaque élément du codomaine Y est
une image d'au plus un élément du domaine X.
Définition 3: une fonction est une application (onto) si chaque élément du codomaine
Y est une image d'au moins un élément du domaine.
Définition 4: Si une fonction f est 1-1 et Im(f)=y alors f est une bijection.
Définition 5:
si f : 𝑋 ⎯⎯⎯⎯ 𝑌 est une bijection
alors
on peut définir g: 𝑌 ⎯⎯⎯⎯ 𝑋 telle que:
g(y) = x , x∈ 𝑋 et f(x)=y.
g: appelée fonction inverse, notée: g= f-1
∀ 𝑦 ∈ 𝑌 , ∃ 𝑥 !, x∈ 𝑋/ f(x)=y. (!: 𝑢𝑛𝑖𝑞𝑢𝑒)
On peut définir : x= f-1(y)= g(y)
Exemple:
X= {a, b, c, d, e} , Y={1, 2, 3, 4, 5}
a. .1 1. .a
b. .2 2. .b
X c. .3 Y Y 3. .c
d. .4 4. .d
e. .5 5. .e
Si f est une bijection, f-1 l'est aussi: utilisées par le chiffrement et le déchiffrement de
messages.
Problème: Si f n'est pas bijective ⟹ plusieurs messages de déchiffrement.
2
x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
f(x) 3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1
Etant donné un nombre tel que 7, il est difficile de trouver x tel que f(x)=7.
Si on prend 3; f(x)=3=3xmod 17, il est facile de trouver x=1.
Exemple2: Manipulation de grands nombres.
- Soient p et q : deux nombres premiers.
p=48611, q=53993, on forme: pq=2624653723 mais factoriser ce nombre
est difficile
- Soit : X= {1, 2, 3, ..., n-1}
Soit f définie par: f(x)=x3 mod n
Si x =2489991 alors f(2489991)=1981394214
Puisque 24899913=5881949859.n+1981394214
Trouver y=f(x) est facile à calculer mais l'inverse est difficile
Remarque:
La facilité peut être vue comme étant un compromis entre la puissance de calcul et le
temps.
Exemple3: Calcul du logarithme discret
Soit y=f(x), l'inverse existe: x=f-1(y) sachant que f est une fonction inversible
Si f est une fonction à sens unique, il est facile de calculer y à partir de x mais
impossible (difficile) de calculer x à partir de y.
la fonction forme :
y=ax mod p p: grand nombre premier
a,x ∈ ℕ (entiers positifs)
possède La fonction inverse :
x=loga y mod p est appelée logarithme discret
Remarque: Il est impossible de calculer la fonction inverse sur les machines actuelles
car les nombres manipulés sont codés sur plus de 512 bits.
Autres exemples de fonction à sens unique : fonctions de hachage utilisant des
nombres de longueur 80 à 160 bits.
3
Par abus de langage la fonction y=ax mod p
calcul de a16 mod p
peut être calculé par 4 modules multiplicatifs
a16 mod p= ((((a) 2) 2) 2)2 mod p au lieu de 15 multiplications
On introduit la quantité t=log2 x (la partie entière de log2 x)
Donc on calcule:
a, a2, a4, a8,..., 𝑎 (mod p) ici, chaque nombre est obtenu en prenant le carré
du nombre précédent modulo p.
(x)2=(xtxt-1.....x1x0)2
𝑡 = |log 74| = 6
On calcule la série des nombres
3 32 34 38 316 332 364 6 multiplications
3 9 81 61 21 41 81 mod 100
On écrit (74)2=(1001010)2
.
On calcule 𝑦 = ∏ 𝑎 𝑚𝑜𝑑 100
364 38 32 mod 100
Y= (81) (1) (1) (61) (1) (9) (1) =69 (2 multiplications)
Proposition:(complexité de l'exponentiation) le nombre de multiplication pour
calculer y= a x mod p en utilisant de blocs ne dépasse pas 2 log x.
4
3) Fonction à sens unique avec brèche secrète (trapdoor one way functions )
Définition 7: c'est une fonction à sens unique avec des propriétés additionnelles
(information en extra)
facile de trouver y à partir de x mais difficile de trouver x à partir de y sauf si
on connaît une information additionnelle.
Remarques:
Les one way and trapdoor one way functions ne sont pas encore définies.
les fonctions à sens unique avec ou sans brèches secrètes sont à la base des
systèmes cryptographiques à clé publique.
Pour ce type de systèmes, la clé privée est la brèche secrète.
4) Permutations
Ce sont des fonctions souvent utilisées pour construire des systèmes
cryptographiques.
Définition 8: Soit S un ensemble fini d'éléments, une permutation p sur S est une
bijection de S sur lui-même.
Autrement dit:
La permutation est fonction un-à-un bijective où les éléments du domaine et du
codomaine appartiennent au même ensemble.
Exemple 1:
Soit S={1, 2, 3, 4, 5}
p: 𝑆 ⎯⎯⎯⎯ 𝑆 est définie comme suit:
p(1)=3, p(2)=5 , p(3)=4 , p(4) =2, p(5)=1.
1 2 3 4 5
𝑝 =
5 4 1 2 3
5
Exemple 2:
Soit X= {0, 1, 2, ..., pq-1} où p et q sont de très grands nombres premiers. On suppose
que (p-1) et (q-1) ne sont pas divisibles par 3.
Alors
la fonction: P(x)=x3 mod pq est une permutation
Trouver la permutation inverse est impossible avec les standards d'ordinateurs à moins
de connaître p et q.
5) Involution
Les involutions ont la propriété d'avoir leurs propres inverses.
Définition 9: Soit S un ensemble fini. f est une bijection de 𝑆 ⎯⎯⎯⎯ 𝑆.
La fonction f =f-1 est appelée involution.
Exemple 3:
Si j est l'image de i alors i est l'image de j.
1. .1
2. .2
S 3. .3
4. .4
5. .5
Une involution sur un ensemble de 5 éléments.
Décalage binaire
Chaque caractère peut être représenté par un octet de huit bits. Il suffit de décaler vers
la droite ou vers la gauche.
6
2. Eléments de base de la théorie des nombres
Définition 2.1: un entier positif p est premier s'il n'a pas de diviseurs
sauf 1 et lui-même
Exemple: 11, 31, 7
Définition 2.2: Deux nombres sont co-premiers s’ils n’ont aucun diviseur
commun sauf 1.
Exemple: 27 et 28.
7
=((24 mod 13).( 28 mod 13)) mod 13
=( 3 . 9) mod 13=1
p=11, a=10
1010 mod 11 =102.((102)2)2 mod 11= 1. 1=1
Théorème 2.3: (EULER)
Soient a et b deux nombres co-premiers Alors 𝒂𝝋(𝒃) 𝒎𝒐𝒅 𝒃 = 𝟏
Remarques:
Le théorème de Fermat est un cas particulier du théorème d'Euler où b est premier.
Exemple: 𝜑(12) = 4
54 mod 12=(52)2 mod 12=(52 mod 12)2 mod 12
=1 mod 12 =1
𝜑(21) = 2 . 6 =12 b= 21 premier
212 mod 21=24 .(24)2 mod 21 =16 . 4 mod 21
=1
Théorème 2.4: Si p et q sont deux nombres premiers distincts (p≠q) et 𝜅 : un
entier quelconque alors:
Vérification
9 et 23 son co-premiers avec pq=35 par le théorème de d'Euler :
924 mod 35=1 et 2324 mod 35=28 (verifier)
1049 mod 35=10, 2849 mod 35=28
10 et 28 vérifient-ils le théorème d'Euler?
non car 10 et 28 ne sont pas co-premiers avec 35 .
1024 mod 35=25
2824 mod 35=21
8
Définition 2.4: Soient a et b deux entiers positifs, le plus grand diviseur commun
de a et b noté: pgcd (a, b) est le plus grand nombre c divisant a et b.
c=pgcd(a,b)
Exemple:
pgcd(10,15)=5, pgcd(8,28)=4
calculé par l'algorithme d'Euclide (300 A.J,C)
Input: a, b, a≥ b
Output: pgcd(a,b)
While b≠0 Do
r ← a mod b,
a ← b,
b←r
Afficher a.
Exemple
a 28 8 4
b 8 4 0
r 4 0
a contient le pgcd.
Théorème 2.5: Soient a et b deux entiers positifs, il existe deux nombres (non
nécessairement positifs) tels que:
a * x + b* y = (pgcd(a, b), x, y)
9
Algorithme: Euclide étendu
Input: a et b entiers, a≥ b
Output: pgcd (a, b), x et y satisfaisant a . x+ b . y=pgcd(a, b)
1. U← = (a, 1, 0)
2. V← (b, 0, 1)
3. while v1 ≠0 Do
4. q← u1 div v1
5. T← (u1 mod v1, u2 - qv2, u3 - qv3)
6. U← V, V← T.
Return U=( pgcd(a,b), x, y)
Le vecteur U contient le résultat
a div b= |𝑎/𝑏| partie entière
Exemple:
a=28, b=19 programmer avec Matlab. (Dérouler l'algorithme)
Remarque:
d existe si seulement si c et m sont co-premiers
Définition 2.5 : Un nombre d satisfaisant la relation c . d mod m=1 est appelé
inverse de c modulo m et souvent noté c-1 mod m
Remarque:
d existe si seulement si c et m sont premiers entre eux (copremiers)
Exemple: 3×4 mod 11=1
10
donc 4=3-1 mod 11
calculons 5-2 mod 11 ?
1) 5-2 mod 11=(52 mod 11) -1 mod 11=3-1 mod 11=4
2) 5-2 mod 11= (5-1 mod 11) 2 mod 11 .
Ici on utilise l’équation 5-1 mod 11= 9 En effet on a : 5.9 mod 11=45mod11=1
On cherche : 5x =11k+1 => x=9
k=4
(5-1 mod 11) 2 mod 11=92 mod 11=4
Donc le problème revient à résoudre: cd-km=1 (calcul l'inverse) en utilisant
l'algorithme d'Euclide étendu:
En effet l’équation c . d mod m=1 signifie que pour un entier k quelconque, on peut
écrire :
c.d-km=1
En prenant en compte que c et m sont co-premiers, on réécrit cette équation en
appliquant le théorème 2.5 ( A.E.E) :
m(-k)+cd=(gcd(m,c), -k, d)=(gcd(a,b), x, y)
Sous l'hypothèse: m et c co-premiers.
si le résultat est négatif, rajouter le modulo
Exemple:
7-1 mod 11 ou 5-1 mod 7
5-1 mod 7=5 ( )
𝑚𝑜𝑑 7=56-1 mod 7
=55 mod 7=3
7-1 mod 11=7 ( )
𝑚𝑜𝑑 7=79 mod 11
=8
Remarque:
En cryptographie à clé publique, l'exponentiation modulaire y=ax mod p
est une opération très importante.
11
Algorithme 1 : Exponentiation modulaire (Droite →Gauche)
Input : Nombres entiers a, x=(xt xt-1………x1x0), p
Output : Nombre y = axmod p
1. y ←1 ; s← a ;
2. FOR i= 0, 1,…, t DO;
3. IF xi=1 THEN y← y.s mod p;
4. s ← s.s mod p;
5. Return y.
Congruences
Définition 2.6 : Quand on dit que m divise b-a, on dit que a est
congruent à b modulo m, et on écrit a≡b mod m :
12
Autres caractérisations
Lemme- les assertions suivantes sont équivalentes :
1. a ≡ b mod m
2. Il existe 𝑘 ∈ ℤ avec a = b + km
3. Quand on les divise par m, les deux nombres a et b donnent le
même reste.
{𝑏: 𝑏 ≡ 𝑎 𝑚𝑜𝑑 𝑚} = 𝑎 + 𝑚ℤ
13