Vous êtes sur la page 1sur 138

Master BIBDA

Cryptographie

Pr. A. AZOUAOUI

2017-2018
Introduction
Canal non sécurisé
Alice Bob

OSCAR

• Problème de confidentialité, d’intégrité et


d’authentification
11:08 2
Les buts de la cryptographie

Elle doit satisfaire plusieurs fonctions :


– La confidentialité

– L’authentification

– L’intégrité

– La non répudiation

11:08 3
Les buts de la cryptographie

La confidentialité
– Il s’agit de garantir le secret de
l’information transmise ou archivée.
– Seuls les utilisateurs autorisés doivent y
avoir accès.

11:08 4
Les buts de la cryptographie

L’authentification:
– L’émetteur est sûr de l’identité du destinataire
c’est à dire que seul le destinataire pourra prendre
connaissance du message car il est le seul à
disposer de la clef de déchiffrement.

– Le destinataire est sûr de l’identité de l’émetteur

11:08 5
Les buts de la cryptographie

L’intégrité
– Il s’agit de préserver les informations contre
les modifications.
– "L’intégrité est la prévention d’une modification
non autorisée de l’information"
– Avec les techniques actuelles, cette fonction
est réalisée par la signature numérique.

11:08 6
Les buts de la cryptographie

La non répudiation

– Impossibilité, pour une personne ou pour toute


autre entité engagée dans une communication par
voie informatique, de nier avoir reçu ou émis un
message.

11:08 7
Terminologie
• La cryptologie est la science du secret. Elle se
divise en deux disciplines :
– La cryptographie qui est l’étude des algorithmes
permettant de protéger de l’information. Ces
algorithmes sont appelés cryptosystèmes ;

– La cryptanalyse qui est l’étude du niveau de


sécurité des cryptosystèmes fournis par les
cryptographes.

11:08 8
Terminologie
• Chiffrer : Action de rendre un message en clair M
(plaintext) en un message illisible C appelé
(ciphertext) cryptogramme ou message chiffré.

• Déchiffrer : Action inverse du chiffrement.

• Cryptosystème : L’algorithme (ou le dispositif


physique) permettant de chiffrer des données.

• Attaquer, Casser : Mettre à mal la sécurité d’un


cryptosystème (retrouver M à partir de C sans
connaitre la clé, retrouver la clé).
11:08 9
Terminologie

• Message en clair/ message chiffré (cryptogramme)

• Chiffrer /déchiffrer: avec une clé= action autorisée,

• Décrypter: sans la clé= action illégale!

• Algorithme : description non-ambiguë d’une méthode


de résolution d’un problème.

• Protocole : description non-ambiguë d’une suite


d’interactions entre plusieurs participants.

11:08 10
Terminologie
• Il existe 2 types de chiffrement:
– Le chiffrement symétrique (ou chiffrement à clé
privée) consiste à utiliser la même clé pour le
chiffrement et le déchiffrement.

11:08 11
Terminologie
– Le chiffrement asymétrique (ou chiffrement à clés
publiques) consiste à utiliser une clé publique
pour le chiffrement et une clé privée pour le
déchiffrement.

11:08 12
Cryptographie classique
Quelques cryptosystèmes classiques

• Chiffrement par substitution


– Substitution monoalphabétique
• Chiffre de César
• Chiffre affine
– Substitution polyalphabétique
• Chiffre de Vigenère
• Chiffre de Vernam
– Substitution polygrammes
• Chiffre de Playfair
• Chiffrement par transposition
– Transposition simple par colonnes
– Transposition complexe par colonnes

11:08 14
Chiffrement par substitution

Définition:
• Le chiffrement par substitution consiste à
remplacer dans un message une ou plusieurs
entités (généralement des lettres) par une ou
plusieurs autres entités.

• Toutes les substitutions simples sont


vulnérables à une analyse des fréquences
d'apparition des lettres.
11:08 15
Chiffrement par substitution

Chiffre de César:
• Substituer chaque lettre du message en clair par
une autre située à distance fixe dans l’alphabet.
Cette distance devait être connue de l’expéditeur
comme du destinataire.
• décalage de trois lettres :

11:08 16
Chiffrement par substitution

Chiffrement de César:
• Principe :
– Soit p (c, respec.) l’indice de la lettre du message en
clair(chiffré,respec.) et k le décalage (la clé: k=3):

– Chiffrement : C = Ek(p) = (p + k) mod 26

– Déchiffrement : p = Dk(C) = (C - k) mod 26

11:08 17
Chiffrement par substitution
Chiffrement de César:
• Exercice :
– Chiffrez le message « bonjour tout le monde » en
utilisant le cryptosystème de César(k=3).
– Déchiffrez le message : «FKLII UHGHF HVDU »
– Le déchiffrement du message chiffré suivant:
HMNKK WJIJH JXFW est CHIFFRE DE CESAR
– Donnez la clef de chiffrement ?

11:08 18
• Solution :
– Chiffrez le message « bonjour tout le monde » en
utilisant le cryptosystème de César(k=3).
– ERQMR XUWRX WOHPR QGH
– Déchiffrez le message : «FKLII UHGHF HVDU »
– chiffredeCesar
– Le déchiffrement du message chiffré suivant:
HMNKK WJIJH JXFW est CHIFFRE DE CESAR
– Donnez la clef de chiffrement (k=5)

11:08 19
Chiffrement par substitution
• L’espace de clés est:|K|=26.

• Cette méthode est vulnérable aux attaques de


type:
– Analyse de fréquences
– Force brute (26 clés possibles !)

• Analyse fréquentielle:
Le principe de cette cryptanalyse consiste à deviner les
lettres d’un texte clair sur la base de leur fréquence
d’apparition
11:08 20
Chiffrement par substitution

Analyse fréquentielle:
• Fréquences d'apparition des lettres(français)

• Analyse des fréquences des lettres : E et A sont les


plus fréquentes en français, le moins fréquent: W.

