Académique Documents
Professionnel Documents
Culture Documents
Guénaël Renault
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.
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.
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
9/90 10/90
11/90 11/90
Période artisanale : Transposition/Substitution Période artisanale : Transposition/Substitution
11/90 11/90
12/90 13/90
Période artisanale : Vigenère et le polyalphabétique Période artisanale : Vigenère et le polyalphabétique
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
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
16/90 17/90
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
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
Définitions importantes
Chiffrement parfait
Entropie d’un langage
24/90 25/90
25/90 26/90
Exemple : Vernam’s One Time Pad Exemple : Vernam’s One Time Pad
27/90 27/90
Part III
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
+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
+Représentation matricielle
+Représentation matricielle
36/90 37/90
AES : Addition de la sous-clé Qui dit époque moderne, dit utilisation moderne !
+Représentation matricielle
38/90 39/90
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.
des YES card (2000)
sur la clé ?
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
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 !
Part IV
50/90 51/90
Chipwhisperer
Part V
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!
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;
58/90 59/90
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)
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
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 !
+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 ?
65/90 65/90
Par définition on a
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
70/90 70/90
Algorithme d’Euclide Étendu Algorithme d’Euclide Étendu
Exemple : a = 1234 et b = 896.
70/90 70/90
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)
72/90 73/90
73/90 73/90
Exponentiation : square-and-multiply Dans le cas modulaire
Pour calculer une exponentiation, réfléchissons (tk = `(k) 1)
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 )
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
77/90 77/90
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
Démonstration existentielle (à lire chez vous) : Démonstration existentielle (à lire chez vous) :
Le morphisme d’anneau Le noyau de est donné par
84/90 84/90
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
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.
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
xp = yd mod p = yd mod (p 1)
mod p et xq = yd mod (q 1)
mod q
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
+On injecte une erreur pendant le premier calcul. (cf. Cours David)
88/90 89/90
Contremesures
90/90