Vous êtes sur la page 1sur 33

Canaux auxiliaires

Toute action laisse des traces !!!!

Sécurité et Canaux Auxiliaires

Guénaël Renault

ANSSI / UPMC - LIP6 - POLSYS

+Utiliser depuis toujours pour le renseignement !


2/90

La cryptologie

Part I Définitions
La cryptologie est la science du secret. Elle se divise en deux
disciplines :
Définitions La cryptographie qui est l’étude des algorithmes permettant la
protection d’informations (numériques). Ces algorithmes sont
appelés cryptosystèmes +design;
la cryptanalyse qui est l’étude du niveau de sécurité des
cryptosystèmes fournis par les cryptographes +attack.

3/90 4/90
La cryptanalyse La cryptanalyse
Peut essentiellement se diviser en deux grandes familles d’attaques
qui viseront deux cibles différentes :
Peut essentiellement se diviser en deux grandes familles d’attaques
algorithmes : ici l’attaquant essaie de trouver des algorithmes
qui viseront deux cibles différentes :
efficaces pour résoudre les problèmes mathématiques sur
lesquels reposent les cryptosystèmes +Cours CRYPTO
algorithmes : ici l’attaquant essaie de trouver des algorithmes
efficaces pour résoudre les problèmes mathématiques sur implémentations matérielles : ici l’attaquant utilisera d
lesquels reposent les cryptosystèmes +Cours CRYPTO phénomènes physiques pour obtenir des fuites d’information ou
provoquer des erreurs lors de l’exécution d’un cryptosystème.
implémentations matérielles : ici l’attaquant utilisera d
+Cours SCA.
phénomènes physiques pour obtenir des fuites d’information ou
provoquer des erreurs lors de l’exécution d’un cryptosystème.
+Cours SCA. Cours SCA : K. Heydemann , E. Encrenaz, P. Bazargan Sabet (UPMC)
G.R. , A. Thillard, J. Lopes-Esteves et Mathieu Renard (ANSSI)
D. Vigilant (Gemalto)
S. Guilley (Télécom ParisTech)
L. Bettale (Oberthur)
J. Clédière (CEA LETI)
5/90 5/90

La cryptographie La cryptographie
La cryptographie protège l’information de différentes manières : La cryptographie protège l’information de différentes manières :
confidentialité : pour s’assurer que l’information ne soit seulement confidentialité : pour s’assurer que l’information ne soit seulement
accessible qu’à ceux dont l’accès est autorisé ; accessible qu’à ceux dont l’accès est autorisé ;
authenticité : vérifier l’identité d’une personne ou d’un matériel authenticité : vérifier l’identité d’une personne ou d’un matériel
informatique ; informatique ;
intégrité : pouvoir affirmer que les données ont ou n’ont pas été
intégrité : pouvoir affirmer que les données ont ou n’ont pas été
modifiées ;
modifiées ;
+Ces moyens doivent reposer sur des secrets
clé secrète : cryptographie symétrique ; Terminologie

clé publique/secrète : cryptographie asymétrique
Chiffrer : l’action de rendre un message clair M (plaintext) en un
Principe de Kerckhoffs (Journal des sciences militaires, 1883) message C appelé cryptogramme ou message chiffré, illisible.
Déchiffrer : Action inverse du chiffrement.
La sécurité d’un cryptosystème ne doit reposer que sur le secret Cryptosystème : L’algorithme (ou le dispositif physique) permettant de
de la clef. En particulier un attaquant est supposé connaı̂tre le chiffrer des données.
cryptosystème (Les cryptosystèmes militaires, vus comme des Attaquer, Casser : Mettre à mal la sécurité d’un cryptosystème
dispositifs physiques, peuvent tomber aux mains de l’ennemi). (retrouver M à partir de C sans connaı̂tre la clé, retrouver la clé).
6/90 6/90
Chiffrement symétrique : Modélisation

Définition
Part II Un chiffrement est dit symétrique (ou à clé privée) si pour chiffrer et
déchiffrer, la même clé secrète est utilisée.

Chiffrement symétrique : Romantisme et Modélisation du cryptosystème


P et C les alphabets pour écrire les messages clairs et les
attaques statistiques messages chiffrés respectivement.
K l’ensemble des clés possibles.
Pour tout K 2 K on peut définir deux applications eK : P ! C et
dK : C ! P telles que dK (eK (x)) = x pour tout x 2 P.

+les alphabets peuvent être composés de symboles uniques ou de


blocs de symboles. Par exemple on peut choisir les 26 caractères non
accentués de l’alphabet usuel.

7/90 8/90

Chiffrement de blocs de texte : Mode ECB Chiffrement de blocs de texte : Mode ECB
Chiffrement symétrique (la même clé K pour dé/chiffrer)
Chiffrement symétrique (la même clé K pour dé/chiffrer)
P et C les alphabets clairs et chiffrés.
P et C les alphabets clairs et chiffrés.
K l’ensemble des clés possibles.
K l’ensemble des clés possibles.
K 2 K : eK : P ! C et dK : C ! P avec 8x 2 P dK (eK (x)) = x.
K 2 K : eK : P ! C et dK : C ! P avec 8x 2 P dK (eK (x)) = x.
Les applications eK et dK nécessitent la connaissance complète
Les applications eK et dK nécessitent la connaissance complète de K pour être définies.
de K pour être définies.

En pratique : chiffrer avec la clé K


Pour chiffrer un texte P clair on procède comme suit
1 On découpe P en blocs correspondant aux éléments de P
2 On applique eK sur chacun des blocs de P
3 On obtient ainsi C un message correspondant à P et écrit à l’aide


de C.

9/90
Ce mode de chiffrement est à proscrire en général. 9/90
Chiffrement de blocs de texte : Mode ECB Période artisanale : Cesar

+Le chiffrement de César (décrit précédemment dans le Kàma-sùtra


Chiffrement symétrique (la même clé K pour dé/chiffrer) -400), le point de départ de la cryptographie par substitution générale.
P et C les alphabets clairs et chiffrés.
K l’ensemble des clés possibles.
K 2 K : eK : P ! C et dK : C ! P avec 8x 2 P dK (eK (x)) = x.
Les applications eK et dK nécessitent la connaissance complète
de K pour être définies.

En pratique : déchiffrer avec la clé K


Pour déchiffrer le texte C on procède comme suit
1 On découpe C en blocs correspondant aux éléments de C Implantation en shell d’un décalage de César :
2 On applique dK sur chacun des blocs de C
3 On obtient ainsi P le clair de à C. tr a-zA-Z n-za-mN-ZA-M

9/90 10/90

Période artisanale : Transposition/Substitution Période artisanale : Transposition/Substitution

Chiffrement par transposition Chiffrement par substitution monoalphabétique

Clef secrète est la permutation entre les alphabets .


Clef secrète est la permutation entre les positions des caractères.

11/90 11/90
Période artisanale : Transposition/Substitution Période artisanale : Transposition/Substitution

Chiffrement par substitution monoalphabétique


Chiffrement par substitution monoalphabétique

Clef secrète est la permutation entre les alphabets .


Clef secrète est la permutation entre les alphabets .
Cryptanalyse force brute :
Substitution : 26! permutations possibles. Cryptanalyse un peu plus intelligente : analyse des fréquences
Décalage : 26 décalages possibles.

