Vous êtes sur la page 1sur 44

11/18/2021

CHAPITRE II:

Cryptographie et
communications sécurisées

1. Introduction

La cryptologie = cryptographie + cryptanalyse


La cryptographie c’est comment faire? Et La cryptanalyse,
c’est comment défaire?
La cryptographie: l’étude et la conception des procèdes de
chiffrement (la science des écritures secrètes) qui permettent à
deux entités de préserver le secret des échanges même si elles
utilisent une infrastructure de communication (publique) non
sécurisée
La cryptanalyse: l’étude des procèdes cryptographiques dans le but
de retrouver une partie ou toutes les informations initiales (texte en
clair) à partir de leurs cryptogrammes (texte
crypté)(décryptement: l’action de trouver le texte en clair sans
disposer de la clé) 2

1
11/18/2021

Cryptographe, cryptologue, cryptanalyste, …

La cryptographie est l’unique technique pour assurer la


confidentialité des données et des flux depuis plus de 2400 ans.

Supporte également d’autres services de sécurité : intégrité ,


authentification, non-répudiation,…
La technique de cryptage est fondée sur deux opérations :
Chiffrement et Déchiffrement (voir figure 1)

Attaquants

c
Encryptage Décryptage
Canal non-sécurisé Dd(c) = m
Ee(m) = c

m m

Source Destination

A B

Figure 1: fonctionnement d’un système de cryptage


4

2
11/18/2021

Chiffrement : L’opération qui consiste à appliquer une


transformation mathématique sur un message déchiffrable (m)
sous le contrôle d’une clé de cryptage (e) pour avoir un message
indéchiffrable ou cryptogramme (c). Ce message peut être
transmis ou sauvegardé en toute sécurité.
Déchiffrement : L’opération inverse de la première. Elle consiste
à appliquer l’inverse de la transformation initiale sur le
cryptogramme (c) sous le contrôle de la même clé ou une autre (d)
pour retrouver le message initial (m).

Un système de cryptage ou cryptosystème est défini comme suit


Alpha : L’alphabet utilisé
M : L’ensemble des messages déchiffrables. Les symboles de
chaque message appartiennent à Alpha. 5

C : L’ensemble des messages cryptés. Les symboles de chaque


cryptogramme appartiennent à Alpha
K : L’ensemble des clés utilisées (e,d) ; avec e la clé de cryptage
et d clé de déchiffrement
E et D sont deux fonctions de transformation
Ee : La transformation de chiffrement sous le contrôle de la clé
e.
Dd :La transformation de déchiffrement sous le contrôle de la clé
d.
Les systèmes de cryptage forment deux principales catégories :
Les systèmes symétriques ou à clé secrète et
Les systèmes asymétriques ou à clé publique.
6

3
11/18/2021

2. Un petit historique
Cryptographie ancienne ou manuelle
Transposition Sparte (5ème siècle av. J.C).
Substitution de César (1er siècle av. J.C), Vigenère (XVI ème ).
Cryptanalyse des codes mono et poly-alphabétiques(El Kindi
(IXème siècle), Babbage/Kasiski (XIXème siècle)).
Mécanisation de la cryptographie et la cryptanalyse : Enigma (1918),
permutation et substitution automatiques.
Cryptographie moderne:
Vers un chiffrement parfait : Vernam 1917 (XOR), théorie de
l’information
Standards de chiffrement à clé secrète : DES (1977), AES(2001)
7
Cryptographie à clé publique (1976): El-Gamal, …

3. Quelques attaques

La cryptanalyse d’un système cryptographique :


Une cryptanalyse partielle : l’attaquant découvre le texte clair
d’un ou plusieurs messages interceptés.
Une cryptanalyse totale : l’attaquant découvre un moyen pour
déchiffrer tous les messages par exemple en cassant la clé
utilisée.
On distingue plusieurs types d’attaques
Attaque à messages chiffrés (seulement), l’attaquant a
seulement la possibilité d’intercepter un ou plusieurs messages
chiffrés uniquement.
Attaque à messages clairs : l’attaquant dispose d’un ou
plusieurs messages clairs avec les messages chiffrés
correspondants.
8

4
11/18/2021

Attaque à messages clairs choisis : l’attaquant a la possibilité


d’obtenir la version chiffrée de messages de son choix.
Attaque à messages chiffrés choisis : l’attaquant a
temporairement l’opportunité de déchiffrer des messages de son
choix.
Exemple : la difficulté d’attaques aux cryptosystèmes ( attaque de
recherche exhaustive de la clé) :
La taille de clé : 64 bits
Les machines disposées : capables de tester 1 milliard de
combinaisons / s
Quel est le nombre de machines nécessaires pour casser la clé
pendant un an ?
Quelle est la période en jours pour divulguer la clé en utilisant
deux machines uniquement? 9

Taille de la clé: 64 bits  264 combinaisons possibles= 1.844 1019


Pour une seule machine (109 tests/s), le temps nécessaire pour
divulguer la clé:
1.844 1019/109= 1,844 1010 s
Pour 1 année, on a besoin de:
1.844 1010/ (60*60*24*365) = 584 machines
Pour 2 machines, de la même performance, le temps nécessaire
pour divulguer la clé est:
1.844 1010/(2*86400) = 106712 jours = 292 ans

10

5
11/18/2021

4. Cryptage symétrique

Attaquants

Source de clé e Canal sécurisé

e
Encryptage c
Ee(m) = c Canal non-sécurisé Décryptage
m De(c) = m
Source du m
message
Destination
A
Figure 2: Cryptosystème symétrique B 11

Cryptage symétrique ou conventionnel: généralement la même clé


pour chiffrer et déchiffrer les messages (voir Figure 2)
La fiabilité dépend, radicalement, de la confidentialité des clés
(clé divulguée ou cassée  tous les messages sont facilement
révélés).
 Les entités en communication doivent avoir au moins un canal
d’échange protégé pour véhiculer la clé à chaque début de
session.
Dans les systèmes symétriques, la clé secrète est généralement
distribuée, à chaque début de session, par une entité centrale suite
aux demandes des autres.

12

6
11/18/2021

Types de cryptage symétrique :


