Fondements des protocoles cryptographiques
Cours de Fondement des protocoles de cryptographie,
dispensé par MrStéphane BALLET <[email protected]>,
et MrAlexis BONNECAZE <alexis.b[email protected]>,
ESIL, département IRM option SICA
Table des matières
I Complexité et temps de calcul 3
1 Représentation des entiers 3
2 Complexité de l’arithmétique 4
2.1 la notation O........................................... 4
2.2 Coût de l’addition, de la multiplication et de la division avec reste des entiers . . . . . 4
2.2.1 Addition......................................... 4
2.2.2 Multiplication...................................... 5
2.2.3 Division ......................................... 5
2.2.4 Résumé ......................................... 5
2.3 Complexitédesopérations................................... 5
2.3.1 Addition......................................... 6
2.3.2 Soustraction....................................... 6
2.3.3 Multiplication...................................... 6
3 Complexité d’un algorithme 7
3.1 Tempsdecalcul......................................... 7
3.1.1 Définition du temps de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.2 Définition du temps de calcul le pire . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Tempspolynomial ....................................... 8
3.2.1 Algorithmepolynomial ................................ 8
4 Plus grand commun diviseur 11
4.1 Rappel .............................................. 11
4.2 Complexité de l’algorithme d’Euclide . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Algorithme d’Euclide étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.1 Première version de l’algorithme d’Euclide étendu . . . . . . . . . . . . . . . . 14
4.3.2 Seconde version de l’algorithme d’Euclide étendu . . . . . . . . . . . . . . . . . 16
4.3.3 Version récursive de l’algorithme d’Euclide étendu . . . . . . . . . . . . . . . . 17
4.3.4 L’algorithme binaire du calcul du pgcd . . . . . . . . . . . . . . . . . . . . . . . 18
II Cryptographie sûre et problèmes difficiles 20
1
1 Systèmes cryptographiquement sûrs 20
1.1 Cas de la cryptographie à clé publique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Table des codes sources
1s=a+ben base B........................................ 6
2t=aben base B(ab)................................... 6
3p=a×b............................................. 7
4 Pseudo code de l’algorithme Square and Multiply....................... 10
5 Pseudo code de l’algorithme de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6 Pseudo code de l’algorithme d’Euclide . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Pseudo code de l’algorithme d’Euclide récursif . . . . . . . . . . . . . . . . . . . . . . . 14
8 Pseudo code de l’algorithme d’Euclide étendu. . . . . . . . . . . . . . . . . . . . . . . . 15
9 Pseudo code alternatif de l’algorithme d’Euclide étendu . . . . . . . . . . . . . . . . . . 16
10 Pseudo code de l’algorithme d’Euclide étendu récursif . . . . . . . . . . . . . . . . . . 17
11 Pseudo code de l’algorithme binaire du calcul du PGCD . . . . . . . . . . . . . . . . . 18
12 Code Ruby de l’algorithme ρdePollard........................... 24
2
Première partie
Complexité et temps de calcul
La théorie de la complexité a pour but de classifier le nombre de calcul en assignant d’éventuel
ressources nécessaires pour les résoudre. Cette classification essai de mesurer la difficulté intrinsèque
(essentielle) d’un problème. Les ressources que l’on évalues sont essentiellement :
Le temps de calcul ;
L’espace de stockage nécessaire.
1 Représentation des entiers
Notation de la entière (floor et ceiling) :
b3, 14c=3bπc=4dπe=4dπe=4
Plus généralement, les entiers peuvent être représentés en base BBest un entier 2.
théorème 1.1 Soit B2. À tout entier a>0 correspond un entier positif ket une unique suite
(ak,ak1, . . . , a1,a0)k+1dans 0, 1, . . . , B1 où a=k
j=0aj.Bj
En outre :
k=LlogB(a)ak=ba
Bkcaj=b(ak
i=j+1aiBi)
Bjc
Pour 0 jk1
La suite (ak, . . . , a1,a0)est le développement B-antique de aou développement en base B. La lon-
gueur de aen base Best :
LB(a) = k+1=blogB(a)c+1=dlogB(a)e
Si B=2, on obtient le développement binaire de a.
Si B=16, on obtient le développement hexadécimal de a.
Si B=2, la longueur de aest aussi appelé longueur binaire ou taille de a, et on pose :
L(a) = L2(a) = blog2(a)c+r
Lorsqu’on a calculé le développement B-antique de l’entier a, on écrit :
a= (ak,ak1, . . . , a1,a0)
Exemple :
En base 16, DADA =14 ×162+14 ×16 +10
La transformation de la base 2 à la base 16 est particulièrement simple :
(10111000)2= (B8)16
3
2 Complexité de l’arithmétique
2.1 la notation O
Déf. 1.1 Soient f:NR+et g:R+deux fonctions positives, on écrit f=O(y)s’il existe un
entier M>0 et une constante C>0 tel que tout entier nM, on ait :
f(n)C.g(n)
Lorsque gest constante, on écrit O(1)
Plus généralement si f:N2R+,g:N2R+, on écrit f=O(g)s’il existe un entier M>0 et
une constante C>0 tel que pour tout n-upplet (n1, . . . , nL)N2vérifiant njMpour j=1, . . . , L;
on ait :
f(n1, . . . , nL)C.g(n1, . . . , nL)
Cette notation est utilisé lors de l’évaluation de la complexité (temps de calcul, nombres d’instruc-
tions élémentaires d’un algo).
Exemple :
Si L(n) désigne la longueur B-adique de l’entier n,ona:
L(n) = O(log n)
En effet :
L(n) = blogB(n)c+rlogB(n) + r=log(n)
log(B)+1
si n3, log(n)>1 et donc n3=M:
L(n)(1
log B+r)log(B)avec C=1
log B+r
2.2 Coût de l’addition, de la multiplication et de la division avec reste des entiers
Soient aet b, deux entiers dont les longueurs binaires sont m=L(a)et n=L(b). On cherche à
évaluer le nombre d’opérations sur les bits nécessaires pour les quatre opérations.
On commence par des exemples :
2.2.1 Addition
On suppose que l’addition de deux bits prend un temps O(1). Pour calculer a+b, il faut un temps
O(max(m,n)).
Exemple : a= (100101)2= (37)10
b= (1101)2= (13)10
Pour calculer a+b= (110010)2= (50)10 :
1 0 0 1 0 1
+ 1 1 0 1
Retenue 1 1 1
a+b1 1 0 0 1 0
Pour calculer ab,
même résultat O(log n).
4
2.2.2 Multiplication
Pour calculer a×b, il faut un temps O((m×n)).
Exemple : a×b= (111100001)2= (481)10
100101
×1101
100101
0000000
10010100
100101000
Retenue 1 1 1 1
111100001
Il existe des algorithmes plus rapides, comme Schönhage - Strassen. Ils permettent de multiplier
deux nombres de nbits en un temps :
O(nlog nlog(log n))
Les algorithmes sont totalement inefficaces en pratique, ils deviennent performants pour des nombres
de plus de 10 000 bits.
2.2.3 Division
Soit a=bq +roù 0 r<b, la division euclidienne de apar b. Soit L(q)la longueur binaire de
quotient qet n=L(b). Pour calculer a÷bil faut un temps O(nL(q)) = Θ(L(b).L(q))
2.2.4 Résumé
Soit aet b, deux entiers et L(a)et L(b)leurs longueurs binaires.
L’addition a+bet la soustraction prennent un temps O(max(L(a),L(b)))
La division a=bq +rprend un temps en O(L(b).L(q)) qest le quotient.
Tous ces algorithmes utilisent une place de taille O(L(a) + L(b)).
2.3 Complexité des opérations
Après cette 1reapproche empirique, on va pouvoir chiffrer le nombre d’opérations nécessaires pour
accomplir les quatres opérations de l’arithmétique. Les opérations élémentaires que l’on vient d’ef-
fectuer sont l’addition, la soustraction, la multiplication de deux nombres de 1 bit et la division d’un
nombre de 2 bits par un nombre de 1 bit. Les opérations se font bit à bit.
Théorème de la complexité de l’arithmétique On peut additionner ou soustraire deux entiers de
Lbits en O(L)opérations bit à bit. On peut multiplier deux entiers de Lbits par un entier de Lbits et
avoir un quotient de Lbits et un reste de Lbits en O(L2)opérations bit à bit.
Preuve On écrit les opérations élémentaires en base B. On se donne deux entiers aet b, supposons
déjà écrits en base B.
a=
k1
j=0
aj.Bjet b=
k1
j=0
bj.Bj(0aj,bjB1)
On écrit en pseudo-code les algorithmes permettant d’effectuer les opérations élémentaires de
l’arithmétique.
5
1 / 24 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !