Académique Documents
Professionnel Documents
Culture Documents
Tendances de La Cryptologie Moderne
Tendances de La Cryptologie Moderne
Fabien Laguillaumie
fabien.laguillaumie@info.unicaen.fr
http://users.info.unicaen.fr/~flaguill/
Casablanca, Maroc
1
Introduction
Sécurité Prouvée
Signature
Définition
RSA textbook
GHR
FDH
Chiffrement
Définition
Elgamal
RSA
Cramer-Shoup
Paillier
2
Introduction
Cryptologie :
I Cryptographie :
I conception de systèmes cryptographiques
I étude (preuve) de leur sécurité
I amélioration des performances
I Cryptanalyse :
I mise en défaut des systèmes cryptographiques
I attaque des problèmes algorithmiques sous-jacents
I observation des “canaux auxiliaires”
3
Introduction
Objectifs :
4
Introduction
Objectifs :
4
Introduction
Objectifs :
4
Introduction
Objectifs :
4
Introduction
Cyptographie à clé publique
(sk, pk)
sk R pk
il est “difficile” de retrouver sk à partir de pk.
5
Sécurité Prouvée
La sécurité exacte donne une réduction explicite pour fixer la taille des clés
pour une sécurité concrète
7
Sécurité Prouvée
I Hypothèses calculatoires
I Peu de cryptosystèmes sont “inconditionnellement” sûrs
I Exemples :
I existence de fonction à sens-unique
I difficulté de la factorisation
I difficulté du calcul d’un logarithme discret
I difficulté du problème DDH
I ...
I Hypothèses supplémentaires
I modèle de l’oracle aléatoire
I modèle du chiffrement idéal
I modèle générique
8
Sécurité Prouvée
Input : the vector −
→
x `+
˜ m̃ = (x1 , . . . , x`+
˜ m̃ ) whose components are pairwise distinct
elements of (Z/pZ)? which define the polynomials
`˜
Y ˜ m̃
`+
Y
f (X ) = (X + xi ) and g (X ) = (X + xi ),
i=1 ˜
i=`+1
The problem is correctly solved if the output is b = 1 when T = e(g0 , h0 )κ·f (γ) or if
the output is b = 0 when T is a random value from GT .
9
Sécurité Prouvée
k
Générateur
d’instances I
Réduction
I
attaquant
pk, P
oracle
solution
10
Sécurité des schémas de signatures.
11
Signature
I La signature électronique émule la signature manuscrite.
I authenticité de la source
I intégrité
I résistance à une contrefaçon
I vérification universelle
I non-répudiation
12
Signature
KG
skA pkA
Aida Brahim
13
Signature
Sécurité d’un schéma de signatures
14
Signature
Sécurité d’un schéma de signatures
14
Signature
Sécurité d’un schéma de signatures
14
Fonctions de hachage
Definition
Soit ` ∈ N.
Une fonction h : {0, 1}∗ −→ {0, 1}` est une fonction de hachage si
I h est à sens unique (résistante à la préimage)
[étant donné h(x) trouver x 0 tel que h(x 0 ) = h(x) est difficile]
I h est résistante à la seconde préimage
[étant donné x et h(x), trouver x 0 6= x tel que h(x 0 ) = h(x) est
difficile]
I h est résistante aux collisions
[trouver x et x 0 , x 6= x 0 , tels que h(x) = h(x 0 ) est difficile]
15
Fonctions de hachage
? x 6= ? ? 6= ?
h h h h h
Complexité : 2` 2` 2`/2
16
Signature
Définition
Soit k ∈ N. Un schéma de signatures S est un quadruplet
(Setup,KeyGen,Sign,Verify)
où
I S.Setup est une PPTM prenant en entrée k dont la sortie est
appelée paramètres publics et notée P
S.Setup(k) = P
I S.KeyGen est une PPTM prenant en entrée des paramètres publics
et dont la sortie est un couple (pk, sk) de clés publique et privée
17
Signature
Définition
Soit k ∈ N. Un schéma de signatures S est un quadruplet
(Setup,KeyGen,Sign,Verify)
S.Sign(P, m, sk) = σ
I S.Verify est une PPTM prenant en entrée des paramètres publics,
une clé publique, un message et une chaı̂ne binaire. Elle renvoie un
bit qui vaut 0 si la signature est invalide, et 1 sinon.
17
Signature
Définition
Soit k ∈ N. Un schéma de signatures S est un quadruplet
(Setup,KeyGen,Sign,Verify)
et tel que
∀k ∈ N,
∀P = S.Setup(k),
∀(pk, sk) = S.KeyGen(P),
∀m ∈ {0, 1}∗ ,
∀σ = S.Sign(P, m, sk)
alors
S.Verify(P, pk, m, σ) = 1
avec probabilité 1.
Consistance
17
Signature
Modèle de sécurité :
18
Signature
Modèle de sécurité :
Définition (EF-CMA)
Soit k ∈ N et l’expérience aléatoire suivante :
Experiment Expef−cma
S,F (k)
params = S.Setup(k)
(pk, sk) = S.KeyGen(params)
(m? , σ ? ) ← F Σ (params, pk)
Retourne 1 si S.Verify(params, pk, m? , σ ? ) = 1 et σ ? ne provient pas de Σ
0 sinon
On définit le succès de F comme
h i
Succef-cma ef−cma
S,F (k) = Pr ExpS,F (k) = 1 .
19
RSA textbook
I RSA.Setup(k) = {k}
I RSA.KeyGen(k) :
I p et q sont deux grands premiers tels que
2bk/2c−1 ≤ p, q ≤ 2bk/2c − 1
I N = pq
I e et d sont deux entiers premiers à ϕ(N) = (p − 1)(q − 1) tels que
ed = 1 mod ϕ(N)
I Finalement
I (N, e) est la clé publique pk
I (d, p, q) est la clé secrète sk
σ = md mod N
I RSA.Verify(k, (N, e), m, σ) :
σ valide ⇐⇒ m = σ e mod N
20
RSA textbook
Sécurité
I Est-il EF-CMA ?
I Est-il EF-KMA ?
I Est-il EF-NMA ?
I Est-il SF-CMA ?
I Est-il TB-NMA ?
21
RSA textbook
Sécurité
I Est-il EF-KMA ?
I Est-il EF-NMA ?
I Est-il SF-CMA ?
I Est-il TB-NMA ?
21
RSA textbook
Sécurité
I Est-il EF-NMA ?
I Est-il SF-CMA ?
I Est-il TB-NMA ?
21
RSA textbook
Sécurité
I Est-il SF-CMA ?
I Est-il TB-NMA ?
21
RSA textbook
Sécurité
I Est-il TB-NMA ?
21
RSA textbook
Sécurité
21
Signatures GHR
R. Gennaro, S. Halevi, T. Rabin : Secure Hash-and-Sign Signatures Without the Random Oracle.
Proc. of Eurocrypt 1999, Springer LNCS Vol. 1592, 123–139 (1999)
22
Signatures GHR
R. Gennaro, S. Halevi, T. Rabin : Secure Hash-and-Sign Signatures Without the Random Oracle.
Proc. of Eurocrypt 1999, Springer LNCS Vol. 1592, 123–139 (1999)
Exemple :
h : {0, 1}∗ −→ P`
23
Signatures GHR
I GHR.Setup(k) = {k, H, M}
I GHR.KeyGen(P) = (pk, sk)
I p et q deux premiers tels que 2bk/2c−1 ≤ p, q ≤ 2bk/2c − 1 et
p = 2p 0 + 1, q = 2q 0 + 1
avec p 0 et q 0 premiers
I u ∈R (Z/NZ)∗
pk = (N, u) et sk = (p, q)
24
Signatures GHR
I GHR.Setup(k) = {k, H, M}
I GHR.KeyGen(P) = (pk, sk)
I p et q deux premiers tels que 2bk/2c−1 ≤ p, q ≤ 2bk/2c − 1 et
p = 2p 0 + 1, q = 2q 0 + 1
avec p 0 et q 0 premiers
I u ∈R (Z/NZ)∗
pk = (N, u) et sk = (p, q)
24
Signatures GHR
Preuve de sécurité
I La sécurité de GHR “repose” sur la difficulté de résoudre le
problème RSA flexible.
25
Signatures GHR
Preuve de sécurité
Problème RSA
Définition (Problème RSA)
Experiment Exprsa
A (k)
(N, e, d) = RSAGen(k)
params = (N, e)
y ∈R (Z/NZ)∗
x ← A(params, y )
Retourne 1 si x e ≡ y (mod N)
0 sinon
26
Signatures GHR
Preuve de sécurité
27
Signatures GHR
Preuve de sécurité
Setup
C
pk ?
KeyGen
m
(sk ?, pk ?)
Σ F
σ
(m?, σ?)
28
Signatures GHR
Preuve de sécurité
I On va construire une réduction R qui résout le problème RSA
flexible.
29
Signatures GHR
Preuve de sécurité
Simulation de GHR.KeyGen
I R tire au hasard m0 ∈ M
I Il pose Y
E := h(m)
m∈M\{m0 }
u := y E (mod N)
30
Signatures GHR
Preuve de sécurité
Simulation de GHR.Sign
31
Signatures GHR
Preuve de sécurité
Simulation de GHR.Sign
31
Signatures GHR
Preuve de sécurité
Simulation de GHR.Sign
31
Signatures GHR
Preuve de sécurité
Simulation de GHR.Sign
31
Signatures GHR
Preuve de sécurité
Simulation de GHR.Sign
31
Signatures GHR
Preuve de sécurité
Simulation de GHR.Sign
31
Signatures GHR
Preuve de sécurité
Simulation de GHR.Sign
31
Signatures GHR
Preuve de sécurité
Exploitation de la forge
(m? , σ ? )
I si m? = m0
I alors 0 −1
σ? ≡ u h(m ) (mod N)
0 −1
≡ y Eh(m ) (mod N).
32
Signatures GHR
Preuve de sécurité
Exploitation de la forge
I or 3 pgcd(E , h(m0 )) = 1
R calcule (Bézout) a et b tels que
aE + bh(m0 ) = 1
et
0
y ≡ y aE +bh(m ) (mod N)
Exploitation de la forge
I or 3 pgcd(E , h(m0 )) = 1
R calcule (Bézout) a et b tels que
aE + bh(m0 ) = 1
et
0
y ≡ y aE +bh(m ) (mod N)
0
≡ (y E )a × y bh(m ) (mod N)
Exploitation de la forge
I or 3 pgcd(E , h(m0 )) = 1
R calcule (Bézout) a et b tels que
aE + bh(m0 ) = 1
et
0
y ≡ y aE +bh(m ) (mod N)
0
≡ (y E )a × y bh(m ) (mod N)
0 −1 0 0
≡ (y Eh(m ) )ah(m ) × (y b )h(m ) (mod N)
Exploitation de la forge
I or 3 pgcd(E , h(m0 )) = 1
R calcule (Bézout) a et b tels que
aE + bh(m0 ) = 1
et
0
y ≡ y aE +bh(m ) (mod N)
0
≡ (y E )a × y bh(m ) (mod N)
0 −1 0 0
≡ (y Eh(m ) )ah(m ) × (y b )h(m ) (mod N)
0 0
≡ σ ?ah(m ) × (y b )h(m ) (mod N)
Exploitation de la forge
I or 3 pgcd(E , h(m0 )) = 1
R calcule (Bézout) a et b tels que
aE + bh(m0 ) = 1
et
0
y ≡ y aE +bh(m ) (mod N)
0
≡ (y E )a × y bh(m ) (mod N)
0 −1 0 0
≡ (y Eh(m ) )ah(m ) × (y b )h(m ) (mod N)
0 0
≡ σ ?ah(m ) × (y b )h(m ) (mod N)
0
≡ (σ ?a y b )h(m ) (mod N)
Exploitation de la forge
En posant
= σ ?a y b
x
e = h(m0 )
on a bien
xe = y (mod N)
i.e., (x, e) est une solution au problème RSA posé à R.
34
Signatures GHR
Preuve de sécurité
Coût de la réduction
35
Signatures GHR
Preuve de sécurité
Coût de la réduction
R gagne si
I F réussit sa forge
35
Signatures GHR
Preuve de sécurité
Coût de la réduction
R gagne si
I F réussit sa forge
I F n’a pas interrogé Σ sur m0
35
Signatures GHR
Preuve de sécurité
Coût de la réduction
R gagne si
I F réussit sa forge
I F n’a pas interrogé Σ sur m0
I F réussit sa forge sur m0
35
Signatures GHR
Preuve de sécurité
Coût de la réduction
R gagne si
I F réussit sa forge
I F n’a pas interrogé Σ sur m0
I F réussit sa forge sur m0
SuccfRrsa (k) =
35
Signatures GHR
Preuve de sécurité
Coût de la réduction
R gagne si
I F réussit sa forge
I F n’a pas interrogé Σ sur m0
I F réussit sa forge sur m0
qΣ 1
SuccfRrsa (k) = Succef-cma
GHR,F (k) × 1− ×
#M #M − qΣ
35
Signatures GHR
Preuve de sécurité
Coût de la réduction
R gagne si
I F réussit sa forge
I F n’a pas interrogé Σ sur m0
I F réussit sa forge sur m0
qΣ 1
SuccfRrsa (k) = Succef-cma
GHR,F (k) × 1− ×
#M #M − qΣ
τR = τF + (1 + qΣ )Texp .
35
FDH
Le modèle de l’oracle aléatoire :
I H-liste
36
FDH
Le modèle de l’oracle aléatoire :
H Setup
m C
m pk ?
H(m) KeyGen
H(m)
m
(sk ?, pk ?)
Σ F
σ
(m?, σ?)
37
FDH
RSA-FDH : – paradigme “hash-and-sign” :
I RSAfdh .Setup(k) = {k}
I RSAfdh .KeyGen(k) :
I p et q sont 2 grands premiers tels que 2bk/2c−1 ≤ p, q ≤ 2bk/2c − 1
I N = pq
I e et d sont deux entiers premiers à ϕ(N) tels que ed = 1 mod ϕ(N)
I Finalement
I (N, e, H) est la clé publique pk
I (d, p, q) est la clé secrète sk
I où H est une famille de fonctions de hachage “Full-Domain Hash” :
h : {0, 1}∗ −→ (Z/NZ)∗
σ = h(m)d mod N
fdh
I RSA .Verify(k, (N, e), m, σ) :
Théorème (RSA-FDH)
Dans le modèle de l’oracle aléatoire, s’il existe un forgeur existentiel dans
une attaque à messages choisis F contre RSAfdh , de succès ε en temps τ ,
après qΣ requêtes à l’oracle de signature et qH à l’oracle aléatoire, alors il
existe un attaquant contre le problème RSA A avec un succès ε0 en
temps τ 0 tels que
( ε
ε0 '
qΣ + qH + 1
τ 0 = τ + (qΣ + qH )Texp .
39
Signatures GHR
Preuve de sécurité
Problème RSA
Définition (Problème RSA)
Experiment Exprsa
A (k)
(N, e, d) = RSAGen(k)
params = (N, e)
y ∈R (Z/NZ)∗
x ← A(params, y )
Retourne 1 si x e ≡ y (mod N)
0 sinon
40
RSA-FDH
Preuve de sécurité
I On va construire une réduction R qui résout le problème RSA.
41
RSA-FDH
Preuve de sécurité
I Équation de vérification :
σ e ≡ h(m) (mod N)
I Soit
I qΣ le nombre de requêtes à l’oracle de signature
I qH le nombre de requêtes à l’oracle aléatoire
42
RSA-FDH
Preuve de sécurité
43
RSA-FDH
Preuve de sécurité
Simulation de H
I Pour i 6= i ? :
I R regarde si m a déjà été demandé à H
I si oui : il renvoie la valeur déjà retournée
44
RSA-FDH
Preuve de sécurité
Simulation de H
I Pour i 6= i ? :
I R regarde si m a déjà été demandé à H
I si oui : il renvoie la valeur déjà retournée
44
RSA-FDH
Preuve de sécurité
Simulation de H
I Pour i 6= i ? :
I R regarde si m a déjà été demandé à H
I si oui : il renvoie la valeur déjà retournée
I Pour i = i ? , R renvoie
H(mi ? ) = y
sinon non déjà demandé et sinon s’arrête
44
RSA-FDH
Preuve de sécurité
45
RSA-FDH
Preuve de sécurité
45
RSA-FDH
Preuve de sécurité
Simulation OK !
45
RSA-FDH
Preuve de sécurité
Exploitation de la forge :
σ ? e ≡ h(m? ) (mod N)
σ? e ≡ y (mod N)
46
RSA-FDH
Preuve de sécurité
Exploitation de la forge :
σ ? e ≡ h(m? ) (mod N)
σ? e ≡ y (mod N)
I Quelle réussite ?
1
Succrsa
R (k) = Succef-cma
RSAfdh ,F (k)
qΣ + qH + 1
I τ 0 = τ + (qΣ + qH )Texp
46
Sécurité du chiffrement.
47
Le chiffrement
Définition informelle
KG
Aida Brahim
kE kD
m E c c D m
48
Le chiffrement
Définition informelle
Ses buts :
I retrouver la clé secrète
cassage total
49
Le chiffrement
Définition informelle
Ses buts :
I retrouver la clé secrète
cassage total
I déchiffrement à volonté - sans avoir la clé secrète
attaque contre le “sens-unique”
49
Le chiffrement
Définition informelle
Ses buts :
I retrouver la clé secrète
cassage total
I déchiffrement à volonté - sans avoir la clé secrète
attaque contre le “sens-unique”
I distinguer 2 messages clairs grâce au chiffré de l’un d’eux
sécurité sémantique/indistinguabilité
49
Le chiffrement
Définition informelle
Ses buts :
I retrouver la clé secrète
cassage total
I déchiffrement à volonté - sans avoir la clé secrète
attaque contre le “sens-unique”
I distinguer 2 messages clairs grâce au chiffré de l’un d’eux
sécurité sémantique/indistinguabilité
I à partir d’un chiffré, en créer un autre, les 2 clairs étant “reliés”
malléabilité
49
Le chiffrement
Définition informelle
Ses moyens
I chiffrés de messages clairs de son choix (et pk)
attaque à clairs choisis
chosen plaintext attack - CPA
50
Le chiffrement
Définition informelle
Ses moyens
I chiffrés de messages clairs de son choix (et pk)
attaque à clairs choisis
chosen plaintext attack - CPA
I déchiffrement de messages de son choix
attaque à chiffrés choisis
chosen ciphertext attack- CCA1
50
Le chiffrement
Définition informelle
Ses moyens
I chiffrés de messages clairs de son choix (et pk)
attaque à clairs choisis
chosen plaintext attack - CPA
I déchiffrement de messages de son choix
attaque à chiffrés choisis
chosen ciphertext attack- CCA1
I déchiffrement de messages de son choix après le défi
attaque à chiffrés choisis adaptative
chosen ciphertext attack- CCA2
50
Le chiffrement
Définition informelle
Ses moyens
I chiffrés de messages clairs de son choix (et pk)
attaque à clairs choisis
chosen plaintext attack - CPA
I déchiffrement de messages de son choix
attaque à chiffrés choisis
chosen ciphertext attack- CCA1
I déchiffrement de messages de son choix après le défi
attaque à chiffrés choisis adaptative
chosen ciphertext attack- CCA2
( + oracle de vérification de chiffré)
( + oracle de vérification de couple clair/chiffré )
50
Le chiffrement
I Scénario minimal :
Sens unique sous une attaque à clairs choisis (OW-CPA)
I Scénario de référence :
Indistinguabilité sous une attaque à chiffrés choisis adaptative
(IND-CCA2)
51
Le chiffrement
Définition formelle
52
Le chiffrement
Définition formelle
53
Le chiffrement
Définition formelle
Advind-atk ? ?
Π,A (k) = |Pr(b = 1 | b = 1) − Pr(b = 1 | b = 0)|
est non-négligeable.
Notez que
ind-atk 1 1
= Advind-atk
Pr(ExpΠ,A (k) = 1) − Π,A (k)
2 2
54
Le chiffrement
Définition formelle
En effet 4 :
En effet 4 :
-atk 1 1
Pr(Expind
Π,A (k) = 1) − = Advind-atk
Π,A (k)
2 2
56
Le chiffrement
INDistinguishability under a Chosen Message Attack (IND-CCA2)
Setup k
pk KeyGen
c
D(sk, ·)
m ou ⊥ A1 (sk, pk)
m0, m1
b ? ∈R {0, 1}
c ? ← E (pk, mb? ) c?
c A2
D(sk, ·)
m ou ⊥
b
57
Le chiffrement
Remarques :
58
Elgamal
59
Elgamal
Description
I Elgamal.Setup(k) {k, G, g , q}
60
Elgamal
Description
I Elgamal.Setup(k) {k, G, g , q}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I g est un générateur de G.
60
Elgamal
Description
I Elgamal.Setup(k) {k, G, g , q}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I g est un générateur de G.
I Elgamal.KeyGen(params) (x, y )
60
Elgamal
Description
I Elgamal.Setup(k) {k, G, g , q}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I g est un générateur de G.
I Elgamal.KeyGen(params) (x, y ) avec
I x ∈ [[1, q − 1]]
I y = gx
60
Elgamal
Description
I Elgamal.Setup(k) {k, G, g , q}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I g est un générateur de G.
I Elgamal.KeyGen(params) (x, y ) avec
I x ∈ [[1, q − 1]]
I y = gx
I Elgamal.Encrypt(params, y , m) c = (u, v )
60
Elgamal
Description
I Elgamal.Setup(k) {k, G, g , q}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I g est un générateur de G.
I Elgamal.KeyGen(params) (x, y ) avec
I x ∈ [[1, q − 1]]
I y = gx
I Elgamal.Encrypt(params, y , m) c = (u, v )
I r ∈R [[1, q − 1]]
I u = gr
I v = my r
60
Elgamal
Description
v
I Elgamal.Decrypt(params, x, (u, v )) m=
ux
61
Elgamal
Description
v
I Elgamal.Decrypt(params, x, (u, v )) m=
ux
En effet
v my r (g x )r
= = m =m
ux (g r )x (g r )x
61
Elgamal
Description
v
I Elgamal.Decrypt(params, x, (u, v )) m=
ux
En effet
v my r (g x )r
= = m =m
ux (g r )x (g r )x
Remarques :
I le chiffré est composé de 2 éléments dans G
I 2 exponentiations pour chiffrer (indépendantes du message) et 1
exponentiation pour déchiffrer
I Elgamal est probabiliste ! espoir d’indistinguabilité
61
Elgamal
Sécurité d’Elgamal
I Elgamal est malléable
Étant donné c1 = (u1 , v1 ) et c2 = (u2 , c2 ) un attaquant peut calculer
c = (u1 × u2 , v1 × v2 ) le chiffré de m1 × m2 :
c = (g r1 +r2 , m1 m2 y r1 +r2 )
62
Elgamal
Sécurité d’Elgamal
I Elgamal est malléable
Étant donné c1 = (u1 , v1 ) et c2 = (u2 , c2 ) un attaquant peut calculer
c = (u1 × u2 , v1 × v2 ) le chiffré de m1 × m2 :
c = (g r1 +r2 , m1 m2 y r1 +r2 )
I Elgamal n’est pas IND-CCA2 (il est malléable !)
c ? = (g r , mb y r )
62
Elgamal
Sécurité d’Elgamal
Setup k
pk KeyGen
c
D(sk, ·)
m ou ⊥ A1 (sk, pk)
m0, m1
b ? ∈R {0, 1}
c ? ← E (pk, mb? ) c?
c A2
D(sk, ·)
m ou ⊥
b
63
Elgamal
Sécurité d’Elgamal
I Elgamal est malléable
Étant donné c1 = (u1 , v1 ) et c2 = (u2 , c2 ) un attaquant peut calculer
c = (u1 × u2 , v1 × v2 ) le chiffré de m1 × m2 :
c = (g r1 +r2 , m1 m2 y r1 +r2 )
I Elgamal n’est pas IND-CCA2 (il est malléable !)
65
Elgamal
Sécurité d’Elgamal
I Elgamal est OW-CPA sous l’hypothèse que le problème calculatoire
Diffie-Hellman est dur.
I Théorème
Sous l’hypothèse que le problème décisionnel Diffie-Hellman est dur,
Elgamal est IND-CPA.
65
Elgamal
Sécurité d’Elgamal
Advddh ? ?
A (k) = |Pr(b = 1 | b = 1) − Pr(b = 1 | b = 0)|
66
Elgamal
Sécurité d’Elgamal
Preuve :
on suppose l’existence d’un attaquant (τ, ε)-IND-CPA A contre Elgamal et
on exhibe explicitement un attaquant (τ 0 , ε0 ) B contre DDH avec τ 0 et ε0
étant fonction (polynomiale) de τ et ε respectivement.
R Setup k
(G, q , g , g x , g y , g z )
pk KeyGen
A1 (sk, pk)
m0, m1
b ? ∈R {0, 1}
c ? ← E (pk, mb? ) c?
A2
b
bB
67
Elgamal
Sécurité d’Elgamal
Preuve :
On va construire R qui reçoit en entrée (G, q, g , g x , g y , g z ) et décide si
z = xy .
68
Elgamal
Sécurité d’Elgamal
Preuve :
On va construire R qui reçoit en entrée (G, q, g , g x , g y , g z ) et décide si
z = xy .
68
Elgamal
Sécurité d’Elgamal
Preuve :
On va construire R qui reçoit en entrée (G, q, g , g x , g y , g z ) et décide si
z = xy .
68
Elgamal
Sécurité d’Elgamal
Preuve :
On va construire R qui reçoit en entrée (G, q, g , g x , g y , g z ) et décide si
z = xy .
68
Elgamal
Sécurité d’Elgamal
Preuve :
On va construire R qui reçoit en entrée (G, q, g , g x , g y , g z ) et décide si
z = xy .
b = b?
68
Elgamal
Sécurité d’Elgamal
Preuve :
Notons
I Rand l’événement “z est tiré aléatoirement dans [[1, q − 1]]”
I DH l’événement “z = xy ”
On souhaite évaluer la probabilité
Advddh
R (k) = Pr[R = 1|DH] − Pr[R = 1|RAND]
On a
ind-cpa
1 AdvElgamal,A (k)
I Pr[R = 1|DH] = +
2 2
69
Elgamal
Sécurité d’Elgamal
Preuve :
1
I Pr[R = 1|RAND] =
2
puisqu’alors la deuxième partie du chiffré est complètement
aléatoire, indépendante du message, et en particulier de b ? : A ne
1
peut donc prédire b ? avec une probabilité meilleure que .
2
Et finalement,
ddh
Advind-cpa
Elgamal,A (k)
AdvR (k) = .
2
R a le même temps d’exécution que A.
70
Elgamal
Un Elgamal IND-CCA2 : Fujisaki-Okamoto.
I Elgamal.Setup(k) {k, G, g , q, H}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I g est un générateur de G.
I H : {0, 1}k −→ [[1, q − 1]] est une fonction de hachage
I Elgamal.KeyGen(params) (x, y )
avec
I x ∈ [[1, q − 1]]
I y = gx
I Elgamal.Encrypt(params, y , m) c = (u, v )
k0 k−k0
I r ∈R {0, 1} et m ∈ {0, 1}
I u = g H(m||r )
I v = (m||r )y H(m||r )
71
Elgamal
Un Elgamal IND-CCA2 : Fujisaki-Okamoto.
I Elgamal.Decrypt(params, x, (u, v )) m ou ⊥
x
h v ik−k0
I si u = g H(v /u )
alors m = x
u
I sinon ⊥
72
Elgamal
Un Elgamal IND-CCA2 : Fujisaki-Okamoto.
I Elgamal.Decrypt(params, x, (u, v )) m ou ⊥
x
h v ik−k0
I si u = g H(v /u )
alors m = x
u
I sinon ⊥
Théorème
Dans le modèle de l’oracle, le schéma Elgamal modifié précédent atteint
le niveau de sécurité IND-CCA2 si le problème décisionnel Diffie-Hellman
est dur.
How to Enhance the Security of Public-Key Encryption at Minimum Cost. Eiichiro Fujisaki and
Tatsuaki Okamoto. Proc. of PKC’99, Springer LNCS 1560, pp. 53–68 (1999)
72
Elgamal
Un Elgamal IND-CCA1 dans le modèle standard : Damgård
I Elgamal.Setup(k) {k, G, g , q}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I g est un générateur de G.
I Elgamal.KeyGen(params) (x, z), (y , w )
avec
I x, z ∈ [[1, q − 1]]2
I y = gx, w = gz
I Elgamal.Encrypt(params, y , m) c = (c1 , c2 , c3 )
k0 k−k0
I r ∈R {0, 1} et m ∈ {0, 1}
I c1 = w r
I c2 = g r
I c3 = my r
73
Elgamal
Un Elgamal IND-CCA1 dans le modèle standard : Damgård
I Elgamal.Decrypt(params, (x, w ), (c1 , c2 , c3 )) m ou ⊥
c3
I si c1 = c2z alors m = x
c2
I sinon ⊥
74
Elgamal
Un Elgamal IND-CCA1 dans le modèle standard : Damgård
I Elgamal.Decrypt(params, (x, w ), (c1 , c2 , c3 )) m ou ⊥
c3
I si c1 = c2z alors m = x
c2
I sinon ⊥
Théorème
Dans le modèle standard, le schéma Elgamal modifié précédent atteint le
niveau de sécurité IND-CCA1 sous une hypothèse “non-standard”.
Towards Practical Public Key Systems Secure Against Chosen Ciphertext Attacks. Ivan Damgård.
Proc. of Crypto’91, Springer LNCS 576, pp. 445–456 (1992)
74
RSA
Rappel : RSA “textbook”
I RSA.Setup(k) {k}
I RSA.KeyGen(params) (d, p, q), (N, e)
avec
I p et q deux premiers tels que 2bk/2c−1 < p, q < 2bk/2c
I N = pq
I pgcd(e, ϕ(N)) = 1 et ed = 1 mod ϕ(N)
75
RSA
Remarque : RSA et théorème des restes chinois
Accélération du déchiffrement :
76
RSA
Remarque : RSA et théorème des restes chinois
Accélération du déchiffrement :
I dp = d mod p et dq = d mod q
I mp = c dp mod p et mq = c dq mod q
I v = (mq − mp )p −1 mod q
m = mp + pv
déchiffrement 4 fois plus rapide ! (exponentiation : O(log(d) log(N)2 ))
76
RSA
Sécurité de RSA
I RSA n’est pas indistinguable
I RSA est OW-CPA sous l’hypothèse que le problème RSA est dur.
77
RSA
Sécurité de RSA
I Supposons qu’un attaquant A veuille obtenir le message clair
correspondant au chiffré c ? (= m? eA mod NA ).
I Cet attaquant peut accéder au mécanisme de déchiffrement 1 seule
fois, mais ne peut pas lui soumettre c ? .
I Comment alors obtenir m? ?
78
RSA
Sécurité de RSA
I Supposons qu’un attaquant A veuille obtenir le message clair
correspondant au chiffré c ? (= m? eA mod NA ).
I Cet attaquant peut accéder au mécanisme de déchiffrement 1 seule
fois, mais ne peut pas lui soumettre c ? .
I Comment alors obtenir m? ?
I A tire au hasard r ∈ Z/NA Z et calcule c̃ = r eA × c ? mod NA .
78
RSA
Sécurité de RSA
I Supposons qu’un attaquant A veuille obtenir le message clair
correspondant au chiffré c ? (= m? eA mod NA ).
I Cet attaquant peut accéder au mécanisme de déchiffrement 1 seule
fois, mais ne peut pas lui soumettre c ? .
I Comment alors obtenir m? ?
I A tire au hasard r ∈ Z/NA Z et calcule c̃ = r eA × c ? mod NA .
I il soumet c̃ à l’oracle de déchiffrement qui lui renvoie
m̃ = (r eA × c ? )dA mod NA
= r eA dA × c ?dA mod NA
= r × m? mod NA
A retrouve m? = m̃/r .
78
RSA
Sécurité de RSA
I Attaque de Håstad :
Brahim1, Brahim2 , Brahim3 ont respectivement comme clé publique
(3, N1 ), (3, N2 ) et (3, N3 ).
Aida leur envoie le même message m, chiffré.
79
RSA
Sécurité de RSA
I Attaque de Håstad :
Brahim1, Brahim2 , Brahim3 ont respectivement comme clé publique
(3, N1 ), (3, N2 ) et (3, N3 ).
Aida leur envoie le même message m, chiffré.
79
RSA
Sécurité de RSA
Attaque de Wiener :
I contexte : utiliser un petit exposant secret pour accélérer le
déchiffrement
I ed = 1 mod ϕ(N) =⇒ ed = 1 + kϕ(N) pour un k ∈ Z
I si p ≈ q, on peut obtenir la majoration
e
− k ≤ √3
N d N
Théorème
Supposons que pgcd(a, b) = pgcd(c, d) = 1, et
a c 1
− ≤ .
b d 2d 2
Alors c/d est l’une des réduites du développement en fractions continues
de a/b.
80
RSA
Sécurité de RSA
3 1
I Donc si √ ≤ 2
, soit
N 2d
N 1/4
d≤ √ ,
6
e
on retrouve d en calculant le développement en fraction continue de
N
(algorithme d’Euclide)
d ≤ N 0,292
Recherche d’une “petite” racine du polynôme
f (x, y ) = x (N + 1 + y ) − 1 mod e
81
RSA
Sécurité de RSA
I Théorème (Howgrave-Graham)
Soit h(x, y ) ∈ Z[x, y ] un polynôme, somme d’au plus ω monômes.
Si
1. h(x0 , y0 ) = 0 mod e m pour m ∈ N, avec | x0 |< X0 et | y0 |< Y0 , et
2. kh(xX , yY )k < e m /ω
alors h(x0 , y0 ) = 0 dans les entiers.
82
RSA
Sécurité de RSA
Stratégie :
I construire une famille échelonnée de polynômes dont (x0 , y0 ) est
racine
I construire un réseau grâce à ces polynômes
I utiliser LLL pour obtenir deux combinaisons linéaires de petite
norme de polynômes de cette famille
I si le réseau a un déterminant suffisamment petit, on se ramène à la
recherche de racines entières.
Small Solutions to Polynomial Equations, and Low Exponent RSA Vulnerabilities. Don
Coppersmith, J. Cryptology 10(4), pp. 233–260 (1997)
New RSA Vulnerabilities Using Lattice Reduction Methods, Alexander May, PhD thesis University
of Paderborn, 2003.
83
RSA
84
RSA
I RSAcpa .Setup(k) {k, H}
I RSAcpa .KeyGen(params) (d, p, q), (N, e)
avec
I p et q deux premiers tels que 2bk/2c−1 < p, q < 2bk/2c
I N = pq
I pgcd(e, ϕ(N)) = 1 et ed = 1 mod ϕ(N)
85
RSA
I RSAcpa .Setup(k) {k, H}
I RSAcpa .KeyGen(params) (d, p, q), (N, e)
avec
I p et q deux premiers tels que 2bk/2c−1 < p, q < 2bk/2c
I N = pq
I pgcd(e, ϕ(N)) = 1 et ed = 1 mod ϕ(N)
85
RSA
86
RSA
Setup k
pk KeyGen
m
H
H(m) A1 (sk, pk)
m0, m1
b ? ∈R {0, 1}
c ? ← E (pk, mb? ) c?
m A2
H
H(m)
b
87
RSA
Preuve :
I Nous allons construire une réduction R qui reçoit en entrée un
challenge
(N, e, y )
I R donne A la clé publique (N, e)
I R reçoit les deux messages m0 et m1 de la part de A
I Le chiffré challenge est
c ? = (y ? , z ? )
avec
y ? = x ? e (mod N) pour un x ? ∈R Z/NZ
z ? = H(x ? ) ⊕ mb?
88
RSA
R Setup k
(N , e , y )
m
pk KeyGen
H
A1 (sk, pk)
H(m)
m0 , m1
b ? ∈R {0, 1}
c ? ← E (pk, mb? ) c?
m
A2
H
H(m) b
x
89
RSA
Preuve :
90
RSA
Preuve :
91
RSA
Preuve :
91
RSA
Preuve :
Succrsa
R (k) = Pr[Q].
92
RSA
Preuve :
Succrsa
R (k) = Pr[Q].
I Par ailleurs
Advind-cpa ?
RSAcpa ,A (k) = 2 Pr[b = b ] − 1
92
RSA
Preuve :
Succrsa
R (k) = Pr[Q].
I Par ailleurs
Advind-cpa ?
RSAcpa ,A (k) = 2 Pr[b = b ] − 1
I Or,
92
RSA
Preuve :
Succrsa
R (k) = Pr[Q].
I Par ailleurs
Advind-cpa ?
RSAcpa ,A (k) = 2 Pr[b = b ] − 1
I Or,
1
≤ Pr[Q] + (1 − Pr [Q])
2
92
RSA
Preuve :
parce que :
93
RSA
Preuve :
parce que :
Pr[b = b ? |Q] ≤ 1
93
RSA
Preuve :
parce que :
Pr[b = b ? |Q] ≤ 1
Pr[Q̄] = 1 − Pr [Q]
93
RSA
Preuve :
parce que :
Pr[b = b ? |Q] ≤ 1
Pr[Q̄] = 1 − Pr [Q]
Pr[b = b ? |Q̄] =
93
RSA
Preuve :
parce que :
Pr[b = b ? |Q] ≤ 1
Pr[Q̄] = 1 − Pr [Q]
Pr[b = b ? |Q̄] = 1
2
93
RSA
Preuve :
parce que :
Pr[b = b ? |Q] ≤ 1
Pr[Q̄] = 1 − Pr [Q]
Pr[b = b ? |Q̄] = 1
2
Ainsi,
Pr[Q] ≥ 2 Pr[b = b ? ] − 1 = Advind-cpa
RSAcpa ,A (k)
soit
ind-cpa
Succrsa
R (k) ≥ AdvRSAcpa ,A (k)
et τ = τ 0 + qH TExp .
93
RSA
RSA-OAEP
94
RSA
OAEP
95
RSA
OAEP
I Setup(k) {params, H, G}
I KeyGen(params) pk = f et sk = f −1
I Encrypt(params, f , m) c avec
96
RSA
OAEP
I Setup(k) {params, H, G}
I KeyGen(params) pk = f et sk = f −1
I Encrypt(params, f , m) c avec
r ∈R {0, 1}k0
s = (mk0k1 ) ⊕ G(r )
t = r ⊕ H(s)
c = f (s, t)
96
RSA
OAEP
I Setup(k) {params, H, G}
I KeyGen(params) pk = f et sk = f −1
I Encrypt(params, f , m) c avec
r ∈R {0, 1}k0
s = (mk0k1 ) ⊕ G(r )
t = r ⊕ H(s)
c = f (s, t)
I Decrypt(params, f −1 , c) m/Reject
96
RSA
OAEP
I Setup(k) {params, H, G}
I KeyGen(params) pk = f et sk = f −1
I Encrypt(params, f , m) c avec
r ∈R {0, 1}k0
s = (mk0k1 ) ⊕ G(r )
t = r ⊕ H(s)
c = f (s, t)
I Decrypt(params, f −1 , c) m/Reject
(s, t) = f −1 (c)
r = t ⊕ H(s)
M = s ⊕ G(r )
si [M]k1 = 0k1 retourner [M]n
sinon retourner Reject
96
RSA
m 0k1 r
s t
97
RSA
Sécurité de OAEP
Notion de sens unique partiel.
Soit f une permutation de {0, 1}k qui peut s’écrire, si k = n + k0 + k1
Succow
f (A) := Pr (A(f (s, t)) = (s, t)) ≤ ε
Succpd-ow
f (A) := Pr (A(f (s, t)) = s) ≤ ε
98
RSA
I f est (`, τ, ε)-set-partial-domain-one-way si tout attaquant A
fonctionnant en temps au plus τ et renvoyant un ensemble de `
éléments, vérifie
Succs-pd-ow
f (A) := Pr s ∈ A(f (s, t)) ≤ ε
99
Cramer-Shoup
Chiffrement de Cramer-Shoup
100
Cramer-Shoup
Un schéma de chiffrement IND-CCA2 dans le modèle standard :
Cramer-Shoup.
I CS.Setup(k) {k, G, q, H}
101
Cramer-Shoup
Un schéma de chiffrement IND-CCA2 dans le modèle standard :
Cramer-Shoup.
I CS.Setup(k) {k, G, q, H}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I H : {0, 1}k −→ [[1, q − 1]] est une famille de fonctions de hachage
résistantes aux collisions
101
Cramer-Shoup
Un schéma de chiffrement IND-CCA2 dans le modèle standard :
Cramer-Shoup.
I CS.Setup(k) {k, G, q, H}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I H : {0, 1}k −→ [[1, q − 1]] est une famille de fonctions de hachage
résistantes aux collisions
I CS.KeyGen(params) (x1 , x2 , y1 , y2 , z), (g1 , g2 , c, d, h, H)
101
Cramer-Shoup
Un schéma de chiffrement IND-CCA2 dans le modèle standard :
Cramer-Shoup.
I CS.Setup(k) {k, G, q, H}
I G est un groupe cyclique d’ordre 2k−1 < q < 2k
I H : {0, 1}k −→ [[1, q − 1]] est une famille de fonctions de hachage
résistantes aux collisions
I CS.KeyGen(params) (x1 , x2 , y1 , y2 , z), (g1 , g2 , c, d, h, H)
avec
I g1 et g2 sont deux générateurs distincts de G
I (x1 , x2 , y1 , y2 , z) ∈ [[1, q − 1]]5
I c = g1 x1 g2 x2 , d = g1 y1 g2 y2 et h = g1 z
I H∈H
101
Cramer-Shoup
I CS.Encrypt(params, (g1 , g2 , c, d, h, H), m) (u1 , u2 , e, v )
102
Cramer-Shoup
I CS.Encrypt(params, (g1 , g2 , c, d, h, H), m) (u1 , u2 , e, v )
I r ∈R [[1, q − 1]]
I u1 = g1 r , u2 = g2 r ,
I e = mhr
I α = H(u1 , u2 , e)
I v = cr d rα
102
Cramer-Shoup
I CS.Encrypt(params, (g1 , g2 , c, d, h, H), m) (u1 , u2 , e, v )
I r ∈R [[1, q − 1]]
I u1 = g1 r , u2 = g2 r ,
I e = mhr
I α = H(u1 , u2 , e)
I v = cr d rα
I CS.Decrypt(params, (x1 , x2 , y1 , y2 , z), (u1 , u2 , e, v )) m ou ⊥
I α = H(u1 , u2 , e)
I si
u1 x1 +y1 α u2 x2 +y2 α = v
renvoyer
e
m=
u1 z
I sinon renvoyer ⊥
102
Cramer-Shoup
Théorème
Le schéma Cramer-Shoup atteint le niveau de sécurité IND-CCA2 si le
problème décisionnel Diffie-Hellman est dur et si H est tirée au hasard
dans une famille de fonctions “universal one-way”.
A practical public key cryptosystem provably secure against adaptive chosen ciphertext attack.
Ronald Cramer and Victor Shoup. Proc. of Crypto’98, Springer LNCS 1462, pp. 13–25
103
Paillier
Chiffrement de Paillier
104
Paillier
Un schéma basé sur la résiduosité : Paillier.
I Paillier.Setup(k) {k}
I Paillier.KeyGen(params) (λ, p, q), (N, g )
avec
I N = pq avec p et q deux grands premiers
I g ∈ (Z/N 2 Z)∗ dont l’ordre est divisible par N
I λ = ppcm(p − 1, q − 1)
On définit la fonction
L : SN −→ SN
u−1
u 7−→ L(u) =
avec N
SN = {u < N 2 |u = 1 mod N}
105
Paillier
I Paillier.Encrypt(params, (N, g ), m) c = g m r N mod N 2
I r ∈R [[1, N − 1]]
106
Paillier
I Paillier.Encrypt(params, (N, g ), m) c = g m r N mod N 2
I r ∈R [[1, N − 1]]
L(c λ mod N 2 )
I Paillier.Decrypt(params, (λ, p, q), c) m=
L(g λ mod N 2 )
106
Paillier
I Paillier.Encrypt(params, (N, g ), m) c = g m r N mod N 2
I r ∈R [[1, N − 1]]
L(c λ mod N 2 )
I Paillier.Decrypt(params, (λ, p, q), c) m=
L(g λ mod N 2 )
Definition
Soit g ∈ (Z/N 2 Z)∗ d’ordre divisible par N. Pour tout ω ∈ (Z/N 2 Z)∗ , on
appelle classe de N résiduosité de ω par rapport à g , l’unique entier
x ∈ Z/NZ pour lequel il existe un y ∈ (Z/NZ)∗ tel que
gxyN mod N 2 = ω.
106
Paillier
Remarque : [[ω]]g1 = [[ω]]g2 [[g2 ]]g1 mod N et donc [[g1 ]]g2 = [[g2 ]]−1
g1
mod N
Lemme
Pour tout ω ∈ (Z/N 2 Z)∗ , L(ω λ mod N 2 ) = λ[[ω]]1+N mod N.
Preuve : N + 1 ∈ (Z/N 2 Z)∗ a un ordre divisible par N
=⇒ ∃!(a, b) ∈ Z/NZ × (Z/NZ)∗ tel que ω = (1 + N)a b N mod N 2 .
(a = [[ω]]N+1 )
Alors ω λ = (1 + N)aλ b Nλ = (1 + N)aλ = 1 + aλN mod N 2
Et finalement :
107
Paillier
I Théorème
Sous l’hypothèse que le problème décisionnel de résiduosité composite est
dur, Paillier est IND-CPA.
Remarque :
Paillier est homomorphique additivement et multiplicativement.
Public-Key Cryptosystems Based on Composite Degree Residuosity Classes . Pascal Paillier. Proc.
of Eurocrypt’99, Springer LNCS 1592, pp. 223–238 (1999)
108