Chiffrement par stream (flot)
Chiffrement par bloc.

Le chiffrement par stream ou continu (sream cipher)


1 bloc égal à 1 octet (ou même un bit)
Plus utile pour les messages de tailles arbitraires
Chiffrement rapide (xor, …)
Exemple:
- RC: (WEP wifi, Secure SQL, …): taille de clés variable, 40
à 232 bits
- A5/1 et A5/2 (GSM): clés de 64 bits
13

Le chiffrement par bloc (block cipher).


Blocs de taille fixe (t: 16 octets ou plus, le plus souvent)
Nécessite du bourrage (padding): pour le bloc de taille inferieure
à la taille fixée, t
Chaque bloc est crypté seul,
Utilise plusieurs modes: CBC (Cipher Block Chaining), ECB
(Electronic CodeBook), …
Exemples:
- DES: blocs de 64 bits et clés de 56 bits
- Blowfich: blocs de 64 bits et clés de 32 bits ou plus

14

7
11/18/2021

4.1 Quelques techniques classiques

Substitution :
C’est une technique de chiffrement par bloc.
Elle permet le remplacement de chaque symbole du message par
un seul ou un groupe de symboles dans les cryptogrammes.
Trois types de substitution sont proposés
La substitution simple
Alpha: l’ensemble de symboles,
M : l’ensemble des messages de taille t ( la taille d’un bloc).
K : représente l’ensemble des permutations sur Alpha. e K et
dK
La transformation de cryptage
Ee (m) = (e(m1)…e(mn)) = (c1…cn) = c
La transformation de décryptage
Dd (c) = (d(c1)…d(cn)) = (m1…mn) = m avec mi et ci Alpha
15

 Cette substitution est appelée aussi mono-alphabétique


 Le chiffrement par décalage est un cas particulier de la substitution
mono-alphabétique, c’est le chiffrement de César (la clé secrète :
l’indice du décalage)
Exemple
- Taille du bloc: 3
- La clé secrète: e (c’est le combinaison suivante):
a b c d e f g h i j k l mn o p q r s t u v wx y z
                      
mf o b e c n v x s j u k h t w y d q g r i l p z a

- m= cryptographie : (cry, pto, gra, phi, e), mi, i=1.. 4


- Padding: 11
- Ee(m)= (e(cry) e(pto) e(gra) e(phi) e(e11))= (odz, wgt, ndm
wvx, e11)
- c = odzwgtndmwvxe11 16

8
11/18/2021

La substitution homophonique
Pour chaque symbole a Alpha est défini H(a)
H(a): l’ensemble de chaînes de taille fixe pour remplacer a dans M.
Chiffrement, chaque symbole a du message déchiffrable est
remplacé, au hasard, par l’une des chaînes de H(a).
Déchiffrement: L’opération inverse
Exemple:
a b c d e f g h i j k l m n o p q r s t u v w x y z

                        
m f o b e c n v x s j u k h t w y d q g r i l p z a
1 7 W 5 2 9 6 4 3
8 Z

- m= homophonic cipher

- c= vtkZwW9hxg gxwv7d 17

Substitution poly-alphabétique
K : t permutations (p1,p2,…pt) définies sur Alpha (t: taille du bloc)
Chiffrement : e = (p1, p2,…pt) et m = (m1…mt).
Ee (m) = (p1(m1)…pt(mt)) = (c1…ct) = c
Déchiffrement d = (𝑝 ,𝑝 ,…𝑝 ).
Dd (c) = (𝑝 (c1)… 𝑝 (ct)) = (m1…mt)=m avec mi et ci  Alpha
Exemple: Le chiffrement de Vigenère Alpha= { A,B,C,… X, Y,
Z} t = 3 e= (p1, p2, p3)
- p1 : chaque symbole est remplacé par le troisième symbole à droite
- p2 : chaque symbole est remplacé par le septième symbole à droite.
- p3 : chaque symbole est remplacé par le dixième symbole à droite.
 Message initial: ”this cipher is certainly not secure”

 Si m = THI SCI PHE RIS CER TAI NLY NOT SEC URE
 Ee(m)=WOS VJS SOO UPC FLB WHS QSI QVP VLM XYO
18

9
11/18/2021

Transposition
C’est une permutation de symboles dans un bloc.
Pour une taille fixe de bloc t , K représente l’ensemble de
toutes les permutations possibles sur l’ensemble
{1,2,3…t}.
Pour chaque e K et m = (m1…mt)  M:
La transformation de cryptage
Ee (m) = (me(1)…me(t)) = (c1…ct) = c
La transformation de décryptage d = e-1
Dd (c) = (cd(1)…cd(t)) = (m1…mt) = m
Exemple : t = 5, K : {1,2,3,4,5} {1,2,3,4,5}; e: {e(1)=2,
e(2)=1, e(3)=5, e(4)=3, e(5)=4} e = (2,1,5,3,4)
Ee(crypt ograp hique)= rctyp gopra ihequ

19

Produit
Les deux premières classes de systèmes de cryptage ne sont pas
suffisamment robustes (en terme de niveau de sécurité assuré).
- Cryptanalyse: redondance de caractères dans les langages
naturels et l’analyse statistique.
La troisième classe propose la combinaison des fonctions de
transformation des deux premières.
 La composition des substitutions et permutations permet des
algorithmes de chiffrement plus sûrs.
DES (Data Encryption Standard), développé par IBM en 1977,est
l’un des algorithmes de la classe produit.
DES utilise un bloc de 64-bits et une clé secrète de 56-bits.
DES supporte 16 niveaux de substitution et deux permutations
pour chiffrer et déchiffrer les messages (voir Figure 3).
20

10
11/18/2021

Entrée

Permutation initiale

L0 R0

L1 = R0 R1 = L0 + f (K1,R0)

Li = Ri-1 Ri = Li-1 +f (Ki, Ri-1)

L16 = R15 R16 = L15 + f (K16, R15)

Permutation inverse

Sortie.

Figure 3: Etapes de l’algorithme DES 21

