Table des matières
Principe de l’attaque
L’implémentation RSA utilise un algorithme Square-and-Multiply Always. Chaque itération calcule un produit intermédiaire, utilisé uniquement si le bit courant de l’exposant privé vaut 1.
Le modèle de faute remplace la valeur écrite dans un registre par une valeur aléatoire lorsque l’instruction est fautée.
Observation clé
Les fautes sont injectées à l’instruction :
MUL R4, R2, R6- une fois par itération de boucle
Ainsi :
- si le bit de l’exposant vaut 0 → le produit fauté n’est pas utilisé → signature valide
- si le bit vaut 1 → le produit fauté est utilisé → signature invalide
On peut donc reconstruire l’exposant privé bit par bit à partir du log.
Exploitation
À partir du fichier mille-fautes.txt :
verify == False→ bit = 1verify == True→ bit = 0
Les bits sont lus du MSB au LSB.
Résultat
Exposant privé :
105242162543788743337252980031094540410286920689651093978118453037560701236944536116502819554965696785102170204949088553998761871348511118790932114247603701322088137236444818782787447039245943523349114909236634220118498903093045370684591251550088750568851495851919215974128144936137495423947422756508385773521