• Cette technique ne fonctionne bien que si le


message chiffré est suffisamment long.
11:08 21
Chiffrement par substitution
• Exercice
• Vous interceptez un légionnaire romain portant le message
suivant de la part de Jules César à un de ses centurions :
NG UKVG FW BGTQ GUV IGPKCN NCWVGWT FG EG VWVQTKGN CWUUK
• Quel est la clef (le décalage) ?
• Quel est le message en clair ?
• Renvoyez le légionnaire à son expéditeur avec le message suivant
chiffré avec la même clef.
coucou cesar on a lu ton petit mot

11:08 22
Chiffrement par substitution
• Solution
• On peut donc assez vite constater que la lettre la plus présente ici est le 'G',
avec neuf occurrences.
Supposons donc que le 'G' chiffre le 'E'. Sachant que le chiffre de César est utilisé,
on peut supposer que la clé soit :
G-E=6-4=2

• On fait donc un test, en déchiffrant à l'aide du chiffre de César avec une clé de
2.
NG UKVG FW BGTQ GUV IGPKCNNCWVGWT FG EG VWVQTKGN CWUUK
LE SITE DU ZERO EST GENIAL L AUTEUR DE CE TUTORIEL AUSSI
La phrase décryptée est donc : « LE SITE DU ZÉRO EST GÉNIAL, L'AUTEUR DE CE
TUTORIEL AUSSI », ce qui a un sens.

• EQWEQWEGUCTQPCNWVQPRGVKVOQV

11:08 23
Chiffrement par substitution

Analyse fréquentielle(di/tri-grammes):

• Digrammes les plus utilisés


en langue française : ES, LE,
EN …
• Trigrammes : ENT, LES, EDE…

11:08 24
Chiffrement par substitution

Le chiffrement affine:
• L'idée est d'utiliser comme fonction de chiffrement
une fonction affine du type y=(k1.x+k2) mod 26, où
k1 et k2 sont des constantes, et où x et y sont des
nombres correspondant aux lettres de l'alphabet
(A=0,B=1,…,Z=25).

• On peut remarquer que si k1=1, alors on retrouve


le chiffre de César et k2 est le décalage.
11:08 25
Chiffrement par substitution

Le chiffre affine: fonctionnement


• Message M=m1m2…mn-1mn
• Clé : (k1, k2), k1,k2 ∈ {0,25} et pgcd(k1,26)=1
• Chiffrement :
ci= f(mi) = k1*mi + k2 mod 26
• Déchiffrement :
mi= f-1(ci) = k1-1*(ci - k2) mod 26
• Nombres de clés possibles 12*26 = 312
11:08 26
Chiffrement par substitution

Le chiffre affine : exemple


• Clé = (k1, k2) = (3, 11)
• Chiffrement :
ci= f(mi) = 3 * mi + 11 mod 26
’NSA’  13 18 0  24 13 11  ’YNL’.
• Déchiffrement :
k1-1 = 3-1 mod 26 = 9 car 3 * 9 mod 26 = 1
mi= f-1(ci) = 9 * (ci– 11) mod 26

11:08 27
Chiffrement par substitution

Cryptanalyse: chiffre affine


• Message chiffré : HGAHY RAEFT GAGRH
DGAGM OEHIY RAAOT ZGAGJ GKFDG AZGSB
INNTG KGRHE NNIRG
• Trouvez le message en clair.

11:08 28
Chiffrement par substitution
Cryptanalyse: chiffre affine
Solution:

• On remarque que G apparait 13 fois et A 8 fois.

• E, A, S, I sont les lettres les plus fréquentes, donc E  G et


SA

• Trouver (k1; k2) : 4k1 + k2 = 6 mod26 et


18k1 + k2 = 0 mod26 14k1=-6 mod26k1=7 et k2=4.
• k1-1 = 7-1 mod 26 = 15 car 7* 15 mod 26 = 1

• Le message déchiffré est: TESTONS A PRESENT LES EQUATIONS SUR DES


EXEMPLES DE CHIFFREMENT AFFINE

11:08 29
Substitution par permutation

• |K|=26!
• Soit п une permutation:
– Soit x c P, ek(x)=п(x)=y, dk(y)=п-1(y)=x
• Exemple:

– X=« ce texte est chiffre par substitution »


– Y=« yv pvfpv vqp yaihhjv rdj qexqpipepics »
11:08 30
Chiffrement par substitution

Subst. polyalphabétique: chiffre de Vigenère


• Le chiffre de Vigenère est une amélioration
décisive du chiffre de César.

• Sa force réside dans le fait que ce chiffre


utilise une clef qui définit le décalage pour
chaque lettre du message.

11:08 31
Chiffrement par substitution

Exemple : Chiffrement de Vigenère


chiffrons le texte "CHIFFRE DE VIGENERE" avec
la clef "FPBM" (cette clef est éventuellement
répétée plusieurs fois pour être aussi longue
que le texte en clair).
clair c h i f f r e d e v i g e n e r e
clef f p b m f p b m f p b m f p b m f
décalage 5 15 1 12 5 15 1 12 5 15 1 12 5 15 1 12 5
chiffré h w j r k g f p j k j s j c f d j

11:08 32
Chiffrement par substitution
• Exercice : Chiffrement de Vigenère
1- Chiffrer le texte "CRYPTOGRAPHIE DE VIGENERE" avec la clé
"MATHWEB"
2- Déchiffrer le texte "DHKMJCMHVWIILRPZI" avec la clé
"BACHELIER"
• Solution :
1- ORRWPSHDAIOEI EQ VBNARFDE
2- CHIFFRE DE VIGENERE

11:08 33
Chiffrement par substitution

Carré de Vigenère

11:08 34
Chiffrement par substitution
• Exemple Chiffrement de Vigenère
Clef : MACLEFMACL
Chiffré : YOPXIXEAIP
Clair : MONMESSAGE

Chiffré : SIAAA IYAIQ IJHEF ZEUNJ NSAXE F


