0% ont trouvé ce document utile (0 vote)
36 vues27 pages

Cours 5

Le document présente un cours sur la cryptographie à clé publique, en se concentrant sur les signatures numériques et divers schémas de signature, notamment RSA et ElGamal. Il aborde les propriétés souhaitables des signatures numériques, les modèles d'attaques, ainsi que la sécurité des schémas de signature, en mettant l'accent sur la nécessité d'utiliser des fonctions de hachage pour améliorer la sécurité. Enfin, il discute des performances et des exigences de clés pour la signature RSA-FDH.

Transféré par

Camara Djiby
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
36 vues27 pages

Cours 5

Le document présente un cours sur la cryptographie à clé publique, en se concentrant sur les signatures numériques et divers schémas de signature, notamment RSA et ElGamal. Il aborde les propriétés souhaitables des signatures numériques, les modèles d'attaques, ainsi que la sécurité des schémas de signature, en mettant l'accent sur la nécessité d'utiliser des fonctions de hachage pour améliorer la sécurité. Enfin, il discute des performances et des exigences de clés pour la signature RSA-FDH.

Transféré par

Camara Djiby
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Cryptographie à clé publique

Cours 5

Julien Lavauzelle
Université Paris 8
Master 1 mathématiques et applications – parcours ACC
26/02/2024
Aujourd’hui

1. Signatures numériques

2. Quelques schémas de signature


Signature RSA
Signature RSA avec full domain hash
Signature ElGamal

1/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Plan

1. Signatures numériques

2. Quelques schémas de signature


Signature RSA
Signature RSA avec full domain hash
Signature ElGamal

1/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Contexte et motivations

On souhaite imiter (voire améliorer) certaines propriétés des signatures manuscrites.


Exemples de ce qu’on souhaite signer numériquement :
– des emails – de la communication publique (sites web)
– du code (mise à jour de logiciels)
– des transactions bancaires (ecommerce) – des clés de chiffrement, des certificats

Objectifs :
– Intégrité : on peut vérifier si le message a été modifié ou non.
– Authenticité : on peut associer un message à un émetteur.
– Non-répudiation : on ne peut pas nier avoir émis une signature valide.
– Infalsifiabilité : une autre personne ne peut pas prétendre avoir émis la signature.
– Non-réutilisation : on ne peut pas utiliser une même signature sur deux messages différents.

Remarque. Ces propriétés ne sont pas toutes vérifiées par la signature « physique ».

2/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Contexte et motivations

Remarque. Une signature d’un message m n’est pas :


1. du chiffrement (on ne cache pas la valeur du message),
2. « l’inverse du chiffrement asymétrique » (même si parfois ça y ressemble),
3. un MAC (message authentication code) : les signatures sont publiquement vérifiables.

La signature va s’apposer au message, et devra dépendre explicitement de lui.


Par conséquent, les propriétés additionnelles désirables d’une signature sont :
– des signatures courtes,
– des algorithmes de signature et vérification rapides,
– des clés courtes.

3/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Un dessin récapitulatif

Phase de vérification
→ opérée par quiconque
Phase de signature
→ opérée par Alice

message
message

+
+ clé publique pk
clé secrète sk +
signature ?

signature
signature acceptée ou non-acceptée

4/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Définition

Définition. Un schéma de signature numérique (à clé publique) est constitué de deux ensembles
1. M un ensemble de messages,
2. S un ensemble de signatures,
et de trois algorithmes :
1. KeyGen l’algorithme de génération de clés. Il renvoie un couple (pk, sk) de clé publique/clé privée.
2. Sign un algorithme de signature, qui prend en entrée un message m ∈ M, la clé privée sk, et retourne une
signature s = Sign(m, sk) ∈ S .
3. Verif un algorithme de vérification, qui renvoie une valeur booléenne true/false. L’algorithme Verif prend en
entrée la clé publique pk, le message m et la signature s.

Le schéma de signature est valide si

∀(m, s) ∈ M × S , Verif (m, s, pk) = true ⇐⇒ s = Sign(m, sk)

5/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Modèle d’attaquant (moyens)

Pour la sécurité du schéma, il faut définir un modèle d’attaquant (moyens) et un modèle d’attaque (objectifs).

