Vous êtes sur la page 1sur 111

Algorithmes cryptographiques : Algorithmes à

clef (Procédés symétrique)


38

4. Le chiffre du masque jetable

§ Cette méthode de chiffrement symétrique permet de coder de


manière sure des messages pourvu que chaque clef ne soit utilisée
qu'une seule fois

§ Cette méthode est aussi appelée « masque jetable » ou « one-time-


pad »

§ Le masque jetable n'est rien d'autre qu'une très longue suite non
répétitive et aléatoire de lettres

H. Laanaya
Algorithmes cryptographiques : Algorithmes à
clef (Procédés symétrique)
39

4. Le chiffre du masque jetable (suite)

§ L'algorithme de chiffrement est simple : on ajoute le rang de la lettre à


chiffrer au rang de lettre correspondante au masque, le résultat
modulo 26 donne le rang de la lettre du texte chiffré. Puis on détruit
les pages correspondantes du bloc

§ Le destinataire dispose d'un bloc identique et utilise le masque de la


même manière pour déchiffrer les lettres du message chiffré une à
une. Il détruit ensuite les mêmes pages du bloc

§ A chaque nouveau message on utilise de nouvelles pages et donc une


nouvelle clef

H. Laanaya
Algorithmes cryptographiques : Algorithmes à
clef (Procédés symétrique)
40

4. Le chiffre du masque jetable (exemple)

§ Si le message est :
MASQUEJETABLE

et que le morceau de masque utilisé est :


TBFRGFARFMIKL

alors le texte chiffré est :


GCYIBKKWZNKWQ

§ Un texte chiffré donné peut correspondre à n'importe quel texte en


clair de même longueur

H. Laanaya
Algorithmes cryptographiques : Algorithmes à
clef (Procédés symétrique)
41

4. Le chiffre du masque jetable (exemple-suite)

§ Le morceau de masque aurait tout aussi bien pu être :


RXDCXFHVQBYRX

qui donnerait le texte en clair


OEUFDECAILLES

§ Ou encore :
RTFDAPUVHMGNX

qui donnerait le texte en clair :


OISEAUPARADIS

§ Comme tout texte en clair est équiprobable, il n'y a aucun moyen


pour le cryptanalyste de déterminer quel est le bon texte en clair.
H. Laanaya
Algorithmes cryptographiques : Exercice
42

— Donner le message chiffré du message M suivant :

L HOMME EST LA MESURE DE TOUTE CHOSE

1. En utilisant le chiffre de Polybe,

2. En utilisant le chiffre de César,

3. En utilisant le chiffre de Vigenère avec le mot de passe SECRET.

H. Laanaya
DES : Data Encryption Standard
43

Au début des années 70, l'Agence Nationale de Sécurité américaine


(N.S.A) a lancé des appels d'offres avec les conditions :

• un haut niveau de sécurité lié à une clé de petite taille servant au


chiffrement et au déchiffrement
• facile à implémenter logiciellement et matériellement, et très
rapide
• adaptable et économique
• efficace et exportable

• La société I.B.M. a développé alors un algorithme nommé Lucifer,


relativement complexe et sophistiqué
• Après quelques années de discussions et de modifications, cet
algorithme, devenu alors D.E.S (standardisé en 1977)

H. Laanaya
DES : Data Encryption Standard
44

Principe du DES
§ Le D.E.S. est un système de chiffrement par blocs

§ L'algorithme est assez simple puisqu'il ne combine en fait que des


permutations et des substitutions. On parle en cryptologie de
techniques de confusion et de diffusion

§ C'est un algorithme de cryptage à clef secrète

§ La clef a une longueur de 64 bits, c'est-à-dire 8 caractères, mais


seulement 56 bits sont utilisés puisque pour chaque octet on prend
un bit pour le contrôle de parité

H. Laanaya
DES : Data Encryption Standard
45

L'algorithme du DES
Bloc de 64 bits clair

Permutation initiale

G0 D0

Permutation expansive

XOR Clef ki

Substitution par table-S

Permutation P

XOR

G1 D1

Permutation finale

H. Laanaya
DES : Data Encryption Standard
46

L'algorithme du DES

• Phase 1 : Préparation - Diversification de la clé

§ Le texte est découpé en blocs de 64 bits

§ On diversifie aussi la clé K, c'est-à-dire qu'on fabrique à partir de


K ,16 sous-clés K1,...,K16 à 48 bits; Les Ki sont composés de 48
bits de K, pris dans un certain ordre.
à Comment?

H. Laanaya
DES : Data Encryption Standard
47

L'algorithme du DES

• Formation des clés :


§ Dans un premier temps les bits de parité de la clé sont éliminés
afin d'obtenir une clé d'une longueur utile de 56 bits.
§ La première étape consiste en une permutation notée CP-1 dont la
matrice est présentée ci-dessous :

57   49   41   33   25   17   9   1   58   50   42   34   26   18  

10   2   59   51   43   35   27   19   11   3   60   52   44   36  

63   55   47   39   31   23   15   7   62   54   46   38   30   22  

14   6   61   53   45   37   29   21   13   5   28   20   12   4  

H. Laanaya
DES : Data Encryption Standard
48

L'algorithme du DES

• Formation des clés :


§ Cette matrice est ensuite écrite sous la forme de deux matrice Gi
et Di (pour gauche et droite) composées chacune de 28 bits :

57   49   41   33   25   17   9   1   58   50   42   34   26   18  

10   2   59   51   43   35   27   19   11   3   60   52   44   36  

63   55   47   39   31   23   15   7   62   54   46   38   30   22  

14   6   61   53   45   37   29   21   13   5   28   20   12   4  

§ Ensuite, on décale les bits de chaque partie (gauche et droite)


vers la gauche. Les décalages effectués sont : 1, 2, 4, 6, 8, 10, 12,
14, 15, 17, 19, 21, 23, 25, 27, 28.

H. Laanaya
DES : Data Encryption Standard
49

L'algorithme du DES

• Formation des clés :


§ Les 2 blocs de 28 bits sont ensuite regroupés en un bloc de 56
bits. Celui-ci passe par une permutation compressive , notée
CP-2, fournissant en sortie un bloc de 48 bits, représentant la clé
Ki.

14   17   11   24   1   5   3   28   15   6   21   10  

23   19   12   4   26   8   16   7   27   20   13   2  

41   52   31   37   47   55   30   40   51   45   33   48  

44   49   39   56   34   53   46   42   50   36   29   32  

H. Laanaya
DES : Data Encryption Standard
50

L'algorithme du DES

• Phase 2
1. Permutation initiale
§ Dans un premier temps, chaque bit d'un bloc est soumis à la
permutation initiale, pouvant être représentée par la matrice
de permutation initiale (notée PI) suivante :

58   50   42   34   26   18   10   2  
60   52   44   36   28   20   12   4  
62   54   46   38   30   22   14   6  
64   56   48   40   32   24   16   8  
57   49   41   33   25   17   9   1  
59   51   43   35   27   19   11   3  
61   53   45   37   29   21   13   5  
63   55   47   39   31   23   15   7  

H. Laanaya
DES : Data Encryption Standard
51

L'algorithme du DES

• Phase 2
2. Scindement en blocs de 32 bits
§ Une fois la permutation initiale réalisée, le bloc de 64 bits est
scindé en deux blocs de 32 bits, notés respectivement G et D
On note G0 et D0 l'état initial de ces deux blocs :

58   50   42   34   26   18   10   2  
60   52   44   36   28   20   12   4  
62   54   46   38   30   22   14   6  
64   56   48   40   32   24   16   8  
57   49   41   33   25   17   9   1  
59   51   43   35   27   19   11   3  
61   53   45   37   29   21   13   5  
63   55   47   39   31   23   15   7  

H. Laanaya
DES : Data Encryption Standard
52

L'algorithme du DES

• Phase 2
3. Fonction d'expansion
§ Les 32 bits du bloc D0 sont étendus à 48 bits grâce à une
table (matrice) appelé table d'expansion (notée E), dans
laquelle les 48 bits sont mélangés et 16 d'entre eux sont
dupliqués :
32   1   2   3   4   5  
4   5   6   7   8   9  
8   9   10   11   12   13  
12   13   14   15   16   17  
16   17   18   19   20   21  
20   21   22   23   24   25  
24   25   26   27   28   29  
28   29   30   31   32   1  

