Comme nous l'avons vu au chapitre 2, l'algorithme RSA
permet de réaliser un schéma de signature électronique. Nous avons
vu aussi que de nombreuses attaques sont apparues sur les
algorithmes de signature basés sur RSA. Ces attaques ne mettent
pas en cause l'algorithme RSA lui-même, mais plutôt son
utilisation incorrecte. On a vu que si on n'applique aucun
format particulier au message
, on était directement exposé
à une attaque par forge existentielle ou par
masquage.
Deux méthodes permettent couramment de se prémunir contre de telles attaques. La première consiste à hacher le message avant de le signer et la deuxième consiste à ajouter de la redondance au message. Ces deux méthodes peuvent se révéler également vulnérables. Ainsi, De Jonge et Chaum ont décrit dans [37] la première attaque sur un schéma de signature avec redondance. Desmedt et Odlyzko décrivent dans [38] une attaque contre le cryptosystème RSA qui peut s'appliquer au cas des signatures avec fonction de hachage. Les résultats de De Jonge et Chaum ont été étendus par Girault et Misarsky dans [50] au cas des redondances modulaires puis par Misarsky dans [66] au cas où les redondances sont séparées en plusieurs parties, en utilisant l'algorithme de réduction de réseau LLL [61]. Nous référons le lecteur à la thèse de Misarsky [68] qui décrit ces attaques en détail.
Dans ce chapitre, après avoir rappelé les différents modèles d'attaque contre un schéma de signature, on étudie les principales attaques connues s'appliquant spécifiquement aux signatures RSA. Nous montrons également qu'il est possible d'étendre l'attaque de Girault et Misarsky au cas de redondances de taille plus grande; cette attaque sera présentée à la conférence Crypto 2001 [16].
Comme dans le cas du chiffrement, le modèle d'attaque dépend à la fois de l'objectif de l'attaquant et des ressources dont il dispose.
Lorsque l'objectif de l'attaquant est de forger la signature d'un message, sans pouvoir nécessairement le choisir à l'avance, on parle de forge existentielle. C'est le niveau de succès le plus faible. Lorsque l'attaquant veut forger la signature d'un message choisi à l'avance, il s'agit d'une forge sélective. Lorsque l'attaquant veut de plus être capable de signer n'importe quel message, on parlera de forge universelle. Enfin, le cassage total correspond au cas où l'attaquant retrouve la clef privée du signeur. C'est le niveau de succès le plus fort.
Les ressources les plus faibles de l'attaquant correspondent au cas où il ne connaît que la clef publique du signeur; on parle dans ce cas d'attaque à clé publique seule. Lors d'une attaque à signature connue, l'attaquant connaît la signature de certains messages choisis par le signeur. Enfin, lors d'une attaque à message choisi adaptative, l'attaquant peut obtenir la signature de messages de son choix. C'est l'attaque la plus puissante.
Le modèle de sécurité le plus fort correspond donc au cas où il est impossible pour un attaquant de réaliser une forge existentielle lors d'une attaque à message choisie adaptative. Autrement dit, l'attaquant ne peut pas produire lui-même une signature valide d'un message, même inintelligible, et ceci même après avoir obtenu la signature d'autres messages de son choix.
Il est possible d'adapter l'attaque de Desmedt et Odlyzko décrite dans le chapitre consacré à RSA au cas des schémas de signature avec redondance ou utilisant une fonction de hachage. Cette variante est décrite par Misarsky dans [67]. L'attaque s'applique au cas où le message à signer est relativement petit.
Soit
le message à signer et
la fonction de hachage ou
de redondance associée. On veut obtenir
sans
connaître la clef privée
.
1. On commence par factoriser l'entier
en produit de
petits premiers.
2. On obtient les racines
-èmes des petits facteurs premiers en
combinant les signatures de messages dont les facteurs premiers
sont aussi petits.
3. On obtient finalement la signature de
en multipliant les
racines
-èmes des petits facteurs premiers.
La complexité de l'attaque dépend de la taille de
, et pas de la taille du module
. L'attaque ne
s'applique que dans le cas où l'entier
est de petite
taille, car dans le cas contraire, la probabilité qu'il se
décompose en produit de petits facteurs premiers est trop faible.
On évite cette attaque en choisissant
de la taille du
module
.
Une fonction de redondance
est une fonction inversible
prenant en entrée un message
et renvoyant en sortie une chaîne
de bits, telle qu'il est facile de calculer
. On définit
la taille de la redondance comme la taille en bits de
moins
la taille du message
.
Pour signer un message
, on calcule:
Dans la suite de ce chapitre, on considère plus particulièrement les signatures RSA avec redondance fixée. Pour signer un
message
, le signeur concatène à
un block fixé
:
Plus généralement, on considère les signatures RSA à redondance affine, donnée par:
L'attaque de De Jonge et Chaum [37] s'applique lorsqu'une fonction de redondance affine est utilisée:
Si la redondance additive
est nulle, alors l'attaque
s'applique quelle que soit la valeur de
, à condition que la
taille de la redondance soit inférieure à la moitié de la taille
du module
:
Si la redondance multiplicative est égale à
, alors l'attaque
s'applique quelle que soit la valeur de
, à condition que la
taille de la redondance soit inférieure au tiers de la taille du
module:
L'attaque précédente a été étendue par Girault et Misarsky [50], en utilisant un algorithme dû à Okamoto et Shiraishi [70], qui est une extension de l'algorithme d'Euclide. L'attaque de Girault et Misarsky améliore l'efficacité de l'attaque de De Jonge et Chaum sur une fonction de redondance affine. De plus, l'attaque s'applique aussi lorsqu'une redondance modulaire est utilisée:
Lorsque
est une fonction affine de
, c'est à dire lorsque
, l'attaque s'applique quels que soient
et
,
à condition que la taille de la redondance soit inférieure à la
moitié de la taille du module
:
Dans le cas général, pour une fonction
donnée par
(5.2), l'attaque s'applique à condition que la taille de la
redondance soit inférieure à la moitié de la taille du module
moins la taille de la redondance modulaire:
redondance modulaire
L'attaque de Misarsky [66] étend l'attaque
précédente au cas où le message
et la redondance modulaire
sont séparés en plusieurs parties, qui n'ont pas nécessairement
la même taille:
Dans ce paragraphe, on étend l'attaque de Girault et Misarsky contre les signatures RSA à redondance affine,
Une attaque multiplicative est une attaque dans laquelle la fonction de redondance d'un message peut s'exprimer comme
combinaison multiplicative des fonctions de redondance d'autres messages. Par exemple, l'attaque de Girault et Misarsky
permet de trouver trois messages
,
et
tels que:
Dans notre attaque, on cherche quatre messages distincts
,
,
et
, tous de taille
inférieure à un tiers de la taille du module
, tels que
D'abord, on obtient deux entiers strictement positifs
et
tels que:
Ensuite on sélectionne un entier
tel que
et
PGCD
.
On calcule ensuite l'entier positif
tel que:
On a donc réalisé une attaque à message choisi: l'attaquant demande la signature des messages
,
et
,
pour être ensuite capable d'exhiber la signature de
, qui n'a jamais été signé par le signeur légitime.
La complexité de notre attaque est polynomiale en la taille du module
.
Dans ce paragraphe, on donne un exemple de signature forgée en utilisant un module de
bits proposé
par les laboratoires RSA, dont la factorisation est encore inconnue. On prend
et
.
|
|
RSA-309 | ||||||||
| |
bdd14965 | 645e9e42 | e7f658c6 | fc3e4c73 | c69dc246 | 451c714e | b182305b | 0fd6ed47 | |
| d84bc9a6 | 10172fb5 | 6dae2f89 | fa40e7c9 | 521ec3f9 | 7ea12ff7 | c3248181 | ceba33b5 | ||
| 5212378b | 579ae662 | 7bcc0821 | 30955234 | e5b26a3e | 425bc125 | 4326173d | 5f4e25a6 | ||
| d2e172fe | 62d81ced | 2c9f362b | 982f3065 | 0881ce46 | b7d52f14 | 885eecf9 | 03076ca5 | ||
|
|
7fffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | |
| ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ||
| ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | 00415df4 | ca4219b6 | ea5fa8e4 | ||
| e2eabcfc | 61348b80 | e7ccbac7 | 3d1f5cc7 | 249e1519 | 9412886a | f76220c6 | d1409cd6 | ||
|
|
7fffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | |
| ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ||
| ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | 00127f44 | f753253a | a0348be7 | ||
| 826e893f | 693032db | c2194dbb | 3b81e1c2 | 630b66d3 | 1448a3f4 | 7fd2d34f | b28aefd6 | ||
|
|
7fffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | |
| ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ||
| ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | 00781bd4 | e0c918a7 | 308fcff7 | ||
| 8f64044c | a35b4937 | 36cd37d7 | 93f281b5 | fdd0a951 | 52a0479b | 57dd73b2 | 25b6df85 | ||
|
|
7fffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | |
| ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | ||
| ffffffff | ffffffff | ffffffff | ffffffff | ffffffff | 000919fd | 86e5afce | 7fc11c94 | ||
| 0e0827c8 | 03be05bb | 71f8de48 | c61d6d5f | 0feb036d | a1ff2f8b | 5f596108 | 3d142538 | ||
On vérifie que
Nous avons rappelé les principales attaques connues sur les signatures RSA, et nous avons montré comment étendre l'attaque de Girault et Misarsky sur les signatures RSA à redondance affine: nous avons décrit une attaque à message choisi pour des tailles de redondance allant jusqu'aux deux-tiers de la taille du module. Un problème intéressant consiste à essayer d'étendre cette attaque à des tailles de redondance encore plus grande, par exemple pour une redondance de taille les trois-quarts de la taille du module.
Parmi les attaques que nous avons rappelées, la plus puissante est sans doute l'attaque
de Desmedt-Odlyzko, puisqu'elle ne suppose rien sur la fonction de redondance utilisée. La seule contrainte est que la taille de la fonction
soit suffisamment petite, bien inférieure à la taille de
, pour que
puisse se décomposer en produit de petits facteurs premiers avec forte
probabilité. Nous verrons dans le prochain chapitre comment étendre l'attaque de Desmedt-Odlyzko à certains schémas de signature
RSA pour lesquels la fonction
est de la taille de
.
Jean-Sebastien Coron