Vous êtes sur la page 1sur 47

Cryptographie

Dr. Naouel Ben Salem Grati

Plan Général du cours


 Introduction
 Algorithmes standards de cryptographie
 Chiffrement symétrique
• Chiffrement de flux ((Stream cipher)
p )
• Chiffrement par blocs (Block cipher)
 Chiffrement asymétrique
 Fonctions de hashage
 Intégrité et Authentification
• HMAC
• Signatures
 Gestion des clés
 Distribution des clés secrètes
 Génération et distribution des certificats
 Protocoles de sécurité et standards divers

1
Plan Général du cours
 Introduction
 Algorithmes standards de cryptographie
 Chiffrement symétrique
• Chiffrement de flux ((Stream cipher)
p )
• Chiffrement par blocs (Block cipher)
 Chiffrement asymétrique
 Fonctions de hashage
 Intégrité et Authentification
• HMAC
• Signatures
 Gestion des clés
 Distribution des clés secrètes
 Génération et distribution des certificats
 Protocoles de sécurité et standards divers

Introduction
 Cryptographie: vient du grec kruptos ("caché") et graphein ("écrire").
 Vocabulaire:
 chiffrement : transformation à l'aide d'une clé de chiffrement d'un
message en clair (dit texte clair) en un message incompréhensible (dit
texte chiffré) si on ne dispose pas d'une clé de déchiffrement (en
anglais encryption) ;
 cryptogramme : message chiffré ;
 décrypter : retrouver le message clair correspondant à un message
chiffré sans posséder la clé de déchiffrement (terme que ne possèdent
pas les anglophones, qui eux « cassent » des codes secrets) ;
 cryptographie : étymologiquement « écriture secrète », devenue par
extension l'étude
l'é de cet art;
 cryptanalyse : science analysant les cryptogrammes en vue de les
décrypter ;
 cryptologie : science regroupant la cryptographie et la cryptanalyse

2
Un peu d’histoire
 Le premier « document » chiffré connu remonte à l'Antiquité. Il
s'agit d'une tablette d'argile, retrouvée en Irak, et datant du
XVIe siècle av. J.-C. Un potier y avait gravé sa recette secrète en
supprimant des consonnes et en modifiant ll'orthographe
orthographe des mots.
mots
 La technique grecque: Entre le Xe et VIIe siècle av. J.-C. Technique
de chiffrement par transposition, c'est-à-dire reposant sur le
changement de position des lettres dans le message, en utilisant un
bâton de diamètre déterminé appelée scytale. On enroulait en hélice
une bande de cuir autour de la scytale avant d'y inscrire un
message. Une fois déroulé, le message était envoyé au destinataire
qui possédait un bâton identique,
identique nécessaire au déchiffrement
déchiffrement.

Un peu d’histoire
 La technique des Hébreux: À partir du Ve siècle av. J.-C., l'une des
premières techniques de chiffrement est utilisée dans les textes
religieux par les Hébreux qui connaissent plusieurs procédés.
L plus
Le l connu appelélé Atbash
Atb h estt une méthode
éth d ded substitution
b tit ti
alphabétique inversée. Elle consiste à remplacer chaque lettre du
texte en clair par une autre lettre de l'alphabet choisie de la
manière suivante : A devient Z, B devient Y, etc.
 Nabuchodonosor: Aux alentours de -600, Nabuchodonosor, roi de
Babylone, employait une méthode originale : il écrivait sur le crâne
rasé de ses esclaves, attendait que leurs cheveux aient repoussé, et
il les envoyait à ses généraux.
généraux Il suffisait ensuite de raser à nouveau
le messager pour lire le texte. Il s'agit toutefois de stéganographie
à proprement parler et non pas de cryptographie : l'information est
cachée et non pas codée.
On remarque dans ce procédé une certaine fiabilité : en effet
l'interception du message par un tiers est tout de suite remarquée.
6

3
Un peu d’histoire
 Les premiers « vrais » systèmes de cryptographie: Il faut
attendre -200 pour voir apparaître les premiers « vrais » systèmes
de cryptographie. Ce sont essentiellement des chiffrements par
substitution.
substitution
Il existe différents types de substitutions :
 mono-alphabétique : remplace chaque lettre du message par une
autre lettre de l'alphabet
 poly-alphabétique : utilise une suite de chiffres mono-
alphabétiques (la clé) réutilisée périodiquement
 polygrammes : substitue un groupe de caractères dans le
message par un autre groupe de caractèresè

Un peu d’histoire
 Le code de César: Le code de César est la méthode
cryptographique, par substitution mono-alphabétique, la plus
ancienne (Ier siècle av. J.-C.).
 Cette
C tt méthode
éth d estt utilisée
tili é dans
d l'armée
l' é romaine
i ett bien
bi qu'elle
' ll soitit
beaucoup moins robuste que la technique Atbash, la faible
alphabétisation de la population la rend suffisamment efficace.
 Méthode de chiffrement: Décaler les lettres de l'alphabet d'un
nombre n. Par exemple, si on remplace A par D (n=3), on remplace B
par E, C par F...
 Le texte que nous souhaitons coder étant le suivant : « décaler les
l tt s d
lettres de l'
l'alphabet
l h b t»
 Le texte codé est alors : « ghfdohu ohv ohwwuhv gh o'doskdehw »

4
Un peu d’histoire
 Le code de César:
 Inconvénient: Ce système est très peu sûr, puisqu'il n'y a que 26