H. Laanaya
DES : Data Encryption Standard
53

L'algorithme du DES

• Phase 2
4. OU exclusif avec la clé

§ La matrice résultante de 48 bits est appelée D'0 ou bien


E[D0]. L'algorithme DES procède ensuite à un OU exclusif
entre la première clé K1 et E[D0]. Le résultat de ce OU
exclusif est une matrice de 48 bits.

H. Laanaya
DES : Data Encryption Standard
54

L'algorithme du DES

§ Phase 2
5. Fonction de substitution
• D0 est ensuite scindé en 8 blocs de 6 bits, noté D0i. Chacun
de ces blocs passe par des fonctions de sélection (appelées
parfois boîtes de substitution ou fonctions de compression),
notées généralement Si.

H. Laanaya
DES : Data Encryption Standard
55

L'algorithme du DES
• Phase 2
5. Fonction de substitution
§ Chacun des 8 blocs de 6
bits est passé dans la
fonction de sélection
correspondante, ce qui
donne en sortie 8 valeurs
de 4 bits chacune

H. Laanaya
DES : Data Encryption Standard
56

L'algorithme du DES

• Phase 2
6. Permutation
§ Le bloc de 32 bits obtenu est enfin soumis à une permutation P.

7. OU Exclusif
§ L'ensemble de ces résultats en sortie de P est soumis à un OU
Exclusif avec le G0 de départ pour donner D1, tandis que le D0
initial donne G1.

H. Laanaya
DES : Data Encryption Standard
57

L'algorithme du DES

§ Phase 3 : Itération
L'ensemble des étapes précédentes (rondes) est réitéré 16 fois. A
partir de Gi-1Di-1 (pour i de 1 à 16), on calcule Gi et Di en posant :

• Gi = Di-1.
• Di = Gi-1 XOR f(Di-1,Ki)

§ Phase 4 : Permutation finale


On applique à G16D16 l'inverse de la permutation initiale. Z=P-1(G16D16)
est le bloc de 64 bits chiffré à partir de x.

H. Laanaya
DES : Data Encryption Standard
58 Bloc de 64 bits clair

L'algorithme du DES Permutation initiale

G0 D0

Clef k1
F(D0,k1)

G1 D1

Clef k16
F(D15,k16)

XOR

G16 D16

Permutation finale

H. Laanaya
DES : Data Encryption Standard
59

DES attaqué

§ Même si une clé de 56 bits donne un nombre énorme de possibilités,


l'extraordinaire progression de la puissance des ordinateurs a signé
l'arrêt de mort du DES :

§ Le 17 juin 1997, le DES est cassé en 3 semaines par une


fédération de petites machines sur Internet.

§ La solution a été dans un premier temps l'adoption du triple DES,


trois applications de DES à la suite avec 2 clés différentes (d'où
une clé de 112 bits)
Clef k1 Clef  k2 Clef k1
Message   Message   Message   Message  chiffré    
en  clair chiffré1 chiffré2 final

H. Laanaya
DES : Data Encryption Standard
60

DES attaqué

• Si le TDES est largement suffisant à l'heure actuelle, il est


malheureusement trois fois plus lent que le DES.

• En janvier 1997, le NIST (National Institute of Standards and


Technologies) lance un nouvel appel pour créer un successeur au
DES.

• Rijmen and Daemen ont conçu un nouveau algorithme qui a pris le


nom d'AES (Advanced Encryption Standard).

H. Laanaya
AES : Advenced Encryption Standard
61

Caractéristiques et points forts de l'AES

Le choix de cet algorithme répond à de nombreux critères plus


généraux dont nous pouvons citer les suivants :

• Une grande sécurité

• Une large portabilité : il est destiné à servir aussi bien dans les
cartes à puces, aux processeurs 8 bits peu puissants, que dans
des processeurs spécialisés pour chiffrer des milliers de
télécommunications à la volée

• Une lecture facile de l'algorithme, puisqu'il est destiné à être


public

• La rapidité : Le chiffrement devrait être rapide sans surcharger


l'application qui y fait appel
H. Laanaya
AES : Advenced Encryption Standard
62

Caractéristiques et points forts de l'AES

• Besoins en ressources et mémoire très faibles

• Une flexibilité d'implémentation: cela inclut une grande variété de


plateformes et d'applications ainsi que des tailles de clés et de
blocs supplémentaires

• Une implémentation hardware et software : il est possible


d'implémenter l'AES aussi bien sous forme logicielle que
matérielle

• simplicité : le design de l'AES est relativement simple

H. Laanaya
AES : Advenced Encryption Standard
63

Spécifications de l'AES

• L'AES est un standard, donc libre d'utilisation, sans restriction


d'usage ni brevet.

• C'est un algorithme de type symétrique (comme le DES).

• C'est un algorithme de chiffrement par blocs (comme le DES).

• Il supporte différentes combinaisons [longueur de clé]-[longueur


de bloc] : 128-128, 192-128 et 256-128 bits

H. Laanaya
AES : Advenced Encryption Standard
64

Spécifications de l'AES

• En termes décimaux, les différentes tailles possibles de la clef du


AES signifient concrètement que:

§ 3.4 x 1038 clés de 128-bit possibles.


§ 6.2 x 1057 clés de 192-bit possibles.
§ 1.1x 1077 clés de 256-bit possibles.

• Tandis que, les clés DES ont une longueur de 56 bits ce qui signifie
qu'il y a approximativement 7.2 x 1016 clés différentes possibles.

• Cela nous donne un ordre de 1021 fois plus de clés 128 bits pour
l'AES que de clés 56 bits pour le DES.

H. Laanaya
AES : Advenced Encryption Standard
65

Fonctionnement de l'AES

• Le message binaire est d'abord tronçonné en blocs de 128 bits.


Chaque bloc est disposé dans un tableau d'octets de quatre ligne et de
quatre colonnes (un octet représente 8 bits). le bloc est chiffré par une
suite de quatre transformations répétés dix fois

• D'abord, avant toute transformation, on effectue une addition de clef


initiale secrète

• Les transformations sont toujours faites dans l'ordre suivant :

1. Transformation non linéaire d'octets (SubBytes) :


à chacun des seize octets du bloc est appliquée une même
transformation non linéaire fixée nommée S. La transformation est
appliquée indépendamment à chaque octet.
H. Laanaya
AES : Advenced Encryption Standard
66

Fonctionnement de l'AES

2. Décalage de lignes (ShiftRows) :


Les trois dernières lignes sont décalées cycliquement vers la gauche : la
deuxième ligne est décalée d'une colonne, la 3ème ligne de deux
colonnes, et la 4ème ligne de trois colonnes.

3. Brouillage des colonnes (MixColumns) :


Chaque colonne du bloc est transformée linéairement par la
multiplication d'une matrice dont les coefficients sont soit 1,soit 2,soit

4. Addition de la clé de tour (AddRoundKey) :


Une clé, différente à chaque tour et de même longueur que le bloc, est
ajoutée bit à bit au bloc par un OU EXCLUSIF (XOR).

H. Laanaya
AES : Advenced Encryption Standard
67

H. Laanaya
Algorithmes à clef publique
68

Introduction

• Au lieu d'une seule clef (algorithmes symétriques), il y a deux clefs


différentes : une publique et une privée.

• De plus, il est difficile de calculer la clef privée à partir de la clef


publique.

Clef k1 Clef k2
Texte en clair
Texte en clair Texte chifré
original
Chiffrement Déchiffrement

H. Laanaya
Algorithmes à clef publique
69

Introduction (suite)

• Voici comment A peut envoyer un message à B en utilisant la


cryptographie à clef publique :

1. 1° A et B choisissent un cryptosystème à clef publique

2. 2° B envoie à A sa clef publique

3. 3° A chiffre son message en utilisant la clef publique de B et lui


envoie le résultat

4. 4° B déchiffre le message de A en utilisant sa clef privée

H. Laanaya
Algorithmes à clef publique
70

Cryptosystèmes hybrides

• Les algorithmes à clef publique ne se substituent pas aux


algorithmes à clef secrète. On les utilise pour chiffrer des clefs et
non des messages

• Dans la plupart des applications pratiques, la cryptographie à clef


publique est utilisée pour protéger et distribuer les clefs de
session, et ces clefs de session sont utilisée dans des algorithmes
à clef secrète pour protéger les messages transmis. Cela est
appelé un cryptosystème hybride, le protocole devient :