Le mécanisme de DES
- Le message à chiffrer est converti en code binaire puis découpé
en blocs de 64 bits.
- Pour chaque bloc:
1. Transformation de la clé: La clé secrète est transformée en 16
sous clés Ki de 48 bits (i=1,.., 16) (utilise les odd-parity bits,
le décalage circulaire puis la sélection de 48 bits parmi 64
bits pour chaque Ki )*
2. Effectuer une permutation initiale de tous les bits formant ce
bloc.
- Déterminer une matrice de permutation initiale IP (8×8 des
nombres de 1 à 64) et son inverse IP-1.
- Permuter les bits du bloc selon IP

*Voir les détails de cette étape: Algo 7.83 du chapitre http://cacr.uwaterloo.ca/hac/about/chap7.pdf 22

11
11/18/2021

3. Diviser le bloc permuté en deux parties : la partie gauche (L0)


et la partie droite (R0)
4. Sur chacune de deux parties: appliquer 16 étapes de
transformation du processus de cryptage
-Transformation (16 fois) des deux parties, en introduisant une
fonction de la clé, comme suit:
-Li = Ri-1.
-Ri = Li-1  f (Ki, Ri-1).
5. Effectuer la permutation inverse de la 1ère :
- Utiliser (R16, L16) et la matrice IP-1 pour déduire le
cryptogramme c du bloc traité

23

f est une fonction de la forme: P(S(E(Ri)Ki))


- E : une fonction d’expansion permutation fixe
- Permet d’étendre la partie Ri, initialement sur 32 bits à 48
bits
- Utilise une matrice E (8×6) dans laquelle tous les bits, Ri,
sont représentés une seule fois, 16 uniquement sont
dupliqués deux fois.
- Ri est subdivisée en 8 blocs de 4 bits et chaque bloc est
étendu en 6 bits.

24

12
11/18/2021

- S (Substitution-Boxes): une fonction de substitution


- Transformer le résultat de l’opération bit-à-bit (E(Ri)Ki)
de 48 bits à 32 bits
- Les 48 bits sont subdivisés en 8 blocs de 6 bits (8 S-boxes),
- Chaque bloc de 6 bits est associé à un S-boxe pour donner
un bloc de 4 bits
- Exemple de S-boxe
Colonne

Ligne 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
2 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
3 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
4 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

- Pourquoi chaque S-Boxe est composé de 16 colonnes et 4 lignes?


25

- Exemple: le bloc 1 est composé de 6 bits (b1b2b3b4b5b6: 110101)


- Deux bits pour identifier la ligne
- Quatre bits restants pour identifier la colonne
- Ligne S-Box1: l = 2 b1+b6=3
- Colonne de S-Box1: c =8b2+4b3+2b4+b5= 10

Colonne

Ligne 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

- Le bloc 110101 sera substitué par (3)2=0011


26

13
11/18/2021

- P (Permutation box): une fonction de permutation appliquée


aux résultats de S-boxes
- Considère les 8 blocs de 4 bits simultanément
- Utilise une matrice de (8×4)
Le décryptage avec DES utilise le processus inverse de
chiffrement.
Les S-boxes et le P-Box et les autres paramètres sont les mêmes
auprès des deux entités.
Les clés uniquement sont appliquées dans le sens inverse (K16…
K1) pour décrypter le bloc auprès de la destination.

Remarques: l’algorithme DES est basé sur la structure de Feistel

27

Le chiffrement de Feistel utilise un processus de cryptage


structuré en r étapes (généralement 3)
A chaque étape, un bloc est structuré en 2 parties (L, R) puis
crypté itérativement sous le contrôle de clés dérivées.
Parmi les faiblesses de l’algorithme DES:
Espace de clés réduit: 256 clés possibles (7.2 1016) est un nombre
qui peut paraître grand, aujourd’hui, il est possible de les tester
toutes en l’espace de quelques heures, vu l’évolution actuelle en
terme de performance du hardware.
DES a été commandé par le gouvernement américain (1974) et
certains prétendent que la NSA (National Security Agency) qui
est l’organisme du gouvernement américain chargé du décryptage
des messages codés, serait en mesure d’utiliser des raccourcis
pour le percer plus facilement.
28

14
11/18/2021

Autres variantes de DES:


Pour plus de robustesse et d’adaptation à l’évolution matérielle
actuelle
Double DES: Deux étapes de cryptage avec deux clés différentes
K1 K2
Texte Texte Texte
original Cryptage crypté1 Cryptage crypté2

Triple DES: 3 clés de 56 bits


K1 K2
Texte Texte Texte
original Cryptage crypté1 Décryptage crypté2

Texte Cryptage
crypté3
29
K3

Autres algorithmes symétriques


Taille du
Algorithmes Concepteur(s) Taille de la clé Commentaires
bloc
RC4 Ron Rivest (1994) Variable, 128 Adapté aux codages rapides
(Continu) bits en général 10 fois plus rapide que DES
RC2 Ron Rivest Variable 64 bits Équivalent à DES
DES (Data Encryption IBM (1976) 56 bits 64 bits Relativement rapide
Standard) Destiné au chiffrement de gros
volumes de données
Clé cassée en 1998
Triple DES IBM 3 clés 64 bits Remplace DES
et dérivé de DES différentes, 168
bits
IDEA (International Data X.Lai et J. Massey 128 bits 64 bits Conçu pour une efficacité
Encryption Algorithm) (1990) maximale lors de calculs logiciels
Nécessite une licence
BLOWFISH Bruce Schneier Variable, de 32 64 bits Rapide
(1994) à 448 bits Gratuit
CAST-128 Carlisle Adams, et 128 bits 64 bits Alternative à IDEA et Blowfish,
Stafford Tavares mais moins utilisé qu’eux
Rijndael Joan Daemen, et Variable 128 bits Considéré comme l’algorithme
(finaliste la compétition NIST Vincent Rijmen 128, 192 ou 256 de chiffrement le plus fiable
de l’AES(Advanced bits actuellement
Encryption Algorithm))

30

15
11/18/2021

4.2 Modes de cryptage par bloc