Clef : JEANNEMARIE
Clair : JEANNE MARIE A DES MAINS FORTES

11:08 35
Chiffrement par substitution
Chiffre de Vernam ( One-Time Pad)
• „Masque jetable = chiffre de Vigenère avec comme
caractéristique que la clef de chiffrement a la même longueur
que le message en clair.
• Exemple :
Clair : ZERO
Clef : JRVG
Chiffré :

Z + J = 25 + 9 = 34 - 26 = 8 = I
E + R = 4 + 17 = 21 = V
R + V = 17 + 21 = 38 - 26 = 12 = M
O + G = 14 + 6 = 20 = U

Ce qui nous donne au final, le cryptogramme suivant : « IVMU ».

11:08 36
Chiffrement par substitution

Chiffre de Vernam ( One-Time Pad)


• Exercice
• Clair : MASQUEJETABLE
• Clef : XCAATELPRVGZC
• Chiffré :

11:08 37
Chiffrement par substitution
• Chiffre de Vernam ( One-Time Pad)
• Solution

11:08 38
Chiffrement par substitution
Chiffre polygrammique: Le chiffre Playfair
• On dispose les 25 lettres de l'alphabet (W
exclu car inutile) dans une grille 5x5, ce qui
donne la clef.

11:08 39
Chiffrement par substitution
Chiffre polygrammique : Méthode de chiffrement
• On chiffre le texte par groupes de deux lettres (des
bigrammes) en appliquant les règles suivantes:

1. Si les deux lettres sont sur les coins d'un rectangle, alors
les lettres chiffrées sont sur les deux autres coins. La
première des deux lettres chiffrées est sur la même ligne
que la première lettre claire.

Exemples : OK devient VA, BI devient DC, GO devient YV.

11:08 40
Chiffrement par substitution
2. Si deux lettres sont sur la même ligne, on prend
les deux lettres qui les suivent immédiatement à leur
droite.

FJ sera remplacé par US, VE par EC.

11:08 41
Chiffrement par substitution
3. Si deux lettres sont sur la même colonne, on
prend les deux lettres qui les suivent
immédiatement en dessous.

RM sera remplacé par ID, BJ par JL

11:08 42
Chiffrement par substitution

4. Si le bigramme est composé de deux fois la même


lettre, on insère X entre les deux pour éliminer ce
doublon.

AABCD devient AX AB CD

11:08 43
Chiffrement par substitution
Chiffre polygrammique:
Exemple:

• Chiffrer le message «FACULTE POLYDISCIPLINAIRE»


• Message chiffré: KFAXOQATKMDINYDHQKNSDFTC
11:08 44
Chiffrement par substitution
• Exercice :
Déchiffrer le texte «VQMRRIITOTMZTXARDSROLD » par la clé
BYDGZJSFUPLARKXCOIVEQNMHT

• Solution :
CHIFFREMENT DE PLAYFAIR

11:08 45
Chiffrement par transposition
Définition:
• Les méthodes de chiffrement par transposition
consistent à réarranger les données à chiffrer de telle
façon à les rendre incompréhensibles. Il s'agit
généralement de réarranger géométriquement les
données pour les rendre visuellement inexploitables.
Transposition simple par colonnes :
– On écrit le message horizontalement dans une matrice
prédéfinie, et on trouve le texte à chiffrer en lisant la grille
verticalement.
– Le destinataire légal pour déchiffrer le message réalise le
procédé inverse.

11:08 46
Chiffrement par transposition
Transposition simple par colonnes :
• Exemple:
Texte à chiffrer= «faculte polydisciplinaire de beni mellal» en utilisant une matrice 6x6.

f a c u l t
e p o l y d
i s c i p l
i n a i r e
d e b e n i
m e l l a l

Texte chiffré = Feiidm apsnee cocabl uliiel lyprna tdleil

11:08 47
Chiffrement par transposition
• Exercice
Déchiffrer les suivant en utilisant la matrice 5x4 :
IEPRYLCTAOROPVYGH

• Solution
I LOVE CRYPTOGRAPHY

11:08 48
Chiffrement par transposition

Transposition complexe par colonnes :


– Une clé secrète (avec uniquement des caractères ) est
utilisé pour dériver une séquence de chiffres commençant
à 1 et finissant au nombre de lettres de la clé.

– Cette séquence est obtenue en numérotant les lettres de


la clé en partant de la gauche vers la droite et en donnant
l’ordre d’apparition dans l’alphabet.

– On chiffre en écrivant d’abord le message par lignes dans


un rectangle , puis on lit le texte par colonnes en suivant
l’ordre déterminé par la séquence.
11:08 49
Chiffrement par transposition
Transposition complexe par colonnes :
– Exemple :
– Prenons l'exemple la clef : DELIVRANCE

– on souhaite chiffrer est : "VENEZ NOUS AIDER AU


PORT DE BREST" :

– OPTSRVIDEDEATERRNEBUONUSZAE
11:08 50
Chiffrement par transposition
Transposition complexe par colonnes :
• Exercice:
1- Chiffrer "Je suis en Italie avec Maria " par la clé BIBMATH
2- Déchiffrer "BUNNA EDRME RDEQE NMIAE TON " avec la clé
CHAT
3- Déchiffrer " VTGUR SDEAEM SCRRS UCEOEE ZPAEYS " avec la
clé DELIVRANCE

11:08 51
Chiffrement par transposition
• Solution :
1- ILMJN AISTE EEREI VAUAC SIA
2- DEBARQUEMENT EN NORMANDIE
3- SAUREZ VOUS DECRYPTER DE MESSAGE

11:08 52
Cryptographie
asymétrique
Plan

• Introduction
• Algorithme RSA
• Algorithme Merkle-Hellman
• Algorithme El Gamal
Introduction

• Algorithmes à clef publique (crypto-systèmes


asymétriques)
– K1K2
– K2 ne peut pas être calculé à partir de K1
– K1 peut être publique
– K2 doit être secrète (clef privée)