H. Laanaya
Algorithmes à clef publique
71

Cryptosystèmes hybrides (suite)

1. B envoie à A sa clef publique

2. A engendre une clef de session aléatoire, k, la chiffre avec la clef


publique de B et envoie le résultat à B :
fB(k)

3. B utilise sa clef privée pou déchiffrer le message d'Alice et ainsi


retrouver la clef de session :
f-1B (fB (k)) = k

4. A et B utilisent alors la même clef de session pour chiffrer leur


conversation

H. Laanaya
Algorithmes à clef publique
72

Signatures numériques
• Les signatures sur des documents ont été longtemps utilisées pour
prouver l'identité de leur auteur ou du moins l'accord du signataire
avec le contenu du document
• La signature :
§ est authentique : convaincre le destinataire que le signataire a
délibérément signé le document.
§ est infalsifiable : la signature est la preuve que le signataire a
signé le document.
§ est inutilisable : la signature fait partie du document, on ne peut
pas la faire déplacer sur un autre document.
§ est inaltérable : une fois le document signé, il ne peut plus être
modifié
§ ne peut pas être reniée : Le signataire ne peut pas prétendre plus
tard ne pas avoir signé le document.

H. Laanaya
Algorithmes à clef publique
73

Signature numériques avec chiffrement


• En combinant les signatures numériques avec la cryptographie à clef
publique, nous pouvons concevoir un protocole qui combine la
sécurité du chiffrement avec l'authentification des signatures
numériques

1° A signe le message avec sa clef privée :


f-1A (M)

2° A chiffre le message signé avec la clef publique de B et lui envoie


le résultat : fB (f-1A (M))

3° B utilise sa clef privée pour déchiffrer le message d'Alice :


f-1B (fB(f-1A (M))) = f-1A(M)

4° B vérifie avec la clef publique de A at obtient le message initial :


fA (f-1A (M)) = M
H. Laanaya
Algorithmes à clef publique
74

Renvoyer un message comme accusé de réception


• On reprend le protocole précédent avec en plus la possibilité
d'envoyer des messages de confirmation.

1° A signe le message M avec sa clef privée, le chiffre avec la clef


publique de B et lui envoie le résultat : fB (f-1A (M))

2° B déchiffre le message avec sa clef privée et vérifie la signature


avec la clef publique de A : fA (f-1B (fB(f-1A (M)))) = M

3° B signe le message avec sa clef privée, le chiffre avec la clef


publique de A et envoie le résultat à A : fA (f-1B (M))

4° A déchiffre le message avec sa clef privée et vérifie la signature


avec la clef publique de B. Si le message obtenu est le même que
celui qu'elle a envoyé à B, elle sait que celui-ci a reçu le message
correctement
H. Laanaya
Algorithmes à clef publique
75

Renvoyer un message comme accusé de réception (suite)


• Pour ce protocole une attaque est possible :

§ Supposons que A, B et C sont trois personnes qui utilise le même


cryptosystème à clef publique
§ La personne A envoie un message à B avec le protocole
précédent : fB(f-1A(M)) = M1
§ Supposons que la personne C arrive à récupérer ce message
avant qu'il arrive à la personne B
§ C utilise le protocole précédent pour envoyer ce message à B
prétendant en être l'auteur : fB(f-1C(M1)) = M2.
§ B reçoit le message M2 de C et pense que c'est un message
légitime de C, il le déchiffre avec sa clef privée : f-1B et essaie
ensuite de vérifier la signature de C en le déchiffrant avec la clef
publique de de C : fC

H. Laanaya
Algorithmes à clef publique
76

Renvoyer un message comme accusé de réception (suite)

• Le message obtenu est :


fC (f-1B(M2)) = fC (f-1B(fB(f-1C(M1)))) = M1= fC(f-1A(M))

• Même ainsi B continue à exécuter le protocole et envoie un accusé de


réception à C :
fC (f-1B(M1)) = fC (f-1B(fB(f-1A(M)))) = fC(f-1A(M))

• Maintenant, il suffit à C de déchiffrer le message avec sa clef privée :


f-1C et la clef publique de A : fA pour avoir :
fA (f-1C (fC(f-1A(M)))) = M

• Voilà! La personne C a le message M qui a été destiné à B

H. Laanaya
Algorithmes à clef publique
77

Algorithmes à empilement : Présentation


• Le premier algorithme pour le chiffrement à clef publique a été
développé par R. Merkle et M. Hellman : L'algorithme à empilement

• Le problème d'empilement : étant donné un tas d'objet, chacun ayant


un poids différents, est-il possible de faire un nouveau tas avec
certains de ces objets de telle manière que le nouveau tas pèse un
poids donné ?

• Plus formellement : étant donné un ensemble de valeurs, M1, M2,…,


Mn et une somme S, calculer les valeurs des bi de telle manière que :
S = b1 M1 + b2M2 + … + bn Mn
• Les valeurs des bi étant soit 0 soit 1. Un 1 indique que l'élément est
dans le nouveau tas ; un 0 indique qu'il n'y est pas dans le nouveau
tas

H. Laanaya
Algorithmes à clef publique
78

Algorithmes à empilement : Présentation (suite)

Exemple : Soient six objets de poids : 1, 5, 6, 11, 14 et 20. Si S = 22, il


est possible de créer un tas qui pèse 22 :

S = b1 M1 + b2 M2 + b3 M3 + b4 M4 + b5M5 + b6 M6.

Avec b1 =b5= b6 =0 et b2 = b3 = b4 =1. C'est-à-dire 22 = 5 + 6 + 11.

Il est impossible de créer un tas qui pèse 24

En général, le temps nécessaire pour résoudre ce problème croît


d'une façon exponentiellement avec le nombre d'objets dans le
nouveau tas

H. Laanaya
Algorithmes à clef publique
79

Algorithmes à empilement : Présentation (suite)

• L'idée de base de l'algorithme à empilement Merkle-Hellman est de


coder le message comme une solution d'une suite de problèmes
d'empilement.

• Un bloc de texte en clair de longueur égale au nombre d'objets dans


le tas sélectionnerait des objets ( les bits du texte en clair
correspondraient aux valeurs des bi) et le texte chiffré serait la
somme résultante.
• Le tableau suivant illustre un texte en clair chiffré avec l'exemple
d'empilement donné précédemment.
Texte en clair : 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0
Tas : 1 5 6 11 14 20 1 5 6 11 14 20 1 5 6 11 14 20 1 5 6 11 14 20
Texte chiffré : 1 + 5 + 6 + 20 = 5 + 11 + 14 = 0= 5+6=
32 30 0 11

H. Laanaya
Algorithmes à clef publique
80

Algorithmes à empilement : Présentation (suite)


• Il y a en fait deux problèmes d'empilement, l'un soluble en temps
linéaire, l'autre soluble en temps exponentiel seulement

• L'empilement facile peut-être transformé pour créer un empilement


difficile

• La clef publique est l'empilement difficile et la clef privée est


l'empilement facileà Les personnes qui ne connaissent pas la clef
privée sont obligées d'essayer de résoudre le problème d'empilement
difficile

• C'est vrai que la complexité du problème d'empilement est


exponentiel, mais si la liste des poids est une suite super-croissante,
la complexité est seulement linéaire, c'est-à-dire facile à résoudre

H. Laanaya
Algorithmes à clef publique
81

Algorithmes à empilement : Empilement super-croissant

• Qu'est-ce qu'un problème d'empilement facile ? Si la liste des poids


est une suite super-croissante, alors le problème d'empilement
correspondant est facile à résoudre.

• Une suite est dite super-croissante si chaque terme de la suite est


supérieur à la somme de tous les termes qui précédent.

• Par exemple, la suite {2, 3, 6, 13, 27, 52} est une suite super-
croissante (3>2, 6>2+3, 13>2+3+6, 27>2+3+6+13 et 52>2+3+6+13+27)
tandis que la suite {1, 3, 4, 9, 15, 25} n'est pas une suite super-
croissante (puisque par exemple 15<1+3+4+9=17).

H. Laanaya
Algorithmes à clef publique
82

Algorithmes à empilement : Empilement super-croissant (suite)


• La solution d'un empilement super-croissant est facile à trouver :

1 Prenez le poids total est comparez-le avec le plus grand nombre de