11/90 11/90

Période artisanale : le point faible du Période artisanale : le point faible du


monoalphabétique monoalphabétique

+Al Kindi (˜ 800) explique dans son ouvrage


de cryptanalyse la méthode de l’étude des
fréquences.
+Marie Stuart (1587) Reine d’Écosse perd la
tête pour haute trahison. Elle utilisait un
chiffrement monoalphabétique qui a cassé par
un man-in-the-middle .

12/90 13/90
Période artisanale : Vigenère et le polyalphabétique Période artisanale : Vigenère et le polyalphabétique

+Vigenère publie en 1587 le résultat de ses recherches


sur des méthodes proposées par Alberti, Trithème et +Vigenère publie en 1587 le résultat de ses recherches
Porta. Il propose un cryptosystème polyalphabétique . sur des méthodes proposées par Alberti, Trithème et
Porta. Il propose un cryptosystème polyalphabétique .
Vigenère ou multi-décalage
On associe aux lettres un entier dans {0, . . . , 25} et on fixe un mot
Vigenère ou multi-décalage
C = (c1 , . . . , c` ) de ` lettres pour être la clé secrète . On découpe le On associe aux lettres un entier dans {0, . . . , 25} et on fixe un mot
message à envoyer en blocs Bi = (x(i,1) , x(i,2) , . . . , x(i,`) ) de ` lettres . Le C = (c1 , . . . , c` ) de ` lettres pour être la clé secrète . On découpe le
chiffrement/déchiffrement par un multi-décalage sur les Bi : message à envoyer en blocs Bi = (x(i,1) , x(i,2) , . . . , x(i,`) ) de ` lettres . Le
E(x(i,j) ) = x(i,j) + cj mod 26 chiffrement/déchiffrement par un multi-décalage sur les Bi :
D(x(i,j) ) = x(i,j) cj mod 26 E(x(i,j) ) = x(i,j) + cj mod 26
D(x(i,j) ) = x(i,j) cj mod 26

Cryptanalyse force brute : longueur ` fixée, on a 26` clés possibles !


Analyse des fréquences : Ne fonctionne plus directement !

14/90 14/90
Exemple sur un texte plus long

Soit un texte chiffré de plusieurs centaines de caractères. Ce texte paraît a priori aléatoire et pourtant
il contient des redondances intéressantes.
Période artisanale : Vigenère et le polyalphabétique Cryptanalyse (
˜ 1860): Vigenère et le
polyalphabKQOWEFVJPUJUUNUKGLMEKJINMWUXFQMKJBGWRLFNFGHUDWUUMBSVLPS
étique
NCMUEKQCTESWREEKOYSSIWCTUAXYOTAPXPLWPNTCGOJBGFQHTDWXIZA
+Vigenère publie en 1587 le résultat de ses recherches YGFFNSXCSEYNCTSSPNTUJNYTGGWZGRWUUNEJUUQEAPYMEKQHUIDUXFP

sur des méthodes proposées par Alberti, Trithème et GUYTSMTFFSHNUOCZGMRUWEYTRGKMEEDCTVRECFBDJQCUSWVBPNLGOYL


SKMTEFVJJTWWMFMWPNMEMTMHRSPXFSSKFFSTNUOCZGMDOEOYEEKCPJR
Porta. Il propose un cryptosystème polyalphabétique . +Charles Babbage (1792-1871)
GPMURSKHFRSEIUEVGOYCWXIZAYGOSAANYDOEOYJLWUNHAMEBFELXYVL
+Friedrich Wilhelm Kasiski (1805-1881)
WNOJNSIOFRWUCCESWKVIDGMUCGOCRUWGNMAAFFVNSIUDEKQHCEUCPFC

Vigenère ou multi-décalage MPVSUDGAVEMNYMAMVLFMAOYFNTQCUAFVFJNXKLNEIWCWODCCULWRIFT


WGMUSWOVMATNYBUHTCOCWFYTNMGYTQMKBBNLGFBTWOJFTWGNTEJKNEE
On associe aux lettres un entier dans {0, . . . , 25} et on fixe un mot DCLDHWTVBUVGFBIJG

C = (c1 , . . . , c` ) de ` lettres pour être la clé secrète . On découpe le Longueur de la clé : Test de Kasiski
message à envoyer en blocs Bi = (x(i,1) , x(i,2) , . . . , x(i,`) ) de ` lettres . Le KQOWEFVJPUJUUNUKGLMEKJINMWUXFQMKJBGWRLFNFGHUDWUUMBSVLPS
NCMUEKQCTESWREEKOYSSIWCTUAXYOTAPXPLWPNTCGOJBGFQHTDWXIZA
chiffrement/déchiffrement par un multi-décalage sur les Bi : YGFFNSXCSEYNCTSSPNTUJNYTGGWZGRWUUNEJUUQEAPYMEKQHUIDUXFP
E(x(i,j) ) = x(i,j) + cj mod 26 GUYTSMTFFSHNUOCZGMRUWEYTRGKMEEDCTVRECFBDJQCUSWVBPNLGOYL
SKMTEFVJJTWWMFMWPNMEMTMHRSPXFSSKFFSTNUOCZGMDOEOYEEKCPJR
D(x(i,j) ) = x(i,j) cj mod 26 GPMURSKHFRSEIUEVGOYCWXIZAYGOSAANYDOEOYJLWUNHAMEBFELXYVL
WNOJNSIOFRWUCCESWKVIDGMUCGOCRUWGNMAAFFVNSIUDEKQHCEUCPFC
Cryptanalyse force brute : longueur ` fixée, on a 26` clés possibles ! MPVSUDGAVEMNYMAMVLFMAOYFNTQCUAFVFJNXKLNEIWCWODCCULWRIFT
WGMUSWOVMATNYBUHTCOCWFYTNMGYTQMKBBNLGFBTWOJFTWGNTEJKNEE
Analyse des fréquences : Ne fonctionne plus directement ! DCLDHWTVBUVGFBIJG
Difficulté de son utilisation manuelle ) impopulaire jusqu’au 19eme
siècle . Mono-alphabétique persiste (homophonique ) +Le pgcd (probable) entre les différentes distances
On regarde ensuite la distance entre les répétitions. On cherche les facteurs pour chaque paire :
14/90 15/90

Longueurs de clef possibles (diviseurs de la


distance)
Cryptanalyse automatique du chiffrement de Vigenère Cryptanalyse automatique : Utilisation des
Statistiques
1 Retrouver la longueur de la clé William F. Friedman (1891 - 1969)
2 Retrouver la clé +Utilisation des invariants
statistiques pour distinguer
+Pour la seconde étape on peut voir cela comme une attaque d’un un langage courant d’un flux
multi-chiffrement monoalphabétique. aléatoire.
Idée clé: +Ne s’attache pas
uniquement à la proba de
Plutôt que de réaliser une attaque brute force en t` on passe
chaque caractère pris
en ` ⇥ t où t est la taille de l’alphabet et ` la longueur de la clé
indépendamment les uns
secrète.
des autres
Pour tester chaque caractère de la clé secrète on utilise un dis-
tingueur statistique. +Considère la distribution
dans sa généralité

16/90 17/90

Cryptanalyse automatique : Utilisation des Cryptanalyse automatique : Utilisation des


Statistiques Statistiques
William F. Friedman (1891 - 1969)
Définition Application
Karl Pearson (1857 - 1936)
L’indice de coı̈ncidence d’un Mono-Alphabétique
texte est la probabilité de On s’intéresse à la
tirer un couple de lettres corrélation entre la
identiques au hasard. distribution d’un texte chiffré
25 25 et celle d’un texte clair dans
X Cni2
X ni (ni 1) un langage donné.
IC = =
C2n n(n 1)
i=0 i=0

où ni est le nombre de Pn


i=1 (Xi X̄)(Yi Ȳ)
caractère ci dans le texte et n ⇢(X, Y) = qP qP
n 2 n
i=1 (Xi X̄) i=1 (Xi X̄)2
est la longueur total de ce
dernier.

17/90 17/90
Corrélation de Pearson: pourquoi s’y intéresse-t-on? Coefficient de corrélation de Pearson

X
Lorsqu’on pense avoir trouvé une substitution s entre deux (Xi X̄)(Yi Ȳ)
alphabets A et B pour déchiffrer un chiffré C i
⇢X,Y = sX sX
La distribution des fréquences des caractères
(Xi X̄)2 (Yi Ȳ)2
de A dans un texte de référence de la langue
i i
de s(A) dans le chiffré C
doivent être à peu près les mêmes avec X̄ la moyenne de la variable aléatoire X.
Les points du nuage de points freq(s(c), C) en fonction de
freq(c, langue) pour c 2 A, doivent être à peu près alignés. Une corrélation parfaite produit ⇢X,Y = 1.
Le coefficient de corrélation de Pearson mesure la qualité de cet
alignement et peut donc servir de révélateur pour déterminer si la Plus ⇢X,Y est proche de 1 et plus on peut considérer que la fréquence
substitution s effectuée sur le chiffré C est la bonne. des caractères s(c) dans le chiffré C et celle de c dans la langue sont
corrélées.

18/90 19/90

Cryptanalyse de Vigenère (corrélation de Pearson) De l’artisanal à l’informatique via la mécanique


+Création de bureaux spéciaux de cryptanalyse
Essayer des longueurs ` = 4..20 et pour chaque longueur ` possible: +Avant 1914, la crypto reste très proche de Vigenère.
Découper le texte en colonnes C06i<` ,
Pour chaque colonne Ck , calculer la corrélation maximale mk entre
les fréquences de référence de la langue et Ck décalé de i pour
i = 0..|A| 1, cette corrélation maximale est atteinte pour un
décalage dk
On calcule m = moyenne(mk ),
k
Si m > 0.6, alors ` est la longueur de la clef, (do , . . . , d` 1) est la
clef et on déduit le message clair.

On obtient de très bons résultats très rapidement et pour des textes


bien plus courts que pour la cryptanalyse par IC.

20/90 21/90
De l’artisanal à l’informatique via la mécanique De l’artisanal à l’informatique via la mécanique
+La cryptanalyse pousse les USA à entrer en guerre ! +La cryptanalyse d’un message allemand évite une défaite sur Paris !
Le chiffrement ADFGVX inventé par Nebel et cryptanalysé par Painvin.

21/90 21/90

Période intermédiaire entre deux guerres et WW2 : Période intermédiaire 1914-1945 : Enigma la
Enigma la mécanique cryptographique mécanique cryptographique
+Invention de la télécommunication et croissance du nombre des +Le Biuro Szyfrów, bureau du chiffre polonais autour du M. Rejewski
échanges chiffrés puis le centre de cryptanalyse anglais de Bletchley Park autour de A.
Turing perce le secret d’Enigma.
Enigma (Scherbius, 1919) , polyalphabétique mécanique

+Identifier un certain type de permutations dans le cryptosystème,


utilisation des premiers ordinateurs électro-mécaniques (Bombes ).
+Reste classifiée jusqu’en 1974.
22/90 23/90
Shannon et la théorie de l’information Chiffrement parfait

Claude Shannon (1916 - 2001) a publié


deux articles de recherche en 1948 et
1949 donnant les fondations de la théorie
de l’information et, plus généralement, Intuition
de la cryptologie moderne. Il donne les Un cryptosystème sera dit chiffrement parfait lorsque la donnée d’un
premières preuves de sécurité d’un message chiffré ne révèle aucune fuite d’information sur la clé ou le
cryptosystème en se basant sur des message clair correspondant et aucune information non plus sur les
principes de probabilité et de statistique. textes chiffrés futurs.

Définitions importantes
Chiffrement parfait
Entropie d’un langage

24/90 25/90

Chiffrement parfait Exemple : Vernam’s One Time Pad

Caractérisation Gilbert S. Vernam (1890-1960), proposa le


cryptosystème qui porte son nom en 1917 et
Supposons qu’un cryptosystème vérifie
fût déposé un brevet le concernant jusqu’en
#K = #P = #C 1919 (US PATENT 1310719).
Le principe est simple : l’utilisation du XOR !
alors (c’est aussi une condition nécessaire) il sera chiffrement parfait Les messages clairs et chiffrés, les clés seront
ssi les deux conditions suivantes sont vérifiées: des suites de bits de même longueur.
Toutes les clés sont utilisées avec même probabilité
C[i] = M[i] K[i] et M[i] = C[i] K[i]
Pour tout couple (m, c) 2 P ⇥ C il existe une unique clé k telle que
ek (m) = c.

+Beaucoup de contraintes sur le cryptosystème


+Peu fréquent en pratique

25/90 26/90
Exemple : Vernam’s One Time Pad Exemple : Vernam’s One Time Pad

C’est le seul cryptosystème à chiffrement parfait !


Très peu pratique ! La clé doit être aussi longue que le message
Utilisé dans la cryptographie Top Secrète (téléphone rouge, valise Elle doit être aléatoire
diplomatique, militaire (Atomique)).
Elle doit être utilisée une unique fois
Le principe est utilisé pour faire des chiffrements symétrique
Projet VENONA des USA pour écouter les discussions Russes
dépendant de générateur aléatoire.
utilisant un Two-Time Pad ) faiblesse !

27/90 27/90

Début 1970 : besoin de standardisation


˜
Basé sur deux concepts introduits par Shannon, le DES est proposé
en 1977 comme standard de chiffrement par bloc.

Part III

Confusion: chaque bit du


Chiffrement symétrique : Époque chiffré dépend de manière
Moderne hautement non-linéaire en les
bits du clair et de la clé.
Diffusion: chaque bit du clair
ou de la clé affecte un grand
nombre de bits du chiffré.
+Shannon propose ces conditions
comme nécessaires pour obtenir
un chiffrement sûr.

28/90 29/90
La fin du DES Le remplaçant du DES : AES
Très tôt le DES est critiqué pour la taille de clé trop petite (64 bits mais
seulement 56 utiles). En 1997 une compétition est organisée pour trouver un remplaçant au
DES
Ordinateurs construits pour casser le Rijndael (Daemen, Rijmen) gagne le
DES par recherche exhaustive : concours en 2001
1977 : 20 million $, DES casser th. S-Box basée sur arithmétique
en 24h (Diffie Hellman) modulaire assure la confusion
1993 : 1 million $, DES casser th. Une permutation en plusieurs
en 7h (Wiener) étapes assure la diffusion
1998 : 250 K$, DES casser en 3 Une expansion de clé simple assure
jours (Deep crack de EFF) l’efficacité
+En 2003 la NSA déclare AES comme
Attaques théoriques
moyen de chiffrement pour des données
Cryptanalyse différentielle (Biham, Shamir, 1988) en 248
classifiées SECRET ou TOP SECRET.
Cryptanalyse linéaire (Matsui, Gilbert, 1993) en 243
+On passe au 3DES pour assurer une bonne sécurité !
30/90 31/90

AES : Fips-197 AES : Byte Sub

+Représentation matricielle

+Représentation matricielle

32/90 33/90
SBOX et corps finis AES : Byte Sub (S-Box)
+Boite-S définit sur 8 bits (description arith. plus loin)
| 0 1 2 3 4 5 6 7 8 9 a b c d e f
---|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
00 |63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
La boite S de AES est définie comme une fonction de F28 dans lui 10 |ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
même avec 20 |b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
F28 = F2 [x]/(x8 + x4 + x3 + x + 1) 30 |04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
40 |09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
et S définie en deux temps : S(x) = A(Inv(x)) + C avec 50 |53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
1 60 |d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
Inv(x) = x si x 6= 0 et Inv(0) = 0 70 |51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
80 |cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
A est une matrice et C un vecteur (application affine). 90 |60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
a0 |e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
b0 |e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
c0 |ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
d0 |70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
e0 |e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
f0 |8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
34/90 35/90

AES : Permutation (les lignes) AES : Permutation (les colonnes)

+Représentation matricielle
+Représentation matricielle

c(x) = 3x3 + x2 + x + 2 mod x4 + 1 dans F8 [x]

36/90 37/90
AES : Addition de la sous-clé Qui dit époque moderne, dit utilisation moderne !

+Représentation matricielle

38/90 39/90

Création de la carte bancaire Utilisation de la carte bancaire

+Une signature RSA permet d’authentifier une transaction


+Un challenge symétrique (pourrait être AES) entre la banque et la
carte en cas de grosse transaction
GIE CB Centre de
Contrôle
Banque GIE CB GIE priv
GIE pub Csec
GIE priv
Csec Info
GIE pub
Appel contrôle

VS=GIEpriv(Info) Vendeur

Centre de Transaction
Info, VS, GIE pub
Contrôle Csec, PIN

Info, VS,
Csec, PIN

40/90 41/90
Utilisation de la carte bancaire Qui dit époque moderne, dit utilisation moderne !
+Pas d’attaque connue sur AES !
+Oui mais utilisé dans des machines avec la clé cachée à l’intérieur
(n’en déplaise à Kerckhoffs)
Authentification de la carte : le terminal lit Info et VS sur la carte et
vérifie la signature à l’aide de GIEpub.
PIN : le PIN est envoyé à la carte pour calcul en place et
vérification.
Authentification par Csec : appel téléphonique à l’organisme de


contrôle pour vérifier de la présence la clé secrète.

Attaque Serge Humpich (1997, factorisation 32 bits), divulgation


des YES card (2000)

Ne remet pas en cause la sécurité de la crypto symétrique !

+Comment adapter les attaques statistiques à ce contexte ? Quelles


sont les fuites possibles ?
42/90 43/90

Technologie CMOS et consommation de courant Technologie CMOS et consommation de courant

+La consommation a lieu lors d’un changement d’état, elle dépend


donc de la distance de Hamming entre les deux états.
+Quelle étape d’AES peut potentiellement laisser fuir de l’information


sur la clé ?

La fuite doit dépendre de la clé et issu d’un changement entre deux


états (CMOS).

+La consommation a lieu lors d’un changement d’état, elle dépend


donc de la distance de Hamming entre les deux états (cf. Cours VLSI).
44/90 45/90
Cette attaque est particulièrement efficace, un nombre relativement faible de traces de puissance sont
nécessaires pour la réaliser avec succès. En 2006, nous avons mis en œuvre un banc d’attaque DPA
permettant de réaliser cette attaque en utilisant 15 000 textes en clair générés aléatoirement et de taille
128 bits. Nous avons réalisé avec succès l’attaque DPA d’un chiffreur AES implanté dans un FPGA
Attaque statistique sur AES
Altera Stratix-II de technologie SRAM 0,18µm [7]. L’efficacité de l’attaque DPA ciblant un FPGA de Attaque statistique sur AES : comment intercepter ces
technologie SRAM avait été prouvée expérimentalement trois ans plus tôt pour un chiffrement
asymétrique basé sur les courbes elliptiques [8] et deux ans plus tôt pour le chiffrement symétrique
+Appel ée DPA dans la littérature. fuites ?
AES [9].

Circuit Attaqué
+Vidéo
KEY
Texte en clair Texte chiffré
AES
Moyenne
G0
SOC
Courbe DPA

Canaux cachés
G0 -
Consommation de puissance Classement des
traces en deux
groupes
Moyenne
G1
G1
Modèle de sélection

S-KEY
Texte en clair Bit de sélection
xor SubBytes

logiciel

Figure 5 – Principe de l’attaque DPA.


+Le niveau de ces attaques doit être évalué pour sécuriser au mieux
les moyens de sécurité (ANSSI, CESTI, cf. cours Adrian)
En 2004,être
+Peut rendue
l’attaque plus
DPA fut efficace
améliorée par desen utilisant
chercheurs de la corrélation
la société Gemplus 1de
qui Pearson
proposent de
(cf. Cours
calculer SCA la
directement etcorrélation
TME) entre la consommation de puissance et le poids de Hamming en
sortie du modèle pour chacune des sous-clés [10]. Cette nouvelle attaque DPA par corrélation, CPA
46/90 47/90
(Correlation Power Analysis), utilise le coefficient de Pearson pour le calcul de la corrélation [9]. Ce
coefficient est donné par l’expression suivante :

AES : Intermède sur le mode opératoire AES : Un mode opératoire plus sûr
Dans laquelle, M est un vecteur contenant N traces de puissance Ptri, Pj est une colonne de la matrice
P (de taille Nx256)
+Rappelez des poids
vous, de Hamming
ne jamais de la sortie
utiliser ECB,du modèle
même pouravec
chacunun des blockcipher
N textes en clair et
pour les 256 sous-clés possibles Kj, µ(x) est la fonction moyenne et σ(x) est la fonction variance. Le
sûr ! +Rappelez vous, ne jamais utiliser ECB !
1
Fabricant de cartes à puce, devenu aujourd’hui Gemalto (http://www.gemalto.com/france/).


IV doit être vraiment aléatoire !

openssl enc -aes-128-ecb -in $1 -out $1.enc-ecb


48/90 49/90
AES : attention au mode opératoire

+Rappelez vous, ne jamais utiliser ECB (sauf sur un bloc!)

Part IV

TME SCA sans ruiner l’université !

openssl enc -aes-128-cbc -in $1 -out $1.enc-ecb

50/90 51/90

Chipwhisperer

Part V

Attaque sur les implémentations : Timing


Attack

+Démo (cf. TME) 52/90 53/90


.

Authentification : HMAC, PIN, etc Authentification : HMAC, PIN, etc

9 Valid Credential: e993

Attacker Target i=0

TIME TRIAL: RACING TOWARDS PRACTICAL REMOTE TIMING ATTACKS


7 Attacker Target
e9aa e9aa == e993
valid
Start i == len(cred)-1
TIME TRIAL: RACING TOWARDS PRACTICAL REMOTE TIMING ATTACKS

POST /login with username, password e == e


Start invalid
cred[i] != input[i]

9 == 9
Username or Password incorrect valid_user?
t_0 Credential invalid a == 9 i++
t_0
String Comparison as Implemented in
Credential invalid a == 3 Most Programming Languages


t_1

Username or Password incorrect verify_password FIGURE 3: Illustration of the principle behind string-based timing attacks.
t_1
Access granted Correspond
the input strings.àOnce
un thebreak dans
two strings laa character,
differ in bouclethede vérification!
comparison function returns with

 acter causes the mismatched, i.e., the result generally does not say “The strings are not equal. The
7Hb2. Only if all characters are identical, is i`m2 returned.
+Connue depuis les années 70...
FIGURE 1: Illustration of timing differences for user authentication. By simply looking at the return value for the string comparison function, one cannot tell which char-

lib Google
first characterKeyczar
they differ in (2008)
is at positionutilise en Python
3.”. However, by leveraging: timing measurements, one
2.1.2 Padding Oracles is able to learn exactly this information. In Figure 3, the target knows a valid credential of 2NNj
return self.Sign(msg)
(shortened for simplicity) and compares== sig bytes
a user-supplied value to that secret value in order to au-
thenticate the user. In the depicted example, the attacker supplies the input 2N and the internal
A padding oracle [Vau02, PY04] is a well-studied cryptographic vulnerability that, even without 54/90 string comparison will proceed as shown in the center of the figure. As long as the characters in 54/90
considering timing, is considered a side-channel flaw. When encrypting data using a block cipher, both strings are equal, the next character is compared. As soon as one differs, the function returns.
for most cipher modes of operation, e.g. CBC mode (see [Wik14b]), the plaintext has to be a Since each additional comparison takes extra time, an attacker can leverage this to brute-force the
character for each position one at a time as follows:
multiple of the block size. Since this is not always naturally the case, the plaintext in the last block
Attention aux compilateurs !
has to be padded such that it fulfills this requirement. There are different schemes that can be Et en 2017...
1. Start with a string .

that the last block had correct padding according the agreed-upon padding scheme. If this
applied but typically PKCS#5 or PKCS#7 is used [Hou09, Wik14c]. When decrypting, most libraries 2. Take the first position and iterate over all valid characters (#, +, etc.). Once one of
the request for a certain character takes longer to process (t1 ) than the others (t0 ), this indi-
verify cates that the character was correct and that the server performed an addition comparison
is not the case, si
Même a padding
le problerror
ème is raised.
est connu depuis longtemps, des compilations for the following character (e.g., 2).

peuvent
If an entraı̂ner
attacker is des
able to learn insécurit
whether és (cf.ciphertext
a submitted cours Karine, Emmanuelle).
had correct padding, i.e., if the appli- 3. Remember the string determined thus far, move to the next character, and repeat the process
(2#, 2+, etc.) until all characters have been determined.
cation communicates padding errors to the attacker, they are in the position to decrypt arbitrary
ciphertexts without What is important to note is that the attacker can brute-force a single character at a time. Com-
Dans Java 6.0knowing
Updatethe15secret key. java.security.MessageDigest
(2009) A full treatment of padding oracles is outside the : pared to a regular brute-force attack this requires effort that is linear in the length of the secret
scope of this paper but [RD10a] and [Hol10] give a detailed review of the subject from an applied instead of exponential.
perspective.
/** In the past, many (prominent) software and hardware implementations were affected Matasano Security
Research
by it,* e.g., [RD10b,
Compares DR11, BFK
two digests 12].
for equality.
+ Does a simple byte compare.
*
@param digesta one of the digests to compare.
+Tout le monde sait comment éviter ce problème...
Even** when the application does not explicitly disclose whether the padding was correct (see List-
ing 2), timingdigestb
* @param side-channels
the othermay still allow
digest an attacker to learn this information [San10] as illustrated
to compare.
*
in Figure
* @return true if the digests are equal, during
2. When a padding error occurs decryption, the application typically does not
false otherwise.
process
*/ the decrypted data. Instead it is likely to return a (generic) error message (t0 ). If the
public static boolean isEqual(byte digesta[], byte digestb[]) {
padding is correct, regular
if (digesta.length != processing of the request will occur (t1 ), which itself may encounter an
digestb.length)
error if thereturn false;
decrypted data mangled by the attacker is malformed. Therefore, an attacker may be
able tofordistinguish
(int i = 0;thisi timing difference and
< digesta.length; i++) exploit
{ the padding oracle.
if (digesta[i] != digestb[i]) {
return false;
}
o Security }
return true;
}

55/90 56/90
Et en 2017... Et en 2017... IoT n’est pas bisounours-compliant!
+Tout le monde sait comment éviter ce problème...

56/90 57/90

Et en 2017... IoT n’est pas bisounours-compliant! Et en 2017... IoT n’est pas bisounours-compliant!

A le recherche des pinoches de test...


... ou des bonnes fréquences !

(cf. Cours Matthieu, José)


(cf. Cours Matthieu, José)

57/90 57/90
Et en 2017... IoT est toujours timing-attack-compliant!


Fonction memcmp() dans Part VI
AVR Libc Reference Manual
#include <ansidecl.h>
#include <stddef.h>

int memcmp (const PTR str1, const PTR str2, size_t count)
De l’échange de clés à la clé publique
{
register const unsigned char *s1 = (const unsigned char*)str1;
register const unsigned char *s2 = (const unsigned char*)str2;

while (count-- > 0)


{
if (*s1++ != *s2++)
return s1[-1] < s2[-1] ? -1 : 1;
}
return 0;
}

58/90 59/90

New Directions in Cryptography


Problématique Échanger des clés Invited Paper
+1976 Diffie, Hellman et Merkle publient le premier schéma d’échange
Whitfield Diffie and Martin E. Hellman
+Le nombre énorme de clés à gérer ! de clés. Ils proposent (enfin) la notion de clé publique.

Abstract Two kinds of contemporary developments in cryp- communications over an insecure


Bob
tography are examined. Widening applications of teleprocess- raphy to insure privacy, however,
ing have given rise to a need for new types of cryptographic communicating parties to share
Alice Henry
systems, which minimize the need for secure key distribution one else. This is done by sending
Fred channels and supply the equivalent of a written signature. This
Gil secure channel such a private c
paper suggests ways to solve these currently open problems. private conversation between two
It also discusses how the theories of communication and compu- tance is a common occurrence in
Eve Dan Ines tation are beginning to provide the tools to solve cryptographic unrealistic to expect initial busin
Jean problems of long standing. long enough for keys to be transm
The cost and delay imposed by t
Carl is a major barrier to the transfer
Ken
1 INTRODUCTION to large teleprocessing networks.
Section III proposes two appro
We stand today on the brink of a revolution in cryptography. information over public (i.e., insec
+Des échanges chiffrés avec n amis nécessitent n clés ! The development of cheap digital hardware has freed it from mising the security of the system
the design limitations of mechanical computing and brought
enciphering and deciphering are
the cost of high grade cryptographic devices down to where
and D, such that computing D from
they can be used in such commercial applications as remote
ble (e.g., requiring 10100 instruc
60/90 cash dispensers and computer terminals. In turn, such applica- 61/90
E can thus be publicly disclosed
tions create a need for new types of cryptographic systems
deciphering key D. Each user of
which minimize the necessity of secure key distribution chan-
nels and supply the equivalent of a written signature. At the place his enciphering key in a p
Échanger des clés Logarithme discret : du plan continue au discret
+1976 Diffie, Hellman et Merkle publient le premier schéma d’échange
de clés. Ils proposent (enfin) la notion de clé publique. Étant donné ex
+Basé sur la difficulté du logarithme discret.

Il est facile de calculer x

61/90 62/90

Logarithme discret : du plan continue au discret Logarithme discret : du plan continue au discret

Étant donné 192 = gx mod 449 (g = 3 générateur du groupe cyclique) Étant donné 192 = gx mod 449 (g = 3 générateur du groupe cyclique)

Il est difficile de calculer x Il est difficile de calculer x

62/90 62/90
La trappe de Diffie-Hellman Rivest, Shamir, Adleman
+Le nombre croissant d’échanges augmente le nombre de clés +1977 première instance d’un cryptosystème à clé publique : RSA.
secrètes nécessaires.
+En 1975 ils proposent les grandes lignes de leur idée théorique pour
éviter ce problème.

Définition
Une fonction F : X ! Y est à sens unique avec trappe , si :
F est à sens unique, i.e. elle est difficile à inverser, facile à
calculer.
La connaissance d’une information supplémentaire, appelée la
trappe, rend le calcul pour tout y 2 Im(F) de x 2 X tel que F(x) = y
réalisable en temps polynomial.

Clé publique : F
Clé secrète : la trappe
63/90 64/90

Rivest, Shamir, Adleman Rivest, Shamir, Adleman


+1977 première instance d’un cryptosystème à clé publique : RSA.

+1977 première instance d’un cryptosystème à clé publique : RSA.

RSA
Soient p et q deux nombres premiers et n = pq et deux entiers e, d tels
que ed = 1 mod (n) . L’instance F(n,e) : Z/nZ ! Z/nZ qui à un
élément x fait correspondre son exponentiation modulaire xe mod p .
F est bien à sens unique, difficulté basée sur la factorisation de n .
La trappe est la connaissance de p,q et d.

Chiffrement x : xe mod n
Déchiffrement y : yd mod n

64/90 64/90
Complexités modulo N Complexités modulo N

+Tous les calculs se font modulo N ) les opérandes sont toutes +Tous les calculs se font modulo N ) les opérandes sont toutes
majorées par N ! majorées par N !

Complexité des algos naı̈fs Complexité des algos naı̈fs


Addition : O(log(N)) Addition : O(log(N))

Multiplication : O(log(N)2 ) Multiplication : O(log(N)2 )

Division : comment divise-t-on modulo N ? Division : comment divise-t-on modulo N ?

+Les complexités sont au plus quadratique en la taille de N mais que +Les complexités sont au plus quadratique en la taille de N mais que
coûte le calcul d’un inverse ? coûte le calcul d’un inverse ?

+Coût du calcul du PGCD ?

65/90 65/90

Calculer le PGCD : définition Calculer le PGCD : Euclide

Par définition on a

On cherche le plus grand diviseur entre 14 et 8.


Y
PGCD(a, b) := pmin(vp(a)vp(b)) +On a 14 = 8 + 6 ainsi comme on cherche d divisant 8 et 14 il suffit de
chercher d divisant 8 et 6, on recommence le procédé avec 8 et 6 etc.
+On s’arrête dès que l’un des entiers considéré est nul.
p2P
Lemmes immédiats
+Dépend de la factorisation de a et de b
Si d divise a et c et que (a + b) = c alors d divise b.
+Le meilleure algorithme permettant de factoriser des entiers est de Le pgcd d’un élément a 6= 0 et 0 est a.
complexité sous-exponentielle. Le problème de la factorisation est
donc assez difficile.
+Si l’on ne connaissait pas d’autres algorithmes permettant le calcul
du PGCD il en serait de même...

66/90 67/90
Calculer le PGCD : dans un anneau Euclidien Algorithme d’Euclide Étendu
L’anneau A possède donc une fonction d permettant d’ordonner les La démonstration du théorème de Bachet Bézout permet de déduire
éléments de cet anneau et de définir une division. Pour calculer le une formule de récurrence pour calculer les coefficients de Bézout de
pgcd de deux éléments a et b tels que d(b) < d(a). a et b et le pgcd(a, b). Cette formule se traduit sous la forme d’un
algorithme :
Algorithme d’Euclide
Algorithme d’Euclide étendu
Posant r0 = a et r1 = b on calcule jusqu’à obtenir un reste nul .
Initialisation : ⇢
1 si r1 6= 0 on a r0 = r1 q1 + r2 avec d(r2 ) < d(r1 ) u0 = 1, v0 = 0, r0 = a
2 si r2 =6 0 on a r1 = r2 q2 + r3 avec d(r3 ) < d(r2 ) u1 = 0, v1 = 1, r1 = b
..
. Calcul i > 1 tant que ri 6= 0 :
n 1 si rn 2 6= 0 on a rn 2 = rn 1 qn 1 + rn avec d(rn ) < d(rn 1) qi = ri div ri
1
n si rn 1 6= 0 on a rn 1 = rn qn + rn+1 avec rn+1 = 0 et d(rn+1 ) < d(rn ) ui+1 = ui qi ui , vi+1 = vi qi vi , ri+1 = ri qi ri
1 1 1

+Représentation matricielle :
PGCD par Euclide ✓
ui+1 vi+1 ri+1
◆ ✓
qi 1
◆✓
ui vi ri

=
Le dernier reste non nul rn est égal au pgcd de a et b . ui vi ri 1 0 ui 1 vi 1 ri 1

68/90 69/90

Algorithme d’Euclide Étendu Algorithme d’Euclide Étendu

Exemple : a = 1234 et b = 896. Exemple : a = 1234 et b = 896.

i ri ri+1 qi ui ui+1 vi vi+1 i ri ri+1 qi ui ui+1 vi vi+1


0 1234 896 ⇤ 1 0 0 1 0 1234 896 ⇤ 1 0 0 1
1 896 338 1 ⇤ ⇤ ⇤ ⇤

u0 = 1, v0 = 0, r0 = a
u1 = 0, v1 = 1, r1 = b
Pour i > 1:
qi = ri 1 div ri , ri+1 = ri 1 mod ri

70/90 70/90
Algorithme d’Euclide Étendu Algorithme d’Euclide Étendu
Exemple : a = 1234 et b = 896.

i ri ri+1 qi ui ui+1 vi vi+1


Exemple : a = 1234 et b = 896. 0 1234 896 ⇤ 1 0 0 1
1 896 338 1 0 1 1 1
i ri ri+1 qi ui ui+1 vi vi+1 2 338 220 2 1 2 1 3
0 1234 896 ⇤ 1 0 0 1 3 220 118 1 2 3 3 4
1 896 338 1 0 1 1 1 4 118 102 1 3 5 4 7
5 102 16 1 5 8 7 11
✓ ◆ ✓ ◆✓ ◆ 6 16 6 6 8 53 11 73
ui+1 vi+1 ri+1 qi 1 ui vi ri 7 6 4 2 53 114 73 157
=
ui vi ri 1 0 ui 1 vi 1 ri 1 8 4 2 1 114 167 157 230
9 2 0 2 167 448 230 617
La relation de Bézout :

1234 ⇥ ( 167) + 896 ⇥ 230 = 2

70/90 70/90

Algorithme d’Euclide : complexité Algorithme d’Euclide : complexité

Étude de la complexité de l’algorithme d’Euclide


Pour a > b > 0
Étude de la complexité de l’algorithme d’Euclide Il y a O(log(b)) itérations de la boucle.
Pour a > b > 0 Le coût d’une boucle est majoré par celui de la division
Il y a O(log(b)) itérations de la boucle. En notant ti = log(ri ) la taille de ri le coût d’une boucle est
Le coût d’une boucle est majoré par celui de la division ri
O(log( ) log(ri+1 )) = ci ti+1 (ti ti+1 )
En notant ti = log(ri ) la taille de ri le coût d’une boucle est ri+1
ri
O(log( ) log(ri+1 )) = ci ti+1 (ti ti+1 )
ri+1 En notant n le nombre de boucles, le coût total du pgcd est majoré par
la somme suivante (rappel : ti > ti+1 )

n
X n
X
ci ti+1 (ti ti+1 ) 6 ct1 (ti ti+1 ) 6 ct1 t0 6 O(log(a) log(b))
i=0 i=0
+complexité quadratique en la taille des entrées
71/90 71/90
Exponentiation modulaire Exponentiation : square-and-multiply

entrée a 2 {0, . . . , n 1} et k 2 N.
sortie ak mod n
Pour calculer une exponentiation, réfléchissons (tk = `(k) 1)

Algorithme Naı̈f (pour ne pas dire crétin)


0 +···+k 2i +···+k 2tk
on fait n multiplications de a dans Z et on réduit mod n ak = ak02 i tk
complexité proportionnelle à k pas log(k) ) exponentielle
on utilise l’arithmétique sur les grands entiers pour réduire à la fin avec ki 2 {0, 1} en particulier on a deux cas possibles pour k0 .
) il faut absolument penser à réduire pendant les calculs

+dans la suite on oublie le caractère modulaire, on commence par


s’occuper de l’exposant k .

72/90 73/90

Exponentiation : square-and-multiply Exponentiation : square-and-multiply

Pour calculer une exponentiation, réfléchissons (tk = `(k) 1)


Pour calculer une exponentiation, réfléchissons (tk = `(k) 1)
Si k0 = 0 (i.e. k est pair) alors
Si k0 = 1 (i.e. k est impair) alors
k0 20 +···+ktk 2tk k1 21 +···+ktk 2tk
a =a k0 20 +···+ki 2i +···+ktk 2tk 1+k1 21 +···+ktk 2tk
a =a
2(k1 20 +···+ktk 2tk 1 )
=a
1 +···+k 2tk

k1 20 +···+ki 2i+1 +···+ktk 2tk 1 2


= (ak12 tk
)·a Multiply
= (a ) Square

73/90 73/90
Exponentiation : square-and-multiply Dans le cas modulaire
Pour calculer une exponentiation, réfléchissons (tk = `(k) 1)

Square and Multiply dépendant de la valeur de k0 :


P tk 1 i On fait les calculs modulo un entier n.
(a i=0 ki+1 2 )2 Square si k0 = 0 +On peut considérer k  n 1, pourquoi ?
+On fait tous les calculs modulo n donc toutes les opérandes sont de
taille log(n)

Conclusion
P tk i Complexité de l’exponentiation modulaire
(a i=1 ki 2 )·a Multiply si k0 = 1 O(log(n)M(log(n))) = O(log(n)3 )

Algorithme récursif (écrire une version séquentielle de cet algorithme


est un bon exercice)
+on ne va faire que log(k) multiplications
+Beaucoup mieux !
73/90 74/90

Problèmes algorithmiques / RSA et DLP

Vérifications faciles
Étant donné n, a, b on peut vérifier n = a ⇥ b en multipliant ! Part VII
Étant donné n, a, b, k on peut vérifier facilement b = ak mod n en
calculant une exponentiation modulaire !
Implémentation efficace de RSA
Problèmes difficiles correspondants
FACT : Etant donner un grand entier n, donner sa factorisation ?
DLP : Etant donner b, a, n, comment retrouver l’exposant k tel que
b = ak mod n ?
+On ne connaı̂t pas d’algorithme de complexité polynomiale résolvant
ces problèmes !

75/90 76/90
Rivest, Shamir, Adleman Rivest, Shamir, Adleman

RSA
Basé sur la difficulté de calculer une racine e-ième mod un entier N RSA
de factorisation inconnue Soient p et q deux nombres premiers et n = pq . On choisit deux
Si on sait factoriser facilement alors ce problème se résout tout aussi entiers e, d tels que ed = 1 mod '(n) . L’application
facilement.
F(n,e) : Z/nZ ! Z/nZ définie par x 7! xe mod n

F est bien à sens unique , difficulté basée sur le calcul de la


racine e-ieme modulaire.
La trappe est la connaissance de d (ou de manière équivalente p
et q).
+on chiffre en faisant xe mod n on déchiffre en calculant yd mod n

Preuve : On a |Z/nZ⇥ | = '(n) = (p 1)(q 1) ) ed = 1 + k ⇥ '(n)...


Les messages qui ne sont pas inversibles mod n sont dangereux !

77/90 77/90

RSA : implémentation chiffrement Consommation de Courant et RSA


+Basé sur les effets de bords de l’arithmétique utilisée
+Un exemple d’effet de bord : le temps/courant de calcul
+Exponentation modulaire Exponentiation modulaire : attaque de Kocher (1996)
On calcule yd mod n avec d de w bits .
Square and Multpily
Pl s0 := 1
1 i
Basé sur l’écriture binaire de l’exposant e = i=0 ei 2 : for k:= 0 upto w 1 do
Pl l 1
Y if (keme bit de d) = 1 then
1 i i
xe = x i=0 ei 2 = xei 2 Rk = (sk ⇥ y) mod n
i=0
else
R k = sk
+On réduit la complexité de l’exponentiation modulo n à O(log (n)) . 3 end if
sk+1 = R2k mod n
end for
return Rw 1
78/90 79/90
Consommation de Courant et RSA Consommation de Courant et RSA
+Basé sur les effets de bords de l’arithmétique utilisée
+Un exemple d’effet de bord : le temps/courant de calcul
Exponentiation modulaire : attaque de Kocher (1996) +Repose sur de hypothèses permettant aux cryptanalystes de
On calcule yd mod n avec x de w bits . travailler
+L’attaquant cherche a retrouver l’exposant d.
s0 := 1
for k:= 0 upto w 1 do Hypothèses de Kocher
if (keme bit de d) = 1 then 1 On peut demander au matériel cryptographique des
Rk = (sk ⇥ y) mod n déchiffrements quelconques avec la clé privée attaquée.
else 2 On peut mesurer les temps/courant de calcul de manière précise
pour chacun des déchiffrement.
R k = sk
3 On peut avoir accès au même matériel et régler nos propres clés.
end if
sk+1 = R2k mod n
end for
return Rw 1
80/90 81/90

Consommation de Courant et RSA RSA : implémentation efficace du déchiffrement


+Attaque par étude statistique
+Etude des corrélations (distributions) entre les différents tests +dans ce cas on connaı̂t p et q, idée couper les calculs en deux !
+Contremesure : rajouter des calculs vides pour équilibrer la charge
de travail. RSA et CRT1
On pré-calcule les valeurs :
up = q ⇥ (q 1 mod p) mod n
uq = p ⇥ (p 1 mod q) mod n
dp = d mod (p 1)
dq = d mod (q 1)
Pour déchiffrer y et obtenir le message x d’origine on utilise le CRT :
1 xp = ydp mod p
2 xq = ydq mod q
3 x = xp up + xq uq mod n

82/90 83/90
Théorème chinois des restes Théorème chinois des restes

Théorème Théorème
Soit m1 et m2 deux éléments de A un anneau euclidien. Si Soit m1 et m2 deux éléments de A un anneau euclidien. Si
pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau

A/m1 A ⇥ A/m2 A ' A/(m1 m2 )A A/m1 A ⇥ A/m2 A ' A/(m1 m2 )A

Démonstration existentielle (à lire chez vous) : Démonstration existentielle (à lire chez vous) :
Le morphisme d’anneau Le noyau de est donné par

:A ! A/m1 A ⇥ A/m2 A {e 2 A tq e = 0 mod m2 et e = 0 mod m2 }


e 7 ! (e mod m1 , e mod m2 )
ainsi le noyau est l’ensemble des multiples de m1 et m2 . Comme
est surjectif. pgcd(m1 , m2 ) = 1 on obtient le résultat.

84/90 84/90

Théorème chinois des restes Théorème chinois des restes

Théorème
Soit m1 et m2 deux éléments de A un anneau euclidien. Si
Théorème pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau
Soit m1 et m2 deux éléments de A un anneau euclidien. Si
pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau A/m1 A ⇥ A/m2 A ' A/(m1 m2 )A

A/m1 A ⇥ A/m2 A ' A/(m1 m2 )A Démonstration constructive:


Comment reconstruire l’élément e dans A/(m1 m2 )A à partir de son
Démonstration constructive: image (e1 , e2 ) dans A/m1 A ⇥ A/m2 A ? (l’autre direction est triviale)
Comment reconstruire l’élément e dans A/(m1 m2 )A à partir de son
Pour cela, nous utilisons la relation de Bézout entre m1 et m2 :
image (e1 , e2 ) dans A/m1 A ⇥ A/m2 A ? (l’autre direction est triviale)
um1 + vm2 = 1

84/90 84/90
Théorème chinois des restes Théorème chinois des restes : algorithme général

Théorème
Soit m1 et m2 deux éléments de A un anneau euclidien. Si On applique récurssivement le procédé de résolution sur les équations
pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau du système. Il faut que pgcd(mi , mj ) = 1 pour i 6= j.

A/m1 A ⇥ A/m2 A ' A/(m1 m2 )A CRT

Démonstration constructive: ⌅
⌅ x = e1 mod m1 ⌅
⌅ x = c mod M = m1 m2

⇤ x = e2 ⌅
⇤ x = e3 mod m3
Comment reconstruire l’élément e dans A/(m1 m2 )A à partir de son mod m2
image (e1 , e2 ) dans A/m2 A ⇥ A/m1 A ? (l’autre direction est triviale) .. ..

⌅ . ⌅
⌅ .

⇥ ⌅

En notant M = m1 m2 il vient alors x = ek mod mk x = ek mod mk
e = e1 vm2 + e2 um1 mod M

84/90 85/90

Théorème chinois des restes : exemple sur Z CRT et RSA avec p et q de même taille
Soit à résoudre le système
8
< x = 2 mod 3
x = 3 mod 7 Lors du déchiffrement, on connaı̂t p et q et l’on doit calculer
:
x = 8 mod 19
x = yd mod n
Les entiers 3, 7 et 19 sont premiers deux à deux. CRT possible.
Initialisation : Calculs : Cette opération prend ' log(d) log(n)2 ' log(n)3 mais on ne se sert
c 2 c c ⇥ u ⇥ mi + ei ⇥ v ⇥ M pas de la connaissance de p et q !
M 3 M mi ⇥ M Mais d’après le CRT on a
c c mod M
Z/nZ ' Z/pZ ⇥ Z/qZ
avec umi + vM = 1 (relation de Bézout):
i ei mi u v c M c mod M
1 2 3
2 3 7 1 2 2⇥1⇥7+3⇥ 2⇥3= 4 7 ⇥ 3 = 21 17
3 8 19 10 9 17 ⇥ 19 ⇥ 10 + 8 ⇥ 9 ⇥ 21 = 1718 19 ⇥ 21 = 399 122

Les solutions sont de la forme 122 + 399k pour k 2 Z.


86/90 87/90
CRT et RSA avec p et q de même taille Attaque par injection de faute sur RSA
+A l’aide d’un laser on peut changer la nature de quelques bits
Mais d’après le CRT on a
pendant le calcul
Z/nZ ' Z/pZ ⇥ Z/qZ

On peut donc faire les calculs à droite :

xp = yd mod p = yd mod (p 1)
mod p et xq = yd mod (q 1)
mod q

et on reconstruit la solution modulo n :

x = xp up + xq uq mod n
p
Ici on fait ' 2 ⇥ log( n)3 ' 14 log(n)3 pour le calcul des exponentiations
p 2
et 2 ⇥ log( n) + log(n) pour la reconstruction.
+log(n)3 >> 14 log(n)3
+Temps d’execution de 2 à 4 fois plus rapide avec le CRT !
+Utilisable sur les cartes à puces par exemple (cf. Cours Jessy)
87/90 88/90

Attaque par injection de faute sur RSA Attaque par injection de faute sur RSA

+A l’aide d’un laser on peut changer la nature de quelques bits


FA sur RSA-CRT
pendant le calcul
+Utilisable sur les cartes à puces par exemple (cf. Cours Jessy) Supposons que un seul des Si est faux ici c’est S1 . Supposons aussi
que nous avons le résultat juste S et faux Ŝ issus d’un même message
FA sur RSA-CRT y. Alors
On veut calculer yd mod n rapidement. On connaı̂t n = pq. S 6= Ŝ mod p et S = Ŝ mod q
1 On calcule S1 = yd mod p et donc
2 On calcule S2 = yd mod q pgcd(S Ŝ, n) = q
3 On reconstruit par CRT S = aS1 + bS2 mod n

+On injecte une erreur pendant le premier calcul. (cf. Cours David)

88/90 89/90
Contremesures

Deux types différents :


1 Logicielles : algo, random, etc
2 Matérielles : blindage Faraday, détection photon, etc
(cf. Cours David, Sylvain)

90/90

Vous aimerez peut-être aussi