• Exemples : RSA, Merkle-Hellman, El


Gamal
Cryptologie à clef publique

• Clef publique K1
• Clef privée K2
• Fonction de chiffrement: EK1(M) utilise une clé K1
• Fonction de déchiffrement: DK2(C) utilise une clé K2
• DK2(EK1(M)) = M
Comment cela fonctionne?

• Chaque utilisateur doit posséder une clef


publique et une clef privée.
• Si Alice veut envoyer un message M à
Bernard elle utilise la clef publique K1 de
Bernard et envoie:
C = EK1(M)
• Bernard reçoit C et utilise sa clef privée K2
pour calculer:
M = DK2(C)
Algorithme RSA

• Crypto-Système à clé publique introduit


en 1978 par Rivest, Shamir et Adleman
après le papier de Diffie et Hellman en
1976.

• Il est basé sur la difficulté de


factoriser des nombres.
Clefs du RSA

• Alice veut envoyer M à Bob.


– M un entier représentant un message.
– Bob choisit p et q deux nombres premiers et
on note n leur produit.
– Bob choisit e un entier premier avec (p-1)(q-1)
– On a Φ(n) = (p-1)(q-1) donc e est premier avec
Φ(n) et on obtient (via Bezout) qu'il est
inversible modulo Φ(n), i.e. il existe un entier d
tel que ed = 1 (mod Φ(n)).

• (n, e) est appelé clef publique


• (n, d) est appelé clef privée.
Chiffrement/déchiffrement RSA

• On suppose que Alice veut transmettre à Bernard un


message Chiffré M. Le message M est représenté
par un nombre < n.

• Fonction de chiffrement: E(M) = Me mod n


• Fonction de déchiffrement: D(C) = Cd mod n
Utilisation de RSA

• Quand le message est représenté par M < n , le


chiffrement se fait en une seule étape.

• Pour chiffrer de plus long messages il suffit de le


diviser en blocs M=M1 M2 ... Mt de sorte que Mi < n
pour tout 1≤i≤t

• On peut aussi utiliser RSA pour transmettre une clef et


ensuite utiliser un algorithme à clef secrète.
Exemple 1

• Les clés :
• P=5 , q=7
p  5, q  7, n  35, Φ(n)  ( p  1)(q  1)  24
e  5, p gcd(5, 24)  1, d  e1  5,5*5  25  1(mod 24)
• Chiffrement/déchiffrement :
• E(3)
E (3)  3  243  33(mod 35)
5

D(33)  335  39135393  3(mod 35)


• E(5)
E (5)  55  10(mod 35)
D(10)  105  5(mod 35)
Exemple 2
• Prenons p=47 et q=71

• n = 3337 et (n)=(p − 1)(q − 1) = 4670 = 3220

• Choisissons e=79 et d=1019


(on peut vérifier que ed = 80501 = 1+ 25 3220)
Exemple 2 suite
• Pour chiffrer le message 6882326879666683 on
commence par le diviser en petit blocs de trois
chiffres:

m1 m2 m3 m4 m5 m6 = 688 232 687 966 668 3

• En utilisant la clef (e,n)=(79, 3337) on calcule le


premier bloc:
68879 mod 3337 = 1570 = c1
Exemple 2 fin

• Les autres blocs sont chiffrés de la même manière et


on obtient:

c1 c2 c3 c4 c5 c6 = 1570 2756 2091 2276 2423 158

• Pour déchiffrer le message on utilise la clef


(d,n)=(1019, 3337) et on obtient pour le premier bloc:

15701019 mod 3337 = 688 = m1

• Le reste du message en clair est obtenu de la même


manière
Rappel : Arithmétique modulaire

x  y(mod n) ssi x  kn  y avec y  n

27  3 * 7  6 alors 27  6(mod 7)

x(mod n)  y(mod n)  ( x  y) (mod n)


• Exemple
9 mod7
11mod7

9  11  20  6(mod 7) et
9(mod 7)  11(mod 7)  2  4  6(mod 7)
Rappel : Arithmétique modulaire

x(mod n)  y(mod n)  ( x  y )(mod n)


• Exemple
9 mod7
11mod7
Exponentiation modulaire

Comment calculez 16578923456781 (mod 456712)

x 
8
 x  
2
2 2
donc pour calculer x (2k )
(mod n)

on calcule x  x 2 (mod n) k fois

• Exemple

21  10101  24 + 22 +20 et
52  8(mod 17) 54  13(mod 17)
58  16(mod 17) 516  1(mod 17)
521 (mod17)  5165451 (mod17)  1 13*5  14(mod17)
Exponentiation modulaire

• Calculer 511 mod 14


Exponentiation modulaire

• Calculer 17154 mod 100

71
Calcul du PGCD
• Algorithme Euclide (récursif) : calcule le pgcd de
deux nombres a et b.
euclide(a, b) ab
(a, b)  (b, a mod b)
si b  0 alors répondre a
• Exemples
(42,30) et (105,45)

euclide(42,30)  6
euclide(105, 45)  15
(42,30)
(30,12) (105, 45)
(12, 6) (45,15)
(6, 0) (15, 0)
Inverse multiplicatif

• Algorithme Euclide étendu (récursif) :

• Exemples

51  8 mod13
7 1  19 mod 22
(13, 5,1, 0)
(22, 7,1, 0)
(5, 3, 0  1* (2) mod13,1)  (5, 3,11,1)
(7,1, 0  1*(3) mod 22,1)  (7,1,19,1)
(3, 2,1  11* (1) mod13,11)  (3, 2, 3,11)
7 *19  133  6* 22  1  1mod 22
(2,1,11  3* (1) mod13, 3)  (2,1,8, 3)
5*8  40  1mod13
Avec un ordinateur, on calcule le PGCD et l’inverse multiplicatif de
très grands nombres efficacement.
Trouver les clefs du RSA