On distingue différents moyens d’attaques, notamment :


1. Attaque à clé seule (key-only attack, KOA) : l’attaquant ne dispose que de la clé publique
2. Attaque à message connu (known-message attack, KMA) : l’attaquant dispose d’une liste de messages déjà
signés (m1 , s1 ), . . . , (mℓ , sℓ ). Les signatures sont valides et réalisées avec la même clé.
3. Attaque à message choisi (chosen-message attack, CMA) : l’attaquant choisit des messages m1 , . . . , mℓ et
demande les signatures s1 , . . . , sℓ associées. Les signatures sont valides et réalisées avec la même clé.

6/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Modèle d’attaquant (objectifs)

Les modèles d’attaque principaux sont les suivants :


1. Cassage total : l’attaquant détermine une clé privée équivalente à celle d’Alice.
2. Falsification universelle : avec probabilité non-négligeable, l’attaquant peut falsifier une signature d’un
message choisi par quelqu’un d’autre. Ce message n’aura pas été signé précédemment.
3. Falsification existentielle : avec probabilité non-négligeable, l’attaquant peut créer un couple (m, s) où s est
une signature valide de m. Ce message n’aura pas été signé précédemment.

Le fait qu’un schéma de signature ne permette pas d’effectuer une falsification existentielle sera noté EUF (Existential
UnForgeability).
De même, le fait qu’un schéma de signature ne permette pas d’effectuer une falsification universelle sera noté UUF
(Universal UnForgeability).

7/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Sécurité d’une signature

Comme pour le chiffrement, on combine les définitions précédentes pour définir la sécurité d’un schéma de
signature.
Par exemple :

Définition (exemple). On dit qu’un schéma satisfait la propriété d’infalsification existentielle sous une attaque à
message choisi (EUF-CMA,  Existential UnForgeability under Chosen Message Attack) si :
 la clé publique pk,
tout attaquant ayant accès à une liste de messages m1 , . . . , mℓ qu’il a choisis,
et les signatures associées s1 , . . . , sℓ ,

a une probabilité négligeable de retourner un message m′ ∈ / {mi } et une signature s′ tels que

Verif (m′ , s′ , pk) = true

Remarque. EUF-CMA est le standard de sécurité usuellement requis.

8/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Plan

1. Signatures numériques

2. Quelques schémas de signature


Signature RSA
Signature RSA avec full domain hash
Signature ElGamal

8/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Plan

1. Signatures numériques

2. Quelques schémas de signature


Signature RSA
Signature RSA avec full domain hash
Signature ElGamal

8/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Première idée
Phase de vérification
Phase de signature opérée par quiconque
opérée par Alice

message
message

+
+ clé publique pk
clé secrète sk +
signature ?
signature
vrai ou faux

Idée informelle : admettons que l’on ait à disposition une fonction à sens unique f , dont Alice connaît une trappe
(par exemple, dans RSA, f : x 7→ xe mod n). Tout le monde sait calculer f , seule Alice sait l’inverser.
Alors, pour signer un message m :
▶ Alice serait la seule à pouvoir émettre la signature s = f −1 (m)
▶ tout le monde pourrait vérifier que f (s) = m.

9/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Signature RSA

Signature RSA : génération de clés KeyGen


1. Calculer n = pq et ϕ(n) = (p − 1)(q − 1), où p et q sont deux grands nombres premiers aléatoires
2. Choisir e et d tels que ed ≡ 1 mod ϕ(n)
3. La clé publique est pk = (e, n), la clé privée est sk = (d, ϕ(n)).

L’espace des messages est M = Z/nZ et celui des signatures est S = Z/nZ.

Signature RSA : signature Sign(m, sk)


1. Calculer s = md mod n.
2. Retourner s.

Signature RSA : vérification Verif (m, s, pk)


1. Calculer m′ = se mod n.
2. Faire le test m′ = m et retourner le booléen associé.

Validité. m′ ≡ se ≡ med ≡ m mod n.

10/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Sécurité

Résumé (signature RSA).


?
Clés : pk = (n, e), sk = d, Vérification : se mod n ≡ m mod n
Signature : s = md mod n

Que dire de la sécurité de ce schéma ?

