Академический Документы
Профессиональный Документы
Культура Документы
Introduction à la cryptographie
Sébastien VARRETTE
Déroulement du cours
Plan
Principes généraux de la
cryptographie
Notion de Sécurité
SECURITE
SECURITE
CRYPTOLOGIE
INFORMATIQUE
Notion de Cryptologie
Notion de Cryptologie
Terminologie (1)
Protagonistes traditionnels :
Alice et Bob : souhaitent se transmettre des informations
Oscar : un opposant qui souhaite espionner Alice et Bob
Objectif fondamental de la cryptographie
permettre à Alice et Bob de communiquer sur un canal peu sûr
Oscar ne doit pas comprendre ce qui est échangé.
OSCAR
Informations
Canal de communication
confidentielles
ALICE BOB
num de compte
code secret....
message M
Terminologie (2)
OSCAR
Informations
Canal de communication
confidentielles
ALICE BOB
num de compte
code secret....
message M
Algorithmes de cryptographie
ALICE BOB
Chiffrement Déchiffrement
Relation fondamentale
Ke
M E C
Coucou! zgk&$qw
F
Texte clair Texte chiffré
Kd
transcription D
(
transcription
EK (M) = M + K mod n
17 3 21 36 27 30 7 K=3 20 6 24 1 30 33 10
DK (C ) = C − K mod n
E
chiffrement
Menaces passives
OSCAR
Menace active
OSCAR
Oscar peut modifier le contenu des
messages échangés.
ALICE BOB
Messages menace l’intégrité de l’information.
Algorithmes d’attaques
1 Attaque brutale
Énumérer toutes les valeurs possibles de clefs
64 bits =⇒ 264 clefs = 1.844 ∗ 1019 combinaisons
Un milliard de combinaisons/s ⇒ 1 an sur 584 machines
2 Attaque par séquences connues
Deviner la clef si une partie du message est connue
ex : en-têtes de standard de courriels
3 Attaque par séquences forcées
Faire chiffrer par la victime un bloc dont l’attaquant connaı̂t le
contenu, puis on applique l’attaque précédente ...
4 Attaque par analyse différentielle
Utiliser les faibles différences entre plusieurs messages (ex :
logs) pour deviner la clef
Cryptographie Ancienne
Transposition Sparte (5ème siècle av JC)
Substitution César (1er siècle av JC), 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 de la cryptanalyse
Enigma (1918)
Vers un chiffrement parfait : Vernam, théorie de l’information
Standard de chiffrement à clé secrète : DES (1977),
AES(2000)
Cryptographie à clé publique (1976)
Principe
ALICE BOB
Connue seulement
Clé secrète K de Alice et bob Clé secrète K
Chiffrement Déchiffrement
N F T T B H F T F D S F U
E M S S G A E E S R C T E
http://www.apprendre-en-ligne.net/crypto/transpo/scytale.html
Le chiffrement de César...
chiffrement
N F T T B H F T F D S F U
N F T T B H F T F D S F U
http://www.bibmath.net/crypto/index.php?action=affiche&quoi=ancienne/stuart
Sébastien VARRETTE Introduction à la cryptographie
Principes généraux de la cryptographie Outils de base et premiers procédés
Cryptographie à clé secrète Chiffrement de Vernam
Cryptographie à clé publique Cryptographie moderne
Fonctions de hachage et signatures électroniques Les standard de chiffrement par bloc : DES et AES
Texte clair: L A V I E E S T B E L L E
transcription
’A’ : décalage de 0
11 0 21 8 4 4 18 19 1 4 11 11 4
’B’ : décalage de 1
Clé: B O N J O U R B O N J O U ...
Décalage: 1 14 13 9 14 20 17 1 14 13 9 14 20 ’Z’ : décalage de 25
chiffrement Ex : chiffrement de
”La vie est belle”
12 14 8 17 18 24 9 20 15 17 20 25 24
A B C D E
Affichage
Cryptographie moderne
Auguste Kerckhoffs, La cryptographie militaire, Journal des sciences militaires, vol. IX, pp. 5-83, jan. 1883, pp.
Théorie de l’Information
Claude Shannon (1948)
Source d’information (S, P) sans mémoire
S = {s1 , . . . , sn }, P = {p1 , . . . , pn }
pi : probabilité d’occurence de si dans une emission
Notion d’entropie
1
Quantité d’information de si ∈ S : I (pi ) = log2 pi
Quantité d’information d’une source (S, P) “ ”
H(S) = − ni=1 pi log2 (pi ) = ni=1 pi log2 p1i
P P
Théorie de la complexité
M Substitution C
bit!à!bit
Sécurité :
Substitution rapide (⊕ typiquement)
Générateur pseudo aléatoire : ”impossible” à prédire
Kerckhoffs : la sécurité repose sur le générateur de clé !
Ex : LFSR, RC4 (Rivest), Py (Biham), E0[Bluetooth],
A5/3[GSM] LFSR : linear feedback shift register
Sébastien VARRETTE Introduction à la cryptographie
Principes généraux de la cryptographie Outils de base et premiers procédés
Cryptographie à clé secrète Chiffrement de Vernam
Cryptographie à clé publique Cryptographie moderne
Fonctions de hachage et signatures électroniques Les standard de chiffrement par bloc : DES et AES
M M1 M2 Ms
r bits
K Fonction de chiffrement K
+ E
mode de chiffrement
C C1 C2 Cs
r bits
Sécurité :
Pour chaque bloc : Ci = EK (Mi ) dépend de E
Pour chaque message : dépend aussi du mode de chiffrement !
Ex : DES, AES, IDEA, BLOWFISH, RC6
Sébastien VARRETTE Introduction à la cryptographie
Principes généraux de la cryptographie Outils de base et premiers procédés
Cryptographie à clé secrète Chiffrement de Vernam
Cryptographie à clé publique Cryptographie moderne
Fonctions de hachage et signatures électroniques Les standard de chiffrement par bloc : DES et AES
c0
Mode CBC (Cipher Bloc Chaining)
Ci = Ek (Mi ⊕ Ci−1 )
Ek Ek Ek
Mi = Ci−1 ⊕ Dk (Ci )
c1 c2 cn
Mode le plus utilisé
...
Mode CFB (Cipher FeedBack)
m1 m2 mn
Ci = Mi ⊕ EK (Ci−1 )
c0 Ek Ek Ek Mi = Ci ⊕ EK (Ci−1 )
Pas besoin de DK !
c1 c2 cn
Moins sûr, parfois plus rapide
Utilisé dans les réseaux
Mode OFB (Output FeedBack)
m1 m2 ... mn Zi = EK (Zi−1 ) ; Ci = Mi ⊕ Zi
c0 Ek Ek Ek
Zi = EK (Zi−1 ) ; Mi = Ci ⊕ Zi
Variante du mode précédent
c1 c2 cn Totalement symétrique
Moins de cablage
Utilisé dans les satellites
64 bits
Standard américain FIPS 46-2
M Mi
Chiffrement par blocs de 64 bits
D.E.S
IP
Clé de 64 bits dont 8 bit de parité :
L i!1 R i!1 56 bits effectifs (plaidé par la NSA)
Diversification en 16 sous-clés de 48 bits
f Ki
x16
Structure générale :
Permutation initiale IP
Li Ri
16 rondes ”de Feistel” :
(
IP^!1 Li = Ri−1
C Ci Ri = Li−1 ⊕ f (Ri−1 , Ki )
64 bits
Permutation finale IP −1
Sébastien VARRETTE Introduction à la cryptographie
Principes généraux de la cryptographie Outils de base et premiers procédés
Cryptographie à clé secrète Chiffrement de Vernam
Cryptographie à clé publique Cryptographie moderne
Fonctions de hachage et signatures électroniques Les standard de chiffrement par bloc : DES et AES
IP
58 50 42 34 26 18 10 2 Signification dans le calcul de
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6 y = IP(x) :
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1 le 58e bit de x est le premier de y
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5 le 50e bit de x est le second de y
63 55 47 39 31 23 15 7 etc...
IP−1 E P
40 8 48 16 56 24 64 32 32 1 2 3 4 5 16 7 20 21
39 7 47 15 55 23 63 31 4 5 6 7 8 9 29 12 28 17
38 6 46 14 54 22 62 30 8 9 10 11 12 13 1 15 23 26
37 5 45 13 53 21 61 29 12 13 14 15 16 17 5 18 31 10
36 4 44 12 52 20 60 28 16 17 18 19 20 21 2 8 24 14
35 3 43 11 51 19 59 27 20 21 22 23 24 25 32 27 3 9
34 2 42 10 50 18 58 26 24 25 26 27 28 29 19 13 30 6
33 1 41 9 49 17 57 25 28 29 30 31 32 1 22 11 4 25
32 bits 48 bits
A J
E fonction d’expansion
48 bits
E(A)
6 bits
B1 B2 B3 B4 B5 B6 B7 B8
S1 S2 S3 S4 S5 S6 S7 S8
C1 C2 C3 C4 C5 C6 C7 C8
4 bits
P
32 bits
f (A, J)
8 ”boı̂tes-S” S1 , S2 , . . . , S8
tableaux 4 × 16 entiers compris entre 0 et 15
S1
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
Soit une sous-chaı̂ne de six bits Bi = b1 .b2 .b3 .b4 .b5 .b6 .
Calcul de la chaı̂ne de quatre bits Si (Bj ) :
b1 .b6 = indice l de Si à considérer 0 ≤ l ≤ 3.
b2 .b3 .b4 .b5 = colonne c de Si à considérer 0 ≤ c ≤ 15
A l’intersection de l et c : Ci = Si (Bi ) !
On obtient ainsi C = C1 .C2 . . . C8 , chaı̂ne de 32 bits
On applique la permutation P : P(C ) = f (A, J).
K
64 bits
1 8 16 24 32 40 48 56 64
bits de parité
PC!1
28 bits 28 bits
C0 D0
LS 1 LS 1
C1 D1 PC!2
48 bits
LS 2 LS 2 K1
LS 16 LS 16
C 16 D 16 PC!2
48 bits
K16
Caractéristiques de DES
Après 5 tours, chaque bit du chiffré dépend de chaque bit du
message en clair et de chaque bit de la clef.
Résultat du chiffrement statistiquement ”plat”
Quelques exemples d’utilsation :
Cartes de crédit : UEPS (Universal Electronic Payment
System)
Protocole d’authentification sur réseaux : Kerberos
Messagerie éléctronique : PEM (Privacy-Enhanced Mail)
Implémentation hardware aisée
Opération facilement implémentables : cf TP :-)
Puce spécifique bas de gamme1 (' 60 euros) : ' 190 Mo/s.
Propriété de completion et clés faibles (pas une menace) :
DESK (M) = C =⇒ DESK̄ (M̄) = C̄
1
voir par exemple http://hifn.com/products/7955-7956.html
Sébastien VARRETTE Introduction à la cryptographie
Principes généraux de la cryptographie Outils de base et premiers procédés
Cryptographie à clé secrète Chiffrement de Vernam
Cryptographie à clé publique Cryptographie moderne
Fonctions de hachage et signatures électroniques Les standard de chiffrement par bloc : DES et AES
Cryptanalyse de DES
Précalcul exhaustif
Stocker le résultat de DES sur un texte choisi ∀K
Recherche exhaustive
Chiffrer un texte connu jusqu’à retrouver le chiffrement
permet de connaı̂tre la clef
Assez peu de progrès au début - attaques sur 8/16 rondes
(1975-1990)
Cryptanalyse différentielle (16 rondes) [Biham-Shamir
1990]
Etude des différences de chiffrement entre des textes similaires
Permet de sélectionner des clefs probables
Cryptanalyse linéaire (16 rondes) [Matsui 1993]
Utiliser des relations linéaires pour interpoler des bits de la clef
Et aujourd’hui ?
Représentation
matricielle
a0 a4 a8 a12
4 lignes a1 a5 a9 a13
a2 a6 a10 a14
a3 a7 a11 a15
N colonnes
AES-Rijndael
Standart NIST 2000 ;
Bloc : 128 bits ; Clé : 128/192/256 bits
Structure générale :
1 AddRoundKey Addition initiale de clé
2 Nr − 1 rondes, chacune constituées de 4 étapes :
SubBytes : substitution non-linéaire via S-Box.
ShiftRows : transposition matricielle par décalage à gauche
MixColumns : produit matriciel sur colonne
AddRoundKey Addition avec les octets des sous-clé
3 FinalRound : ronde finale (sans MixColumns)
AES_Encrypt(State, K) {
KeyExpansion(K, RoundKeys);
/* Addition initiale */
AddRoundKey(State, RoundKeys[O]);
/* Les Nr-1 rondes */
for (r=1; i<Nr; r++) {
SubBytes(State);
ShiftRows(State);
MixColumns(State);
AddRoundKey(State, RoundKeys[r]);
}
/* FinalRound */
SubBytes(State);
ShiftRows(State);
AddRoundKey(State, RoundKeys[Nr]);
}
Etape SubBytes
Etape Shiftrows
Etape MixColumns
Operation sur les colonnes de la matrice
Considéré un polynôme a(x) de degré 3 dans F256 [X ]
Réalise l’opération : (03x 3 + x 2 + x + 02) × a(x) mod (x 4 + 1)
Matriciellement :
3 2 2 3 2 3
b0 02 03 01 01 a0
4
6 b1
7 601 02 03 017 6a1 7
b(x) = c(x)×a(x) mod (x +1) ⇐⇒ 6
4b2 5 = 401
7 6 7×6 7
01 02 035 4a2 5
b3 03 01 01 02 a3
a0,0 aa0,1
0,1 a 0,2 a 0,3 b0,0 bb0,1
0,1 b0,2 b0,3
a1,0 aa1,1
1,1
a1,2 a1,3 b1,0 bb1,1
1,1 b1,2 b1,3
MixColumns
a2,0 aa2,1 a2,2 a2,3 b2,0 bb2,1 b2,2 b2,3
2,1 2,1
a3,0 a3,1 a3,2 a3,3 b3,0 bb3,1 b3,2 b3,3
a3,1 3,1
02 03 01 01
01 02 03 01
=
01 01 02 03
03 01 01 02
Etape MixColumns−1
Etape AddRoundKey
4
W
Nk W[0]
W[1]
4 KeyExpansion
K W[Nr]
W[0] W[Nr]
c[6] : 7ème colonne de W
KeyExpansion(K, W) {
/* Recopie directe des Nk premiere colonnes */
for (i=0; i<Nk; i++) c[i] = k[i];
for (i=Nk; i<Nb*(Nr+1); i++) {
tmp = c[i-1];
if (i mod Nk == 0)
tmp = SubWord(RotWord(tmp)) + Rcon[i/Nk];
else if ((Nk > 6) && (i mod Nk == 4)) // Cas Nk > 6
tmp = SubWord(tmp);
c[i] = c[i-Nk] + tmp;
}
}
Sécurité de l’AES
Propriétés cryptanalytiques
SBox : sans point fixe ni opposé, ni inverse
ShiftRow diffuse les données en séparant les consécutifs
MixColumn : chaque bit de sortie dépend de tous les bits en
entrée (code correcteur linéaire sur chaque colonne)
Implémentations ”simple” efficace
cf TP :-)
FPGA : jusqu’à 21.54 Go/s pour le chiffrement
Cryptanalyse :
Aucune attaque significative révélée
MAIS seulement 5 ans de recherche
(to be continued)
Projets de standardisation/Recommendations
NESSIE (New European Schemes for Signatures, Integrity and Encryption) (EU03)
Chiffrement symétriques par bloc :
=⇒ MISTY1 (Bloc : 64 bits ; Clé : 128 bits)
47 cycles/octet sur un PIII/Linux.
=⇒ AES-Rijndael
=⇒ Camellia (Bloc : 128 bits ; Clé : 128/192/256 bits)
35 cycles/octet sur un PIII/Linux.
=⇒ SHACAL-2 (Bloc : 256 bits ; Clé : 512 bits)
44 cycles/octet sur un PIII/Linux.
Fonctions de hachage à sens unique
=⇒ Whirlpool
=⇒ SHA-256, SHA-384 et SHA-512 (clairvoyant ! cf SHA-1)
Chiffrement asymétriques : PSEC-KEM, RSA-KEM, ACE-KEM
Signature électronique : RSA-PSS, ECDSA, SFLASH
Motivations
Principe
"ANNUAIRE"
Bob −> Cle publique de Bob
ALICE BOB
Clé Publique de Bob Clé privée de Bob
Chiffrement Déchiffrement
Equation fondamentale :
ici : Ke 6= Kd ,
(
EKe (M) = C Ke publique (connue de tous)
DKd (C ) = M
Kd secrète (connue seulement de Bob)
Theorem (Euclide)
Soit a, b ∈ N / a ≤ b. Soit r le reste de la division euclidienne de a
par b. Alors pgcd(a,b)= pgcd(b,r).
Algorithme :
Tq b 6= 0 :(a, b) −→ (b, a mod b)
si b = 0 renvoyer a
Exemple : pgcd(42, 30) = 6
Theorem (Bezout)
au + bv = d
x y=f(x)
difficile
Ex : factorisation d’entiers.
Fonction à sens unique avec trappe.
la connaissance de la trappe (clé) facilite le calcul inverse !
Le cryptosystème RSA
ed ≡ 1 mod ϕ(n).
Chiffrement RSA
Alice récupère la clef publique (n, e) de Bob
Pour chiffrer le message M entier tel que 0 ≤ M < n :
C = M e mod n
Déchiffrement RSA
Pour déchiffrer le message C reçu d’Alice, Bob calcule
C d = M mod n
En effet, ∃k ∈ Z tel que :
Cd ≡ M e.d mod n
≡ M 1+k.ϕ(n) mod n
k
≡ M. M ϕ(n) ≡ M mod n = M
Déchiffrement de C :
3
http://www.loria.fr/~zimmerma/records/factor.html
Sébastien VARRETTE Introduction à la cryptographie
Principes généraux de la cryptographie Principe & pré-requis mathématiques
Cryptographie à clé secrète Le cryptosystème RSA
Cryptographie à clé publique DLP & Diffie-Hellman
Fonctions de hachage et signatures électroniques Le cryptosystème de El Gamal
K = g ab = Ab = B a .
Sécurité de DH
Problème de DH :
connaissant G , g , A = g a et B = g b , calculer K = g ab .
A l’heure actuelle, résoudre DLP est la seule méthode
générale connue pour résoudre DH.
MAIS : pas de preuve que résoudre DLP ⇐⇒ résoudre DH.
Choix du groupe G : G = F∗p , G = E (Fp ), etc.
Attention au bon choix des paramètres.
Le cryptosystème de El Gamal
Chiffrement
Alice souhaite envoyer le message M ∈ G à Bob
Alice récupère la clef publique (G , g , n, A) de Bob.
Alice choisit au hasard k ∈ [1, n − 1]
Le message chiffré qu’Alice envoit à Bob est C = (y1 , y2 ) avec
y1 = g k
y2 = M.Ak
Déchiffrement
Bob recoit le message chiffré C = (y1 , y2 )
Il lui suffit alors de calculer
En effet :
n−a
y2 .y1n−a = M.Ak . g k
= M.g a.k .g k.n .g −ka
= M.g a.k . (g n )k .g −ka
= M.g a.k .g −ka = M
x 6= x 0
H(x) = H(x 0 )
h
h h
i−1 i
(de taille n) (de taille n)
h h h h
IV H(M)
(de taille n) (de taille n)
Réalisation pratique :
Cryptosystèmes à clef secrète (et arbitre)
Cryptosystèmes à clef publique + fonction de hachage
On préfère signer le hachage d’un document
Taille fixe suffisamment petite pour être utilisée efficacement
par un cryptosystème à clé publique
blablabbla
ALICE Algorithme de
Vérification de la signature
Signature valide
ou
utilise la clé publique Ke d’Alice
blablabbla Signature non valide
ALICE
Extraction Document
Fonction
et la fonction de chiffrement E
blablabbla
de
EKe (s(M)) = hM =? H(M)
blablabbla
Hachage
Signature RSA
Signature El Gamal
En effet,
−1 (h −a.r )
Ar r s ≡ g a.r .g kk M
mod p
hM
≡ g mod p
˜
Si le document est authentique : hM = h˜M ⇒ g hM ≡ g hM mod p
Sébastien VARRETTE Introduction à la cryptographie
Principes généraux de la cryptographie Idée générale des signatures électroniques
Cryptographie à clé secrète Signature RSA
Cryptographie à clé publique Signature El Gamal
Fonctions de hachage et signatures électroniques Le standard DSA
Le standard DSA