• On veut un entier e relativement premier à (n).

• On choisit e < (n) au hazard puis on appelle


Euclide(e, (n)) (pour trouver leur pgcd):

Euclide(a,b)
si b=0 alors retourner a
sinon retourner Euclide(b,a mod b)

• Si e n'est pas relativement premier à (n) alors on


incrémente e successivement jusqu'à ce que l'on
obtienne le nombre désiré.
Pourquoi cela fonctionne-t-il?
Lemme: Soit n=pq et (n)=(p-1)(q-1).
Alors pour tout g{1,2,...,n-1} on a g(n) = 1 (mod n)

Remarque: Ce lemme est une généralisation du petit


théorème de Fermat.

Donc D(E(M)) = D(Me mod n)


= Med mod n
= M1+c(n) mod n pour un certain c.
= M  ((M(n))c) mod n
= M  1c mod n
= M mod n
Exercice 1

Un professeur envoie ses notes au secrétariat de


l'École par mail. La clef publique du professeur est
(3,55), celle du secrétariat (3,33).
1. Déterminer la clé privée du professeur et du
secrétariat de l'Ecole.
2. Pour assurer la confidentialité de ses messages,
le professeur chiffre les notes avec la clef RSA du
secrétariat. Quel message chiffré correspond à la
note 12?

11:08 76
Solution
• 1. Pour le professeur: (55) = 40 et 27 x 3 = 81
= 1 mod 40.
Pour le secrétariat: (33) = 20 et 7 x 3 = 21 = 1
mod 20.
• 2. Le professeur envoit m = 123 mod 33. Or
122 = 12[33]; donc m = 12 mod 33

11:08 77
Exercice 2

Bob choisit comme nombre premier p = 5 et


q=11, comme exposant e=3.
- Donner sa clef publique.
- Donner sa clé secrète de déchiffrement d.
Alice veut envoyer le message 4.
- Écrire le message chiffré qu‘elle envoie à Bob.
- Déchiffrer le message qu’a reçu Bob et vérifier
que c’est bien celui qu’a envoyé Alice
11:08 78
Solution
La clé publique de Bob est: (n=5x11, 3)=(55,3)
Φ(n) =(5-1)(11-1)=40.
En appliquant l’algorithme d’Euclide étendu on trouve:
d=27
La clé privé est (55, 27)

43 mod 55 = 64 mod 55= 9 mod 55


Alice envoie le message chiffré 9.

Déchiffrement du message reçu.


927 mod 55 =4 mod 55
C’est bien le message en clair qu’Alice a chiffré
11:08 79
Les Chiffres Knapsack
• Exemple chiffre de Merkle-Hellmann 1978

• Système asymétrique (le premier !)

• Difficulté du problème du sac à dos


Problèmes du sac à dos

• Problème de décision :
Soient un ensemble de paquets de poids
donnés et un sac de poids P. Existe-t-il
un sous-ensemble de paquets de poids
total P ?
Problèmes du sac à dos

Problème de cryptanalyse :
• Comment déterminer les paquets qui ont été mis dans
le sac, sans avoir le droit de l’ouvrir et en ne
connaissant que les poids des paquets disponibles et le
poids total du sac ?
Chiffre Knapsack
• Le problème Knapsack :
– Difficile (NP-complet)
• Le problème knapsack avec une liste super-croissante
(LSC) :
– Simple
• L’idée de Merkle et Hellman
– Choisir un problème knapsack avec une LSC
– Le Transformer en un problème knapsack
– Le problème knapsack est la clef publique,
alors que le problème knapsack avec une LSC
est la clef privée.
Algorithme NP-complet

f
Clair Liste « quelconque » Chiffré

= {PAQUETS} = SAC
= (0,1,0,1,…)
 -1

Clair Liste super croissante Chiffré

Algorithme linéaire
Le problème du Knapsack

• Considérons A= (a1,a2,..,ai,…,an) une liste de n entiers


naturels.

• Etant donné un nombre s qui est la somme d’un sous


ensemble de A, trouver un vecteur binaire
X=(x1,x2,..,xi,…,xn) tel que s= i=1n xiai
Le problème du Knapsack avec une
LSC
• Considérons A= (a1,a2,..,ai,…,an) une liste super-
croissante d’entiers naturels i.e ai>j=1i-1aj (c.a.d.
chaque élément est supérieur à la somme des
éléments qui le précèdent).

• Etant donné un nombre s qui est la somme d’un sous


ensemble de A, trouver un vecteur binaire
X=(x1,x2,..,xi,…,xn) tel que s= i=1n xiai
Algorithme pour un problème
Knapsack avec une LSC
• Algorithme :
For i =n downto 1
If s  ai then {xi =1; s =s -ai }
else xi =0;
Return X=(x1,x2,..,xn)

• Exemple : A=(3,7,11,25,51) une LSC

Pour s=69  X=
X=(0,1,1,0,1)
Chiffre de Merkle-Hellman
• Choisir une liste super-croissante d’entiers naturels
A= (a1,a2,..,ai,…,an)
• Choisir un entier u > 2.an et un nombre p relativement
premier avec le nombre u.

• Pour chaque élément ai de A calculer bi=p.ai (mod u )


de telle sorte à deduire une nouvelle liste
B=(b1,b2,..,bi,…,bn) qui n’est plus super-croissante.

• Clef publique B et u;
• Clef privée A, p, p-1 (mod u).
• M = (mi) : Message clair binaire à n bits.
• B = (bi) : Liste quelconque à n entiers.
• f : M  C=  mi bi ( c’est le chiffrement)

• Déchiffrement :
–  : x  p.x (mod u )
– -1 : x  p-1.x (mod u )
– B= p.A= (A)  A= p-1.B= -1(B)

– C= M.B  C’= M.A : problème knapsack avec LSC


– Ensuite utiliser l’algo linéaire pour trouver M en partant de
C’=M.A
Exemple

• Liste super - croissante :