Modes de cryptage:
Avec DES (1981): ECB, CBC, …
Avec AES (2001): CTR (Counter mode)
Stockage de données (2010) : XTS pour AES
Parmi les objectifs de modes d’opération des algorithmes de cryptage
par bloc:
Utiliser la même clé pour chiffrer plusieurs messages
Rendre l’analyse passive du trafic plus difficile: cacher le
maximum d’informations sur le contenu d’un cryptogramme et le
format d’un message.
• Pour tester tout les algorithmes et les modes cités, utilisez des outils en ligne comme:
https://www.tools4noobs.com/online_tools/decrypt/
• Les diagrammes fonctionnels de tous les modes de cryptage sont disponibles sur le lien:
http://www.crypto-it.net/eng/theory/modes-of-block-ciphers.html 31

ECB (Electronic CodeBook)


Le plus simple: chaque bloc est crypté ou décrypte
indépendamment des autres

32

16
11/18/2021

ECB (Electronic CodeBook)

Avantages et inconvénients
+ Independence de blocs
+ l’erreur dans un cryptogramme n’affecte pas le suivant
̶ Ne permet pas de préserver convenablement le format et le
contenu du cryptogramme (deux messages identiques cryptés
sous le contrôle de la même clé engendreront le même
cryptogramme)
̶ Clé non réutilisable
̶ Padding de blocs
Recommandé pour les messages dont la taille ne dépasse pas un
seul bloc
33

CBC (Cipher Block Chaining)


Les cryptogrammes sont inter-reliés, ci se calcule sur la base du
bloc xi et ci-1 et c0 correspond un vecteur d’initialisation IV

34

17
11/18/2021

CBC (Cipher Block Chaining)


Avantages et inconvénients
+ Clé réutilisable ( avec des IV différents ou un nombre
aléatoire)
+ Préserver le format et le contenu du cryptogramme, si au moins
le IV change
̶ Padding de blocs est nécessaire
̶ La dépendance à l’ordre du chainage lors de cryptage et
décryptage de blocs
̶ Propagation d’erreurs (au deux blocs suivants uniquement)

35

CTR (Counter)
Mode de chiffrement par flot appliqué au cryptage par bloc
Dans ce mode, le vecteur d’initialisation IV est remplacé par un
compteur (nombre aléatoire (nonce) + numéro d’ordre)
Un compteur correspond à une fonction capable de générer une
séquence imprédictible ( à long terme)
La séquence est incrémentée pour chaque bloc et changée pour
chaque message
Avantages et inconvénients
+ La réutilisation de la clé est possible (mais pas le compteur)
+ L’implémentation parallèle est appropriée pour ce mode
+ Approprié pour préserver le format et le contenu du
cryptogramme
+ Prè-calcul des séquences est possible
̶ Compteur non réutilisable
Recommandé pour crypter un grand volume de données 36

18
11/18/2021

Tableau récapitulatif des modes de cryptage

ECB CBC CTR


Type de Bloc Bloc Stream
cryptage
Sécurité Faible Forte Forte
Parallélisme Possible Non Possible
Padding Oui Oui Non
Accès Oui Non Oui
aléatoire*
Pré-calcul Non Non Oui

*Accès aléatoire: le cryptage ou le décryptage d’un bloc est indépendant des autres

37

5. Cryptage asymétrique
Problèmes de systèmes de cryptage symétriques
Les clés:
- Le secret des informations cryptées: dépend intrinsèquement de
la confidentialité de la clé secrète
- La clé secrète doit être partagée entre les entités qui cherchent
à échanger de données
Surcharge des entités: chacune détient n clés pour pouvoir
communiquer avec n autres entités.
Il faut au moins un canal sécurisé pour l’échange de la clé.

38

19
11/18/2021

Les solutions:
Solution : KDC (Key Distribution Center)
- Comment implanter le KDC (centralisée, distribuée, …)
- Problème de panne du KDC
- Problème de la violation du secret de flux (KDC dispose de
toutes les clés)….
La solution la plus appropriée: au lieu d’une seule clé secrète
partagée et modifiée (fréquemment)
- Chaque entité dispose d’une paire de clés
- Une clé publique, ouvertement publiée, et
- Une clé privée, jamais partagée avec aucune autre entité

 Les cryptosystèmes asymétriques


39

Pour les systèmes asymétriques


Chaque utilisateur possède une paire de clé (e,d) différente des
autres.
Une clé publique e, pour le cryptage.
Une clé privée d est la seule capable de déchiffrer les messages,
initialement, chiffrés avec e.
Les algorithmes de cryptage asymétriques:
Fondés sur des fonctions mathématiques déduites des problèmes
difficiles.
Le logarithme discret d’un nombre: Deffie-Hellman et ElGamal
(1976 )
La factorisation de nombres entiers: RSA(1978)
40

20
11/18/2021

Problème de factorisation de nombres entiers:


Soit n un nombre entier positif,
 Trouver les facteurs premiers de n :
n  p1e1 p2e2 ... pkek
Avec pi sont deux à deux distincts et ei  1

Problème de logarithme discret:


Soient p un nombre premier,
 le générateur du groupe Z*p et
Un élément   Z*p,
 Trouver un entier x, 0≤ x ≤ p-2 tel que
x   (mod p) (log()=x)*
*Voir le rappel mathématique ou le chapitre 2 du « Handbook of cryptography » disponible sur le lien:
http://cacr.uwaterloo.ca/hac/about/chap2.pdf 41

Le problème du système RSA:


Soient n, e et c trois entiers positifs
n=pq avec p et q sont deux premiers, gcd(e, (p-1)(q-1))=1
 Trouver un entier m, me  c (mod n)
Le problème de Deffie-Hellman (logarithme discret):
Soient, p un nombre premier,
 le générateur d’un groupe Z*p et
Les éléments a mod p et b mod p,
 Trouver ab mod p
Le fonctionnement d’un cryptosystème à clé publique (voir figure 4)

42

21
11/18/2021

Attaques
passives

e
Source de clé
Canal non-sécurisé

d
Encryptage c Décryptage
Ee(m) = c Canal non-sécurisé Dd(c) = m

m m
Source de
message Destination

A B
43
Figure 4: fonctionnement d’un cryposystème asymétrique

L’algorithme RSA:
Génération de clés de chaque entité:

Génération des clés RSA