la suite
§ Si le poids total est inférieur à ce nombre, alors il n'est pas
dans le tas
§ Si le poids total est supérieur ou égal au nombre, alors il est
dans le tas. Réduisez le poids du tas à créer de ce nombre et
passez au plus grand nombre suivant de la suite

2 Répétez cela jusqu'à ce que ce soit terminé


§ Si le poids total a été ramené à 0, alors il y a une solution
§ Si le poids total n'a pas été annulé, il n'y a alors pas de solution

H. Laanaya
Algorithmes à clef publique
83

Algorithmes à empilement : Empilement super-croissant (suite)


• Par exemple, on considère un tas de poids total 70 à créer et une
suite de poids {2, 3, 6, 13, 27, 52}
• Le poids le plus élevé est 52, ce qui est inférieur à 70, donc 52 est
dans le nouveau tas. Retirer 52 à 70 il reste 18
• Le poids suivant est 27 qui est >18, donc 27 n'est pas dans le
nouveau tas. Le poids suivant est 13 qui est ≤ 18, donc 13 est dans le
nouveau tas. Retirer 13 de 18 il reste 5
• Le poids suivant est 6, qui est > 5, donc 6 n'est pas dans le nouveau
tas. Le poids suivant est 3 qui est ≤ 5, donc 3 est dans le nouveau
tas. Retirer 3 de 5 il reste 2
• Le poids suivant est justement 2 donc il est dans le nouveau tas et le
reste est 0, ce qui indique qu'une solution a été trouvée. Si cela avait
été un bloc chiffré par empilement Merkle-Hellmann alors le texte en
clair correspondant au texte chiffré de valeur 70 aurait été 110101

H. Laanaya
Algorithmes à clef publique
84

Algorithmes à empilement : Empilement super-croissant (suite)


• Avec les suites qui ne sont pas super-croissant il n'existe pas
d'algorithme rapide. Les meilleurs algorithmes qui existent, sont
exponentiels en fonction du nombre de poids possibles dans le tas

• L'algorithme Merkle-Hellmann est basé sur cette propriété


§ La clef privée est une suite de poids super-croissant pour un
problème d'empilement
§ La clef publique est une suite de poids pour un problème
d'empilement normal avec la même solution

• Merkle et Hellmann ont développé une technique pour convertir un


problème d'empilement super-croissant en un problème d'empilement
normal. Ils ont fait cela en utilisant l'arithmétique modulaire

H. Laanaya
Algorithmes à clef publique
85

Algorithmes à empilement : Création de la clef publique à partir


de la clef privée

• Pour passer d'un empilement super-croissant (clef privée) à un


empilement normale (clef publique) : par exemple on prend la suite
{2, 3, 6, 13, 27, 52} qui est super-croissante, et on multiplie toutes les
valeurs par un nombre n modulo m.

§ Le modulo (i.e. m) doit être plus grand que la somme de tous les
nombres de la suite, par exemple 105.
§ Le multiplicateur (i.e. n) ne doit pas avoir de facteur en commun
avec aucun nombre de la suite

H. Laanaya
Algorithmes à clef publique
86

Algorithmes à empilement : Création de la clef publique à partir


de la clef privée (suite)
• Par exemple 31. La suite d'empilement normale serait :
(2 × 31) mod 105 = 62
(3 × 31) mod 105 = 93
(6 × 31) mod 105 = 81
(13 × 31) mod 105 = 88
(27 × 31) mod 105 = 102
(52 × 31) mod 105 = 37

• L'empilement difficile est alors { 62, 93, 81, 88, 102, 37}
• La suite pour empilement super-croissant est la clef privée. La suite
pour empilement normale (difficile) est la clef publique

H. Laanaya
Algorithmes à clef publique
87

Algorithmes à empilement : Chiffrement


• Pour chiffrer un message binaire, on coupe le message en
morceaux de longueur égale au nombre d'objets dans la suite pour
empilement. Ensuite, en prenant la convention qu'un 1 indique que
l'objet figure dans le tas et qu'un 0 indique que l'objet est absent, on
calcule le poids total des tas.
• Par exemple, si le message est 011000110101101110, le
chiffrement en utilisant la suite

message = 011000 110101 101110

011000 donne 93 + 81 = 174


110101 donne 62 + 93 + 88 + 37 = 280
101110 donne 62 + 81 + 88 + 102 = 333

• Le texte chiffré sera alors : 174, 280, 333

H. Laanaya
Algorithmes à clef publique
88

Algorithmes à empilement : Déchiffrement

• Celui qui reçoit ce message connaît la suite super-croissante


d'origine, ainsi que les valeurs n et m utilisées pour transformer la
suite super-croissante en une suite normale.

• Pour déchiffrer le message, on doit d'abord calculer l'inverse


modulaire de n modulo m, c'est-à-dire n-1 tel que n × n-1 ≡ 1 mod m,
et ensuite multiplier chaque valeur du texte chiffré par n-1 mod m
pour retrouver les valeurs du texte en clair.

H. Laanaya
Algorithmes à clef publique
89

Algorithmes à empilement : Déchiffrement (suite)

• Pour notre exemple, la suite super-croissante est {2, 3, 6, 13, 27,


52}, m=105 et n=31. Le message chiffré est 174, 280, 333. Dans ce
cas, n-1=61 (31×61= 1891 ≡ 1 mod 105) et les valeurs chiffrées
doivent donc être multipliées par 61 mod 105 :

174 × 61 mod 105 = 9 = 3 + 6, ce qui correspond à 011000


280 × 61 mod 105 = 70 = 2 + 3 + 13 + 52, ce qui correspond à
110101
333 × 61 mod 105 = 48 = 2 + 6 + 13 + 27, ce qui correspond à
101110

• Le texte en clair correspondant est 011000 110101 101110

H. Laanaya
Algorithmes à clef publique
90

Algorithmes à empilement : Exercice

• Soit la suite {3, 5, 10, 21, 44, 91, 185, 400}, m= 800 et n=19.

1. Vérifier que la suite est super-croissante et que le choix de m et n


respecte les contraintes de l'algorithme à empilement

2. Calculer l'empilement difficile

3. Chiffrer le message binaire suivant 01001001 11001011 01011010


00010111

4. Déchiffrer le message 846, 503, 812, 408

H. Laanaya
Algorithmes à clef publique
91

Algorithme RSA
• Un algorithme à clef publique apparut peu après l'algorithme à
empilement de Merkle et Hellman.
• Il fonctionne pour le chiffrement aussi bien que pour les signatures
numériques.
• C'est un algorithme facile à comprendre et à réaliser. C'est le plus
populaire. Il a été inventé par les mathématiciens Ronald Rivest, Adi
Shamir et Léonard Adlman.
• Il a résisté depuis à des années de cryptanalyse. Bien que la
cryptanalyse n'ait jamais prouvé la sécurité ou la non-sécurité de
RSA, cela inspire un certain niveau de confiance dans l'algorithme.
• La sécurité de RSA dépend de la difficulté de factoriser des grands
nombres. Les clefs publique et privée sont des fonctions d'une paire
de grands nombres premiers (100 à 200 chiffres). Retrouver le texte
en clair à partir d'une des clefs et du texte chiffré est supposé
équivalent à la factorisation du produit des deux nombres premiers.
H. Laanaya
Algorithmes à clef publique
92

Algorithme RSA : La génération des clefs