Proposition. La signature RSA « brute » n’est pas EUF-KOA. Autrement dit, il existe une attaque de falsification
existentielle sur la signature RSA « brute » avec la clé publique seule.

Preuve. À partir de la clé publique pk = (n, e), on peut forger un message m′ et une signature s′ valide pour la clé
privée sk = d d’Alice.
1. Choisir s′ aléatoirement dans S = Z/nZ,
2. Calculer m′ = (s′ )e mod n.

Proposition. Il existe également une attaque de falsification sélective sur la signature RSA « brute », avec des mes-
sages choisis.

Preuve. Au prochain TD. Indication : 2 messages préliminaires suffisent.

11/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Inconvénients

La signature RSA « brute » admet donc plusieurs inconvénients :


1. La sécurité (voir slide précédente).
2. D’un point de vue pratique, on ne peut pas signer un fichier de taille quelconque (M = Z/nZ).

Solution : fonction de hachage !

12/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Plan

1. Signatures numériques

2. Quelques schémas de signature


Signature RSA
Signature RSA avec full domain hash
Signature ElGamal

12/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Rappels sur les fonctions de hachage

Définition. Une famille de fonctions de hachage cryptographiques est un ensemble de fonctions Hκ : {0, 1}∗ → H,
où H est un ensemble de taille fixe, et κ est un paramètre de la famille. L’élément Hκ (m) est appelé haché de m.

Une fonction de hachage H = Hκ est résistante aux collisions si pour tout algorithme polynomial probabiliste A, la
probabilité
P m ̸= m′ et Hκ (m) = Hκ (m′ ) | (m, m′ ) ← A
 

est négligeable devant un paramètre de sécurité donné.

Exemple majeur : les fonctions SHA-3 (pour secure hash algorithm, 3ème version), dont les sorties sont de taille 224,
256, 384 ou 512 bits (au choix).

Important. Les « anciennes » fonctions MD5 et SHA-1 ne sont pas résistantes aux collisions, mais restent utilisées
pour des applications non-cryptographiques (à éviter néanmoins).

Dans toute la suite, on prend H = Hκ : {0, 1}∗ → H une fonction de hachage résistante aux collisions.

13/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


RSA-FDH : full domain hash

Idée : au lieu de signer directement le message m, on signe H (m) avec l’algorithme de signature RSA « brut » vu
précédemment.

La génération de clés est identique : pk = (n, e), sk = d.

L’espace des messages est maintenant M = {0, 1}∗ et celui des signatures reste S = Z/nZ.

Signature RSA-FDH : Sign(m, sk)


On suppose que m ∈ {0, 1}∗ et que H est à valeurs dans S = Z/nZ.
1. Hacher m, c’est-à-dire calculer h := H (m).
2. Calculer et retourner s = hd mod n.

Signature RSA-FDH : Verif (m, s, pk)


1. Calculer h′ = se mod n.
2. Hacher m, c’est-à-dire calculer h := H (m)
3. Faire le test h′ = h et retourner le booléen associé.

Validité. h′ ≡ se ≡ hed ≡ h mod n.

14/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Sécurité

Théorème. Dans le modèle de l’oracle aléatoire, si le problème RSA est difficile, alors la signature RSA-FDH est
EUF-CMA (résistante à toute falsification existentielle par une attaque à message choisi) .

Remarque. Le modèle de l’oracle aléatoire permet d’idéaliser les fonctions de hachage. C’est une hypothèse plus
forte que le modèle standard.
En pratique, on peut utiliser la fonction de hachage SHA-3, de sortie 224 ou 256 bits par exemple.
Pour s’appuyer le résultat (théorique) de sécurité ci-dessus, il faut que l’espace de définition de la fonction RSA soit
le même que l’espace des hachés : c’est la notion de « full domain hash ».

Problème : pour RSA, il faut choisir un module n de 2048 bits minimum, alors que les fonctions de hachage usuelles
forment des hachés de moins de 512 bits.

Plusieurs solutions :
– faire du remplissage aléatoire (padding),
– concaténer des hachés successifs du message H (i) (m) ou des hachés avec incrément H (i) (m || ctr).
Exemple :   
FDH (m, IV) = H m || n || IV + 0 || H m || n || IV + 1 || H m || n || IV + 2 || · · ·
où IV est un vecteur d’initialisation public apposé au message.
15/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications
Performance

