Académique Documents
Professionnel Documents
Culture Documents
Cours Sécurité: Cryptographie Cryptographie Cryptographie Cryptographie
Cours Sécurité: Cryptographie Cryptographie Cryptographie Cryptographie
Cryptographie
1
Plan
Introduction
Chiffres à clés secrètes (symétriques)
Chiffres à clés publiques (dissymétriques)
Fonctions de hachage sécuritaires
Générateurs de nombres aléatoires
Conclusion
2
Cryptographie
Introduction
3
Sécurité des communications :
Rappel des problèmes.
■Confidentialité.
■ Contrôle de l’accès en lecture
■ Intégrité.
■ Contrôle de l’accès en écriture
■ Authentification.
■ Vérification de l’identité des sujets.
■ Protection.
■ Contrôle de droits d’accès pour des services
quelconques.
■ Non répudiation.
■ Impossibilité de nier avoir requis une action par un sujet
ou exécuté une action par un objet. 4
Sécurité des communications et
fonctions cryptographiques
■ A) Cryptographie classique crypto/secret,graphie/écriture :
la partie des sciences de la communication qui s’intéresse aux
fonctions de transformation syntaxique des informations
pour en empêcher la lecture par des tiers (confidentialité)
■ Les usagers autorisés à accéder à l’information possèdent comme
attribut une clé qui matérialise leur droit d’accès.
■ B) Cryptographie par extension : toutes les fonctions
utiles pour réaliser des propriétés de sécurité.
- Fonctions de hachages cryptographiques : absence
de collisions => fonctions nécessaires pour assurer la
propriété d’intégrité.
- Générateurs de nombres aléatoires : nombres
imprévisibles (clés, nonces).
■ C) Protocoles de sécurité : les protocoles de
communication qui réalisent des propriétés de sécurité en
utilisant comme outil essentiel des fonctions cryptographiques.
5
Introduction à la
cryptographie :
6
Cryptographie classique :
Les trois approches
■ A) Un code découpe un message en unités syntaxiques (mots,
phrases) et remplace ces unités par d’autres selon une table.
■ La clé est la table de transformation (le code , ‘codebook’)
■ B) La stéganographie (‘écriture couverte’) cache un message
en clair en le dispersant dans un message anodin
Historiquement: crâne, masque, tablette cirée, encre invisible,
point micro film. Actuellement: watermarking.
■ La clé est la fonction de dispersion.
■ C) Un chiffre (‘Cipher’) transforme un message en clair en le
découpant en unités d’information de taille fixe (par caractères
ou par blocs de n bits) sans se préoccuper des unités
syntaxiques du message.
■ Chiffre en continu (‘Stream cipher’ bit par bit, plutôtsynchrone), chiffre
par bloc (‘Block Cipher’ plus asynchrone: temps pour chiffrer un bloc).
■ La clé est un paramètre de la fonction de transformation. 7
Notion de chiffre
Vocabulaire
16
Chiffres : Critères de construction
d’un bon chiffre (1)
Concepts classiques
Chiffres par blocs : DES , IDEA , AES
Chiffres en continu : LFSR , RC4
21
Chiffres symétriques par blocs
(à clés secrètes)
Concepts classiques
Transposition
Substitution
22
Chiffres à clés secrètes classiques:
substituer ou transposer
Solutions essentielles en cryptographie (utilisées depuis le début)
■ Substitution : un symbole du texte en clair est remplacé par un autre symbole
dans le texte chiffré.
ABCDEFG -> !"#$%&' A !
B "
C #
D $
E %
F &
G '
Contribue à la confusion.
■ Transposition : les symboles en clair sont réordonnés
ABCDEFG -> DFAGBCE
A D
B F
C A
D G
E B
F C
G E
Contribue à la diffusion. 23
Chiffres à clés secrètes
Concepts classiques
Les transpositions
24
Chiffres à transpositions
■ Transposer = opérer une permutation des symboles d’un
message en clair : remplacer chaque symbole par un autre
symbole du message.
■ Version très ancienne:
■ Un cylindre sur lequel une ceinture est enroulée.
■ On écrit le message sur la ceinture selon une génératrice du cylindre.
■ Lorsqu’on déroule la ceinture le message en clair est rendu obscur.
MES …
Les substitutions
27
1) Chiffres à substitutions de base
(mono alphabétiques)
■ A:6,16 B:0,40 C:5,35 D:3,86 E:18,61 F:2,24 G:1,79 H:1,48 I:6,35 J:0,04
K:0,13 L:5,26 M:1,97 N:6,02 O:5,12 P:2,92 Q:0,62 R:5,35 S:6,96 T:7,41
U:5,03 V:1,03 W:0,35 X:0,36 Y:1,39 Z:0,04
■ Groupe e > 12% ; ainst 6-9% ; cdloru 3-6% ; fghmpvy 1-3% ; jkwxzb <1%
■ Mais aussi fréquence des digrammes (et), trigrammes (ant).
33
Substitutions poly alphabétiques
Machines à rotors : b) Enigma
■ Machine Enigma (1919 - 1945)
■ Les entrées/sorties
■ Clavier (keyboard) : le texte en clair ;
■ Lampes (lamps) : le message chiffré ;
■ Tableau de fiches (plugboard) : la clé (6 fiches
qui échangent 12 lettres soient 100 millions de clés)
■ Trois rotors: 26 contacts sur chaque face des
disques réalisant une substitution au moyen de
fils. Le quatrième rotor retourne le signal pour
trois autres séries de substitutions.
■ Le rotor d’entrée tourne d’une position à
chaque lettre. Après 26 lettres le second tourne lui
aussi … (26x26x26 = 17576 positions des rotors).
34
3) Substitution à masque jetable
‘One Time Pad’ : Principe
■ Rendre le texte crypté non analysable, sans relation
avec le texte en clair : confusion et diffusion totale.
■ Solution des clés jetables: générer une suite de clés de
blocs KM qui est une suite de nombres aléatoires
■ Définition de l’aléatoire : si les clés KM sont sur n bits l’entropie de la
source génératrice de clés est n bits.
■ Utilisation d'un phénomène physique (ex : radio activité).
■ Chaque clé KM ne doit servir qu'une fois (pour un seul
message): problème d’encombrement des clés.
■ Pour chiffrer un message faire le ou exclusif du bloc et
d’une clé : C = M ⊕ KM
■ Pour déchiffrer un message l'opération est la même (avec la
même clé): M = C ⊕ KM (M= M ⊕ KM ⊕ KM )
35
Chiffres à masque jetable :
Compléments
38
DES ‘Data Encryption Standard’ :
Introduction
■ Années 1960: des circuits intégrés ou des ordinateurs
permettent de réaliser des fonctions complexes: en particulier
des substitutions et des transpositions.
■ Application de ces techniques dans un produit de chiffres
utilisable en chiffrement et en déchiffrement (Feistel 1963).
■ Mise au point par IBM à partir de 1968 d'une méthode de
chiffrement (‘Lucifer’) basée sur 16 étages (16 rondes).
■ Appel d'offre NBS ("National Bureau of Standards") (1973)
pour la mise au point d'un système de cryptographie.
■ Adoption définitive et normalisation de la proposition IBM
(1976): nom donné au départ DES.
■ Normalisation FIPS 46-2 et ANSI X3.92 (1993) sous le nom de
DEA ("Data Encryption Algorithm"). 39
DES: Notion de chiffre itéré
(produit de chiffres)
M
■ Définition d’un chiffre de
k0 C1= E(k0 , M) base E dépendant d’une
clé k.
C1 ■ Répétition de ce chiffre
k1 C2 = E(k1 , C1) n fois avec des clés
différentes.
K C2 ■ Les clés de chaque
étape (ou ronde) sont le
plus souvent dérivées par
…… transformation d’une clé
Cn-1 maîtresse K.
■ Le nombre de rondes
kn-1 Cn = E(kn-1 , Cn-1) définit la sécurité de la
méthode (mais aussi sa
rapidité)
Cn 40
DES: Notion de réseau de Feistel
Définition d’un ronde (d’une étape)
L(i-1) R(i-1)
F ki
+
L O R O
K1
+ F
L 1 = R O R 1 = L O + F( R O ,K 1 )
K2
+ F
L 2 = R 1 R 2 = L 1 + F( R 1 ,K 2 )
. . . . . . .
Ki
+ F
. . . . . . .
L 15 = R 14 R 15 = L 14 + F( R 14 ,K 15 )
K16
+ F
R 16 = L 15 + F( R 15 ,K 16 ) L 16 = R 15
Permutation In Inverse
Sortie
44
DES : Détail des fonctions de
chiffrement de ronde
R(i-1) 32 bits
Expansion de 32 à 48 bits
E (R(i-1)) 48 bits
Ki
48 bits ⊕ Ou exclusif
E(R(i-1)) ⊕ Ki 48 bits
S1 S2 S3 S4 S5 S6 S7 S8
6 -> 4 6 -> 4 6 -> 4 6 -> 4 6 -> 4 6 -> 4 6 -> 4 6 -> 4
L (i-1) ⊕ Ou exclusif
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 25 27 19 11 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
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
47
DES : Les boites de substitution
(S-
(S-Box ‘ Substitution Box ’)
■ A chaque étage on réalise une substitution
■ Contribue à la confusion par une fonction non linéaire.
■ Exemple: Table S-1 du DES on substitue à une valeur sur 6
bits une valeur sur 4 bits. Les deux bits faible et fort
sélectionnent la ligne, les 4 bits intermédiaires la colonne
(autant de tables différentes que de rondes)
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
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
49
DES : Génération des clés de ronde
Différentes opérations
■ Pour chaque ronde besoin d’une clé de ronde
spécifique => 16 clés différentes sur 48 bits.
■ Réalisation d’une permutation initiale sur la clé
maîtresse (qui n’apporte rien).
■ Chaque étage considère la clé de 56 bits comme
deux sous clés de 28 bits.
■ Chaque sous clé de 28 bits est décalée à gauche
de une ou deux positions selon l’étage.
■ Une permutation compressive est appliquée
ensuite aux 56 bits pour générer 48 bits.
50
DES : Génération des clés de ronde
Schéma général
Clé K
Permutation de clé PC-1
CO DO
Rotation gauche Rotation gauche
LS1 LS1
Permutation compressive
C1 D1
PC K1
-2
Rotation gauche Rotation gauche
LS2 LS2
Permutation compressive
C2 D2
PC K2
-2
Rotation gauche Rotation gauche
LS3 LS3
. . . . . . . Permutation compressive
C16 D16
PC K16
-2
51
DES : Explication de la méthode
de génération des clés
■ Permutation PC-1 : à partir de 64 bits enlève les bits de parité et
opère sur les 56 bits restants.
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
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
■ Les bits 9, 18, 25, 35, 38, 43, 54 sont abandonnés : c’est
pour cette raisons que la permutation est compressive.
53
DES : Améliorations
■ Faiblesse du DES : la longueur de clé limitée à 56 bits.
■ Solution possible : construire un sur-chiffrement à partir du
DES en appliquant plusieurs fois de suite le DES.
Le chiffre IDEA
‘International Data Encryption
Algorithm’
57
IDEA ‘International Data Encryption
Algorithm’
Algorithm’ : Introduction
■ Chiffrement à clés privées : 1990.
■ Longueur de clé : 128 bits.
■ Chiffrement par blocs : 64 bits (découpé en 4 fois 16).
■ Basé sur huit rondes : ce n’est pas un chiffre de Feistel mais
c’est aussi un chiffre qui est son propre inverse.
■ Réalisable aisément : en matériel ou en logiciel (assez
bonnes performances).
■ Opérations utilisées : arithmétique sur 16 bits:
■ ou exclusif ⊕
■ addition modulo 216
■ multiplication modulo 216 +1 ⊗ 58
IDEA ‘International Data Encryption
Algorithm’
Algorithm’ : Schéma d’une ronde
(1) (1)
(1)
X1 (1) X2 (1) X3 X4 (1) Xi : 4 blocs
de 16 bits à
(2) (2) (2) (2)
Z1 Z2 Z3 Z4 chiffrer
(2)
(2) Zi : 6 Clés
Z5 de ronde 16
bits soient 96
(2)
Z6 bits générées
à partir de la
clé initiale 128
bits par
découpage et
décalage
60
Chiffres par blocs
à clés secrètes
Le chiffre AES
‘Advanced Encryption Standard’
ou Rijndael
Introduction
Ensembles utilisés
Structure générale
Opérations de ronde
Génération des clés de ronde
Conclusion
61
AES / Rijndael :
Les origines
■ Besoin d’un chiffre en remplacement du DES.
■ Ouverture d’un concours (septembre 1997) par le NIST
(National Institute of Standards and Technology américain):
■ un algorithme public, non-classifié, sans droits d'utilisation.
■ un chiffre symétrique sur des blocs d’au moins 128 bits et une
taille de clé de 128, 192 et 256 bits.
■ de sécurité au sens des méthodes de cryptanalyse connues.
■ performant pour toutes les implantations (des petits processeurs
carte à puce aux circuits spécialisés).
■ 15 candidats -> pré sélection mars 1999 -> cinq finalistes:
MARS ; RC6 ; Rijndael (1996) ; Serpent ; TwoFish
■ Résultats définitifs (2000): le NIST choisit Rijndael.
■ Rijndael : Construit selon les noms Vincent Rijmen & Joan Daemen
62
AES / Rijndael : un chiffre à clé
secrète par blocs
63
Maths pour AES/Rijndael
AES/Rijndael : Calcul sur
les octets ( le corps GF(28) )
■ Octet binaire b coefficients dans {0, 1} : 8 bits
Notation binaire (b0 b1 b2 b3 b4 b5 b6 b7)
Notation en hexadécimal ‘H1 H2’ou (H1 H2)H
■ Polynôme de degré ≤ 7 soit 8 coefficients binaires:
b(x) = b0 + b1 x + b2 x2 + b3 x3 + b4 x4 + b5 x5 + b6 x6 + b7 x7
■ Addition ⊕ des polynômes (ou exclusif au niveau des bits ‘xor’ 1⊕1=0):
addition des coefficients de chacun des polynômes modulo 2.
■ Multiplication des polynômes : pour revenir au degré 7 il faut réduire
modulo un polynôme m(x) de degré 8. c(x) = a(x) b(x) mod (m(x)),
Polynôme retenu pour Rijndael: m(x)= 1 + x + x3 + x4 + x8
C0 A0 A3 A2 A1 B0
C1 = A1 A0 A3 A2 B1
C2 A2 A1 A0 A3 B2
C3 A3 A2 A1 A0 B3
65
AES / Rijndael Généralités :
Représentation de l’état et des clés
■ Etat : le bloc initial en clair, a0,0 a0,1 a0,2 a0,3 a0,4 a0,5 a0,6 a0,7
un résultat intermédiaire, le a1,0 a1,1 a1,2 a1,3 a1,4 a1,5 a1,6 a1,7
résultat final chiffré: sur 128,
192 ou 256 bits. a2,0 a2,1 a2,2 a2,3 a2,4 a2,5 a2,6 a2,7
■ Type de l’état : tableau a3,0 a3,1 a3,2 a3,3 a3,4 a3,5 a3,6 a3,7
rectangulaire d’octets de 4
lignes, et 4, 6 ou 8 colonnes. k0,0 k0,1 k0,2 k0,3 k0,4 k0,5 k0,6 k0,7
■ Représentation des clés
k1,0 k1,1 k1,2 k1,3 k1,4 k1,5 k1,6 k1,7
identique à celle de l’état.
■ Pour une version donnée du k2,0 k2,1 k2,2 k2,3 k2,4 k2,5 k2,6 k2,7
chiffre, la clé à la même k3,0 k3,1 k3,2 k3,3 k3,4 k3,5 k3,6 k3,7
structure que l’état. 66
AES / Rijndael Généralités :
Pseudo code du chiffre
Rijndael(State,CipherKey) {
# Génération des clés de ronde
KeyExpansion(CipherKey,ExpandedKey) ;
# Ou exclusif avec la première clé de ronde
AddRoundKey(State,ExpandedKey);
# Réalisation de Nr – 1 rondes identiques
For( i=1 ; i<Nr ; i++ )
Round(State,ExpandedKey + Nb*i) ;
# Ronde finale un peu différente
FinalRound(State,ExpandedKey + Nb*Nr) ; } 67
AES / Rijndael Généralités :
Le nombre de rondes
b0 02 03 01 01 a0
b1 01
= 01
02 03 01 a1 b0=‘02’ a0 ⊕ ‘03’ a1 ⊕ ‘01’ a2 ⊕ ‘01’ a3
b2 01 02 03 a2
b3 03 01 01 02 a3
■ Déchiffrement: multiplication par l’inverse du polynôme c(x):
c-1(x) = ‘0B’ x3 ⊕ ‘0D’ x2 ⊕ ‘09’ x ⊕ ‘0E’
75
AES / Rijndael :
Conclusion
■ 1) Sécurité : actuellement pas de méthode de
cryptanalyse pour AES connue.
■ 2) Performances : structure symétrique et
parallèle du chiffre.
■ Bien adapté aux processeurs actuels (Pentium,
processeurs RISC).
■ Adapté aux processeurs des cartes à puces.
■ Adapté à la réalisation en circuit intégré.
■ Utilisable dans de nombreux protocoles de
sécurité : WIFI, IPSEC…
76
Chiffres à clés secrètes
Chiffres en continu
(‘Stream Ciphers’)
Principes généraux
A5/1 (GSM)
RC4 (Wifi)
77
Principes généraux des chiffres en
continu
■ Chiffre en continu: un chiffre qui travaille bit par bit ou octet
par octet
■ Anglais : Stream cipher ou chiffrement par flot
■ Quelquefois State cipher chiffrement dépendant d’un état interne.
■ Combinaison d’un texte en clair en ou exclusif avec un flot de
clés obtenu par un générateur de nombres pseudo aléatoires.
■ La même clé ne doit jamais être utilisée deux fois.
■ Solution rapide en chiffrement, plus facile à implanter en
matériel (solution appréciée des électroniciens).
■ Solutions phares A5, RC4 : mal considérés en sécurité.
■ Variantes :
■ Synchronous Stream Cipher : générateur de nombres aléatoires à
partir d’une clé (il faut un mécanisme externe de synchronisation).
■ Self-synchronizing Stream Ciphers : on utilise les données des n
symboles chiffrés précédents pour générer la clé (si on a perdu la
synchronisation on se resynchronise après n symboles). 78
Chiffres en continu
(‘Stream Ciphers’)
Registres à décalage
à rétroaction linéaire
79
Registres à décalage à
rétroaction linéaire : LFSR
X1 X4 X10
Sortie
Fonction de rétroaction
Par exemple : Ou exclusif
X1 ⊕ X4 ⊕ X10
Le chiffre RC4
"Rivest Cipher N°4"
"Ron’s Code N°4"
83
RC4 : Introduction
■ 1) Chiffre propriétaire à clés privées société RSA-DSI 1987
■ 2) Algorithme secret mais le programme a été
désassemblé et publié en 1994 :
■ Le nom RC4 est resté protégé (Rivest Cipher n°4).
■ Usage libre possible (utilisation du nom ‘arcfour’ )
■ 3) Longueur de clé variable: ex de longueur 40, 104 bits.
■ 4) Fonctionnement en mode flot de clés ‘Stream cipher’
■ Génération d’une séquence pseudo aléatoire d’octets.
■ Le message en clair est en ou exclusif avec cette séquence.
■ 5) Extrêmement simple et implantation très efficace :
en matériel ou en logiciel.
■ 6) Les opérations utilisées sont des transpositions. 84
RC4 : Pseudo code du chiffre
1) Initialisation du tableau S de 256 octets
pour i = 0..255
S[i] := i ;
pour i = 0..255
j:=(j+S[i]+key[i mod key_length]) mod 256;
aux:=S[i] ; S[i]:=S[j] ; S[j]:=aux ; (échange S[i], S[j])
Les chiffres
dissymétriques
(à clé publique)
Introduction
RSA
El Gamal
88
Chiffres à clé publique :
Introduction
■ Problème des chiffres à clés privées : la
distribution des clés.
■ En solution à clés secrètes : pour communiquer
dans un groupe de n participants il faut n(n-1)/2
clés.
■ Distribution des clés à réaliser en utilisant le
réseau (pour être pratique).
■ La cryptographie à clés publique (1976)
■ Diffie et Hellman définissent les principes d'une nouvelle
approche en cryptographie sans proposer de solution
concrète au problème qu'ils posent.
■ Diffie et Hellman proposent un protocole d’échange de
clés.
89
Chiffres à clé publique: Rappel des
principes de l’approche Diffie-
Diffie-Hellman
■ Deux fonctions Ek et Dk' dépendent de clés k et k‘
différentes: Ek est la méthode de chiffrement.
Dk' est la méthode de déchiffrement.
■ Propriété de base: le déchiffrement est l'inverse du
chiffrement.
Dk' ( Ek (M) ) = M
■ Propriété majeure : Il est très difficile de déduire le
déchiffrement Dk' de la connaissance la méthode de
chiffrement Ek => Un problème de complexité très élevée.
Le chiffre RSA
‘Rivest,
Rivest, Shamir, Adleman’
Adleman’
Méthodes de chiffrement et de déchiffrement
Détermination des clés
Réalisation des calculs du RSA
Sécurité du RSA
96
RSA :
Introduction
100
RSA : Preuve de fonctionnement
Bases mathématiques
■ Notion de fonction indicatrice d'Euler φ
■ Pour n entier: z = φ(n) l’indicatrice d'Euler est définie
comme le nombre d'entiers premiers avec n plus petits que
n: φ(n) = card { j:1≤j≤n , pgcd (j,n) =1 }
■ Exemples simples d’indicatrice d’Euler :
■ Si n est premier : φ(n) = n-1
■ Si n = p . q avec p et q premiers : φ(n) = (p-1).(q-1)
■ Théorème de Fermat-Euler (Euler extension du
petit théorème de Fermat)
■ Fermat : si n est premier et a<n : an-1 = 1 (mod n )
■ Euler : Si a et n sont premiers entre eux ( pgcd(a,n) =101
1)
a φ(n) = 1 (mod n )
RSA : Preuve de fonctionnement
Déchiffrement inverse du chiffrement
Le chiffre El Gamal
116
Chiffre à clés publiques El Gamal :
Introduction
■ 4) Clé publique : g , p , y
■ 5) Clé secrète : x , p difficulté du logarithme discret
118
Chiffre à clés publiques El Gamal :
Chiffrement et déchiffrement
Chiffrement
■ A partir de la clé publique : les entiers p, g, y.
■ Choisir k entier: k et p-1 premiers entre eux (pgcd(k,p-1)=1 )
■ Chiffrer M (taille inférieure à p-1): un couple de deux
entiers a,b
■ a = gk (mod p)
■ b = yk M (mod p)
■ Avantage : Le chiffrement dépend en plus d’une valeur k
aléatoire: si l’on chiffre deux fois la même chose on a deux
chiffres différents.
■ Inconvénient : la taille du chiffre est le double de la taille du
message en clair.
Déchiffrement
■ Principe général (clé x , p ; chiffre a , b) : M = b/ax (mod p)
■ Parce que y = gx (mod p) donc b = gkx M (mod p) 119
■ Et ax = gkx (mod p)
Chiffre à clés publiques El Gamal :
Conclusion
120
La cryptographie : Chapitre III
Introduction
MD5
SHA
121
Introduction Fonctions de hachage:
Définition de base d’un hachage
■ 1) Une fonction de hachage est une fonction H qui à une
entrée de taille quelconque M (sur m bits , m
quelconque) fait correspondre une sortie de taille fixe
H(M) (n bits).
■ Idée de compression : le hachage est plus court que la donnée.
■ Idée de simplicité de calcul : le calcul d’un hachage doit être
rapide => calcul direct, vérification fréquente.
■ 2) Exemples de hachages:
■ Parité longitudinale, code polynomial.
■ Nombreuses fonctions étudiées des les années 1960 (Donald Knuth)
: itérations d’une fonction sur M découpé en blocs de n bits.
■ 3) Terminologie: hachage, résumé, contraction,
empreinte, "digest", "hash code"....
122
Introduction aux fonctions de hachage:
Utilisation des hachages
■ 1) Emploi des fonctions de hachage selon la taille
■ Hachages généraux: m bits arbitraire sur n bits fixes.
■ Hachage compressifs: m bits fixes vers n bits fixes (n ≤ m).
■ En général on ne hache que des données de taille au moins égale au hachage (sinon
on rajoute un bourrage).
■ Hachage sans compression: m=n fixe (utilisation voisine d’un chiffre).
■ 2) Utilisation classique des hachages : génération de clés pour
caractériser des données (obtention d’une adresse à partir d’une clé).
■ Eviter les collisions : deux enregistrements ont la même clé.
■ Dans un usage d’indexation : possibilité de gérer les débordements.
■ 3) Utilisation des hachages en sécurité:
■ Confirmation de connaissance: vérification d’intégrité (signatures) ,
stockage de mots de passe.
■ Génération de suites pseudo aléatoires.
■ Génération de clés, de mots de passe.
=> Besoin de propriétés supplémentaires : notion de hachages sécuritaires
123 ou
cryptographiques.
Fonctions de hachage:
Propriétés de base
■ 1) Un hachage compressif ne peut être injectif
■ Tous les H(M) ne peuvent être différents
■ Image d’un ensemble de taille arbitraire de messages M dans un ensemble de
taille limitée (n bits): il existe une infinité de M qui ont le même H(M).
■ 2) Un hachage devrait être surjectif (surjection : toutes les configurations
à n bits sont atteintes)
■ Vue théorique: comme on part d’un nombre infini de M => on doit atteindre
toutes les images possibles.
■ Vue pratique: pour une application donnée on ne génère qu’un nombre fini et
assez petit de messages différents => le nombre des hachages différents
générés réellement est très petit par rapport au nombre des hachages
possibles.
■ 3) Définition informelle (Schneier/Ferguson): une bonne fonction de
hachage doit réaliser un mappage ‘aléatoire’ de l’ensemble des
entrées sur l’ensemble des sorties.
■ Aléatoire : Equi-répartition, imprévisibilité des valeurs atteintes.
124
Fonctions de hachages sécuritaires :
Propriété a) Hachage à sens unique
■ 1) Anglais : OWHF ‘One Way Hash Function’
‘Pre-image resistance’ : qui résiste à l’obtention d’une
pré image.
■ 2) Utilisation de la notion de sens unique dans le
domaine des fonctions de hachage (des fonctions
de compression).
■ 3) Définition : sens unique pour un hachage
■ Etant donné une valeur de n bits a (un hachage) il est
difficile (c’est un problème très difficile, de
complexité élevée) de trouver un message M (m bits)
tel que H(M)= a.
■ 4) Une utilisation typique: codage de mots de
passe pour transmission réseau ou stockage sur
disque et vérification ultérieure. 125
Fonctions de hachage sécuritaires :
Propriété b) : Collisions faibles difficiles
■ 1) ‘Weak Collision Resistance’ ‘Second Pre-
image resistance’
■ 2) Définition: Il est difficile (de complexité
algorithmique très élevée) de trouver un second
message M’ différent de M ayant le même
hachage que M c’est à dire H(M’)=H(M).
■ 3) Utilisation en intégrité :
■ Pour un message valide M , a=H(M)
■ Un intrus ne peut remplacer le message M
■ par un autre qu’il a pu forger M’ tel que H(M’) = a
■ pour violer l’intégrité (perturber les échanges). 126
Fonctions de hachage sécuritaires :
Propriété c) : Collisions fortes difficiles
■ 1) CRHF ‘Collision Resistance Hash Function’ ‘Strong
Collision Resistance’
■ 2) Définition: il est difficile (complexité
algorithmique) de générer des collisions c’est-à-dire
de construire deux messages différents
quelconques M et M’ tels que H(M)=H(M’).
■ 3) Fonctions de hachage recherchées en sécurité
■ Attaque typiquement réalisée: recherche de collisions.
■ 4) La construction d’une fonction de hachage à
collisions fortes serait plus difficile qu’un chiffre
=> calcul plus long. 127
Fonctions de hachage sécuritaires :
Collisions fortes difficiles (2)
■Utilisation en intégrité:
■ Propriété qui empêche un intrus qui a forgé deux
messages M et M’ avec même hachage
■ de faire signer l’un anodin (M) par une
personne autorisée
■ puis de remplacer M par M’ avec une signature
parfaite.
■ Solution : si on a des doutes sur le fait que H
soit résistant aux collisions rajouter toujours
avant de signer un peu d’infos. 128
Fonctions de hachage sécuritaires :
Avec ou sans clé (MDC ou MAC)
Processus itératif Mi
H0 = VI
F : fonction de compression
Hi-1
Hi = F(Hi-1, Mi )
Hachage 131
Fonctions de hachage sécuritaires :
Choix d’une fonction de compression
MD5
‘Message Digest N°5’
133
MD5 :
Introduction
■ 1) Conçu par Ronald Rivest: publication avril 1992
■ 2) Architecture de Merckle.
■ 3) Série de hachages MD1 à MD4: corrige de plus
en plus de défauts
=> MD5 une amélioration de MD4.
■ 4) Génère un hachage: 128 bits.
■ 5) IETF: RFC 1321.
■ 6) Algorithme de hachage très souvent utilisé
avant d’être considéré comme faible : possibilité de
générer des collisions en assez peu d’opérations.
134
MD5 : Algorithme (1)
■ 1) Calcul itératif du résultat de 128 bits sous la forme de quatre mots
de 32 bits a, b, c, d initialisés au départ à des constantes:
a = 01234567 b = 89ABCDEF c = FEDCBA98 d = 76543210
■ 2) Un message est décomposé en blocs de 512 bits soient 16 sous-
blocs de 32 bits notés Mj: un message est complété à un nombre entier de
blocs de 512 bits par bourrage.
■ 3) Pour chaque bloc de 512 bits on réalise un calcul à partir de la
dernière valeur de a,b,c,d -> nouvelle valeur a,b,c,d.
■ 4) Définition des fonctions F, G, H, I : elles sont non linéaires sur 32 bits
à partir de ou, et, non, ouex (ou exclusif).
F ( X ,Y ,Z ) = ( X ∧ Y ) ∨ (¬X ∧ Z )
G (X ,Y , Z ) = (X ∧ Z ) ∨ (Y ∧ ¬Z )
H (X ,Y ,Z ) = (X ⊕ Y ⊕ Z )
I(X ,Y ,Z ) = Y ⊕ (X ∨ ¬Z ) 135
MD5 : Algorithme (2)
■ 5) Le calcul comprend 4 rondes de 16 applications
successives de quatre fonctions FF, GG , HH, II
■ 6) Ces fonctions dépendent des fonctions F, G, H, I, des
sous-blocs Mj, des variables a, b, c, d, et de constantes ti.
■ 7) On utilise deux opérateurs:
■ << s dénote une rotation à gauche de s positions.
■+ est l’addition modulo 232
FF (a , b , c , d , Mj , s , ti) : a = b + ((a + F(b,c,d) + Mj + T[i]) << s)
GG(a , b , c , d , Mj , s , ti) : a = b + ((a + G(b,c,d) + Mj + T[i]) << s)
HH(a , b , c , d , Mj , s , ti) : a = b + ((a + H(b,c,d) + Mj + T[i]) << s)
II (a , b , c , d , Mj , s , ti) : a = b + ((a + I(b,c,d) + Mj + T[i]) << s)
136
MD5 : Algorithme (3)
■ La première ronde: FF (a,b,c,d, M(0),7, D76AA478)
FF (d,a,b,c, M(1),12, E8C7B756)
FF (c,d,a,b, M(2),17, 242070DB)
FF (b,c,d,a, M(3),22, C1BDCEEE)
FF (a,b,c,d, M(4),7, F757C0FAF)
FF (d,a,b,c, M(5),12, 4787C62A)
FF (c,d,a,b, M(6),17, A8304613)
FF (b,c,d,a, M(7),22, FD469501)
FF (a,b,c,d, M(8),7, 698098D8)
FF (d,a,b,c, M(9),12, 8B44F7AF)
FF (c,d,a,b, M(10),17, FFFF5BB1)
FF (b,c,d,a, M(11),22, 895CD7BE)
FF (a,b,c,d, M(12),7, 6B901122)
FF (d,a,b,c, M(13),12, FD987193)
FF (c,d,a,b, M(14),17, A679438E)
FF (b,c,d,a, M(15),22, 49B40821)
■ Quatre rondes analogues: basées sur les fonctions FF, GG, HH, II.
■ Les constantes utilisées changent selon les rondes. 137
MD5 : Conclusion
SHA
‘Secure Hash Algorithm’
Algorithm’
139
SHA : ‘‘Secure
Secure Hash Algorithm’
Algorithm’
Introduction
142
SHA-
SHA-1 : Algorithme (3)
1 Commentaire : Découper Mi en 16 mots de 32 bits W0, W1, …. , W15
puis initialiser les 80 Wt
2 Pour t = 16 jusqu’à 79 faire
3 Wt := Wt-3 ⊕ Wt-8 ⊕ Wt-14 ⊕ Wt-16 << 1 ;
4 Finpour ;
5 Commentaire : Initialiser A , B , C , D , E (valeur initiale ou valeur
résultant du précédent bloc)
6 A := H0 ; B := H1 ; C := H2 ; D := H3 ; E := H4 ;
7 Commentaire : Calcul principal
8 Pour t = 0 jusqu’à 79 faire
9 TEMP := (A << 5) + ft(B,C,D) + E + Wt + Kt ;
10 E := D ; D := C ; C := (B << 30) ; B := A ; A := TEMP ;
11 Finpour ;
12 Commentaire : présentation du résultat
13 H0 := H0 + A ; H1 := H1 + B ; H2 := H2 + C ;
H3 := H3 + D ; H4 := H4 + E ; 143
Secure Hash Algorithm:
Algorithm:
SHA-
SHA-256 , SHA-
SHA-384 , SHA-
SHA-512
Générateurs de nombres
aléatoires cryptographiques
Introduction
Générateurs de nombres aléatoires d’origine physique
Générateurs de nombres pseudo-aléatoires
147
Générateurs de nombres aléatoires :
Introduction
Besoins de nombres aléatoires en sécurité (à
différents niveaux)
Conclusion
158
Cryptographie : domaine en
évolution constante
■ 1) Des fonctions sécuritaires aux propriétés difficiles à
satisfaire:
■ Les chiffres : complexité des inverse,
■ Les hachages : complexité de la génération des collisions,
■ Les générateurs de nombres aléatoires : complexité des suites générées
■ 2) Domaine basé essentiellement sur la théorie de
l’information et de la complexité algorithmique.
■ 3) Fonctions à redéfinir en permanence.
■ En relation avec la progression des attaques et de leurs parades.
■ En relation avec l’accroissement exponentiel de la puissance de calcul
disponible qui nécessite l’augmentation des tailles.
■ 4) Conséquence : il faut voir la cryptographie comme un
processus plus que comme des solutions toutes faites
(B Schneier).
159
Bibliographie
- Bruce Schneier, Cryptographie appliquée , Thomson
Publishing, Paris 1995
- Bruno Martin, Codage , cryptologie et applications, Presses
polytechniques et universitaires romandes 2004
- Stéphane Natkin, Les protocoles de sécurité de l’Internet,
Dunod, 2002
- Niels Ferguson , Bruce Schneier, Cryptographie en
pratique , Wiley 2003, Vuibert 2004, Paris 1995
- A Menezes, P Van Oorschot, S Vanstone, Handbook of
applied cryptography, CRC Press Inc, 1997
- Très nombreux cours disponibles en ligne et pages
spécialisées sur des concepts, normes ou produits
Exemple Cours "Cryptographie et Sécurité''
http://cui.unige.ch/tcs/cours/crypto/ José Rolim, Frédéric
Schutz 160