lettres dans l'alphabet donc seulement 25 façons de chiffrer un
message avec lel code
d d de César
Cé (on
( ne peutt substituer
b tit une llettre
tt par
elle-meme). Pourtant sa simplicité conduisit les officiers sudistes à
le réemployer durant la guerre de Sécession. L'armée russe en fit
de même en 1915.
 Un système connu et pourtant Le code de César a été utilisé sur des
forums internet sous le nom de ROT13 (rot-ation de 13 lettres ou
A→N...). Le ROT13 n'a pas pour but de rendre du texte
confidentiel mais plutôt d
confidentiel, d'empêcher
empêcher la lecture involontaire (d
(d'une
une
réponse à une devinette, ou de l'intrigue d'un film, etc.). Son
utilisation est simple : il suffit de re-chiffrer un texte, codé en
ROT13, une deuxième fois pour obtenir le texte en clair.

Un peu d’histoire
 Le chiffre de Vigenère est un système de chiffrement, élaboré par
Blaise de Vigenère (1523-1596), diplomate français du XVIe siècle.
 C'est un système de substitution poly-alphabétique ou de
chiffrement polyalphabétique.
polyalphabétique Cela signifie qu
qu'il
il permet de
remplacer une lettre par une autre qui n'est pas toujours la même,
contrairement au chiffre de César ou à ROT13 qui se contentaient
d'utiliser la même lettre de substitution. C'est donc un système
relativement plus « solide » que ces deux systèmes.
 Principe: Ce chiffrement introduit la notion de clé. Une clé se
présente généralement sous la forme d'un mot ou d'une phrase. Pour
pouvoir chiffrer
p ff notre texte,, à chaque
q caractère nous utilisons une
lettre de la clé pour effectuer la substitution. Évidemment, plus la
clé sera longue et variée et mieux le texte sera chiffré. Il faut
savoir qu'il y a eu une période où des passages entiers d'œuvres
littéraires étaient utilisés pour chiffrer les plus grands secrets. Les
deux correspondants n'avaient plus qu'à avoir en leurs mains un
exemplaire du même livre pour s'assurer de la bonne compréhension
des messages. 10

5
Un peu d’histoire
 Table de Vigenère:

11

Un peu d’histoire
 Le chiffre de Vigenère: Pour chaque lettre en clair, on sélectionne
la colonne correspondante et pour une lettre de la clé on sélectionne
la ligne adéquate, puis au croisement de la ligne et de la colonne on
trouve la lettre chiffrée.
chiffrée La lettre de la clé est à prendre dans
l'ordre dans laquelle elle se présente et on répète la clé en boucle
autant que nécessaire.
 clé : MUSIQUE
 texte : j'adore ecouter la radio toute la journee

 j'adore ecouter la radio toute la journee


 M USIQU EMUSIQU EM USIQU EMUSI QU EMUSIQU
| |||
| || Colonne O, ligne I : on obtient la lettre W.
| | Colonne D, ligne S : on obtient la lettre V.
| Colonne A, ligne U : on obtient la lettre U.
Colonne J, ligne M : on obtient la lettre V. 12

6
Un peu d’histoire
 Le texte chiffré est alors :
V'UVWHY IOIMBUL PM LSLYI XAOLM BU NAOJVUY.
 Si on veut déchiffrer ce texte, on regarde ppour chaque lettre de la
clé répétée la ligne correspondante, et on y cherche la lettre
chiffrée. La première lettre de la colonne que l'on trouve ainsi est la
lettre déchiffrée.
 V'UVWHY IOIMBUL PM LSLYI XAOLM BU NAOJVUY
 M USIQU EMUSIQU EM USIQU EMUSI QU EMUSIQU
| |||
| || Ligne I,
I on cherche W: on trouve la colonne OO.
| | Ligne S, on cherche V: on trouve la colonne D.
| Ligne U, on cherche U: on trouve la colonne A.
Ligne M, on cherche V: on trouve la colonne J.

13

Un peu d’histoire
 Enigma est une machine électromécanique portable d'origine
allemande, faisant appel à des rotors montés sur cylindres pour le
chiffrement et le déchiffrement de l'information. Plus précisément,
Enigma est une famille de machines,
machines car il en a existé de
nombreuses et subtiles variantes. Enigma fut commercialisée en
Europe et dans le reste du monde dès le début des années 1920. Elle
fut aussi adaptée pour une utilisation par les services militaires et
diplomatiques de nombreuses nations.
 Son utilisation la plus fameuse fut celle de l'Allemagne nazie et de
ses alliés, avant et pendant la Seconde Guerre mondiale.

14

7
Un peu d’histoire
 Bien qu'elle fût considérée avant la Seconde Guerre mondiale
comme sûre par ses utilisateurs, les cryptologues britanniques
furent, à plusieurs reprises et sur de longues durées, capables de
décrypter les messages protégés par ces machines
machines. Les informations
obtenues grâce à cette source leur donnèrent un net avantage dans
la poursuite de la guerre.
 Enigma chiffre les informations en réalisant le passage d'un courant
électrique à travers une série de composants. Le courant est
transmis en pressant une lettre sur le clavier. Après sa traversée
dans un réseau complexe de fils, une lampe indique la lettre
chiffrée.
chiffrée

15

Critères de sécurité

Alice Bob

 Confidentialité (confidentiality): garantie que seules les personnes


autorisées ont accès aux éléments considérés.
 Intégrité des données (data integrity): garantie que les éléments
considérés sont exacts et complets.
 Authentification (authentication): possibilité de vérifier l'identité
d'une entité (personne, ordinateur...), afin d'autoriser l'accès de
cette entité à des ressources (systèmes
(systèmes, réseaux,
réseaux applications...).
applications )
 Non-répudiation (non-repudiation): la possibilité de vérifier que
l'envoyeur et le destinataire sont bien les parties qui disent avoir
respectivement envoyé ou reçu le message.

16

8
Critères de sécurité
 Autres aspects importants
 Disponibilité (availability): garantie que ces éléments considérés
sont accessibles au moment voulu par les personnes autorisées.
 Anonymat (privacy): garantie que ll’identité
identité et/ou la localisation
de l’entité reste(nt) confidentielle(s).

 Un outil fondamental pour assurer la sécurité est la


cryptographie

 La cryptographie et la cryptanalyse sont des outils importants pour


assurer la confidentialité d'une information (stockée ou transitée),
son intégrité (toute modification est détectable), et l'identification
de son origine (l'émetteur peut être identifié).

17

Types d’attaques
Passive

Alice Bob Ecoute

Eve

Alice Bob Modification

Trudy
ctive

Alice Bob Fabrication


Ac

Trudy

Alice Bob Re-jeux

Trudy
18

9
Primitives Cryptographiques
Arbitrary length
hash functions
Primitives sans
One-way permutations
clés
Séquences aléatoires

Stream ciphers
Chiffrement à clé
symétrique Block ciphers
Arbitrary length hash
functions (MACs)
Primitives Primitives à clé
Signatures
de sécurité symétrique
Séquences Pseudo-
aléatoires

Primitives
d’identification

Chiffrement à clé
publique
Primitives à clé
Signatures
publique
Primitives
d’identification 19

Chiffrement

 Le nœud S envoie le message m au noeud R via un canal non


sécurisé.
 S chiffre m en utilisant un algorithme de chiffrement E et
une
n clé
lé de
d chiffrement
hiff m nt K.K
 EK(m) est le texte chiffré (ciphertext)
 m est le texte en clair (plaintext)
 R décrypte le texte chiffré avec un algorithme de
déchiffrement D et d'une clé de déchiffrement K’

20

10
Primitives Cryptographiques
Arbitrary length
hash functions
Primitives sans
One-way permutations
clés
Séquences aléatoires

Stream ciphers
Chiffrement à clé
symétrique Block ciphers
Arbitrary length hash
functions (MACs)
Primitives Primitives à clé
Signatures
de sécurité symétrique
Séquences Pseudo-
K = K’ aléatoires

Primitives
d’identification

Chiffrement à clé
publique
Primitives à clé
Signatures
publique
Primitives
K ≠ K’ d’identification 21

Cryptographie symétrique
 Aussi appelée cryptographie à clé secrète
 Les algorithmes de chiffrement symétrique se fondent sur une
même clé pour chiffrer et déchiffrer un message. Le problème de
cette
tt ttechnique
h i estt que lla clé,
lé quii doit
d it rester
t ttotalement
t l t
confidentielle, doit être transmise au correspondant de façon sûre.
 Exemples d’algorithmes de chiffrement symétrique très utilisés :
 Chiffre de Vernam
 DES
 3DES
 AES
 RC4
 RC5
…

22

11
Cryptographie asymétrique
 Aussi appelée cryptographie à clé publique (et privée)
 Pour résoudre le problème de l'échange de clés, la cryptographie
asymétrique a été mise au point dans les années 1970. Elle se base
sur le
l principe
i i d de d
deux clés
lé :
 une publique, permettant le chiffrement ;
 une privée, permettant le déchiffrement.
 Comme son nom l'indique, la clé publique est mise à la disposition de
quiconque désire chiffrer un message. Ce dernier ne pourra être
déchiffré qu'avec la clé privée, qui doit être confidentielle.
 Q
Quelques
q algorithmes
g de cryptographie
yp g p asymétrique
y q très utilisés :
 RSA (chiffrement et signature);
 DSA (signature);
 Protocole d'échange de clés Diffie-Hellman (échange de clé);
…

23

Cryptographie asymétrique
 Le principal inconvénient de RSA et des autres algorithmes à clés
publiques est leur grande lenteur par rapport aux algorithmes à clés
secrètes. RSA est par exemple 1000 fois plus lent que DES. En
pratique dans le cadre de la confidentialité
pratique, confidentialité, on s'en
s en sert pour
chiffrer un nombre aléatoire qui sert ensuite de clé secrète pour un
algorithme de chiffrement symétrique . C'est le principe qu'utilisent
des logiciels comme PGP par exemple.
 La cryptographie asymétrique est également utilisée pour assurer
l'authenticité d'un message. L'empreinte du message est chiffrée à
l'aide de la clé privée et est jointe au message. Les destinataires
déchiffrent ensuite le cryptogramme à l'aide
l aide de la clé publique et
retrouvent normalement l'empreinte. Cela leur assure que
l'émetteur est bien l'auteur du message. On parle alors de signature
ou encore de scellement.

24

12
Fonctions de Hashage
 Une fonction de hachage est une fonction qui convertit un grand
ensemble en un plus petit ensemble, l'empreinte. Il est impossible
de la déchiffrer pour revenir à l'ensemble d'origine, ce n'est donc
pas une technique de chiffrement.
chiffrement
 Quelques fonctions de hachage très utilisées :
 MD5 ;
 SHA-1 ;
 SHA-256 ;
…
 L
L'empreinte
empreinte dd'un
un message ne dépasse généralement pas 256 bits
(maximum 512 bits pour SHA-512) et permet de vérifier son
intégrité.

25

Plan Général du cours


 Introduction
 Algorithmes standards de cryptographie
 Chiffrement symétrique
• Chiffrement de flux ((Stream cipher)
p )
• Chiffrement par blocs (Block cipher)
 Chiffrement asymétrique
 Fonctions de hashage
 Intégrité et Authentification
• HMAC
• Signatures
 Gestion des clés
 Distribution des clés secrètes
 Génération et distribution des certificats
 Protocoles de sécurité et standards divers

26

13
Block Ciphers
 Le chiffrement par bloc (en anglais block cipher) est une méthode
de chiffrements symétrique qui découpe le texte à chiffrer en blocs
de taille généralement fixe.
 La
L taille
t ill dde bl
bloc estt comprise
i entre
t 32 ett 512 bit
bits
 Dans le milieu des années 1990 le standard était de 64 bits
 Depuis 2000 le standard est de 128 bits
 Les blocs sont ensuite chiffrés les uns après les autres.

 Il est possible de transformer un chiffrement de bloc en un


chiffrement par flot en utilisant un mode d'opération
d opération
 ECB (chaque bloc chiffré indépendamment des autres)
 CFB (on chaîne le chiffrement en effectuant un XOR entre les
résultats successifs).

27

Block Ciphers
x1 x2 x3
Electronic Code Book mode (ECB):
eK eK eK
+ : implementation simple
- : un attaquant peut aisément remplacer
un block y1 y2 y3

Cipher FeedBack mode (CFB):


x1 x2

IV eK eK ...

y1 y2

IV: Initial Vector


• But: chaque message codé devient unique
• Génération: timestamp ou nombre aléatoire (random number) 28

14
Block Ciphers
Cipher Block Chaining mode (CBC): x1 x2

IV= y0 ...

eK eK

y1 y2
Output FeedBack mode (OFB):

IV= z0 eK z1 eK z2 ...

x1 x2

y1 y2

29

Stream Ciphers
 Le texte en clair est combiné avec un keystream (un flot de clés de
chiffrement pseudo-aléatoire), généralement en utilisant l’opération
exclusive-or (xor).
 1 time
ti pad:
d

30

15
Stream Ciphers
 Un synchronous stream cipher est un schéma de chiffrement dans
lequel le keystream est généré indépendament du text en clair
(plaintext) et du texte chiffré (ciphertext).
 0 : état
é initial
i i i l (initial
(i i i l state))
f : Next-state function
G : The function which produces the keystream zi
H : Output function.

31

Stream Ciphers
 La plupart des schémas de chiffrement à flot proposés dans la
littérature sont additifs
 Definition: Un binary additive stream cipher est un synchronous
stream
t cipher
i h dans
d llequell le
l keystream,
k t le
l texte
t t en clair
l i ett le
l texte
t t
chiffré sont des données binaires, et le résultat de la fonction h est
une fonction XOR.

32

16
Data Encryption Standard (DES)

 C’est LE schéma de chiffrement symétrique par bloc


 Developpé dans les années 70 par IBM, standard ANSI en 1981
(
(ANSI X3.92))
 Largement utilisé dans les transactions bancaires
 N’est plus considéré comme suffisament robuste
 Principe:
Plaintext: 64 bits

Key: 56 bits DES

Ciphertext: 64 bits
33

DES Algorithm
64 bits
Plaintext
IP
32 bits 32 bits

L0 R0
K1
f
48 bits

L1=R0 R1  L0  f ( R 0 , K1 )
K2
f
48 bits
Key K
L2 =R1 R 2  L1  f ( R 1 , K 2 )
scheduler 56 bits

L15=R14 R15  L14  f ( R14 , K15 )


f K16
48 bits

R16  L15  f (R15, K16 ) L16=R15

IP-1
IP: Initial Permutation

Ciphertext 64 bits 34

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

 Comme résultat de la permutation initiale IP, le 58ème bit


devient le 1er, le 50ème devient le second, …

 IP-1 est la fonction inverse de la permutation initiale IP

35

Initial Permutation

36

18
DES Algorithm
64 bits
Plaintext
IP
32 bits 32 bits

L0 R0
K1
f
48 bits

L1=R0 R1  L0  f ( R 0 , K1 )
K2
f
48 bits
Key K
L2 =R1 R 2  L1  f ( R 1 , K 2 )
scheduler 56 bits

L15=R14 R15  L14  f ( R14 , K15 )


f K16
48 bits

R16  L15  f (R15, K16 ) L16=R15

IP-1
IP: Initial Permutation

Ciphertext 64 bits 37

One Round of DES


32 bits 32 bits 56 bits
Li-1 Ri-1 Key

32 bits Shift Shift

Expansion permutation

48 bits Compr. permutation

48 bits

S-Box Substitution

32 bits
P-Box Permutation
32 bits

Li Ri Key
38

19
Expansion Permutation
 Function : 32-bit block input  48-bit block output

E
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

 The first three bits of E(R) are the bits in positions 32, 1 and 2 of R while
the last 2 bits of E(R) are the bits in positions 32 and 1.

39

Expansion Permutation

40

20
One Round of DES
32 bits 32 bits 56 bits
Li-1 Ri-1 Key

32 bits Shift Shift

Expansion permutation

48 bits Compr. permutation

48 bits

S-Box Substitution

32 bits
P-Box Permutation
32 bits

Li Ri Key
41

S-Box Substitution

42

21
S-Box Substitution
 Function : 6-bit block input  4-bit block output

 Given a 6-bit input,


input the 4-bit output is found by selecting:
 the row using the outer two bits (the first and last bits), and
 the column using the inner four bits.

 For example, an input "011011" has outer bits "01" and inner bits "1101"; the
corresponding output would be "1001"
43

One Round of DES


32 bits 32 bits 56 bits
Li-1 Ri-1 Key

32 bits Shift Shift

Expansion permutation

48 bits Compr. permutation

48 bits

S-Box Substitution

32 bits
P-Box Permutation
32 bits

Li Ri Key
44

22
P-Box Permutation
 The permutation function P yields a 32-bit output from
a 32-bit input by permuting the bits of the input block.

P
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25

45

P-Box Permutation

46

23
DES Algorithm
64 bits
Plaintext
IP
32 bits 32 bits

L0 R0
K1
f
48 bits

L1=R0 R1  L0  f ( R 0 , K1 )
K2
f
48 bits
Key K
L2 =R1 R 2  L1  f ( R 1 , K 2 )
scheduler 56 bits

L15=R14 R15  L14  f ( R14 , K15 )


f K16
48 bits

R16  L15  f (R15, K16 ) L16=R15

IP-1
IP: Initial Permutation

Ciphertext 64 bits 47

One Round of DES


32 bits 32 bits 56 bits
Li-1 Ri-1 Key

32 bits Shift Shift

Expansion permutation

48 bits Compr. permutation

48 bits

S-Box Substitution

32 bits
P-Box Permutation
32 bits

Li Ri Key
48

24
Key Schedule in DES

49

Permuted Choice

PC-1 PC-2

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

50

25
Permuted Choice

51

Key Schedule in DES

52

26
Left Shift
Iteration Nb of LS
1 1
2 1
3 2
4 2
5 2 1 Left Shift (LS)
6 2
1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1
7 2
8 2
9 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1 53

Plan Général du cours


 Introduction
 Algorithmes standards de cryptographie
 Chiffrement symétrique
• Chiffrement de flux ((Stream cipher)
p )
• Chiffrement par blocs (Block cipher)
 Chiffrement asymétrique
 Fonctions de hashage
 Intégrité et Authentification
• HMAC
• Signatures
 Gestion des clés
 Distribution des clés secrètes
 Génération et distribution des certificats
 Protocoles de sécurité et standards divers

54

27
Primitives Cryptographiques
Arbitrary length
hash functions
Primitives sans
One-way permutations
clés
Séquences aléatoires

Stream ciphers
Chiffrement à clé
symétrique Block ciphers
Arbitrary length hash
functions (MACs)
Primitives Primitives à clé
Signatures
de sécurité symétrique
Séquences Pseudo-
K = K’ aléatoires

Primitives
d’identification

Chiffrement à clé
publique
Primitives à clé
Signatures
publique
Primitives
K ≠ K’ d’identification 55

Chiffrement asymétrique
 Confidentialité: Alice utilise la clé publique de Bob pour
coder un message que seul Bob (en possession de la clé
privée) peut décoder
 Authentification: Bob utilise sa propre clé privée pour
coder un message que Alice peut décoder avec la clé
publique
 Algorithmes de génération de paires de clés
 Algorithme de chiffrement
 Algorithme de déchiffrement
 Examples:
 RSA
 ElGamal
 ECC
56

28
RSA: introduction
 RSA: Rivest, Shamir et Adleman du MIT en 1977
 Système le + connu et le + largement répandu
 100
00 à 1000
000 fois
fo s plus lent que DES
 basé sur l'élévation à une puissance dans un champ fini
sur des nombres entiers modulo un nombre premier
 Le nombre d’exponentiation prend environ O((log n)3)
opérations → facile
 emploie de grands nombres entiers (par exemple 1024
bits)
 sécurité due au coût de factoriser de grands nombres
 Le nombre de factorisation prend environ O(e log n log
log n) opérations → difficile
 Usage : confidentialité, authentification
57

RSA: principe
 Choisir p et q, deux nombres premiers distincts et de
taille à peu près égales
 Noter le « module de chiffrement » n=pq
La longueur de n devrait être entre 1024 et 2048 bits
 Calculer l'indicatrice d'Euler de : (n)=(p-1)(q-1)
 Choisir e, un entier premier avec (n), appelé « exposant
de chiffrement » (pgcd(e, (n))=1).
 Comme e est premier avec (n), il est, d'après le
théorème de Bachet
Bachet-Bézout
Bézout, inversible mod (n),
(n) cc'est-
est
à-dire qu'il existe un entier d tel que ed1 mod (n). d
est l'exposant de déchiffrement.
 Le couple (n,e) est appelé clé publique
 d est appelé clé privée.
58

29
RSA – Exemple
 Bob choisi p=61 et q=53
 n=pq=3233
 (n)=60x52=3120

 Bob choisi e tel que pgcd((n),e)=1. On suppose que e=17


 d=e-1 mod (n) = 2753 mod 3120 (clé privée)

 Bob publie n et e (clé publique)

 Chiffrement : enc(X) = (X^e)


(X e) mod n = (X^17)
(X 17) mod 3233
 Déchiffrement : dec(X) = (X^d) mod n = (X^2753) mod 3233

 enc(123) = (123^17) mod 3233


= 337587917446653715596592958817679803 mod 3233
= 855
59

RSA - Exemple
 dec(855) = (855^2753) mod 3233
=
504328889584160687344228991273944666314538783600355093155549675645010
556286120825599787442454281100543834986542893363849302464514415078517
20917966547826353070996380353873265008966860747718297458229503429504
0 9035818459409563 9385865989368838083602840132509 68620 669 3966
07903581845940956377938586598936883808360284013250976862076697739667
533250542826093475735137988063256482639334453092594385562429233017519
77190016924916912809150596019178760171349725439279215696701789902134307
1464689712796102771813783945869677289869342365240311693217089269617643
7265213156658331587124597598030425031440068378832461017848307175854745
47252069688925995892544366701432205469543174002285500923863694244485
597333306305160738530286321930291350374547194675777671357954965202919
790505781532871558392070303159585937493663283548602090830635507044556
5889631931801193412201782692334410133011648069633402407504695258866987
658669006224024102088466507530263953870526631933584734810948761562271
260373275973603752373883641480889484380961577570453800810794698006673
487779588375828998513279307035335512750904399481789790548993381217329
458535447413268056981087263348285463816885048824346588978393334662544
540066196452187666947955280230884124659482392751057704911332902568430
65052292561427303898320890070515110552506189941712317779515797942971179
5475296301837843862913977877661298207389072796767202350113992715819642
7307640741898919048686074812454931579537437712441601438765069145868196
402276027766869530903951314968319097324505452345944772565878876926933
60
5391869235481851854242092306499640682218449011913571088542442852112077

30
RSA - Exemple
3712238311054554312653073940759278908226060431711333957522660344516452
5976316184277459043201913452893299321613074405322274705728948121435868
31978415597276496357090901215131304157569209798518321041155969357848833
665315951327344675243940875769777890849012691532284208094963079297247
1304422194243906590308142893930291584830873687450789770869218452967411
463211556678655283381648067954559418910069509196589908545679807239237
0846302553545686919235546299571573587906227458619572172111078828657563
8597094190776320509783239571346411902500470208485604082175094910771655
3117652974738031767658205876731402889103288343185088447211644271939037
4041315564986995913736516210845113740224335185995766577539693628125425
3900685526245456141925880943740212888666974410972184534221817198089911
953707545542033911964539366461792968165342652234639936742330970183533
904623677693670380534264482173582384219251590438148524738896864244370
3186654199615377913969649003039587606549152449450436001359392771339521
0125192857209259788751160195962961569027116431894637342650023631004555
718003693586055264910000907245183786689564417164907278356281009708545
2413546966084481161338780654854515176167308605108065782936524108723263
6672280540038794108643482267500907782651210137281958316531396983090887
317417474535988684298559807185192215970046508106068445595364808922494
405427663296745923088984848684358654798505115428440164623526969317993
7784430217857019197098751629654665130278009966580052178208139317232379
0132324946826092008199810376848471678749891936949979148247163450609371
256541225019537951668976018550875993133677977939527822273233375295802
61
631226653589482055665152894663690320832876804323906115493509545909340

RSA - Exemple
667640225867084833760536998679410262047090571567447056531112428629073
548884929899835609996360921411284977458614696040287029670701478179490
248282907484160083680458666855076046192252094349804715745268818131850
8591501948527635965034581536416565493160130613304074344579651083803040
622402788980428251890947162922668980166844809636451980905109057965130
7570379245958074479752371266761011473878742144149154813591743927994969
56415653866883891715446305611805369728343470219206348999531917640161103
9249043917980339897549176539592360851180765318470647331801578207412764
787592739087492955716853665185912666373831235945891267870958380002245
150942445756487448408687753084539552173063669389170239403718478036277
46431714708558304919598951467762943921431002456130611142993700055775133
97172825491100560089408984196713197091181655429087610900832499783133824
078696157849234198629916800867749593407759306602207814943807854996798
945399364063685722697422361858411425048372451244655802708591797955910
865230997565198382779529457569965742455786883835444236857223681399021
2613637440821314784832035636156113462870198514239018429097416386202320
5103971218498335528630868518428263461502744187358639504042281512399505
995983653792227285847422071677836679451343638070865797742198535953931
66279988789721695963455346336497949221130176613162074772661131070123214
037138822702217232330854726795330150799806225383545894802482004314472
6191596190526034069061930939290724102849487001671729695177034679099794
409750637649296356755580071162182772760318292179035029048609097626628
5396627024392536890256337101471683274045045830602286763142158159900791
62
6426277000546123229192192997169907690169025946468104141214204472402661

31
RSA - Exemple
6582756805241668614733933226595912700645630447416085291672187007045144
649793226668732146346749041185886760836840306190695786990096521390675
2050197440767765104388515194161931847991913492438815282203846472926944
6084915299958818598855195149066307311777238132267516945882593638786107
24302565980914901032783848214011365567849341024315124828645291703141004
001201636482998532516634905605379458508942440385525245547779224010461
4890752745163425139921637383568141490479320374263373019878254056996191
6352019389698254478631309773749154478427634532593998741700138163198116
6453772089440028548500026968598264456218379411670215184772190933923218
5087775790959332676311413129619398495926138987901669710881027663862316
7694057295932538078643444100512138025081797622723797210352196773268441
9464861640296105989902771053257045701633261343107641770004323715247462
63939901189972784536294930363691490088106053123163000901015083933188011
6682151638931046666595137827498923745560511004016477716822716267270783
701224246551264878454923504185216742638318973333243467444903978001784
6897264054621480241241258338435017048853206014756878623180940900126324
1969092252022679880113408073012216264404133887392600523096072386158554
9651580010347461197921307672245438036718832537086067133113258199227975
522771848648475326124302804177943090938992370938053652046462551472678
8496152777327411926570911661358008414542148768731039444105479639308530
896880365608504772144592172500126500717068969428154627563704588389042
19177398190648731908014828739058159462227867277418610111027632479729041
2221199411738820452633570175909067862815928151998221457652796853892517
63
21872009007038913856284000733225850759048534804656454349837073287625

RSA - Exemple
935891427854318266587294608072389652291599021738887957736477387265746
1040082255112418272009616818882849389467881046884731265541726209789056
7845810965179753008730631546490302112133528180847612299040957642785731
636412488093094977073956758842296317115846456984202455109029882398517
953684125891446352791897307683834073696131409745229856386682726910433
5751767712889452788136862396506665408989439495161912002160777898876864
7364818378253248466991683072812203107919356466684015914858269999337442
7677252275403853322196852298590851548110402296579163382573855133148234
5959163328144581984361459630602499361753097925561238039014690665163673
718859582772525683119989984646027216462797640770570748164064507697798
6995510618004647193780822325014893407851137833251073753823403466269553
2926088138438957840998041704104177760846306286261061405961520706669524
3018438575031762939543026312673774069364047058960834626018859111843675
3252984588804084971092299919565539701911191919188327308603766775339607
7224556321135065721910675875118681278634419757239219526333385653838824
0057190102564949233944519659592039923922174002472341471909709645621082
99547746193228981181286055565880938518988118129056142740858091687657119
1122476328865871275538928438126611991937924624112632990739867854558756
6524530561975098911457811473577128360755400177426866096509330517210272
306663573946233413638045914237759965220309418558880039496755829711258
3616218901403595423493042474905369399277611426179640710012764328042870
6083531594582305946326827861270203356980346143245697021484375 mod 3233
= 123
64

32
Plan Général du cours
 Introduction
 Algorithmes standards de cryptographie
 Chiffrement symétrique
• Chiffrement de flux ((Stream cipher)
p )
• Chiffrement par blocs (Block cipher)
 Chiffrement asymétrique
 Fonctions de hashage
 Intégrité et Authentification
• HMAC
• Signatures
 Gestion des clés
 Distribution des clés secrètes
 Génération et distribution des certificats
 Protocoles de sécurité et standards divers

65

Fonctions de hashage
 Une fonction de hachage est une fonction qui, à partir d'une donnée
fournie en entrée, calcule une empreinte servant à identifier
rapidement, bien qu'incomplètement, la donnée initiale.

 Cette empreinte peut être aussi appelée selon le contexte somme de


contrôle, hash, résumé de message, condensé, condensat ou encore
empreinte cryptographique
66

33
Fonctions de hashage
 Propriétés à respecter pour une fonction de hashage cryptographique:
 Collision resistance: Il est très difficile de trouver deux valeurs x
et x’ telles que h(x) = h(x’).
 Weak
W k collision
lli i resistance
i t : Et
Etantt d
donné
é une valeur
l x, il est
st très
t ès
difficile de trouver une valeur x' qui vérifie h(x’) = h(x). Cette
propriété est parfois appelée second pre-image resistance.
 One-way property: Pour n'importe quelle valeur hash y, il est très
difficile de trouver une valeur x telle que h(x) = y. Cette propriété
est parfois appelée pre-image resistance.
Hash function
(hash,
(hash
hash value,
Data Digest
hash code)
Arbitrary length Fixed length

 Très difficile = techniquement impossible en pratique par toutes


techniques algorithmiques et matérielles, en un temps raisonnable
67

Principe de base

CV = chaining variable
f = algorithme de compression
k = Nombre de blocs
n = longueur du code hash
b = longueur du bloc

68

34
Exemple: MD5
 MD5: Message Digest 5, est une fonction de hachage
cryptographique qui permet d'obtenir l'empreinte numérique d'un
fichier / message
 Inventé
I té par Ronald
R ld Rivest
Ri t (le
(l R d
de RSA)
 En 1996, une faille qualifiée de grave (possibilité de créer des
collisions à la demande) est découverte et indique que MD5 devrait
être mis de côté au profit de fonctions plus robustes comme SHA-1.
 MD5 est encore largement utilisé comme outil de vérification lors
des téléchargements pour valider l'intégrité de la version
téléchargée grâce à l'empreinte.
 MD5 peut aussi être
ê utilisé
é pour calculer l'empreinte
' d'un
' mot de
passe ; c'est le système employé dans GNU/Linux
 plutôt que de stocker les mots de passe dans un fichier, ce sont
leurs empreintes MD5 qui sont enregistrées; quelqu'un qui lirait
ce fichier ne pourra pas découvrir les mots de passe.

69

MD5: Principe

70

35
MD5: Principe
 Les quatre fonctions non-
linéaires disponibles sont :

 Notation:
 clss est une rotation de s bits vers
la gauche, s varie pour chaque
opération.
 [+] symbolise l'addition modulo
232.
 symbolisent
respectivement les opérations
booléennes XOR, AND, OR et
NOT.

71

MD5: Principe

72

36
MD5: Pseudocode
//Note: All variables are unsigned 32 bits and wrap modulo 2^32 when calculating
var int[64] r, k

//r specifies the per-round shift amounts


r[ 0..15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}
r[16..31] := {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}
r[32..47] := {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}
r[48..63] := {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}

//Use binary integer part of the sines of integers (Radians) as constants:


for i from 0 to 63
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))

//Initialize variables:
var int h0 := 0x67452301
var int
i h1 := 0xEFCDAB89
var int h2 := 0x98BADCFE
var int h3 := 0x10325476

//Pre-processing:
append "1" bit to message
append "0" bits until message length in bits ≡ 448 (mod 512)
append bit /* not byte */ length of unpadded message as 64-bit little-endian integer to message

73

MD5: Pseudocode
//Process the message in successive 512-bit chunks:
for each 512-bit chunk of message
break chunk into sixteen 32-bit little-endian words w[i], 0 ≤ i ≤ 15

//Initialize hash value for this chunk:


var int a := h0
var int b := h1
var int c := h2
var int d := h3

//Main loop:
for i from 0 to 63
if 0 ≤ i ≤ 15 then
f := (b and c) or ((not b) and d)
g := i
else
l if 16 ≤ i ≤ 31
f := (d and b) or ((not d) and c)
g := (5×i + 1) mod 16
else if 32 ≤ i ≤ 47
f := b xor c xor d
g := (3×i + 5) mod 16
else if 48 ≤ i ≤ 63
f := c xor (b or (not d))
g := (7×i) mod 16
74

37
MD5: Pseudocode
//Main loop:
for i from 0 to 63

temp := d
d := c
c := b
b := b + leftrotate((a + f + k[i] + w[g]) , r[i])
a := temp

//Add this chunk's hash to result so far:


h0 := h0 + a
h1 := h1 + b
h2 := h2 + c
h3 := h3 + d

var int
i digest
i := h0 append
d h1 append
d h2 append
d h3 //(expressed
//( d as li
little-endian)
l di )

75

Plan Général du cours


 Introduction
 Algorithmes standards de cryptographie
 Chiffrement symétrique
• Chiffrement de flux ((Stream cipher)
p )
• Chiffrement par blocs (Block cipher)
 Chiffrement asymétrique
 Fonctions de hashage
 Intégrité et Authentification
• HMAC
• Signatures
 Gestion des clés
 Distribution des clés secrètes
 Génération et distribution des certificats
 Protocoles de sécurité et standards divers

76

38
MACs
 Message Authentication Code: Code accompagnant des données dans le but
d'assurer l'intégrité de ces dernières
 Concept relativement semblable aux fonctions de hachage: Algorithmes qui
créent un petit bloc authentificateur de taille fixe.
fixe
 Différence: Ce bloc authentificateur ne se base plus uniquement sur le
message, mais également sur une clé secrète.
 Tout comme les fonctions de hachage, les MAC n’ont pas besoin d’être
réversibles; le récepteur exécutera le même calcul sur le message et le
comparera avec le MAC reçu.
 Le MAC assure:
 une fonction de vérification de l'intégrité du message
 Authentification de l’expéditeur, détenteur de la clé secrète
 Peut (rarement) être employé comme un chiffrement supplémentaire
 Calculé avant ou après le chiffrement principal (conseillé de le faire avant)
 Examples
 CBC-MAC
 HMAC
77

CBC-MAC
 Cipher Block Chaining –MAC
 Ek(Mi) : Chiffrement sur un bloc de données avec la clé
 on découpep les données en blocs de taille fixe m1 … mx
 on définit un vecteur d'initialisation C1=0
 on traite les blocs au fur et à mesure : Ci+1= Ek(CiMi)

78

39
HMAC
 Keyed-Hash MAC: MAC calculé en utilisant une fonction de hachage
cryptographique en combinaison avec une clé secrète.
 N'importe quelle fonction itérative de hachage, comme MD5 ou SHA-1, peut
être utilisée (HMAC
(HMAC-MD5
MD5 ou HMAC
HMAC-SHA-1)
SHA 1)
 Qualité cryptographique du HMAC dépend (Qualité cryptographique de la
fonction de hachage, taille clé, qualité clé)
 La fonction HMAC est définie comme suit :

Avec :
 h : une fonction de hachage itérative,
 K : la clé secrète de la taille du bloc de la fonction h
 m : le message à authentifier,
 "||" désigne une concaténation et "" un ou exclusif,
 ipad et opad, chacune de la taille d'un bloc, sont définies par :
• ipad = 0x363636...3636 et opad = 0x5c5c5c...5c5c. Donc, si la taille
de bloc de la fonction de hachage est 512, ipad et opad sont 64
répétitions des octets, respectivement, 0x36 et 0x5c.
79

Signatures digitales
 Chiffrement à clé publique

 Signature à clé publique

80

40
Signatures digitales
 Chiffrement à clé publique (détails)

81

Signatures digitales
 Signature à clé publique (détails)

82

41
Plan Général du cours
 Introduction
 Algorithmes standards de cryptographie
 Chiffrement symétrique
• Chiffrement de flux ((Stream cipher)
p )
• Chiffrement par blocs (Block cipher)
 Chiffrement asymétrique
 Fonctions de hashage
 Intégrité et Authentification
• HMAC
• Signatures
 Gestion des clés
 Distribution des clés secrètes
 Génération et distribution des certificats
 Protocoles de sécurité et standards divers

83

Diffie-Hellman: Principe

84

42
Diffie-Hellman: Exemple

 Alice et Bob choisissent un nombre premier p=23 et une base g=3


 Alice choisit un nombre secret a=6
 Elle envoie à Bob la valeur ga [mod p] = 36 [23] = 16
 Bob choisit à son tour un nombre secret b=15
 Bob envoie à Alice la valeur gb [mod p] = 315 [23] = 12
 Alice calcule la clé secrète : (gb [mod p])a [mod p] = 126 [23] = 9
 Bob obtient la même clé qu'Alice : (ga [mod p])b [mod p] = 1615 [23] = 9
85

Certificats
 Un certificat électronique est une carte d'identité numérique dont
l'objet est d'identifier une entité physique ou non-physique.

 Le certificat numérique ou électronique est un lien entre l'entité


physique et l'entité numérique (Virtuel).

 L'autorité de certification fait foi de tiers de confiance et atteste du


lien entre l'identité physique et l'entité numérique.

 Le standard le plus utilisé pour la création des certificats numériques


est le X.509.

86

43
Certificats
 Un certificat électronique contient :
 un numéro de série;
 l'identification de l'algorithme de signature;
 la désignation de l'autorité de certification émettrice;
 la période de validité au-delà de laquelle il sera suspendu ou révoqué;
 le nom du titulaire de la clé publique;
 l'identification de l'algorithme de chiffrement et la valeur de la clé
publique constitués d'une paire de clés asymétriques
 des informations complémentaires optionnelles;
 l'identification de l'algorithme
g de signature
g et la valeur de la
signature numérique.

 Un certificat électronique est géré tout au long de son cycle de vie


(Certificate revocation list (CRL), Protocole de vérification en ligne de
certificat) avec une infrastructure à clés publiques (PKI pour Public Key
Infrastructure).
87

Plan Général du cours


 Introduction
 Algorithmes standards de cryptographie
 Chiffrement symétrique
• Chiffrement de flux ((Stream cipher)
p )
• Chiffrement par blocs (Block cipher)
 Chiffrement asymétrique
 Fonctions de hashage
 Intégrité et Authentification
• HMAC
• Signatures
 Gestion des clés
 Distribution des clés secrètes
 Génération et distribution des certificats
 Protocoles de sécurité et standards divers

88

44
Intruder-in-the-middle contre D-H
a U

Le protocole Diffie-Hellman
ressemble à ca: U a V
V

KU ,V   aU aV mod p
Un attaquant peut effectuer les substitutions suivantes:
a U  a'
U

U  a'V W a V V

KU ,W   aU a 'V mod p KV ,W   a 'U aV mod p

Raison : Pas d'authentification

Station-to-Station (STS) Protocol :


(1) Alice → Bob : gx
(2) Alice ← Bob : gy, CertB, EK(SB(gy, gx))
(3) Alice → Bob : CertA, EK(SA(gx, gy))
89

Authentification de l’abonné GSM

90

45
Encryptage des données

Encryptage des données

46
Références
 “Handbook of Applied Cryptography”, Alfred J. Menezes, Paul C. van
Oorschot and Scott A. Vanstone, CRC Press, October 1996.
http://www.cacr.math.uwaterloo.ca/hac/index.html
 http://www.wikipedia.org/
 Cours de Systèmes de conduite des ordinateurs
http://www.montefiore.ulg.ac.be/~herbiet/sco.html
 Tutorial sur la cryptographie
http://www.uqtr.ca/~delisle/Crypto/
 Exemple RSA
htt //
http://www.apprendre-en-ligne.net/crypto/rsa/
d li t/ t / s /

93

47