La signature RSA-FDH est une brique de base du standard RSA PKCS#1 v2.1.
Performances :
▶ Calcul efficace ? Un haché + O(1) exponentiations modulaires (les clés sont de taille indépendante de celle du
fichier).
▶ Taille de clés ?
clé publique : 2 log2 n ≃ 4096 bits minimum
clé privée : log2 n ≃ 2048 bits minimum
▶ Taille de signature ? log2 n = 2048 bits minimum

16/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Plan

1. Signatures numériques

2. Quelques schémas de signature


Signature RSA
Signature RSA avec full domain hash
Signature ElGamal

16/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Description

On se place dans le groupe multiplicatif d’un corps fini Fp , où p est premier. On note g un générateur de Fp× .
Signature ElGamal : KeyGen
1. Choisir aléatoirement a ∈ Z/(p − 1)Z.
2. Calculer α = ga mod p.
3. La clé publique est pk = α, la clé privée est sk = a.

L’espace des messages est M = Fp× et celui des signatures est S = Fp× × Z/(p − 1)Z.

Signature ElGamal : Sign(m, sk)


1. Choisir aléatoirement k ∈ (Z/(p − 1)Z)× (c’est-à-dire, inversible modulo p − 1).
2. Calculer b = gk mod p.
3. Calculer c = (m − ab)k−1 mod (p − 1).
4. Retourner s = (b, c).

Signature ElGamal : Verif (m, s, pk)


1. Calculer x = αb · bc mod p et y = gm mod p.
2. Faire le test x = y et retourner le booléen associé.

17/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Validité

Résumé (signature ElGamal dans Fp ).


Clés : pk = α = ga , sk = a,
Signature : s = (b, c) où
b = gk mod p
c = (m − ab)k−1 mod (p − 1)
?
Vérification : αb · bc ≡ gm mod p

Remarque. Le premier élément b de la signature s ne dépend pas du message.


Validité. On vérifie que
−1 mod (p−1)
αb · bc = gab+k(m−ab)k ≡ gm mod p

18/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Exemple

Paramètres. On prend de petites tailles pour l’exemple : p = 467, g = 2.


Génération de clés. Alice engendre la clé privée a = 127 ; la clé publique est donc α = ga = 2127 mod 467 ≡ 132.
Signature. Supposons qu’Alice veuille signer le message m = 100.
Elle choisit la valeur aléatoire k = 213. On vérifie bien que
pgcd(k, p − 1) = pgcd(213, 466) = 1, et
k−1 mod (p − 1) vaut alors 431.
Alice calcule alors
b = gk = 2213 ≡ 29 mod 467
−1
c = (m − ab)k = (100 − 127 × 29) × 431 ≡ 51 mod 466

Vérification. On peut alors publiquement vérifier la signature (29, 51) d’Alice pour le message m = 100 :
d’une part, αb · bc = 13229 · 2951 ≡ 189 mod 467,
d’autre part, gm = 2100 ≡ 189 mod 467.

19/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Sécurité

On va montrer que la signature ElGamal "brute" n’est pas EUF-KOA.

But. À partir de la clé publique uniquement, calculer m et s = (b, c) tel que Verif (m, s, pk) = true.

Idée : on va écrire b = gi αj pour i, j ∈ {0, . . . , p − 2}. Cette écriture n’est pas unique.
Dans ce cas la condition de vérification est :

αb (gi αj )c = gm ⇐⇒ αb+jc = gm−ic

Cette condition est vérifiée en particulier si on a :

b + jc ≡ 0 mod (p − 1) et m − ic ≡ 0 mod (p − 1)

L’idée est alors de construire d’abord i quelconque et j inversible modulo p − 1 quelconque, puis de définir b, c et m en
fonction :
 b = gi αj

mod p
c = −bj−1 mod (p − 1)
m = ic mod (p − 1)

Important. Par l’utilisation d’une fonction de hachage, ces menaces peuvent être levées (voir cours suivant).

20/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications


Fin du cours

Questions ?

21/21 J. Lavauzelle – Clé Publique 5 – M1 mathématiques et applications

Vous aimerez peut-être aussi