A=(3,7,11,25,51)
Clé privée :
(p,u)=(37,131)  (x) = 37x (mod 131)
 -1(x) =
85x (mod 131)
• Liste quelconque (Clé publique) :
B=
(111,128,14,8,53)= p.A
Chiffrement de M=(0,1,1,0,1) :

C=
128+14+53 = 195=64 mod 131
C’=
M=
Exemple 1 suite

f
01101 (111,128 14, 8 53) 64

 -1

01101 (3, 7, 11, 25, 51) 69

Déchiffrement de C’=69 :

M =(0,1,1,0,1) par algo knapsack avec LSC


Exercice 1

a) Déchiffrer les cryptogrammes suivants :


C= 149, et C = 161
Sachant que la clé de déchiffrement est p=16,
u=201 et A=(7,11,22,47,91).
b) Trouver la clé de chiffrement
correspondante et chiffrer avec le message
M=(1 1 1 1 1).
11:08 92
Exercice 2

L’application du chiffre de Merkle-Hellman sur


un message a donné comme cryptogramme
C=69.
La clé utilisée est formée par :
B= (62, 93, 81, 88, 102,37) ; u= 105 et p=31 .
Trouver le message M correspondant à C

11:08 93
Algorithme ElGamal
• Algorithme asymétrique basé sur les logarithmes
discrets.

• Crée par Tahar ElGamal en 1985.

• Il utilise l’ensemble (Z/pZ)* comme groupe multiplicatif


dans sa 1ere version.
Logarithme discret (Rappel)

• Considérons l’ensemble G formé par les entiers


naturels non nul modulo un nombre premier p
( cad G= (Z/pZ)* )

• Cet ensemble est muni de la loi de multiplication


pour former un groupe (G,.)
Logarithme discret (Rappel)

• On considère aussi un générateur g de G


(nombre primitif modulo p). Alors
chaque élément h de G peut être écrit
sous la forme h = gk pour un certain
entier k

• k est dit le logarithme discret de h en


base g et est désigné par logg (h).
Exemple
• g est primitif par rapport à p si tous les nombres entre
1 et p-1 peuvent être exprimés sous la forme gi mod p.

• Exemple: g=2 et p=11


210 = 1024 = 1 (mod 11)
21 = 2 = 2 (mod 11)
28 = 256 = 3 (mod 11)
22 = 4 = 4 (mod 11)
24 =16 = 5 (mod 11)
29 = 512 = 6 (mod 11)
27 = 128 = 7 (mod 11)
23 = 8 = 8 (mod 11)
26 = 64 = 9 (mod 11)
25 = 32 = 10 (mod 11)
• g=2 est générateur dans G= (Z/11Z)* ) et 4=log2(5)
Problème du log discret

• Soit h dans G groupe engendré par un élément g,

• Connaissant G,g,h, le problème est de trouver x dans


Z tel que :
h = gx

• Compte tenu des méthodes actuelles de résolution du


log discret, il est souhaitable d’utiliser un nombre
premier p de 1024 bits (ou plus) choisi au hasard.
Génération des clés

• On génère un nombre premier p de grande taille et un


générateur g du groupe multiplicatif G=( Z/pZ)* (Ces
quantités sont publiques).
• Alice crée une paire de clés (publique et privée)
comme suit :

• Elle génère un nombre aléatoire a, tel que: 1 ≤ a ≤ p-2


et calcule ga mod p.

• La clé publique d’Alice est (p, g, ga mod p=A),


et sa clé privée est a.
Chiffrement ElGamal
• Bob obtient (p, g, ga mod p=A), la clé
publique authentique d’Alice.
• Il souhaite envoyer un message,
représenté ici par un entier m de G
• Pour chiffrer ce message, Bob génère un
nombre aléatoire unique k, tel que: 1 ≤ k ≤
p-2.
• Bob calcule C1 = gk mod p
et C2 = m.Ak mod p
et envoie le ciphertext C= (C1,C2).
Déchiffrement ElGamal

• Alice utilise sa clé privée a pour calculer:

D= C1a mod p = gka mod p = Ak mod p

• Pour déchiffrer le message m:

Alice calcule C2/D mod p = m.Ak/Ak mod p


=m
Exemple
• Un premier p=13 , un générateur g=2, a=3, message m=11
et random k=5.
Clé secrète
Clé publique
Chiffrement
Déchiffrement
• Clé secrète : a = 3  A=23 mod 13= 8;
• Clé publique : (p, g, A)= (13, 2, 8)
• message m=11, random k=5
• Chiffrement :
C1 = 25 mod 13 =6
C2 = 11.85 mod 13=10
 Ciphertext (6,10)

• Déchiffrement m= 10/(63) mod 13 =11.


et on retrouve bien le message émis m.
Exemple 2
• Un premier p=41 et un générateur g=2, a=12, message
m=32 et random k=18.

• Clé secrète : a = 12  A=212 mod 41= 37;


• Clé publique : (p, g, A)= (41, 2, 37)
• message m=32, random k=18
• Chiffrement :
C1 = 218 mod 41 =31
C2 = 32.3718 mod 41=2
 Ciphertext (31,2)

• Déchiffrement m= 2/(3112) mod 41 =32.


et on retrouve bien le message émis m.
Exercice 1
On s’intéresse à l’algorithme cryptographique d’ElGamal.
1. Peut-on avoir pour un même message clair plusieurs
messages chiffrés ? justifier votre.
2. Afin d’utiliser l’algorithme ElGamal , Alice et Bob
s’entendent sur les valeurs de p; g. Soit g=3 montrer que g est
générateur de Z7 ?
3. Soit a = 4 la clé secrète d’Alice, donner la clé publique
d’Alice.
4. Supposons que Bob veut envoyer le message m=2 à Alice
avec un aléa k=5; quel est le message chiffré correspondant à
envoyer à Alice ?
5. Montrer comment Alice retrouve le message m à partir du
message chiffré reçu.