• Pour commencer, il faut choisir deux nombres premiers p et q très
grands (de l'ordre de 100 à 200 chiffres), calculez le produit :
n = pq

• On choisit ensuite une clef de chiffrement e telle que e et (p-1)(q-1)


soient premiers entre eux. Les nombres n et e forment la clef
publique du cryptosystème.

• Finalement, on utilise l'algorithme d'Euclide étendu pour calculer la


clef de déchiffrement d telle que :
ed ≡ 1 mod(p-1)(q-1)

• En d'autres termes d est l'inverse modulaire de e modulo (p-1)(q-1) :


d = e-1 mod(p-1)(q-1)

H. Laanaya
Algorithmes à clef publique
93

Algorithme RSA : La génération des clefs (suite)


• Le nombre d est la clef privée. Les deux nombres premiers p et q
ne sont plus nécessaires. Ils peuvent être écartés mais jamais
révélés.

• Grâce aux algorithmes probabilistes, on sait engendrer des


nombres premiers de plusieurs milliers de chiffres en peu de
temps ; le calcul de p et q est donc rapide.

• Trouver e et d est aussi une opération rapide car l'algorithme


d'Euclide qui permet de calculer ces deux nombres est un
algorithme peu difficile à exécuter.

• En conclusion, la constitution d'un quadruplet (p, q, e, d) est donc


une opération rapide pour un ordinateur, même si l'on souhaite que
p et q aient quelques milliers de chiffres.
H. Laanaya
Algorithmes à clef publique
94

Algorithme RSA : Chiffrement


• Pour chiffrer un message M, on le découpe en blocs numériques tels
que chaque bloc ait une représentation unique modulo n (avec des
données binaires, on choisit la plus grande puissance de 2 inférieur à
n)

• Ainsi, si p et q sont tous les deux des nombres premiers de 100


chiffres, alors n aura tout juste moins de 200 chiffres et chaque bloc
de message mi doit avoir juste moins de 200 chiffres

• Le message chiffré C sera constitué de manière similaire de blocs ci


d'à peu près la même longueur. La formule de chiffrement est
simplement :

ci= mie mod n.

H. Laanaya
Algorithmes à clef publique
95

Algorithme RSA : Déchiffrement

• Pour déchiffrer un message, il faut effectuer l'opération inverse,


c'est à dire pour chaque ci on calcule :
mi = cid mod n.

• On a le schéma suivant :

e d

m c = me mod n m = cd mod n = med mod n m

H. Laanaya
Algorithmes à clef publique
96

Algorithme RSA : Résumé

• Clef publique :
n produit de deux nombres premiers, p et q ( p et q
doivent rester secrets)

e premier par rapport à (p-1)(q-1)

• Clef privée :
d = e-1 mod ((p-1)(q-1))

• Chiffrement :
c = me mod n

• Déchiffrement :
m = cd mod n

H. Laanaya
Algorithmes à clef publique
97

Algorithme RSA : Exemple


• On prend p=3, q=11 (deux nombres premiers) donc n = 3 × 11 = 33.
On prend ensuite e = 7 et on cherche d l'inverse modulaire de 7
modulo 33

• Il est facile de voir que d = 3 puisque : 7 × 3 = 21 ≡ 1 mod (3-1)(11-1)


On a alors :
§ La clef publique : (33, 7)
§ La clef privée : (33, 3)

• On veut envoyer le message : FERMAT


• On utilise le codage standard avec 28 chiffres : 01= A, 02 = B, 03 =
C, …, 26 = Z, 27 =" ,", 28 = "." 29 ="espace". Avec ce codage le
message numérisé est :
M = 060518130120
H. Laanaya
Algorithmes à clef publique
98

Algorithme RSA : Exemple (suite)


• On découpe en paquets de 2 chiffres. Pour chiffrer le message on
élevé à la puissance e = 7 modulo 33 chaque paquets, c'est à dire :

067 = 279936 ≡ 30 mod 33


05 7 = 78125 ≡ 14 mod 33
18 7 = 612220032 ≡ 6 mod 33
13 7 = 62748517 ≡ 7 mod 33
01 7 = 1 ≡ 1 mod 33
20 7 = 128×107 ≡ 26 mod 33

• Le message chiffré est : C = 301406070126

H. Laanaya
Algorithmes à clef publique
99

Algorithme RSA : Exemple (suite)


• En utilisant la clef privée d = 3 pour retrouver le message initial :

30 3 = 27000 ≡ 06 mod 33
14 3 = 2744 ≡ 05 mod 33
06 3 = 216 ≡ 18 mod 33
07 3 = 343 ≡ 13 mod 33
01 3 = 1 ≡ 01 mod 33
26 3 = 17576 ≡ 20 mod 33

• On obtient donc le message M = 060518130120, et avec le codage


standard précédent on obtient le message : FERMAT

H. Laanaya
Algorithmes à clef publique
100

Algorithme RSA : Exercice

En utilisant le cryptosystème à clef publique RSA précédent (Exemple


précédent),

1. Soit le message chiffré suivant : C = 290601222703. Trouver le


message initial

2.
a. Donner le chiffrement C du message M = ARITHMETIQUE

b. Déchiffrer le message C, pour retrouver le message M

H. Laanaya
Algorithmes à clef publique
101

Algorithme RSA : Attaque par module commun


• Supposons qu'on donne le même n à tout le monde. Le défaut le
plus évident est que si le message est chiffré avec deux clefs
différentes (deux valeurs différentes pour e et d avec le même
module), et que ces deux clefs sont premières entre elles (ce
qu'elles sont en général), alors le texte en clair peut être retrouvé
sans aucune des deux clefs de déchiffrement.

• Soit M le message en clair. Les deux clefs de chiffrement sont e1 et


e2. Le module commun est n. Les deux messages chiffrés sont :
C 1 = M e1 mod n
C 2 = M e2 mod n.

• Le crypytanalyste connaît n, e1, e2, C1, C2. Voici comment il peut


retrouver M.

H. Laanaya
Algorithmes à clef publique
102

Algorithme RSA : Attaque par module commun (suite)

§ Comme e1 et e2 sont premier entre eux, l'algorithme d'Euclide permet


de trouver r et s tels que :

r × e1 + s × e2 = 1.

§ En faisant l'hypothèse que r est négatif (soit r soit s doit l'être), alors
l'algorithme d'Euclide peut être utilisé à nouveau pour calculer C1-1.
Donc :

(C1-1) -r× C 2s = M re1+se2 mod n = M mod n.

H. Laanaya
Algorithmes à clef publique
103

Algorithme ElGamal : Présentation


§ Le schéma de El Gamal autorise le chiffrement et la signature de
messages. Peu utilisé en tant que système de chiffrement, il est
néanmoins à l'origine de standard de signature digitale DSS (Digital
Signature Standard). Il est basé sur le principe du chiffrement résiduel,
que l'on peu exposer comme suit :

Ø Soient A et N deux nombres entiers premiers entre eux, avec N


sans facteurs carrés et soit B tel que :
AB ≡ 1 mod N

Ø Le cryptogramme d'un message élémentaire M tel que 0≤M≤N-1


est alors :
M’ = AM mod N,
et l'on retrouve M en calculant
M" = BM' mod N.

H. Laanaya
Algorithmes à clef publique
104

Algorithme ElGamal : Présentation (suite)


§ Dans cette méthode N doit être connu de tous, A doit être connu de
l'expéditeur et B du destinataire.

§ Le problème est qu'il est très facile, si l'on connaît N et A (resp. B), de
déterminer B (resp. A) par un simple calcul d'inverse modulaire. Il est
donc nécessaire que A et B soient secrets, pour que le chiffrement soit
sûr.

§ L'intérêt du schéma de ELGamal est donc de proposer une méthode


efficace permettant de rendre A (et B) secrets pour qui ne possède pas
la clef de déchiffrement, en se basant sur la difficulté de calcul d'un
logarithme discret. En effet il est actuellement impossible, dans un
temps raisonnable de déterminer dans certains cas la valeur d'un
logarithme discret.

H. Laanaya
Algorithmes à clef publique
105

Algorithme ElGamal : Construction des clefs de chiffrements

§ Si on prend p premier, Ep = (Zp)* est un groupe cyclique à p-1


éléments. Si g est un générateur de Ep, on a :
Ep = { 1, g, g2, …, gp-2 }

§ Donc si on prend un élément x de Ep ; on a :


ü D'une part x est compris entre 0 et p-1,
ü D'autre part il existe un entier s dans {0,1, 2, …, p-2} tel que :
x = gs mod p

§ Supposons qu'on dispose d'un nombre premier p, on est certain de


pouvoir trouver un générateur g (1 ≤ g ≤ p-1), de Ep.

H. Laanaya
Algorithmes à clef publique
106

Algorithme ElGamal : Construction des clefs de chiffrements


(suite)

§ On choisit un entier s quelconque dans {0,1, 2, …, p-2}, et on calcule :

x = gs mod p

§ Le triplet (p, g, x) forme alors la clef publique du chiffrement ELGamal, et


l'entier s la clef privée. Pour des raisons algorithmiques, on ajoutera
l'entier p à la clef privée qui devient alors le couple (p, s).

§ La fiabilité du système est assurée par le fait que toute personne ayant
seulement connaissance de la clef publique ; se trouve dans l'incapacité
de déterminer s (car cela revient à déterminer un logarithme discret).

H. Laanaya
Algorithmes à clef publique
107

Algorithme ElGamal : Chiffrement


