Telechargé par aminebarrak

Chapitre 7 Signatures digitales

publicité
8INF854: Cryptographie
Chapitre 7:
Les signatures digitales
Introduction
• Supposons que l’on veuille signer un document électronique.
Pourquoi ne pas numériser notre signature et la joindre au
document ?
Toutes les personnes qui ont accès au document pourraient ainsi enlever la
signature et l’ajouter à un autre document. Par exemple, un gros chèque
d’argent !
• Par conséquent, on exige alors qu’une signature digitale ne peut
être séparée d’un message ni attachée à un autre message. C’est-àdire que la signature est non seulement attachée au signataire mais
aussi au message qui est signé.
• De plus, la signature digitale doit être facilement vérifiable par les
autres parties.
• Un schéma de signature digitale consiste en deux étapes distinctes:
la signature et la vérification.
Signatures RSA
• Bob possède un document m qu’Alice veut signer. Ils effectuent
les étapes suivantes:
Alice génère deux grands nombres premiers p, q et elle calcule n = pq. Elle choisit
ensuite eA tel que 1 < eA < φ(n) avec pgcd eA , φ n = 1 et elle calcule dA tel
que eA dA = 1 (mod φ(n)). Alice publie (eA , n) et elle garde (dA , p, q) secrets.
La signature d’Alice est
y = mdA (mod n).
La paire (m, y) est rendue publique.
• Bob peut alors vérifier si c’est réellement Alice qui a signé le
message en effectuant les étapes suivantes:
Bob télécharge la paire publique (eA , n) d’Alice et calcule ensuite
z = y eA (mod n).
Si z = m alors Bob accepte la signature.
• Il y a une variante intéressante à cette procédure qui permet à
Alice de signer un document sans en connaître le contenu.
Supposons que Bob a fait une découverte révolutionnaire. Il veut que celleci soit rendue publique mais il veut que personne d’autre que lui ne
connaisse les détails. Bob et Alice procède comme suit:
Le message qui doit être signé est m.
Alice choisit un module RSA (n = pq), un exposant de chiffrement e, et l’exposant
de déchiffrement. Elle publie n et e mais garde p, q et d privés.
Bob choisit aléatoirement un entier k (mod n) avec pgcd k, n = 1 et il calcule
t = k e ∙ m mod n et il envoie t à Alice.
Alice signe t en calculant s = t d mod n . Elle renvoie s à Bob.
Bob calcule
s
k
mod n . Ceci est le message signé md .
Voyons de plus près que s/k est bel et bien le message signé.
s td
ke ∙ m
= =
k k
k
Ce qui est le message signé.
d
=k
ed
md
∙
= md mod n .
k
• Problème ? Pas très sécuritaire du point de vue contenu de m.
RSA est soumis à l'attaque aveuglante RSA par laquelle il est possible d'être
amené à déchiffrer un message en signant aveuglément un autre message.
Puisque le processus de signature équivaut à un déchiffrement avec la clé
secrète du signataire, un attaquant peut fournir une version aveugle d'un
message m chiffré avec la clé publique du signataire, m' pour qu'il signe.
• Il existe des protocoles pour contrecarrer ce problème. Ce sont
les protocoles de signature à l’aveugle. Ils ont été introduits par
David Chaum.
Signature ElGamal
• La méthode de chiffrement d’ElGamal peut être modifiée pour
fournir un schéma de signature. Une différence entre RSA et
ElGamal est qu’avec ce dernier il y a plusieurs signatures qui sont
possibles pour un message donné.
• Supposons qu’Alice veut signer un message. Elle commence
d’abord par choisir un grand nombre premier p et une racine
primitive α. Ensuite, elle choisit un entier secret a tel que 1 ≤
a ≤ p − 2 et calcule β = αa mod p . Les valeurs de p, α et β
sont rendues publiques.
• On se rappelle que la sécurité du système repose sur la difficulté
de trouver a pour un adversaire.
• Alice effectue les étape suivante afin de signer le message m:
Elle sélectionne aléatoirement un entier k tel que pgcd k, p − 1 = 1. Elle
garde cet entier secret.
Ensuite, elle calcule successivement
r = αk mod p et s = k −1 ∙ m − ar (mod p − 1).
Le message signé est le triplet (m, r, s).
• Bob peut vérifier la signature de la façon suivante:
Il télécharge la clé publique d’Alice (p, α, β).
Il calcule
v1 = βr ∙ r s (mod p) et v2 = αm (mod p).
Il considère la signature valide si v1 = v2 (mod p).
Montrons que la procédure fonctionne adéquatement.
Puisque s = k −1 ∙ m − ar
mod p − 1 , on a que
s ∙ k = m − a ∙ r (mod p − 1)
de sorte que
m = s ∙ k + a ∙ r (mod p − 1).
Par conséquent, on trouve
v2 = αm = αsk+ar = αa
r
∙ αk
s
= βr ∙ r s = v1 (mod p).
• Point faible
Alice veut signer un second document. Elle doit absolument choisir une
autre valeur pour k.
Supposons qu’elle utilise le même k pour deux messages, disons m1 et m2 .
Ainsi Ève verra qu’Alice a utilisé deux fois le même k.
Les valeurs de s seront différentes, disons s1 et s2 . Ève sait que
s1 k − m1 = −ar = s2 k − m2
mod p − 1 .
Par conséquent,
(s1 − s2 )k = m1 − m2
mod p − 1 .
Posons d = pgcd(s1 − s2 , p − 1). Il y a d solutions à cette congruence et
elle peuvent être obtenues en utilisant l’algorithme d’Euclide étendu.
Normalement d est petit entraînant ainsi que le nombre de choix pour k le
sera aussi.
Ève calcule αk pour chaque valeur de k possible jusqu’à ce qu’elle obtienne
la valeur r. Maintenant qu’elle sait k, Ève résout maintenant
ar = m1 − ks1 mod p − 1 .
Il y a pgcd(𝑟, p − 1) solutions possibles. Ève calcule αa pour chacune
jusqu’à ce qu’elle obtienne β et, à ce moment, elle aura trouvé a.
Elle peut maintenant reproduire la signature d’Alice.
L’algorithme DSA
• Le NiST (1991 ) a proposé l’algorithme de signature digitale DSA.
Cet algorithme a été adopté en tant que standard en (1994 ) .
• On désire signer un message de 160 bits.
• La génération de clés pour le DSA s’effectue de la façon suivante.
Il y a d’abord une phase d’initialisation:
1.
Alice trouve un nombre premier q de 160bits et elle choisit un nombre
premier p tel que q | p  1 . Le problème du logarithme discret devrait
être difficile pour ce nombre premier p.
2.
Soit g une racine primitive modulo p et soit
Alors  q  1 (mod p).
3.
Alice choisit un entier secret a tel que
   a (mod p) .
  g ( p 1) / q
1  a  q 1
(mod p).
et elle calcule
4.
Alice publie ensuite ( p, q,  ,  ) et garde a secret.
Alice signe un message m en effectuant les étapes qui suivent:
1. Elle choisit aléatoirement un entier secret k tel que 0  k
 (α k (mod p)) (mod q)
 q 1 .
2.
Elle calcule ensuite r
3.
Elle calcule aussi
4.
La signature d’Alice du message m est (r,s) qu’elle envoie à Bob avec
m.
.
s  k 1 (m  ar) (mod q) .
Bob peut vérifier en procédant ainsi:
1. Il télécharge les informations publiques d’Alice p, q,  ,  .
2.
Il calcule
u1  s 1m (mod q) et u 2  s 1r (mod q) .
v  (α u1 β u 2 (mod p)) (mod q) .
3. Il calcule
4. Bob accepte la signature si et seulement si v=r.
Montrons que cette vérification fonctionne. Par la définition de s, on a
m  (ar  ks) (mod q).
Ce qui implique
s-1m  (ars -1  k) (mod q).
Par conséquent, on a
k  s 1m  ars 1 (mod q)  u1  au 2 (mod q).
De sorte que
α k  α u1 au 2  (α u1 β u 2 (mod p)) (mod q).
Téléchargement