Présentation générale Présentation générale Propositions pédagogiques Propositions pédagogiques.
Objectifs pédagogiques - perso.univ-st-etienne.fr
Transcript of Objectifs pédagogiques - perso.univ-st-etienne.fr
UE Informatique
Philippe EZEQUELMarc BERNARD
L1 MISPIC2021 - 2022
Université Jean Monnet
URL : http://webperso.univ-st-etienne.fr/~ezequel/1info/
mail : [email protected]
L1 MISPIC Informatique
Objectifs pédagogiques
2 UE qui n’en font qu’une
des 2 UE : panorama partiel et partial de l’Informatique, entant que science ;
2× 2 séquences (plus ou moins) indépendantes ;
Info 1, séquence 1 (P.E.) : calculabilité, algorithmique : lesfondamentaux de l’informatique ;
Info 1, séquence 2 (M.B.) : les arbres et leurs (nombreuses)utilisations ;
Info 2, séquence 1 : langages et systèmes formels, et à quoi çasert ;
Info 2, séquence 2 : théorie des graphes, programmation parcontraintes, applications aux jeux, puzzles, énigmes ;
Avertissement
Ces transparents sont (volontairement ?) incomplets.
L1 MISPIC Informatique
Plan du cours
1 Introduction2 Calculabilité3 Conception d’algorithmes (et de programmes)4 Faisabilité pratique
L1 MISPIC Informatique
Introduction : au début sont les programmes. . .
L1 MISPIC Informatique
Algorithmes et programmes : algorithmes
Algorithme
Suite finie d’instructions permettant de résoudre un «problème»
Exemples1 . . .2 . . .3 . . .4 . . .
Remarque
Destiné à un lecteur humain, éventuellement vague
L1 MISPIC Informatique
Algorithmes et programmes : programmes
Programme
Algorithme écrit dans un langage compris par une machine
Exemples1 . . .2 . . .3 . . .4 . . .
Remarque
Destiné à une machine, doit être correct et inambigu
L1 MISPIC Informatique
Un exemple de vrai programme
Extrait du noyau Linux
457f 464c 0101 0001 0000 0000 0000 00000002 0003 0001 0000 86a0 0804 0034 00007ae8 0000 0000 0000 0034 0020 0007 00280021 001e 0006 0000 0034 0000 8034 08048034 0804 00e0 0000 00e0 0000 0005 00000004 0000 0003 0000 0114 0000 8114 08048114 0804 0013 0000 0013 0000 0004 00000001 0000 0001 0000 0000 0000 8000 08048000 0804 61a5 0000 61a5 0000 0005 0000
C’est illisible : nécessité de langages «évolués», et donc detraducteurs . . .
L1 MISPIC Informatique
Objectif : faire faire les calculs par une machine !
L1 MISPIC Informatique
Astrolabe
Calcul de la position des étoiles et des planètes.
Sage Ross, http ://en.wikipedia.org/wiki/Astrolabe
L1 MISPIC Informatique
Pascaline
Blaise Pascal, 1642, additions et soustractions.
D. Monniaud, http ://fr.wikipedia.org/wiki/Pascaline
L1 MISPIC Informatique
Machine de Leibniz
1694, 4 opérations (pas fabriquée à l’époque).
Kolossos, http ://en.wikipedia.org/wiki/Stepped_Reckoner
L1 MISPIC Informatique
Machine à différences
Charles Babbage, 1830, calcul de polynômes.
Allan J. Cronin, http ://en.wikipedia.org/wiki/Difference_engine
L1 MISPIC Informatique
Tabulatrice
Herman Hollerith, 1890.
Comptage, 150 additions/s, machine électrique.
Utilisée pour recensement USA 1890.
Stahlkocher, http ://en.wikipedia.org/wiki/Tabulating_machine
L1 MISPIC Informatique
Bombe
Utilisée pour déchiffrer les messages allemand (2e guerremondiale)
Tom Yates, http ://en.wikipedia.org/wiki/Bombe
L1 MISPIC Informatique
Le premier vrai ordinateur : Baby 1
Quelques chiffres
longueur 5,23 m, hauteur 3,26 m, poids 1 tonne ;
voltage : de 350V à 1250V (lampes !) ;
consommation 3500 W
horloge à 100 kHz
500 instructions par seconde
Depuis juin 2020 : Fugaku (Fujitsu, Japon)
7 300 000 cœurs
consommation 28 MW
415.1015 instructions par seconde (415 pétaflops)
L1 MISPIC Informatique
Une photo de Baby 1
L1 MISPIC Informatique
Une photo de Fugaku
L1 MISPIC Informatique
Modèles de calculabilité
Début du XXe siècle : qu’est-ce que calculer ?
système semi-Thue
λ-calcul de Church
machine de Turing ⋆
machine de von Neumann
algorithmes de Markov
automate cellulaire de Conway ⋆
clauses de Horn
machine à registres ⋆
machine de Peano ⋆
. . .
Tous équivalents ! !
L1 MISPIC Informatique
Automate cellulaire : le jeu de la vie
damier infini ;
chaque case (appelée cellule) est soit vivante, soit morte ;règles d’évolution :
1 une cellule vivante entourée de 2 ou 3 cellules vivantes restevivante, sinon elle meurt ;
2 une cellule morte entourée de 3 cellules vivantes devientvivante, sinon elle reste morte.
une simulation en ligne : http ://www.bitstorm.org/gameoflife
la page Wikipedia «Jeu de la Vie»
L1 MISPIC Informatique
machine à registres
une infinité de registres numérotés : R0,R1,R2, . . .
chaque registre peut contenir un entier
à l’allumage, contenu des registres aléatoires : nécessité
d’initialiser
contenu du registre numéro i noté (Ri)
Instructions
(i) Ri ← 0
(ii) Ri ++
(iii) Tant que Ri 6= Rj faire < P > ftq
L1 MISPIC Informatique
Sémantique du Tant que
Tant que Ri 6= Rj faire < P > ftq
1 si (Ri ) = (Rj) alors l’instruction est terminée2 exécuter le sous-programme P3 reprendre en (1)
L1 MISPIC Informatique
machine à registres : exemples
Initialisation du registre 5 à 2
R5 ←− 0 ;R5 ++ ;R5 ++ ;
L1 MISPIC Informatique
machine à registres : exemples
Initialisation du registre 5 à 2
R5 ←− 0 ;R5 ++ ;R5 ++ ;
Exécution
Supposons que (R5) = 12
(R5)12
R5 ←− 0 ; 0R5 ++ ; 1R5 ++ ; 2
L1 MISPIC Informatique
machine à registres : exemples
Recopie du contenu du registre 8 dans le registre 6
R6 ←− 0 ;Tant que R6 6= R8 faire
R6 ++ ;
L1 MISPIC Informatique
machine à registres : exemples
Recopie du registre 8 dans le registre 6
R6 ←− 0 ;Tant que R6 6= R8 faire
R6 ++ ;
Exécution
Supposons que (R6) = 279 et (R8) = 4 ;
(R6)279
R6 ←− 0 ; 0R6 ++ ; 1R6 ++ ; 2R6 ++ ; 3R6 ++ ; 4
L1 MISPIC Informatique
machine à registres : bilan
écrire un programme, c’est enrichir le vocabulaire de lamachineon vient donc d’enrichir le lexique de la machine à registre dedeux instructions :
1 Ri ←− n, pour tout n ∈ N
2 Ri ←− Rj
L1 MISPIC Informatique
machine de Peano
évaluateur d’expressions arithmétiques
possibilité de définir des fonctions
Expressions
(i) 0 0
(ii) ++ Expr eval(Expr)+1
(iii) −− Expr eval(Expr)-1
(iv) si E1 = E2 alors E3 sinon E4
(v) appel de fonction
L1 MISPIC Informatique
machine de Peano : exemples de définitions
Constante 2DEUX = ++ ++ 0
Évaluation :
DEUX = ++ ++ 0
= (++ 0) + 1
= (0 + 1) + 1
= 1 + 1
= 2
Confort
On va supposer que la machine de Peano “connaît” tous lesentiers...
L1 MISPIC Informatique
machine de Peano
Expressions
(i) 0, 1, 2, 3, 4, ...
(ii) ++ Expr
(iii) −− Expr
(iv) si E1 = E2 alors E3 sinon E4
(v) appel de fonction
L1 MISPIC Informatique
machine de Peano : exemples de définitions
Addition : algorithme A
0 + Y = YX + Y = ((X - 1) + Y) + 1
Addition : programme A
plus_A(X,Y) = si X = 0 alors Y
sinon ++plus_A(--X, Y)
L1 MISPIC Informatique
Programme A : exécution
Addition : programme A
plus_a(X,Y) = si X = 0 alors Y sinon ++plus_a(--X, Y)
plus_a(1,2)
= si 1 = 0 alors 2 sinon ++plus_a(--1,2)
= ++plus_a(--1, 2)
= ++plus_a(0, 2)
= ++(si 0 = 0 alors 2 sinon ++plus_a(--0, 2))
= ++ 2
= 3
CORRECT !
L1 MISPIC Informatique
Addition : un autre algorithme
Nouvel algorithme
Pour additionner X et Y , j’ajoute 1 à Y , X fois
J’ai besoin de savoir combien de fois j’ai ajouté 1
Une nouvelle variable Z va compter ce nombre d’additions
Programme Peano
add(X,Y) = add_aux(X,Y,0)
add_aux(X,Y,Z) = si X = Z alors Y
sinon add_aux(X,++Y,++Z)
L1 MISPIC Informatique
Nouvel algorithme : exécution
add(3,4)
= add_aux(3,4,0)
= add_aux(3,5,1)
= add_aux(3,6,2)
= add_aux(3,7,3)
= 7
L1 MISPIC Informatique
machine de Peano évoluée
Expressions
(i) 0, 1, 2, 3, 4, ...
(ii) ++ Expr
(iii) −− Expr
(iv) si E1 = E2 alors E3 sinon E4
(v) appel de fonction
(vi) E1 + E2
L1 MISPIC Informatique
machine de Peano : exemples de définitions
Multiplication : algorithme
0 * Y = 0X * Y = Y + ((X - 1) * Y)
Multiplication : programme
mult(X,Y) = si X = 0 alors 0
sinon plus(Y, mult(--X,Y))
L1 MISPIC Informatique
Multiplication : un autre programme
Nouvel algorithme
Pour multiplier X et Y , j’ajoute Y à lui-même, X fois
J’ai besoin de savoir combien de fois j’ai ajouté Y
Une nouvelle variable Z va compter ce nombre d’additions
J’ai besoin de savoir ce que j’ai déjà ajouté
Une nouvelle variable S va recevoir les sommes partielles
Programme Peano
mult(X,Y) = mult_aux(X,Y,0,0)
mult_aux(X,Y,Z,S) = si X = Z alors S
sinon mult_aux(X,Y,++Z,plus(Y,S))
L1 MISPIC Informatique
Nouvel algorithme : exécution
mult(3,4)
= mult_aux(3,4,0,0)
= mult_aux(3,4,1,4)
= mult_aux(3,4,2,8)
= mult_aux(3,4,3,12)
= 12
L1 MISPIC Informatique
Machine de Turing
un ruban infini, chaque case du ruban peut contenir unsymbole (lettre, chiffre, ...) ou être vide ;
une tête de lecture/écriture qui pointe sur une case du ruban ;
la tête de lecture/écriture est dans un état parmi une listed’états possibles.
Variantes : machine à plusieurs rubans, rubans semi-infinis, ...
Etat
↓
... $ b a 3 ...
L1 MISPIC Informatique
Fonctionnement d’une machine de Turing
Exécute les instructions d’un programme tant que cela estpossible.
L1 MISPIC Informatique
Programme d’une machine de Turing
Programme d’une machine de Turing : liste d’instructions
Les instructions sont du type :
si l’état est E et le symbole sous la tête est s alors
remplacer s par s ′ ;
passer dans l’état E ′
et déplacer la tête.
Déplacement de la tête de lecture/écriture sur le ruban : unecase à droite (noté →) ou une case à gauche (noté ←).
Notation d’une instruction (par ex) : (E , s) =⇒ (E ′, s ′,→).
L1 MISPIC Informatique
Exemple 1
Problème
Calculer n + 1 ; le ruban contient initialement n écrit en base 1. Latête de lecture est sur le ’1’ le plus à droite.
↓
... 1 1 1 ...
Nombres en base 1
base 10 1 2 3 4 ... 6 ...base 1 1 11 111 1111 ... 111111 ...
Algorithme possible
Se déplacer à gauche jusqu’à trouver une case vide et y mettre un’1’.
L1 MISPIC Informatique
Programme de la machine de Turing correspondante
États
Déplacement
Stop
Instructions1 ( Déplacement , 1) =⇒ ( Déplacement , 1,←) : Si l’état est
Déplacement et que la tête de lecture est sur ’1’ alors sedéplacer d’une case à gauche.
2 ( Déplacement , ∅) =⇒ ( Stop , 1,←) : Si l’état estDéplacement et que la tête de lecture est sur une case vide
alors écrire ’1’ et passer dans l’état Stop .
L1 MISPIC Informatique
Exemple 1
Problème
Calculer n + 1 ; le ruban contient initialement n écrit en base 1. Latête de lecture est sur le ’1’ le plus à droite.
Instructions1 ( Déplacement , 1) =⇒ ( Déplacement , 1,←)
2 ( Déplacement , ∅) =⇒ ( Stop , 1,←)
L1 MISPIC Informatique
Exemple 2
Problème
Calculer n+ 1 ; le ruban contient initialement n écrit en base 10. Latête de lecture est sur le chiffre le plus à droite.
Exemples1 34 + 12 39 + 13 99 + 1
L1 MISPIC Informatique
Solution
États
Ajoute : il faut ajouter 1 à la case courante
Stop : c’est fini
Instructions
( Ajoute , 0) =⇒ ( Stop , 1,←)
( Ajoute , 1) =⇒ ( Stop , 2,←)
( Ajoute , 2) =⇒ ( Stop , 3,←)
( Ajoute , 3) =⇒ ( Stop , 4,←)
( Ajoute , 4) =⇒ ( Stop , 5,←)
( Ajoute , 5) =⇒ ( Stop , 6,←)
( Ajoute , 6) =⇒ ( Stop , 7,←)
( Ajoute , 7) =⇒ ( Stop , 8,←)
( Ajoute , 8) =⇒ ( Stop , 9,←)
( Ajoute , 9) =⇒ ( Ajoute , 0,←)
( Ajoute , ∅) =⇒ ( Stop , 1,←)
L1 MISPIC Informatique
Solution
États
Ajoute : il faut ajouter 1 à la case courante
Stop : c’est fini
Instructions1 ( Ajoute , i) =⇒ ( Stop , i + 1,←) (pour 0 ≤ i ≤ 8) ;2 ( Ajoute , 9) =⇒ ( Ajoute , 0,←).3 ( Ajoute , ∅) =⇒ ( Stop , 1,←)
L1 MISPIC Informatique
Une machine un peu particulière
Instructions1 ( Ajoute , i) =⇒ ( Stop , i + 1,←) (pour 0 ≤ i ≤ 8) ;2 ( Ajoute , 9) =⇒ ( Ajoute , 0,←).3 ( Ajoute , ∅) =⇒ ( Ajoute , 1,←)
Cette machine ne s’arrête jamais dans certains cas... Lesquels ?
L1 MISPIC Informatique
En résumé
Une machine de Turing prend en entrée une suite de symboles(sur le ruban).
Soit la machine s’arrête, soit elle ne s’arrête pas.
Si elle s’arrête, résultat sur le ruban : suite de symboles.Exemples :
Entrée : n en base 1, sortie : n + 1 en base 1.Entrée : n en base 10, sortie : n+ 1 en base 10.Entrée : 2 entiers n et m, sortie : n +m.Entrée : formule, par ex (45 + 37) ∗ 12, sortie : résultat....
L1 MISPIC Informatique
Calculabilité : nul n’est jamais assez fort pour cecalcul⋆
⋆ : Luc Étienne, L’Art du contrepet
L1 MISPIC Informatique
Une machine de Turing calcule une fonction
Une suite de symbole ≡ un entier.Donc machine de Turing :
Entrée : un entier.Sortie : un entier.
Autrement dit, une machine de Turing calcule une fonction deN dans N (si elle s’arrête).
Une machine de Turing ≡ une fonction f .Entrée de la machine : n, sortie : f (n).
L1 MISPIC Informatique
Thèse de Church-Turing
Pour tout algorithme (fonction intuitivement calculable), ilexiste une machine de Turing qui l’implémente.
Pour chacune des machines réelles, il existe une machine deTuring qui résout le même problème.
L1 MISPIC Informatique
Thèse de Church-Turing
Pour tout algorithme (fonction intuitivement calculable), ilexiste une machine de Turing qui l’implémente !
Pour chacune des machines réelles, il existe une machine deTuring qui résout le même problème.
L1 MISPIC Informatique
Fonctions calculables
Une fonction f est calculable s’il existe une machine de Turing telleque, si le ruban de la machine contient initialement un entier nquelconque, alors :
la machine s’arrête,
le ruban contient à la fin f (n).
L1 MISPIC Informatique
Fonctions calculables
Toutes les fonctions de N dans N sont elles calculables ? Non, car :
. . .
. . .
. . .
L1 MISPIC Informatique
Un problème non calculable
Problème de correspondance de Post : dominos à aligner
1 2 3 4 5
Question : existe-t-il un alignement des dominos tel qu’il y ait lamême chose en haut et en bas ? (les répétitions de dominos sontautorisées)
L1 MISPIC Informatique
D’autres problèmes non calculables
1 Ce programme s’arrête-t-il ?2 Ce programme va-t-il me demander mon mot de passe ?3 Si j’exécute ce programme, va-t-il effacer mon disque dur ?4 Ce programme est-il un virus ?
En fait, la plupart des questions intéressantes sur les programmessont non calculables !
L1 MISPIC Informatique
Une lueur d’espoir. . .
⊲ Non calculable ne veut pas dire impossible à calculer : existencede cas particuliers.⊲ D’autres problèmes au moins aussi intéressants sontcalculables. . .
L1 MISPIC Informatique
Conception d’algorithmes (et de programmes)
L1 MISPIC Informatique
Mission
Concevoir un nouvel algorithme de multiplication de deux entiersutilisant seulement
1 la multiplication par 2,2 la division par 2,3 l’addition d’entiers,4 le test de parité.
L1 MISPIC Informatique
Un peu de réflexion. . .
Arithmétique. . .
Écriture binaire d’un entier n : avec des 0 et des 1 uniquement
n = nk .2k + · · ·+ n1.2
1 + n0.20 =
k∑
i=0
ni .2i
(indice i : poids du chiffre)
Exemples
13 = 8 + 4 + 1 = 1.23 + 1.22 + 0.21 + 1.20(= 11012)21 = 16 + 4 + 1 = 1.24 + 0.23 + 1.22 + 0.21 + 1.20(= 101012)75 = 64 + 8 + 2 + 1 =1.26 + 0.25 + 0.24 + 1.23 + 0.22 + 1.21 + 1.20(= 10010112)
L1 MISPIC Informatique
Un peu plus de réflexion. . .
Soient X et Y deux entiers à multiplier. On a Y =
n∑
i=0
yi2i
Du coup
X × Y = X ×
n∑
i=0
yi2i
= X × (yn.2n + · · ·+ y1.2
1 + y0.20)
= X .yn.2n + · · · + X .y1.2
1 + X .y0.20
=n
∑
i=0
yi .X .2i
L1 MISPIC Informatique
Exemple
X = 35,Y = 26Y = 16 + 8 + 2 = 1.24 + 1.23 + 0.22 + 1.21 + 0.20 (= 110102)
i yi 2i X .2i
0 0 1 351 1 2 702 0 4 1403 1 8 2804 1 16 560
Pour obtenir 35× 26, il suffit d’additionner les lignes où yi 6= 0 :
35× 26 = 70 + 280 + 560 = 910
L1 MISPIC Informatique
Encore plus de réflexion. . .
Comment savoir si yi est nul ou pas ?
En base 10
si n est un multiple de 10, il se termine par 0
sin
10est un multiple de 10, il se termine par 0 : l’avant-dernier
chiffre de n est 0
sin
10kest un multiple de 10, il se termine par 0 : le chiffre de
poids k de n est 0
exemples : 5021, 2301, 602215, . . .
L1 MISPIC Informatique
Encore plus de réflexion. . .
Comment savoir si yi est nul ou pas ?
En base 2
si n est pair, son écriture binaire se termine par 0
sin
2kest pair, son écriture binaire se termine par 0 : le chiffre
de poids k de n est 0
si yi 6= 0, c’est que yi = 1
Il suffit de diviser Y par 2, jusqu’à arriver à 1 :
i yi 2i Y /2i
0 0 1 261 1 2 132 0 4 63 1 8 34 1 16 1
L1 MISPIC Informatique
Algorithme de calcul d’un produit
On calcule dans Z le produit de X et Y :
(a) mettre Z à zéro ;
(b) si Y = 0, c’est fini, Z contient le résultat ;
(c) si Y est impair, ajouter X à Z ;
(d) multiplier X par 2 ;
(e) diviser Y par 2 ;
(f) reprendre en (b).
L1 MISPIC Informatique
Exemple et disposition pratique
X = 61, Y = 37
X Y Z61 37 0
61122 18
61244 9
305488 4
305976 2
3051952 1
22573904 0
L1 MISPIC Informatique
Le programme Peano qui va bien :
mult_russe(X,Y) = mult_russe_aux(X,Y,0)
mult_russe_aux(X,Y,Z) =
si Y = 0 alors Z
sinon si Y%2 = 1 alors mult_russe_aux(X*2, Y/2, X+Z)
sinon mult_russe_aux(X*2, Y/2, Z)
L1 MISPIC Informatique
On l’exécute :
Programme
mult_russe(X,Y) = mult_russe_aux(X,Y,0)
mult_russe_aux(X,Y,Z) =
si Y = 0 alors Z
sinon si Y%2 = 1 alors mult_russe_aux(X*2, Y/2, X+Z)
sinon mult_russe_aux(X*2, Y/2, Z)
mult_russe(13, 17) = mult_russe_aux(13, 17, 0)= mult_russe_aux(26, 8, 13)= mult_russe_aux(52, 4, 13)= mult_russe_aux(104, 2, 13)= mult_russe_aux(208, 1, 13)= mult_russe_aux(416, 0, 221)= 221
L1 MISPIC Informatique
Faisabilité pratique : cryptographie
L1 MISPIC Informatique
Codage d’un texte : Jules César
Principe : décalage des lettres (code monoalphabétique)
Avec un décalage de 6 :
ABCDEFGHIJKLMNOPQRSTUVWXYZ
GHIJKLMNOPQRSTUVWXYZABCDEF
Exemple : ROT13 (involution)
VOLUMEROT13=⇒ IBYHZR
ROT13=⇒ VOLUME
Faiblesse : seulement 26 possibilités. . .
L1 MISPIC Informatique
Codage d’un texte : Blaise de Vigenère
Principe : une clé donne le décalage (code polyalphabétique)Exemple : la clé est INFODécalages : +9 (I), +13 (N), +6 (F), +14 (O)
CE COURS EST INTERESSANT
IN FOINF OIN FOINFOINFOI
LS IDDFY TBH OCCSXTBGGCC
Texte codé final :
LSI DDF YTB HOC CSX TBG GCC
L1 MISPIC Informatique
Vigenère : avantages et inconvénients
Force : incassable si clé et texte de même longueur (one-time
pad)Faiblesse :
facilement ( !) cryptanalysé pour les clés courtes utilisées enpratique,
problème de gestion des clés : système privé, les utilisateursdoivent s’entendre sur les clés.
L1 MISPIC Informatique
Cryptographie à clés publiques : principe
Principe
chaque utilisateur a 2 clés : une publique P , une privée p ;
un message codé avec P doit être décodé avec p ;
un message codé avec p doit être décodé avec P ;
P difficile à obtenir à partir de p (et inversement).
Code(P ,Code(p,M)) = Code(p,Code(P ,M)) = M
Avantage
Chaque utilisateur doit connaître
sa clé privée,
les clés publiques des autres utilisateurs (annuaire).
L1 MISPIC Informatique
Cryptographie à clés publiques : utilisation
Envoi d’un message
si Alice veut envoyer M à Bob, elle le code avec la clé publiquede Bob ;
lorsque Bob reçoit le message, il le décode avec sa clé privée.
Signature électronique
Alice veut envoyer le message M, signé, à Bob ;
Alice code M avec sa clé privée, elle obtient S ;
elle envoie (M,S) à Bob ;
Bob décode S avec la clé publique d’Alice ;
s’il obtient M tout va bien, il est sûr que l’expéditeur est Alice ;
sinon erreur de transmission, ou masquarade
L1 MISPIC Informatique
Cryptographie à clés publiques : RSA
Rivest, Shamir et Adleman, 1977
un peu d’arithmétique : on peut trouver des entiers a, b, Ntels que, pour tout entier x ,
(xa)b = (xb)a = x (N)
Par exemple, N = 91, a = 5, b = 29
clé publique (a,N), clé privée (b,N)
pour retrouver a à partir de b et N, il faut d’abord factoriserN ;
on sait que N = p1 × p2, p1 et p2 premiers ;Sécurité :
Record actuel : factorisation d’un entier de 232 chiffres (768bits) en 2 ans ;Sur un PC standard : entier de 80 chiffres factorisable en unjour ;Clés courantes de RSA : 1024 ou 2048 bits. . .
L1 MISPIC Informatique
Problème pour RSA
On souhaite calculer xn, pour de grandes valeurs de n (n > 10100)
L1 MISPIC Informatique
Première approche : algorithme
{
x1 = x
xn+1 = x × xn
ou bien, équivalemment,
xn =
n∏
i=1
x
Ceci se fait en n − 1 multiplications
L1 MISPIC Informatique
Première approche : programme Peano
puissance1(X,N) = si N = 0 alors 1
sinon X * puissance1(X, N-1)
L1 MISPIC Informatique
Deuxième approche : algorithme
x0 = 1x1 = x
x2n = xn × xn
x2n+1 = xn × xn × x
L1 MISPIC Informatique
Deuxième approche : programme Peano naïf
puissance2(X,N) = si N = 0 alors 1
sinon si N = 1 alors X
sinon si X % 2 = 0 alors
puissance2(X, N/2) * puissance2(X, N/2)
sinon X * puissance2(X, N/2) * puissance2(X, N/2)
L1 MISPIC Informatique
Temps de calcul de x1050
au plus environ 2⌊
log2 1050⌋
multiplications ;⌊
log2 1050⌋
= 166 ;
donc au plus 332 multiplications ;
si 1017 multiplications par seconde, calcul effectué enbeaucoup moins qu’une nanoseconde. . .
Exemple plus réaliste
n = 22048
103 multiplications par seconde ;
un peu plus de 4 secondes.
L1 MISPIC Informatique
Moralité
⊲ tout n’est pas calculable,⊲ et même si c’est calculable, c’est peut-être inaccessible :
10! µs ≈ 3, 6 s
20! µs ≈
⊲ un peu de réflexion ne peut pas nuire. . .
L1 MISPIC Informatique