§ Prenons comme message élémentaire, un nombre m compris entre 0 et
p-1.
§ Comme nous l'avons déjà dit, le schéma de ELGamal est un chiffrement
de type résiduel,
ü Le chiffrement s'effectue par m' = a×m mod p.
ü Le déchiffrement par m" = (1/a) ×m' mod p, avec pgcd(a, p) = 1.

§ Pour chiffrer, il faut déterminer un élément a, premier avec p, qui reste


secret aux yeux de tous sauf à ceux du destinataire du message.

§ Comme p est un nombre premier, tout nombre entier a, choisi dans


l'intervalle [1, …, p-1], est premier avec p. Soit k un nombre pris au
hasard entre 2 et p-2, k peut alors être considéré comme l'indice par
rapport à g, d'un élément de Ep. Soit α cet élément, on a :

H. Laanaya
Algorithmes à clef publique
108

Algorithme ElGamal : Chiffrement (suite)

α = gk mod p (logarithme discret).

§ Posons alors
a = xk mod p.
§ a est bien premier avec p, et convient donc pour le chiffrement résiduel.
On chiffre alors le message m par :
m' = m xk mod p.
§ On envoie m' ainsi que α.

§ La sécurité du chiffrement est assuré par le fait que, connaissant α et la


clef publique, personne ne peut déterminer k, et donc ne peut déchiffrer
en calculant :
m" = m' (1/ xk) mod p.
H. Laanaya
Algorithmes à clef publique
109

Algorithme ElGamal : Déchiffrement


§ La connaissance de l'inverse de xk modulo p est nécessaire pour
déchiffrer le message. Montrons donc en quoi la connaissance de la clef
privée permet de s'en sortir.
§ Lors du chiffrement, on avait α = gk mod p et m' = m xk mod p. Avec
l'élévation à la puissance s, on obtient : αs = gks mod p. De plus on a :
x = gs mod p, donc xk = gks mod p. On a donc
xk = αs mod p

§ Un inverse de xk modulo p sera donc un inverse de αs modulo p. La


connaissance de s, secret, permet donc de déterminer 1/xk. On peut
donc déchiffrer par
m" = m' (1/ αs ) mod p.

§ Comme on a choisit 0≤m≤p-1, on a bien m" = m.

H. Laanaya
Algorithmes à clef publique
110

Algorithme ElGamal : Résumé

üClef publique :
Ø p premier (peut être partagé par un groupe d'utilisateurs).
Ø g < p (peut être partagé par un groupe d'utilisateurs).
Ø x = gs mod p.

üClef privée : s < p.

üChiffrement :
Ø k choisi aléatoirement et premier avec p-1.
Ø α = gk mod p.
Ø c = xk m mod p.

üDéchiffrement : m = c / αs mod p.

H. Laanaya
Algorithmes à clef publique
111

Algorithme ElGamal : Exemple


§ Prenons le nombre premier p = 181. Un générateur de E181 = (Z181)* est
23. On prend s=7. On a alors x = gs mod p = 237 mod 181, donc x = 57.
On obtient :
ü La clef publique : (181, 23, 57).
ü La clef privée : (181, 7).
§ Supposons que le message à chiffrer est une date de naissance : 07 12
90

Chiffrement :
§ Comme p est de longueur 3, il nous faut prendre des blocs de longueur
2 : [ 07, 12, 90 ], qui pour l'ordinateur devient : [ 7, 12, 90 ]. On prend
alors un nombre k au hasard compris entre 2 et p-2, par exemple k = 6,
on détermine alors
α = gk mod p = 236 mod 181 = 152 mod p.

H. Laanaya
Algorithmes à clef publique
112

Algorithme ElGamal : Exemple (suite)

§ Puis on chiffre chaque élément de ce tableau en multipliant par xk mod


p = 576 mod 181 :

7 × 576 mod 181 = 146 mod 181


12 × 576 mod 181 = 121 mod 181
90 × 576 mod 181 = 93 mod 181

§ Ce qui donne : [ 146, 121, 93 ], p étant de longueur 3, on rajoute des 0,


si nécessaire, afin de n'avoir que des éléments de 3 chiffres : [ 146, 121,
093 ]

§ On envoie alors le message : 146121093, ainsi que α : 152.

H. Laanaya
Algorithmes à clef publique
113

Algorithme ElGamal : Exemple (suite)


Déchiffrement :
§ On reçoit le message précédent que l'on décompose en bloc de 3
chiffres (car p est de longueur 3), ce qui donne, pour l'ordinateur : [ 146,
121, 93 ]. On calcule alors l'inverse de α s mod p = 176 mod 181, et on
obtient 1/ αs mod p = 36 mod 181 (car 36 × 176 mod 181 = 1 mod 181).

§ On applique à chaque élément a du tableau la formule :


a × (1/ αs) mod 181.

146 × 36 mod 181 = 7 mod 181


121 × 36 mod 181 = 12 mod 181
93 × 36 mod 181 = 90 mod 181

H. Laanaya
Algorithmes à clef publique
114

Algorithme ElGamal : Exemple (suite)

§ Et on obtient le tableau : [ 7, 12, 90 ].

§ Il ne reste plus qu'à compléter chaque bloc par des 0, si nécessaire, afin
d'avoir des éléments de longueur p-1, c'est à dire 2.

§ On obtient [ 07, 12, 90 ]. Ce qui correspond bien, après concaténation, à


notre message original : 07 12 90.

H. Laanaya
Algorithmes à clef publique
115

Signatures ElGamal

§ Pour engendrer une paire de clefs, choisissez d'abord un nombre


premier p et deux nombres g et s avec g < p un générateur de Ep et s<p
un nombre aléatoire. Ensuite on calcule :
x = gs mod p.

ü La clef publique est Le triplet (p, g, x).


ü La clef privée est le couple (p, s).

§ Pour signer un message m, choissez d'abord un nombre aléatoire k, tel


que k et p-1 soient premier entre eux. Ensuite calculez :
α = gk mod p.

H. Laanaya
Algorithmes à clef publique
116

Signatures ElGamal (suite)

§ Enfin utilisez l'algorithme d'Euclide étendu pour trouver la valeur de β qui


satisfait l'équation suivante :
m = (sα + kβ) mod (p-1).

§ La signature est la paire : α et β. La valeur aléatoire k doit être tenue


secrète.

§ Pour vérifier une signature, il faut confirmer que :


xα αβ mod p = gm mod p.

H. Laanaya
Algorithmes à clef publique
117

Signatures ElGamal : Exemple

§ On prend p =11 et g=2 (on a déjà vu que 2 est un générateur de E11). La


clef privée est s = 8. On calcule :
x = gs mod p = 28 mod 11 = 3.

ü La clef publique est : (3, 2, 11)


ü La clef privée est : (8, 11).

§ Pour authentifier M = 5, choisissez d'abord un nombre aléatoire k=9.


On vérifie que pgcd(9, 10)=1. On calcule :
α = gk mod p = 29 mod 11 = 6

H. Laanaya
Algorithmes à clef publique
118

Signatures ElGamal : Exemple (suite)

§et on utilise l'algorithme d'Euclide étendu pour résoudre :


m = (αs + kβ) mod 10
5= (8×6 + 9×β) mod 10.

§La solution est β = 3 et la signature est la paire α=6 et β=3.

§Pour vérifier la signature :


xα αβ mod p = gm mod p
36 63 mod 11 = 25 mod 11.

H. Laanaya
Algorithmes à clef publique
119

Algorithme ElGamal : Exercice

§ Soit le système ELGamal suivant : p=31 et g=3. On prend s=7.

1) Donner la clef publique et la clef privée de ce système, vérifier qu'il


s'agit bien d'un système ELGamal.

2) On prend k=6, calculer α. Ensuite codé le message M=EHTP avec


ce système. On obtient le message codé C.

3) Calculer l'inverse modulaire de α s. Ensuite décodé le message C


obtenu en 2 et retrouvé le message M.

H. Laanaya
Fonctions de hachage
120

Les Fonctions

§Soit f une fonction d'un ensemble X vers un ensemble Y.

§Notation : f : X → Y, si x∈ X et y = f(x), y est l'image de x, x est


l'antécident de y. L'ensemble { y ∈ Y / ∃ x ∈ X avec y = f(x) } = Imf ⊂ Y.

§Exemple : Soit X={ 1, 2, 3, …, 10} et f la fonction f(x) = rx, où rx est le