Output: chaque entité génère sa paire de clés
1.Générer deux larges entiers distincts et premiers p et q
2.Calculer n = pq et  = (p-1)(q-1)
3.Choisir e, 1<e</ gcd(e, )=1
4.Utiliser l’algorithme euclidien étendu pour calculer un
entier unique d, 1< d < / ed 1 mod 
5.La clé publique de cette entité est (n,e) et la clé privée est d

Exemple: p= 2357 et q= 2551:


n= 6012707 ,  =(p-1)(q-1) =6007800 et e =3674911
trouver d, ed  1(mod ), l’algorithme euclidien d= 422191
La clé publique (n = 6012707, e = 3674911) et la clé privée (d =
422191)
44

22
11/18/2021

Algorithme de cryptage/décryptage RSA


Output :B chiffre le message m pour l’émettre à l’entité A, A
déchiffre le cryptogramme reçu
1. Encryptage : Les étapes faites par B
a) Obtenir la clé publique (n, e ) de l’entité A
b) Représenter le message m dans l’intervalle [0, n-1]
c) Calculer c = me mod n
d) Émettre le cryptogramme c à l’entité A
2. Décryptage :L’étape exécutée par A
a) Appliquer la clé prive d pour retrouver m avec m = cd mod n

Exemple: m= 5234673, (n = 6012707, e = 3674911)


1. Encryptage: c = me mod n = 52346733674911 mod 6012707 =
3650502
2. Décryptage : d = 422191, cd mod n = 3650502422191 mod
6012707 = 5234673
45

5.1 Comparaison des systèmes symétriques et asymétriques

Systèmes symétriques Systèmes asymétriques


Avantages
Cryptage rapide : Mb/s  Clé privée est l'unique à
Clé courte maintenir secrète.
Composition des  Troisième tiers pour
transformations possible. l'administration des clés de
Peut être utilisé comme réseau ne peut savoir que les
primitive pour un autre clés publiques.
mécanisme de cryptage  Fréquence de changement des
(génération de nombres clés est faible(une fois par
aléatoires,… ). plusieurs sessions).
 Signature efficace avec clé
moins longue.

46

23
11/18/2021

Systèmes symétriques Systèmes asymétriques


Inconvénients
Clé de session doit rester secrète Cryptage lent : Kb/s
auprès des deux entités en Clé longue
communication
Nécessité d’un troisième tiers
capable de connaître les
informations confidentielles des
entités.
Changement de clé à chaque début
de session
Signature nécessite une large clé

 Pour profiter des avantages des systèmes symétriques et


asymétriques, de cryptosystèmes hybrides ont été proposés.
47

5.2 Combinaison des systèmes symétriques et asymétriques

Les cryptosystèmes à clé publique sont très coûteux (temps et


communication) mais sont les plus sûrs.
Les cryptosystèmes à clé secrète sont très performants (temps de
calcul et coût de communication ) mais moins robustes que ceux à clé
publique.
Idée: combiner les deux systèmes:
Rapidité de cryptage.
Faible consommation de ressources de communication.
Amélioration considérable du niveau de sécurité.
P. Zimmerman (1991) a proposé le premier algorithme qui combine
les deux techniques de cryptage : PGP (Petty Good Privacy).
48

24
11/18/2021

Les clés secrètes des sessions uniquement sont échangées cryptées


sous le contrôle d’une clé publique.
Les échanges sont cryptés sous le contrôle de clés secrètes.

Clé secrète

Clé privée de B
Données Données
Entité en clair chiffrées
A
Enveloppe
Clé publique de numérique
B Clé secrète
Clé secrète
Enveloppe Données Données
numérique en clair
chiffrées

Figure 5: Fonctionnement de l’algorithme PGP 49

6. Fonction de hachage

Le chiffrement permet d’assurer la confidentialité des données


Les techniques de condensation ou hachage peuvent être combinées
avec celles de cryptage pour assurer:
L’authentification des entités en communication
L’intégrité des données
Le hachage utilise une fonction qui transforme une entrée de taille
variable en une sortie de taille fixe appelée la valeur de hachage (ou
le condensât ou le digest).
 C’est l’empreinte du message initial.

50

25
11/18/2021

Input: taille Fonction de Output:


arbitraire hachage taille fixe

Principales propriétés de fonctions de hachage:


Compression: la fonction de hachage h fait correspondre un input
x binaire de taille quelconque à un output h(x) binaire de taille fixe
n.
Facilité de calcul : étant donnée h et un input x, h(x) doit être
facile à calculer (y = h(x), x c’est la pré-image de y).
Reproductibilité: Pour une entrée donnée, la fonction de hachage
doit toujours retournée la même valeur.

51

Utilisation des fonctions de hachage:


La détection de modifications ou manipulations, MDC
(Modification Detection Code) ou aussi MIC (Message Integrity
Code) : intégrité
L’authentification de messages, MAC (Message Authentication
Code): intégrité ainsi que l’authenticité de la source des
informations
MDC: Deux principales classes de fonctions de hachage:
Fonctions à sens unique ou OWHF (One-Way Hash Functions)
Fonctions résistante aux collisions ou CRHF (Collision
Resistant Hash Functions)
 Deux classes de fonctions de hachage sans clé (Unkeyed Hash
Functions)
52

26
11/18/2021

MAC: les fonctions de hachage utilisées forment l’une des classes


des fonction à clé (Keyed Hash Functions).

Fonctions de hachage

Sans clé Avec clé

MDC
Autres applications MAC
OWHF(1+2) CRHF(1+2+3)

Les fonctions de chacune des classes respectent différentes


propriétés spécifiques ( exemple: les OWHF doivent respecter les
propriétés 1 et 2 parmi les suivantes).

53

Autres propriétés de fonctions de hachage:


1. La résistance à la préimage : pour la plupart des outputs, il est
infaisable en un temps raisonnable de trouver une préimage x′ telle
que h(x′) = y pour tout y donné dont l’input correspondant n’est pas
connu (1= one-way).
2. La résistance à la seconde préimage : étant donné x, il est
infaisable en un temps raisonnable de trouver une deuxième
préimage x′  x telle que h(x) = h(x′). (2= Weak Collision
Resistance).
3. La résistance à la collision : il est infaisable en un temps
raisonnable de trouver deux inputs x et x′ telle que h(x) = h(x′). (3=
Strong Collision Resistance).