11:08 104
Exercice 2
a) En prenant p = 13 et g = 2, faites les calculs et vérifications suivantes :
• g est un élément générateur de Z/pZ
• Quelle est la clé publique de Bob si sa clé privée est a = 9 ?
• Comment Alice code t’elle le message M=10 si elle choisit une clé
temporaire k = 6 ?
• Comment Bob décode t’il le message ? Est-ce que ça a marché ?
b) Supposons qu’Alice utilise tout le temps la même clé k pour coder ses
messages. Un observateur malveillant Eve peut alors obtenir des
informations précieuses.
Si Alice code M1 et M2 avec k et Eve parvient à écouter les
communications, elle pourra connaître la valeur de M1/M2. Comment ?

11:08 105
11:08 106
Signature : idée générale

11:08 107
Les différents acteurs

11:08 108
Fonctionnement d’une signature

11:08 109
Mécanisme cryptographique

11:08 110
Signature RSA(1/3)
Génération des paramètres : identique à la génération
des clefs de RSA
• Alice choisit au hasard deux nombres premiers p et q.
– Alice calcule n = p.q
– Indicatrice d'Euler : Φ(n) =(p -1)(q-1)
• Alice choisit au hasard un entier e (premier) tel que
1 < e < Φ(n) et pgcd(e, Φ (n)) = 1
• Alice calcule alors l'entier d tel que e.d = 1 mod Φ(n).
Clef publique : (n, e)
Clef secrète : (n, d)
11:08 111
Signature RSA(2/3)
Génération d'une signature RSA
Alice souhaite signer un document M
– Signature de M : s(M) = Md mod n
– Le document signé est alors [M, s(M)].

11:09 112
Signature RSA(3/3)
Vérification d'une signature RSA
• Bob reçoit un document signé [M’ , s(M)] d'Alice.
Ce document est potentiellement altéré
• Il récupère la clé publique d'Alice (n,e)
• Il vérifie l'identité : s(M)e = M’ mod n
En effet : s(M)e= Me.d mod n = M mod n = M
et si le document est authentique : M= M’ .
• La sécurité est donc celle du cryptosystème RSA.

11:09 113
Signature RSA
Exemple :

Alice Bob
1. choisit p = 5 et q =7
2. n = p · q = 35
3. Φ(n)=(5−1)(7−1)= 24
4. choisit e = 5
5. d ≡ e−1 ≡ 5 mod 20
(n,e)=(35,5)
← −−−−−−−−−−− −
11:09 114
Signature RSA
Example (suite):
Alice Bob
calcule la signature du message

x = 26:

s = xd ≡ 265 ≡ 31 mod 35

(x,s)=
(26,31)
← −−−−−−−−−−− −
Vérification:
x’= se ≡ 315 ≡ 26 mod 35
x’≡ x mod 35 ⇒ signature valide

11:09 115
Exercice
Bob a une clé privée RSA pour signer des messages :
(d = 7, p = 11, q = 3).
1. Pour authentifier ses messages, il doit publié sa clé
de vérification. Choisissez une clé publique valide
pour Bob ?
2. Bob veut envoyer le message signé m = 4 à Alice.
Pourriez-vous aider Bob à calculer la signature pour
ce message ?
3. Alice reçoit la signature s = 24. Donnez la valeur
d'un message provenant de Bob pour lequel
la signature s est valide.
11:09 116
Signature El Gamal(1/3)
Générations des clef
1. Choix d’un nombre premier p.
2. Générateur g du groupe multiplicatif ZP∗.
3. Choix d’un entier a ∈{2,3,..., p−2}.
4. On calcul A = ga mod p .

• La clé publique kpub =(p,g,A)


• La clé privée key kpr =a.

11:09 117
Signature El Gamal(2/3)

Génération de la signature
Sigkpr (M, kE)=(r, s), where M is the message.
1. Choisir k< p-1 aléatoire et premier avec p -1

2. Calculer :
r ≡ gkE mod p,
s ≡ (M−a·r)k −1 mod p−1.
E

11:09 118
Signature El Gamal(3/3)
Vérification de la signature
La signature est vérifée comme verKpub(M, (r, s))
en utilisant la clé publique, la signature et le
message
1. Calculer la valeur
t ≡ Ar·rs mod p
2. Tester
≡ gM mod p ⇒ signature valide
t
!≡ gM mod p ⇒ signature non valide
11:09 119
Signature El Gamal
Exemple :
Alice Bob
1. choisit p = 29
2. choisit g = 2
3. choisit a = 12
4. A = ga ≡ 7 mod29
(p,g,A)=(29,2,7)
← −−−−−−−−−−− −

11:09 120
Signature El Gamal
Exemple :
Alice Bob
calcule la signature pour le
message
M = 26:
Choisit kE = 5
r = gkE ≡ 25 ≡ 3 mod 29
s =(M − a.r) kE−1 ≡(−10)·17 ≡
26 mod 28
(M,(r,s))=(26,(3,26))
← −−−−−−−−−−− −
11:09 121
Signature El Gamal
Exemple :
Alice Bob
Vérifier:
t = Ar·rs
≡ 73 · 326 ≡ 22 mod 29
aM ≡ 226 ≡ 22 mod 29
t ≡gm mod 29 =⇒ signature valide

11:09 122
Exercice
On considère les paramètres suivants pour la
signature ElGamal : (p = 23; g = 5; a = 3).
1. Justifiez la validité du choix de p et g.
2. Calculez la clé publique A.
3. Calculez la signature du message M = 7 en
utilisant la valeur aléatoire k = 9
4. Montrez que la vérification fonctionne pour la
signature obtenue.
11:09 123
Modes de chiffrement symétrique
Les modes sont des méthodes pour utiliser les
chiffrements par blocs. On parle de modes
opératoires.
Dans le cadre d’une implémentation pratique,
l’algorithme ’pur’ est combiné à une série
d’opérations simples en vue d’améliorer la
sécurité sans pour autant pénaliser l’efficacité
de l’algorithme. Cette combinaison est appelée
un mode cryptographique.