reste de la division euclidienne de x² par 11. Alors,

f(1)=1, f(2)=4, f(3)=9, f(4)=5, f(5)=3 ( 25 ≡ 3 mod 11), f(6)=3, f(7)=5,


f(8)=9, f(9)=4 et f(10)=1 (100 ≡ 1 mod 11).
et
Y = Imf = { 1, 3, 4, 5, 9}.

H. Laanaya
Fonctions de hachage
121

Les Fonctions à sens unique

§Définition : Une fonction f : X à Y est une fonction à sens unique si


ü Étant donné x il est facile de calculer f(x)
ü Pour presque tout les f(x) il est difficile de trouver x.

§Où la facilité est bien évidemment un compromis entre le temps et la


puissance de calcul. (Dans ce contexte, "difficile" veut dire qu'il faudrait des
millions d'années pour calculer la fonction inverse même si on utilise tous
les ordinateurs du monde)

§Casser une assiette est un bon exemple de fonction à sens unique. Il est
facile de casser l'assiette en mille morceaux. Toutefois, il est très difficile de
recoller les morceaux ensembles pour reconstruire l'assiette.

H. Laanaya
Fonctions de hachage
122

Les Fonctions à sens unique : Exemple 1

§SoitX={1, 2, 3, …, 16} et on définie f par f(x)= rx pour tout x∈X où rx est le


reste de la division de 3x par 17.

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 entier compris entre 1 et 16, il est relativement


facile de trouver son image par f.
§Par contre, si on prend un nombre comme 7, sans avoir la table en face, il
est très difficile de trouver x tel que f(x)=7.
§Si le nombre est 3 il est évident que x=1 (f(1)=3), mais pour la majorité des
éléments de Imf = Y il est difficile de trouver leurs antécédents.

H. Laanaya
Fonctions de hachage
123

Les Fonctions à sens unique : Exemple 2

§Soient
deux nombres premiers p = 48611, q = 53993, on a n = pq =
2624653723 et soit X={1, 2, 3, …, n-1}.

§On définie une fonction f sur X par f(x)= rx pour tout x ∈X, où rx est le reste
de la division de x3 par n. Par exemple f(2489991) = 1981394214 puisque
2489913 = 5881949859 × n + 1981394214.

§Calculer f(x) est relativement facile, mais la réciproque est plus difficile ;
c'est-à-dire étant donné un reste rx, trouver la valeur x telle que
x3 = rx mod n.

§C'est le calcule de la racine cubique modulo n.

H. Laanaya
Fonctions de hachage
124

Fonctions de hachage

§Une fonction de hachage est une fonction qui convertit une chaîne de
caractères de longueur quelconque en une chaîne de caractères de taille
fixe (souvent de taille inférieure, cette chaîne est appelée empreinte). Ainsi,
l'on peut appliquer le même algorithme de cryptage aux données, ou encore
envoyer le message en plusieurs parties, réduisant le risque de pertes de
données au cours de la transmission.

§Exemple : Un exemple de fonction de hachage simple est une fonction qui


à partir d'une chaîne de caractères calculerait un octet qui serait le résultat
du ou exclusif de tous les caractères de la chaîne donnée.

H. Laanaya
Fonctions de hachage
125

Fonctions de hachage à sens unique

§Une fonction de hachage à sens unique est une fonction de hachage qui
est aussi une fonction à sens unique ; il est aisé de calculer l'empreinte à
partir de la chaîne d'entrée mais il est difficile d'engendrer des chaînes qui
ont une certaine empreinte.

§Lafonction de hachage précédente (correspondante au ou exclusif) n'est


pas à sens unique : étant donné un octet, il est trivial d'engendrer une
chaîne dont le "ou exclusif" de ses caractères donne cet octet-là.

§On ne peut pas faire cela pour des fonctions de hachage à sens unique.

Avec une bonne fonction de hachage à sens unique, il est aussi difficile de
§
produire deux chaînes ayant la même empreinte.

H. Laanaya
Fonctions de hachage
126

Résumé

§Ainsi,
le haché représente l'empreinte digitale (en anglais finger print) du
document è Assure l'intégrité du message.

H. Laanaya
Fonctions de hachage
127

Vérification d'intégrité

§Enexpédiant un message accompagné de son haché, il est possible de


garantir l'intégrité d'un message, c'est-à-dire que le destinataire peut vérifier
que le message n'a pas été altéré durant la communication.

§Lors
de la réception du message, il suffit au destinataire de calculer le
haché du message reçu et de le comparer avec le haché accompagnant le
document. Si le message (ou le haché) a été falsifié durant la
communication, les deux empreintes ne correspondront pas.

H. Laanaya
Fonctions de hachage
128

Le scellement des données

§L'utilisation
d'une fonction de hachage permet de vérifier que l'empreinte
correspond bien au message reçu, mais rien ne prouve que le message a
bien été envoyé par celui que l'on croit être l'expéditeur.

§Ainsi,pour garantir l'authentification du message, il suffit à l'expéditeur de


chiffrer (on dit généralement signer) le condensé à l'aide de sa clé privée (le
haché signé est appelé sceau) et d'envoyer le sceau au destinataire.

H. Laanaya
Fonctions de hachage
129

Le scellement des données (suite)

§Au réception du message, il suffit au destinataire de déchiffrer le sceau


avec la clé publique de l'expéditeur, puis de comparer le haché obtenu avec
la fonction de hachage au haché reçu en pièce jointe. Ce mécanisme de
création de sceau est appelé scellement.

H. Laanaya
130

Les courbes elliptiques

H. Laanaya
Les courbes elliptiques
131

Introduction
§ Les spécialistes en cryptographie font de plus en plus appel à une
technique qui s'appuie sur des courbes elliptiques, proposée
indépendamment par Victor Miller et Neal Koblitz en 1985. La théorie
des courbes elliptiques en général est un domaine riche et a donné de
nombreux résultats, dont la preuve du dernier théorème de Fermat par
Andrew Wiles.
§ Une courbe elliptique est un objet très simple mais qui a des propriétés
tout à fait surprenantes. Elles ont normalement la forme suivante:
y 2 +a1xy+a3y = x 3 +a2x 2 +a4x+a6

§ Pour leur usage en cryptographie, a1, a2 et a3 doivent être égaux à 0.


Comme les cryptographes ont l'habitude de renommer a4=a et a6=b, on
obtient E(a,b):
y2 = x3 + ax + b

H. Laanaya
Les courbes elliptiques
132

Définition

§On appelle courbe elliptique E(a,b) sur R toute courbe plane d'équation

y 2 = x 3 + a x + b,

où le discriminant -(4a3 +27b2) de x 3 + a x + b est non nul, afin d'éviter


que ce polynôme ait des racines multiples.

§On rajoute à cette courbe un point à l'infini noté O.

H. Laanaya
Les courbes elliptiques
133

Exemple
§Unexemple typique de courbe elliptique E(-5,3) (discriminant=257≠0) est
donné sur la figure ci-dessous. Son équation est y 2 = x 3 - 5x + 3.

H. Laanaya
Les courbes elliptiques
134

Addition de deux points


§ L'intérêt de ces courbes elliptiques est qu'on peut les munir d'une
opération de groupe commutatif. Prenons A et B deux points distincts de
la courbe elliptique (et différents du point à l'infini O). On trace la droite
(AB). Deux cas peuvent se produire :

ü La droite coupe la courbe en un 3ème point


de coordonnées (x,y) (on démontre qu'il y a
au plus 3 points d'intersection entre une
droite et la courbe). Le symétrique de ce
3ème point par rapport à l'axe des abscisses
(x,-y) est lui aussi sur la courbe et on le
désigne par A+B pour signifier qu'il est
construit à l'aide de A et B.

H. Laanaya
Les courbes elliptiques
135

Addition de deux points (suite)

ü La droite ne coupe la courbe qu'en A et B.


A Ceci n'est possible que si (AB) est parallèle à
l'axe des ordonnées. On définit alors A+B=O
(point à l'infini).
B

§ La chose surprenante est que cette opération "+" possède toutes les
propriétés de l'addition des nombres. C'est-à-dire que l'on peut faire tous
les calculs de type addition, soustraction et division avec un reste entier
que nous faisons sur la droite des nombres réels sur cet objet tordu que
constitue une courbe elliptique.

H. Laanaya
Les courbes elliptiques
136

Addition de deux points (suite)


§ On peut montrer que cette addition est associative, c'est à dire que (A
+B)+C=A+(B+C) et que, par conséquent, on obtient un groupe
commutatif. Résumons les règles:

1) -A est le symétrique de A par rapport à Ox.