54

27
11/18/2021

Autres applications des fonctions de hachage


Confirmation de connaissances (knowledge confirmation): elles
facilitent la confirmation de l’exactitude des valeurs de données et
la possession des données sans pour autant les divulguer (les mots
de passe, les clés de cryptage, …)
Dérivation de clés: calcul de séquences de nouvelles clés à partir
des anciennes (tout en préservant le secret de flux) et la génération
de séquences de mot de passe à utilisation unique (one time
password (OTP))
Génération de nombre pseudo-aléatoires (PNG)
Exemples de fonctions de hachage

55

Sans clé Avec clé


HF N M HF N M K
MDC2* 64 128 MD5-MAC - 64 <=128
MDC4* 64 128 MAA 32 32 64
MD4** 512 128
MD5** 512 128
RIPEMD 128** 512 128
SHA** 512 160
RIPEMD 160** 512 160

*: basée sur le processus de cryptage par bloc


**: basée sur MD4 (CHF: customized hash function, sans
réutilisation des composants de systèmes existants (cryptage, …),
l’unique objectif: une fonction de hachage performante) : les plus
utilisées
N: taille du bloc traité à chaque itération
M: taille du code de hachage 56

28
11/18/2021

Fonctionnement de base de fonctions de hachage: modèle détaillé


Input initial x
Fonction de hachage h
prétraitement
Ajout des bits de padding

Ajout de la taille de l’input x


Formater l’ input x=x1x2…xt
Traitement itératif
Fonct. compression f
Hi-1 xi
f
Hi
H0=IV
Ht

Output h(x)=g(Ht )
H0=IV, Hi=f(xi, Hi-1) 1  i  t et h(x)= g(Ht) , g est une transformation
utilisée dans l’étape finale (faire correspondre n-bits de la variable de
57
chaînage en un code de m-bits, peut être une fonction d’identité )

L’algorithme de hachage MD5


1.Ajouter du Padding (bourrage)

Message initial + Padding(1-512 bit)

Message initial Padding(1-512 bit)

2.Ajouter la aille du message original

Message initial Padding(1-512 bit) + length

Message initial Padding(1-512 bit) Length*

64
Message à traiter
*:Si la taille du message initial >64 bits: length= taille message mod 264 58

29
11/18/2021

3.Diviser le message à traiter en blocs de 512-bits

Message à traiter

bloc1 bloc2 … blocn

512 bits 512 bits 512 bits

4.Initialiser:
4.1: Les variables de chaînage
H0 H1 H2 H3

H0 01 23 45 67
H1 89 AB CD EF
H2 FE DC BA 98
H3 A7 B9 32 15 59

4.2: Les constantes (32 bits) (t[k])


- Pour k de 0 à 63
- Evaluer la constant t[k] de 32 bits
4.3: Les nombres de bits de décalage à gauche (0..15)
s[0, …, 15]= [5,0,1,3,9,11,10,2,7,4,6,8,12,16,14,13]
s[16, …, 31]= […]
s[32, …, 47]= […]
s[48, …, 63]= […]
4.4: Les sous-blocs utilisés (0..15)
z[0, …, 15]= […]
z[16, …, 31]= […]
z[32, …, 47]= […]
z[48, …, 63]= […]

60

30
11/18/2021

5.Traiter les blocs


5.1: Copier les variables de chaînage dans des variables temporaires
(A,B,C,D)(H0,H1,H2,H3)
5.2: Diviser le bloc courant en 16 sous-blocs de 32 bits (M[i] sous-
blocs 1  i  16 )
5.3: On a 4 étapes de calculs
5.3.1: 1ère Etape: (0  k 15)
16 sous-blocs Des constantes (t[k])

1ère étape

A B C D

Le nouvel vecteur
de chaînage pour A B C D 61
la 1ère étape

5.3.1.1: Faire le calcul de l’étape (M[i] sous-blocs 1  i  16 et t[k]


constantes 0  k 15)

A B C D

Process p

add

M[z[k]] add

t[k] add

s[k] shift

add

A B C D
62

31
11/18/2021

Après 16 itérations, la valeur de la variable B peut être:


B=B + ((A+Process p(B,C,D)+M[z[k]]+t[k])<<<s[k])
A,B,C,D : variables de chaînage
Process p : opérations non-linéaires, une pour chaque étape
<<< s : shift circulaire à gauche de s[k] bits
5.3.1.2: Mettre à jour les variables temporaires (tmp= D)
D=C
C=B
B=B + ((A+Process p(B,C,D)+M[z[k]]+t[k])<<<s[k])
A=tmp
5.3.1.3:Passer aux étapes suivantes respectivement pour k: (16 
k 31), (32  k 47) et (48  k 63): les mêmes
opérations que l’étape précédente avec les changements
suivants sur l’opération Process p

63

Étape Process p
1 (B et C) ou inclusif (non B et D).
2 (B et D) ou inclusif (C et non D).
3 B ou exclusif C ou exclusif D.
4 C ou exclusif (B ou inclusif non D).

Fin de traitement des étapes


5.4 Mettre à jour les variables de chainage
H0=H0+A
H1=H1+B
H2=H2+C
H3=H3+D
5.5: Traiter le bloc suivant ( aller à 5.1)
Fin de traitement de blocs
6. Retourner le code de hachage: concaténation des variables de
64
chainage( digest du message initial= H0+H1+H2+H3 )

32
11/18/2021

Les autres fonctions de hachage peuvent avoir un nombre différent