11:09 124
Modes opératoires: ECB
Mode ECB( electronic code book)
• Le message, M, est découpé en blocs , (mi)i≥0, et
chaque bloc est chiffré séparément par
ci = Ek(mi)

• On transmet c0 c1 c2 . . . cn.
11:09 125
Modes opératoires: ECB
• Déchiffrement:
mi=Dk(ci)

• La procédure ECB n’est jamais utilisée en pratique


11:09 126
Modes opératoires: ECB
Exercice
Soit le message clair m = 1011000101001010.
On considère le chiffrement par blocs (de
longueur4) définit par la permutation.
π: b1b2b3b4  b2b3b4b1
Chiffrer m avec le mode ECB.
Solution
Chiffrement de m avec le mode ECB:
0111001010000101
11:09 127
Modes opératoires: CBC
Mode CBC (Cipher Bloc Chaining)
1. On commence par choisir un bloc initial (IV= initial
value).
2. Chaque bloc clair (mi)i≥0 est d’abord modifie en faisant
un XOR de ce bloc avec le bloc chiffré précédent, ci−1;
3. On chiffre le résultat obtenu par XORisation.

c0 = Ek(m0 ⊕ IV)
c1 = Ek(m1 ⊕ c0)
.
.
ci = Ek(mi ⊕ ci−1)
11:09 128
Modes opératoires: CBC
Mode CBC (Cipher Bloc Chaining)
• On transmet le message IV c0 c1 . . . cn.

• Le bloc initial IV peut être choisi de l’une des manières


suivantes:
1. On génère IV aléatoirement et on le transmet en clair
avec le message;
2. On génère IV aléatoirement et on le transmet de manière
confidentielle;
3. On utilise un IV fixe qui fait partie des constantes du
cryptosystème;
4. On utilise un IV fixe qui fait partie de la clé secrète du
cryptosystème.

11:09 129
Modes opératoires: CBC

• Déchiffrement

m0 = IV⊕ Dk (c0)
mi = ci−1 ⊕ Dk (ci)
11:09 130
Modes opératoires: CBC
Exercice
Soit le message clair m = 1011000101001010. On
considère le chiffrement par blocs (de longueur4)
définit par la permutation.
π: b1b2b3b4  b2b3b4b1
Chiffrer m avec le mode CBC (iv=1010)
Solution
Chiffrement de m avec le mode CBC (iv=1010):
 M0+IV=1011+1010=0001  C0=Π(M0+IV)=0010,
 m1+c0=0001+0010=0011  c1= Π(m1+c0)=0110
 m2+c1=0100+0110=0010  c2= Π(m2+c1)=0100
 m3+c2=1010+0100=1110  c3= Π(m3+c2)=1101
 C=1010 0010 0110 0100 1101
11:09 131
Modes opératoires: CFB

Le mode CFB (cipher FeedBack)


• Le mode CFB a été introduit pour ne pas avoir à
calculer la fonction inverse, Dk, de la fonction de
chiffrement Ek.

• On commence par choisir un bloc initial IV,

• Chaque bloc clair mi est XORé avec le chiffré du


bloc de sortie précédent, ci−1, suivant le schéma:
11:09 132
Modes opératoires: CFB
Le mode CFB (Cipher FeedBack)
c0 = m0 ⊕ Ek(IV)
c1 = m1 ⊕ Ek(c0)
ci = mi ⊕ Ek(ci-1)

• On transmet le message IV c0 c1. . . cn.


11:09 133
Modes opératoires: CFB
• Déchiffrement
m0 = c0 ⊕ Ek(IV)
mi = ci ⊕ Ek(ci−1)

• L’intérêt est que le déchiffrement ne


nécessite pas de calculer Dk.
11:09 134
Modes opératoires: CFB
Exercice
Soit le message clair m = 1011000101001010. On
considère le chiffrement par blocs (de longueur4)
définit par la permutation.
π: b1b2b3b4  b2b3b4b1
Chiffrer m avec le mode CFB (iv=1010)
Solution
Chiffrement de m avec le mode CFB (IV=1010).
 Π(IV)=0101, c0= Π(IV)+m0=0101+1011=1110;
 Π(c0)=1101, c1= Π(c0)+m1=1101+0001=1100;
 Π(c1)=1001, c2= Π(c1)+m2=1001+0100=1101;
 Π(c2)=1011, c3= Π(c2)+m3=1011+1010=0001.
 C=1010 1110 1100 1101 0001
11:09 135
Modes opératoires: OFB
Le mode OFB (output FeedBack)
• Le mode OFB est une variante de CFB qui permet
d’avoir un chiffrement et un déchiffrement
totalement symétrique:
z0 = Ek(IV);
zi = Ek(zi−1);
ci = mi ⊕ zi

11:09 136
Modes opératoires: OFB
Déchiffrement:
• Ce mode est utilise par exemple pour les
chiffrages satellites et se déchiffre par:
z0 = Ek(IV);
zi = Ek(zi−1);
mi = ci ⊕ zi

• Sa sureté est équivalente à celle du mode CFB.


11:09 137
Modes opératoires: OFB
Exercice
Soit le message clair m = 1011000101001010. On
considère le chiffrement par blocs (de longueur4) définit
par la permutation.
π: b1b2b3b4  b2b3b4b1
Chiffrer m avec le mode OFB (iv=1010)
Solution
Chiffrement de m avec le mode OFB (IV=1010).
 z0=Π(IV)=0101; z1=Π(z0)=1010, z2=Π(z1)=0101;
z3= Π(z2)=1010;
 c0=m0+z0=0101+1011=1110; c1=z1+m1=1010+0001=1011;
 c2=z2+m2=0101+0100=0001; c3=z3+m3=1010+1010=0000.
 C=1010 1110 1011 0001 0000

11:09 138

Vous aimerez peut-être aussi