Cours LB partie 1 Flashcards
De quelles façons peut-on sécuriser une communication entre deux personnes qui ne se sont jamais rencontrées ?
- En utilisant un protocole d’échange de clés puis de la cryptographie symétrique
- En utilisant du chiffrement asymétrique
Protocole d’échange de clés Diffie-Hellman
- A et B choisissent un groupe cyclique (G, ×) d’ordre q et un générateur du groupe G
- A calcule hA = gx pour 0 ≤ x < q - 1 aléatoire
- B calcule hB = gy pour 0 ≤ y < q - 1 aléatoire
- A et B s’échangent hA et hB publiquement
- A calcule hBx et B calcule hAy, et hAy = hBx
Correction du protocole Diffie-Hellman (schéma de preuve)
hAy
= gxy
= gxy
= gyx
= hBx
Détail du calcul de complexité de Diffie-Hellman
- Choisir p premier → polynomial
- Choisir un générateur du groupe G = ({Z}/p{Z})* → polynomial
- Calculer gx dans ({Z}/p{Z})* → polynomial
Diffie-Hellman est donc polynomial
Comment choisir un entier premier aléatoire ?
En faisant une boucle entre 2b-1 et 2b et en utilisant un test de primalité sur chaque élément avec
- test de Miller-Robin probabiliste polynomial
- test AKS déterministe polynomial
donc polynomial au total car la probabilité de tomber sur un entier premier est d’environ 1/logn
Comment choisir un générateur pour un groupe ({Z}/p{Z})* ?
Si p = 2q + 1 avec q premier, il existe un algorithme polynomial
Comment calculer gx dans ({Z}/p{Z})* ?
- Mauvaise méthode :
- Exponentiation classique
- Complexité exponentielle en logp
- Bonne méthode :
- Exponentiation rapide : x = x0 + 2x1 + … + 2kxk → gx = gx0 × (g2)x1 × … × (g2k)xk
- O(k) multiplications pour calculer (g2i) et O(k) multiplications supplémentaires, avec chacune en O(logp2), donc logpO(1) en tout
Quels sont les problèmes auxquels on se rapporte pour évaluer la sécurité d’un protocole ?
- Problème du logarithme discret
- Problème de Diffie-Hellman calculatoire
- Problème de Diffie-Hellman décisionnel
Problème du logarithme discret
- Entrée : G, q, g, h ∈ G
- Sortie : x tel que h = gx
Problème de Diffie-Hellman calculatoire
- Entrée : G, q, g, h1, h2 ∈ G
- Sortie : gxy où h1 = gx, h2 = gy et 0 ≤ x, y ≤ q
Problème de Diffie-Hellman décisionnel
- Entrée : G, q, g, h1, h2, h3 ∈ G
- Sortie : Est-ce que h3 = gxy si h1 = gx, h2 = gy et 0 ≤ x, y ≤ q ?
Comparaison de la complexité des trois problèmes LD, DHC et DHD
DHD ≤ DHC ≤ LD, puisqu’on peut résoudre DHC avec LD (et pas l’inverse) et DHD avec DHC (et pas l’inverse)
Hypothèse du logarithme discret
Les trois problèmes LD, DHC et DHD sont difficiles
Qu’est-ce qu’un protocole asymétrique ?
Un protocole dans lequel il y a
- une clé publique avec laquelle tout le monde peut encoder
- une clé privée avec laquelle seuls ceux qui l’ont peuvent déchiffrer
Générées des clés dans le protocole de chiffrement asymétrique El-Gamal
- G un group cyclique d’ordre q avec g un générateur
- 0 ≤ x ≤ q aléatoire
- Clé publique pk = (G, q, g, h = gx)
- Clé privée sk = x
Chiffrement d’un message dans le protocole de chiffrement asymétrique El-Gamal
- m ∈ G un message
- 0 ≤ y ≤ q aléatoire
- Encpk(m) = (gy, hy × m) ∈ G2
Déchiffrement d’un message dans le protocole de chiffrement asymétrique El-Gamal
Soit c = (c1, c2) ∈ G2, alors Decsk(c) = c2/c1x = c2 × (c1-1)x
Correction du protocole de chiffrement asymétrique El-Gamal (schéma de preuve)
Dec(Enc(m))
= hy × m / (gy)x
= (gx)y × m / (gy)x
= gxy × m / gxy
= m
Calcul d’inverse dans ({Z}/p{Z})*
- Inverse de a : 1/a mod p tel que 0 < a < p ⇔ b tel que a × b = 1 mod p
- Algorithme d’Euclide étendu sur (a, p) → (r, s) tel que a × r + p × s = 1 ⇔ a × r = 1 - p × s = 1 mod p, donc b = r
Que peut-on dire de l’attaque “Écoute des communications” sur le protocole d’échange de clés de Diffie-Hellman ? (schéma de preuve)
L’écoute des protocoles permet d’obtenir gx et gy, obtenir gxy à partir de là revient à résoudre DHC, l’attaque est donc difficile
Que peut-on dire de l’attaque “Tentative de déchiffrement d’un message” sur le protocole El-Gamal ? (schéma de preuve)
- Supposons que l’attaque est facile, alors algorithme A qui prend (pk, c1, c2) = (gx, gy, gxy × m) et renvoie m = c2/c1x
- Soit alors un algorithme R qui prend (gx, gy) et renvoie c2/A(gx, gy, c2) = c2/m = (gxy × m)/m = gxy
- R permet de résoudre DHC avec A, donc A ne peut pas exister
Quels sont les objectifs possibles d’une attaque ?
- Total break : retrouver la clé secrète
- One-way : déchiffrer un message
- Indistingabilité : retrouver un bit d’information du message
Quels sont les moyens possibles pour une attaque ?
- Chosen plaintext : savoir chiffrer un message
- Chosen cyphertext : savoir déchiffrer un message