objectifs pédagogiques - perso.univ-st-etienne.fr

21
UE Informatique Philippe EZEQUEL Marc BERNARD L1 MISPIC 2021 - 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, en tant que science ; 2 × 2 séquences (plus ou moins) indépendantes ; Info 1, séquence 1 (P.E.) : calculabilité, algorithmique : les fondamentaux 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 ça sert ; Info 2, séquence 2 : théorie des graphes, programmation par contraintes, applications aux jeux, puzzles, énigmes ; Avertissement Ces transparents sont (volontairement ?) incomplets. L1 MISPIC Informatique Plan du cours 1 Introduction 2 Calculabilité 3 Conception d’algorithmes (et de programmes) 4 Faisabilité pratique L1 MISPIC Informatique Introduction : au début sont les programmes. . . L1 MISPIC Informatique

Upload: others

Post on 19-Jun-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Page 2: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 3: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 4: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 5: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 6: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 7: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 8: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 9: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 10: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 11: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 12: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 13: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 14: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 15: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 16: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 17: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 18: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 19: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 20: Objectifs pédagogiques - perso.univ-st-etienne.fr

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

Page 21: Objectifs pédagogiques - perso.univ-st-etienne.fr

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