d’étapes et d’itérations par étape
Algo. Taille Étapes itérations/étape Vitesse
du code relative
MD4 128 3  16 1.00
MD5 128 4  16 0.68
RIPMED 128 128 4  16 paires(en //) 0.39
SHA-1 160 4  20 0.28
RIPMED 160 160 5  16 paires(en //) 0.24

La fonction MD4 est 4 fois plus rapide que le RIPMED-160 (76%).


SHA (proposée par NIST 1994) est la plus appliquée.
SHA-1 et SHA-2(en 2000) sont normalisées et considérées plus sûres
que MD5.
65
SHA-2 permet des codes de hachage sur 224, 256 ou même 512 bits.

Parmi les attaques aux fonctions de hachage

Les attaques d’anniversaire: Yuval 1979


- On dispose de deux messages : légitime, M avec un code de
hachage h(M) et frauduleux, M’ avec h(M’), h(M’) et h(M) sont
sur n bits
- Générer, à partir de M, 2n/2 messages ayant le même sens. On
calcule et stocke leurs condensats.
- On génère, à partir de M’, des textes ayant la même signification
que lui.

66

33
11/18/2021

- Pour chacun d’entre eux, on calcule la fonction de hachage.


- Si le condensât est égal à l’un des 2n/2 condensats
correspondant aux messages ayant le même sens que M,
alors on note M1 ce synonyme de M et M2 le synonyme de
M’ ayant le même condensat que M1.
- On envoie M1 et plus tard, lorsque l’on voudra se rétracter,
on dira avoir envoyé M2.

 Ce type d’attaque peut être pratiqué par des entités malveillantes qui
signent ou vérifient la signature d’un message
 Cette attaque ne dépend que de la taille du condensat: la fonction la
plus robuste est celle qui génère un code plus étendu.

67

Les attaques de pseudo-collision: Boer et Bosselaers 1993


- Au lieu de chercher deux messages conduisant au même
condensat, on fixe le message, mais on change les vecteurs
d’initialisation afin d’obtenir deux condensats identiques avec
deux vecteurs d’initialisation différents.
- Il est possible de découvrir une valeur du vecteur d’initialisation
pour laquelle on peut trouver plus facilement deux messages
ayant le même condensat.
 MD4, MD5 et RIPEMD ont été percées par ces attaques
 Il faut fixer les valeurs des vecteurs d’initialisation pour éviter ces
attaques.

68

34
11/18/2021

7. Signature digitale
Cette primitive cryptographique permet :
Détecter les modifications subites par les données transmises
Identifier l’entité qui a envoyé ces données.
Assurer la non répudiation des messages émis.
Les algorithmes de signature digitale permettent la génération et la
vérification de signatures.
Propriétés :
L’algorithme de signature est une transformation:
- SA: K M S (K, M, S)
- K: l’ensemble de clés, M: l’ensemble de messages et S: l’espace
de signatures.
69

- Permet d’associer la signature s à la paire (kA, m) avec m  M


et kA  K.
- SA est la transformation de signature de l’entité A qui doit être
gardée secrète (aussi la clé kA).

L’algorithme de vérification : une transformation


- VA: K M  S{vrai, faux}
- Permet de vérifier si la signature s correspond à la paire (k’A,
m).,
- La transformation de vérification, VA et k’A, sont les
informations publiques de l’entité A

70

35
11/18/2021

Deux principales catégories des algorithmes de signature digitale :


avec annexes ou avec recouvrement de messages
Avec annexes: le message initial est nécessaire pour la
vérification (exemple: DSA, ElGamal, …)
Avec recouvrement de messages: la signature est utilisée aussi
pour retrouver le message initial (exemple: RSA, Rabin, …)

Digital Signature Algorithm (DSA) :


Proposé par NIST en 1991,
Devenu un standard FIPS 186 (Federal Information Processing
Standard) DSS ,
Une variante de l’algorithme proposé par ElGamal
Les étapes de l’algorithme DSA: Génération de clés en plus de la
génération et la vérification de signature
71

Algorithme : Générer les clés DSA


1. Sélectionner un nombre premier q tel que 2159 < q < 2160.
2. Choisir un entier long, tel que 0  long  8.
3. Sélectionner un nombre premier p tel que 2511+64long < p <
2512+64long et q divise (p-1).
4. Sélectionner un entier g tel que g < p avec (1  g  p-1).
5. Calculer  = g(p-1)/q mod p.
6. Si =1, on le recalcule avec un nouvel entier g, l’étape 4.
7. Sélectionner un entier a tel que 1  a  q-1.
8. Calculer y = a mod p.
La clé publique est (p, q, , y).
La clé privée est a.
72

36
11/18/2021

Algorithme : Générer la signature DSA


Input : m le message et h() la fonction de hachage utilisée.
1. Sélectionner un entier secret k tel que 0 < k <q.
2. Calculer r = (k mod p) mod q.
3. Calculer k-1 mod q.
4. Calculer s = k-1[h(m) +a r] mod q.
La signature de m est le couple (r,s).

Algorithme : Vérification la signature DSA


Input: les clés (p, q, , y), le message m et la signature de m: (r,s).
1.Vérifier que 0 < r <q et 0 < s <q.
2.Calculer u = s-1 mod q et h(m), v = u.h(m) mod q, w = r u mod q et
z = (v yw mod p) mod q.
Si z == r, la signature est acceptée.
73

RSA Signature: norme ANSI 9.31-1 et PKCS 1 (édité par RSA cop.)

Algorithme : Générer les clés PKCS1


1. Choisir, au hasard 2 grands nombres premiers p et q.
2. Calculer n = p.q
3. Calculer j = (p-1).(q-1)
4. Sélectionner un entier impair e avec 1 < e < j .
5. Calculer un entier d tel que : e.d = 1 mod j
La clé publique est (e,n).
La clé privée est (d,n).

74

37
11/18/2021

Algorithme : Générer la signature PKCS 1


Input : message m
1. Transformer m en utilisant la fonction R :M [0, n-1]. (R est une
fonction de redondance qui peut être une simple permutation
réversible du message initial)
2. Calculer s = (R(m))d mod n.
La signature du message m est s

Algorithme : Vérifier la signature PKCS 1


Input: clé (e,n) et la signature de m, s
1. Calculer m’= se mod n
2. Vérifier m’[0,n-1], sinon rejeter la signature
3. Recouvrir m= R-1(m’)
75

Remarques:
Si la signature RSA est émise seule, il est possible de trouver le
message initial en un temps réduit si la fonction de redondance
n’est pas sûre
Pour éviter cette attaque:
- La fonction de redondance appropriée doit être choisie ou

- La signature doit être cryptée sous le contrôle de la clé publique


de la destination (aucune autre entité ne peut vérifier la signature
autre que la destination)
Il est possible de générer des signatures avec annexes en utilisant
l’algorithme RSA. Ceci est possible si la fonction de redondance
est remplacée par une fonction de hachage h() à laquelle on ajoute
du bourrage ( la plus adoptée en pratique).

76

38
11/18/2021

8. Certification
Problème de gestion de clés dans les cryptosystèmes à clés secrètes
Nombre de clés.
Disponibilité des clés (clé d’un vendeur).
Solution: KDC (Key Distribution Center).
Problèmes :
Panne du KDC.
Violation de la confidentialité.
Solution: cryptage à clé publique.
Problèmes d’intégrité de clés publiques.
Solution: CA (Certification Authority) ou aussi le troisième tiers de
confiance. 77

Rôles des autorités de certification


Certification et révocation de certificats de clés ( le certificat
atteste qu'une clé publique est bien possédée par une organisation
ou personne. Les certificats attribués par ces autorités contiennent
les clés publiques, les signatures des clés et autres informations).
Génération de clés: gèrent les couples de clé privée et clé publique
Dépôt des clés: les autorités de certifications peuvent stocker les
clés privées.
Base de données de certificats: consultation et vérification de
certificats
Datation: certification d'un message à un moment donné ;
attachement d’une date de confiance à une transaction ou à un
message

78

39
11/18/2021

Les certificats sont délivrés d’une manière hiérarchique.


Au sommet de la hiérarchie, il y a une ou plusieurs autorités de
certification capables de communiquer les unes avec les autres. Ces
autorités certifient d’autres de niveaux inférieurs.
Lors de la vérification de la validité d’un certificat, on remonte dans
l’arbre aussi haut que nécessaire pour trouver une autorité de
certification commune. Par exemple, si les entités E1 et E5
s’échangent des certificats, il faudra remonter jusqu’à CA2 pour
prouver les valides.

CA1

CA2 CA3 Hiérarchie de


CA4 CA5 CA6 CA7 CA8 CAs

E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12


79

(ECA ,DCA)
CA
CE1 CE2 … CEn

E1 E2 En
(E1 ,D1) (E2 ,D2) …
(En ,Dn)
Clés publique et privé de l’autorité: ECA et DCA
CEx: le certificat de la clé publique de l’entité x comporte:
Clé publique de x , Ex
Signature de Ex avec DCA
80

40
11/18/2021

Exemple de certification X509*

Version v1
Serial number 2A 17 EF 73 97 07 74 7B E2 4B FB 61 95 DB 4D 77
Signiature
algorithm: md5withRSAEncryption
Issuer
C= US
O=RSA data security, Inc.
OU=Secure Server Certification Authority
Validity
not before Sat Jan 28 02:21:56 1995
not after Thu Feb 15 02:21:55 1996
Subject
C= US
ST= Washington
L=Seattle
O=Amazon.com, Inc.
OU=Software
CN=www.amazon.com

*Tous les détails des attributs d’un certificats X509 sont disponible dans le RFC 5280 disponible sur le
lien: https://tools.ietf.org/html/rfc5280 81

Subject public key


algorithm: rsaEncryption
modulus
bit length 1024
value:
00 C8 1B 8B FA 40 C3 5B E3 46 3F 17 10 56 19 64 C4 F4 F9
CC …
77 …
C3 …
60 …
E5 …
8A C1 06 B6 6D EA 56 B8 7E 68 5D AF 4D 85 AF
public exponent
bit length. 2
value 03
Signature
value:
03 43 60 4B …
… A7 37

82

41
11/18/2021

9. L’infrastructure PKI: Public Key Infrastructure

PKI( Public Key Infrastructure ): Une PKI est une infrastructure


intégrée permettant de fournir un ensemble de services de sécurité sur
la base de la cryptographie à clé publique.
L’infrastructure englobe différentes entités, protocoles et services du
réseau, afin de gérer les clés publiques à grande échelle.
Rôle: la gestion des listes étendues de clés publiques, de plusieurs
entités reparties dans un réseau
Cette infrastructure implique des autorités de certification (CA)et
d’enregistrement (RA)

83

entite1
CA RA entite2

entiteN

RA:
Accepte et vérifie les informations d’enregistrement d’un
utilisateur.
Génère les clés d’un ou de plusieurs utilisateurs.
Accepte et autorise les demandes de sauvegarde et de récupération
de clés.
Accepte et autorise les demandes de révocation de certificats.
84

42
11/18/2021

Parmi les services offerts par une PKI, il y a:


Génération et enregistrement des clés publiques.
Certification de clés.
Révocation et vérification de statut de certificats.
Stockage et distribution de certificats.
Sauvegarde et récupération de clés en cas de perte.
Mise à jour de clés (à la fin de leur validité).
Maintient de temps de référence (Secure timestamping): pour tous
les intervenants de la PKI.
Certification croisée (cross-certification): permettre aux entités de
différentes autorités de vérifier les certificats (trust model)…

85

Avantages:
Sécurité: une infrastructure intégrée sans maillons faibles
Tout en un: différents services sont assurés simultanément (non-
répudiation, authentification forte, key management, VPN, …)
Interopérabilité inter et intra entreprise: PKI fondée sur des
normes (X.509, PKI, PKCS, PKIX, …)
Inconvénients
Coût de mise en place: produits coûteux, compétences rares
Complexité (intégration, mise en place, …)
La génération de clés !!!

86

43
11/18/2021

Différentes des primitives cryptographiques (source: « Handbook of


appleid cryptography »)

87

Un petit rappel mathématique* …

a b (mod p) : a est congrue à b modulo p si et seulement si : a-b


est divisible par p (exemple: 17  2 (mod 5) )
Phi d’Euler: ()
- Si p est premier alors: (p)=p-1
- Si p et q sont premiers et n=p.q, alors (p)=(p-1).(q-1)
Soit, p un nombre premier, le groupe multiplicatif Z*p est défini
par: Z*p ={x  Z*p / gcd(x, p)= 1}
  Z*p est le générateur du groupe si t  1 (mod p) et t =(p),
  Z*p ,  i =i

*Pour plus de détails sur la théorie de nombres: http://cacr.uwaterloo.ca/hac/about/chap2.pdf

88

44

Vous aimerez peut-être aussi