2) Si A ≠ -B (c'est à dire qu'ils n'ont pas la même
abscisse), alors A+B=C, conformément au
dessin.
3) Si A = B, l'on prend la tangente pour trouver C'
puis C.
4) Si A = -B, alors A + B = O (car O est l'élément
neutre du groupe).
5) Si A = O, alors C = B car la droite (OA)
recoupe la courbe en -B.

H. Laanaya
Les courbes elliptiques
137

Addition modulo un entier : Règles de l'addition

§Soit la courbe elliptique cryptographique E(a,b,p) :

y 2 mod p = x 3 + a x + b mod p.

§On reconnaît l'équation déjà vue ci-dessus, sauf que l'on travaille modulo
p. Le nombre p doit être un nombre premier. Lors des calculs, il arrive
parfois que l'on doive faire une division par 0. Quand cela arrive, le point
résultat sera appelé "infini".

H. Laanaya
Les courbes elliptiques
138

Addition modulo un entier : Règles de l'addition (suite)


§On a les règles suivantes :

1. infini + infini = infini

2. (x1,y 1) + infini = (x 1,y 1)

3. (x 1,y 1) + (x 1,-y 1) = infini

4. Si x1 ≠ x2, (x1,y1)+(x2,y2) = (x3,y3),


avec x3 =(k2 - x1 – x2) mod p, y 3 = (k(x 1 -x 3)-y 1) mod p
où k = (y 2-y 1)·(x 2-x 1) -1 mod p

5. Si y 1 ≠ 0, (x1,y1) + (x1,y1) = 2(x1,y1) = (x3,y3),


avec x3 = (k 2 -2x1) mod p et y3 = (k(x1 -x 3)-y1) mod p
où k = (3x12 +a)·(2y1) -1 mod p

H. Laanaya
Les courbes elliptiques
139

Addition modulo un entier : Règles de l'addition (suite)

§On
remarque que pour calculer k, on doit trouver l'inverse d'un nombre
modulo p. Pour trouver cet inverse, on utilise l'algorithme d'Euclide étendu.

§Il
est possible, comme l'ont démontré Miller et Koblitz, de coder avec cette
opération bizarre au lieu de travailler avec l'addition usuelle. Il en résulte
une plus grande complexité des calculs qui fait dire aux spécialistes que le
chiffrement par la méthode des courbes elliptiques avec une clef de 192 bits
assure le même niveau de sécurité qu'une clef de 1024 bits pour la
méthode RSA.

§Il
est donc probable que cette méthode sera de plus en plus utilisée pour
transmettre les clefs.

H. Laanaya
Les courbes elliptiques
140

Addition modulo un entier : Exemple


§ Considérons la courbe elliptique E(7,2,23) d'équation:
y2 = x3 + 7x + 2 mod 23

§ Les points A(7,7) et B(9, 14) appartiennent à E(7,2,23) car :


Ø 72=3 mod 23 et 73+7×7+2=3 mod 23, donc Le point A(7,7)∈ E(7,2,23)
Ø 142=12 mod 23 et 93+7×9+2=12 mod 23, donc Le point B(9,14)∈
E(7,2,23).

§ On pose C = A + B. Appliquons les formules données plus haut:


Ø k=(7-14)×(7-9)-1=-7×(-2)-1=16×11=15 mod 23, car 21×11=1 mod 23
(algorithme d' Euclide étendu).
Ø De plus, xC=k2–xA–xB=225-7-9=2 mod 23, yC=k×(xA-xC)-yA=15×5-7=
22 mod 23, donc C(2, 22).

§ Vérifions que ce point appartient bien à E(7,2,23) :


Ø 222≡1 mod 23 et 23+7×2+2=1 mod 23, donc C E(7,2,23).

H. Laanaya
Les courbes elliptiques
141

Multiplication d'un point par un nombre entier


§On remplace la multiplication par une série d'additions.

§Prenons un exemple. Soit la courbe y2 mod 11 = (x3 + x + 2) mod 11.

§Calculons d·P, avec d=3 et P=(4, 2):


ü On peut vérifier que le point P appartient bien à la courbe elliptique.
ü On peut remplacer 3·P par P+P+P.

§Calculons d'abord P+P :


D'après la règle 5, P+P=(4, 2)+(4, 2)=(x3, y3)=2·P,
avec k = (3×42+1)·(2×2)-1 mod 11 = 147 mod 11 = 4
x3 = (42-2×4) mod 11 = 8 et
y3 = (4×(4-8)-2) mod 11 = -7 mod 11 = 4
d'où 2.P = (8, 4).
H. Laanaya
Les courbes elliptiques
142

Multiplication d'un point par un nombre entier (suite)

§Calculons
maintenant 3P :
D'après la règle 4, 2·P+P=(8,4)+(4,2)=(x3,y3)=3·P,

avec k = (2-4)·(4-8)-1 mod 11 = -2×8 mod 11 = 6


x3 = (62-8-4) mod 11 = 2 et
y3 = (6×(8-2)-4) mod 11 = 32 mod 11 = 10

d'où 3.P = (2, 10).

H. Laanaya
Les courbes elliptiques
143

Échange de clefs
§Aïcha et Brahim se mettent d'accord (publiquement) sur une courbe
elliptique E(a,b,p), c'est-à-dire qu'ils choisissent une courbe elliptique
y2 mod p = (x3+ax+b) mod p.

§Ils
se mettent aussi d'accord, publiquement, sur un point P situé sur la
courbe.

§Secrètement, Aïcha choisit un entier dA, et Brahim un entier dB.

§Aïcha envoie à Brahim le point dAP, et Brahim envoie à Aïcha dBP.

§ Chacun de leur côté, ils sont capables de calculer


dA(dBP)=dB(dAP)=(dAdB)P qui est un point de la courbe, et constitue leur clef
secrète commune.
H. Laanaya
Les courbes elliptiques
144

Transmission de messages

§On suppose que Aïcha et Brahim ont suivi le protocole d'échange de clés
expliqué ci-dessus.

§Aïcha veut envoyer à Brahim un message: ils se sont mis d'accord sur la
façon de transformer un texte en suite de points de la courbe elliptique.

§Aïcha doit donc transmettre, de façon secrète, un point M de la courbe


E(a,b,P).

§Elle
choisit (secrètement) un nombre d, et envoie à Brahim le couple (dP,
M+dkBP).

H. Laanaya
Les courbes elliptiques
145

Transmission de messages (suite)

§Brahim, lui, multiplie dP par kB (sa clé secrète), puis retranche dkBP à M
+dkBP : il retrouve M.

§Siquelqu'un espionne les échanges, il lui faut absolument connaître kB


pour retrouver M : c'est encore une fois le problème du logarithme discret à
résoudre : c'est le même type de problèmes, avec des notations additives,
que de retrouver n dans une équation y=xn dans Z/pZ, y et x connus.

§Nous avons passé sous silence une des difficultés majeures : l'algorithme
pour transformer un texte en points de la courbe elliptique est loin d'être
trivial; il n'est pas toujours facile de trouver un point sur la courbe elliptique.

H. Laanaya
Les courbes elliptiques
146

Sécurité

§Si Chihab a espionné leurs échanges, elle connaît E(a,b,P), P, dAP et dBP.

§Pour pouvoir calculer dAdBP, il faut pouvoir calculer dA connaissant P et


dAP.

§C'est ce que l'on appelle résoudre le logarithme discret sur une courbe
elliptique.

§Or,actuellement, si les nombres sont suffisamment grands, on ne connaît


pas de méthode efficace pour résoudre ce problème en un temps
raisonnable.

H. Laanaya
Les courbes elliptiques
147

Inconvénients

§Lathéorie des fonctions elliptiques est complexe, et encore relativement


récente.

§Il
n'est pas exclu que des trappes permettent de contourner le problème du
logarithme discret.

§Latechnologie de cryptographie par courbe elliptique a fait l'objet du dépôt


de nombreux brevets à travers le monde. Cela peut rendre son utilisation
très coûteuse!

H. Laanaya
148

FIN

H. Laanaya

Vous aimerez peut-être aussi