État de l`art des attaques en faute sur AES

Transcription

État de l`art des attaques en faute sur AES
État de l’art des attaques en faute
sur AES
Pascal Manet
Laboratoire SESAM
Équipe mixte CEA-LETI/ENSMSE
Crypto’Puces 17 avril 2007
-
P. Manet
-
1
Présentation de l’AES
FIPS 197
Algorithme Rijndael restreint à des mots de 128 bits
3 tailles de clé 128, 192 et 256 bits
Substitution-Permutation Network
Représentation des données par une matrice 4x4 d’octets
Plusieurs rondes
SubBytes
ShiftRows
MixColumns
AddRoundKey
Key Schedule
Crypto’Puces 17 avril 2007
-
P. Manet
-
2
Présentation de l’AES
SubBytes
Crypto’Puces 17 avril 2007
-
P. Manet
-
3
Présentation de l’AES
ShiftRows
MixColumns
Crypto’Puces 17 avril 2007
-
P. Manet
-
4
Présentation de l’AES
KeySchedule
Opérations sur la dernière colonne
Ajout de chaque colonne de la ronde précédente pour le calcul de
la nouvelle clé de ronde
Crypto’Puces 17 avril 2007
-
P. Manet
-
5
Les familles d’attaques publiées
Differential Fault Analysis (DFA)
Utilisations des propriétés des SBoxes
Sur le Key Schedule
Utilisation des propriétés du MixColumns
Analyse comportementale
Safe-error
Differential Behavioral Analysis
Utilisation des collisions
Attaque sur les machines d’état
Crypto’Puces 17 avril 2007
-
P. Manet
-
6
Les familles d’attaques publiées
Differential Fault Analysis (DFA)
Utilisations des propriétés des SBoxes
Sur le Key Schedule
Utilisation des propriétés du MixColumns
Analyse comportementale
Safe-error
Differential Behavioral Analysis
Utilisation des collisions
Attaque sur les machines d’état
Crypto’Puces 17 avril 2007
-
P. Manet
-
7
DFA grâce aux propriétés des SBoxes (Giraud)
Faute :
Attaque 1 bit sur un octet avant le dernier SubBytes
Un octet faux en sortie
Attaque :
Deux exécutions (normale et fautée), avec le même clair non connu
Différence des chiffrés => un seul octet diffère
Position de la faute => octet de clé sur lequel l’attaque a eu lieu
(InvShiftRows)
Hypothèses sur le bit faux (8 possibilités)
C = SB( X ) ⊕ K10
D = SB( X ⊕ e) ⊕ K10
∆ = SB( X ) ⊕ SB( X ⊕ e)
Contre-mesure : un bit de parité suffit
Crypto’Puces 17 avril 2007
-
P. Manet
-
8
Les familles d’attaques publiées
Differential Fault Analysis (DFA)
Utilisations des propriétés des SBoxes
Sur le Key Schedule
Utilisation des propriétés du MixColumns
Analyse comportementale
Safe-error
Differential Behavioral Analysis
Utilisation des collisions
Attaque sur les machines d’état
Crypto’Puces 17 avril 2007
-
P. Manet
-
9
DFA au niveau du Key Schedule (Giraud 1/3)
3 fautes sont nécessaires :
Une faute au début du calcul de la dernière clé de ronde
Une faute au début du calcul de l’avant-dernière clé de ronde
Une faute au début de l’avant-dernière ronde
Attaque sur K9 :
Deux exécutions (normale et fautée), avec le même clair non connu
Différence des chiffrés => 5 fautes dont 4 sur une même ligne.
X
X
Y
Résoudre
Y
Y
Y
Y = SB ( K 9 ) ⊕ SB ( K 9 ⊕ X )
4 octets de la dernière colonne de K9
Crypto’Puces 17 avril 2007
-
P. Manet
-
10
DFA au niveau du Key Schedule (Giraud 2/3)
Attaque sur K8 :
Deux exécutions (normale et fautée), avec le même clair non connu
Différence des chiffrés => 9 ou 10 fautes
Y
Y
Y
Y
A
B
X
X
E
E
C
D
Z
X
E
E
Y résulte du passage de l’octet de K8⊕X dans une SBox
résolution de l’équation si Y connu
E résulte du passage de l’octet de K9⊕Y dans une SBox
E et K9 sont connus => calcul de Y
4 octets de la dernière colonne de K8
4 octets de l’avant-dernière de K9
Note : le calcul est complexe pour une faute en position 12 !
Crypto’Puces 17 avril 2007
-
P. Manet
-
11
DFA au niveau du Key Schedule (Giraud 3/3)
Attaque sur M8 :
Deux exécutions (normale et fautée), avec le même clair non connu
A
E
B
X
F
C
D
G
H
Entrée des dernières SBoxes = M8 passé dans les 3 opérations avec la
clé de tour K9
Deux dernières colonnes de K9 connues
=> trouver un ensemble de 4 octets M qui vérifie :
SB ( MC ( M ) ⊕ K 9d ) ⊕ SB ( MC ( M ⊕ e ) ⊕ K 9d ) = ∆ SR( d )
M = résultat temporaire avant le MixColumns de la ronde 9
K10 aux positions 2, 3, 5, 6, 8, 9, 12, 15
Grâce à K9, seuls les valeurs aux positions 0 et 1 de K10 sont inconnues
Crypto’Puces 17 avril 2007
-
P. Manet
-
12
DFA au niveau du Key Schedule (Chen et Yen)
Fautes :
Deux premières étapes identiques
2ème attaque sur K8 sur l’avant-dernière colonne
Attaque :
Un octet sur l’avant dernière colonne de K8
X
X
X
X
K
Y
X
Y
Y
Y
A B
X
C D
M
Y
Valeurs avant les SBox de la ronde 10 => K10
13 octets de K10
Crypto’Puces 17 avril 2007
-
P. Manet
-
13
Y
Y
Y
Contre-mesures pour le KeySchedule
Pas de KeySchedule
Les 11 clés de ronde sont stockées dans le circuit
Un seul calcul
Calcul effectué une fois pour toutes
Calcul de Parité
Ajout d’un système de calcul de parité en combinant les parties
linéaires et non linéaires du KeySchedule
détection de la faute
Crypto’Puces 17 avril 2007
-
P. Manet
-
14
Les familles d’attaques publiées
Differential Fault Analysis (DFA)
Utilisations des propriétés des SBoxes
Sur le Key Schedule
Utilisation des propriétés du MixColumns
Analyse comportementale
Safe-error
Differential Behavioral Analysis
Utilisation des collisions
Attaque sur les machines d’état
Crypto’Puces 17 avril 2007
-
P. Manet
-
15
Propriétés du MixColumns (1 octet 1/3)
Faute
Attaque sur un octet avant le dernier MixColumns
4 octets sont faux en sortie
Attaque
Comparaison des chiffrés correct et faux => 4 différences
Création d’un ensemble de fautes possibles en entrée tel que la sortie
donne ces différences
Calcul de la liste grâce au MixColumns
valeurs possibles pour 4 octets de K10
Par itération sur les fautes, réduction de l’espace des possibles sur
cette clé partielle
Crypto’Puces 17 avril 2007
-
P. Manet
-
16
Propriétés du MixColumns (1 octet 2/3)
Liste
Ensemble des fautes pouvant se produire sur une colonne
4x255 = 1020 fautes possibles
MixColumns => combinaisons de fautes possibles avant l’ajout de la
9ème clé de ronde
Erreur => combinaisons valables aussi avant le dernier SubBytes
Hypothèses
Hypothèse de clé sur 4 octets
Calcul des valeurs avant l’ajout de cette clé pour les chiffrés corrects
et faux
Calcul des valeurs correspondantes en entrée du dernier SubBytes
Vérification de la présence dans la liste
Crypto’Puces 17 avril 2007
-
P. Manet
-
17
Propriétés du MixColumns (1 octet 3/3)
Nombre de fautes
Deux couples (chiffrés correct et faux) => au pire 16 clés possible,
dans la plupart des cas une seule
Mise en œuvre de l’hypothèse
2 octets sur les 4 pour démarrer
Ajout des deux octets successivement sur les listes résiduelles
Amélioration
Attaque sur la ronde précédente
Couche de diffusion => une faute dans chaque colonne
Attaque des 4 colonnes en parallèle.
Crypto’Puces 17 avril 2007
-
P. Manet
-
18
Propriétés du MixColumns (1 à 4 octets)
Problème à résoudre
Touver I et e’ tels que
 I1 
 I1 ⊕ e '1 
 


I2 
I 2 ⊕ e '2 


SB
⊕ SB
= ∆ out
 I3 
 I 3 ⊕ e '3 
 


 I4 
 I 4 ⊕ e '4 
2 modèles de fautes dont dérive e’ via la MixColumns
e’ vient de 4 octets tous fautés
e’ vient de 4 octets dont au moins un n’est pas fauté
Crypto’Puces 17 avril 2007
-
P. Manet
-
19
Propriétés du MixColumns (1 à 4 octets)
Modèle de faute 1
Avant le dernier MixColumns, 1 à 3 octets fautés
66 millions de fautes donc de clés possibles
6 exécutions fautés => 4 octets de K10
Modèle de faute 2
Avant le dernier MixColumns, 4 octets fautés
4 milliards de fautes donc de clés possibles
1500 exécutions fautés => 4 octets de K10
Problème : comment savoir quel modèle est le bon
Crypto’Puces 17 avril 2007
-
P. Manet
-
20
Contre-mesures potentielles
Faible coût Silicium
Utilisation de bits de parités
Détection imparfaite
Coût proche de la duplication
Déchiffrement à la volée
Prédiction non-linéaire
Surcoût très important
Redondance triple
Double-rail (asynchrone)
Crypto’Puces 17 avril 2007
-
P. Manet
-
21
Les familles d’attaques publiées
Differential Fault Analysis (DFA)
Utilisations des propriétés des SBoxes
Sur le Key Schedule
Utilisation des propriétés du MixColumns
Analyse comportementale
Safe-error
Differential Behavioral Analysis
Utilisation des collisions
Attaque sur les machines d’état
Crypto’Puces 17 avril 2007
-
P. Manet
-
22
Safe Error
Principe
Information utile : « mon attaque a-t-elle modifié le comportement du
circuit » (Yen et Joye en 2000 sur RSA)
Attaque bit
Texte clair à ‘0’
Collage d’un bit à ‘0’ après le AddRoundKey
Si pas de différence avec une exécution normale, le bit de clé vaut ‘0’
Si différence, le bit vaut ‘1’
Prise en compte des probabilités d’injection
Attaque sur la multiplication
Attaque sur le calcul ou le non calcul du xtimes() dans le MixColumns
Crypto’Puces 17 avril 2007
-
P. Manet
-
23
Les familles d’attaques publiées
Differential Fault Analysis (DFA)
Utilisations des propriétés des SBoxes
Sur le Key Schedule
Utilisation des propriétés du MixColumns
Analyse comportementale
Safe-error
Differential Behavioral Analysis
Utilisation des collisions
Attaque sur les machines d’état
Crypto’Puces 17 avril 2007
-
P. Manet
-
24
Differential Behavioral Analysis (1/2)
Principe
Généralisation du safe-error avec des moyens statistiques
empruntés à la DPA
Faute
Collage à une valeur inconnue d’un bit
Attaque après le premier ou avant le dernier SubBytes
Attaque sur la première ronde
Plusieurs clairs connus
Toujours la même attaque toujours au même endroit
Analyse de la corrélation du comportement (mauvais résultat,
arrêt du circuit…)
Marche même si la répétitivité n’est pas parfaite
Crypto’Puces 17 avril 2007
-
P. Manet
-
25
Differential Behavioral Analysis (2/2)
Profite des contre-mesures
L’arrêt du calcul est une information exploitable
Met en défaut le double-rail asynchrone sous certaines
conditions
Collage permanent
Collage à 0 d’un fil
S … 00
01
00
S … 00
01
00
S … 00
10
00
10
Arrêt lors du
second transfert
10
S … 00
Crypto’Puces 17 avril 2007
Arrêt lors du
premier transfert
-
P. Manet
-
26
Les familles d’attaques publiées
Differential Fault Analysis (DFA)
Utilisations des propriétés des SBoxes
Sur le Key Schedule
Utilisation des propriétés du MixColumns
Analyse comportementale
Safe-error
Differential Behavioral Analysis
Utilisation des collisions
Attaque sur les machines d’état
Crypto’Puces 17 avril 2007
-
P. Manet
-
27
Fault Based Collision Attack (1/2)
Principe
Utilisation des informations de collision consécutives à une faute
Requis
Inversion d’un bit connu en sortie du 1er SubBytes
Information permettant de repérer des collisions (consommation,
EM, temps…)
Précalcul
Créer des ensembles de deux valeurs d’octets tels que
• la différences de ces octets vaille y
• la différence de ces valeurs après passage dans une SBox soit
le bit attaqué.
{ s , t}
s ⊕ t = y SB ( s ) ⊕ SB ( t ) = 2e
y connu => au pire 4 couples {s,t}
Crypto’Puces 17 avril 2007
-
P. Manet
-
28
Fault Based Collision Attack (2/2)
Réalisation
Chiffrement de l’ensemble des valeurs possibles pour l’octet visé
mémorisation de l’information utilisable pour repérer les collisions.
Chiffrement avec injection de faute
Information de collision => valeur non fautée donnant cette
information
Récupération de l’octet de clé
2 clairs p et q telles qu’après la SBox un seul bit diffère
p ⊕ k ⊕ q ⊕ k = p ⊕ q => y
Déduction des couples s et t
s = p⊕k
Variantes si les SBoxes sont protégées
Crypto’Puces 17 avril 2007
-
P. Manet
-
29
Les familles d’attaques publiées
Differential Fault Analysis (DFA)
Utilisations des propriétés des SBoxes
Sur le Key Schedule
Utilisation des propriétés du MixColumns
Analyse comportementale
Safe-error
Differential Behavioral Analysis
Utilisation des collisions
Attaque sur les machines d’état
Crypto’Puces 17 avril 2007
-
P. Manet
-
30
Attaque sur les machines d’état
Principe
Passage dans un état hors transition normale (Pin OK alors qu’il
est faux)
Faute sur les étapes et pas sur les données
Réduction du nombre de rondes
AES non sûr avec un nombre de rondes réduites
(Attaques Square, Boomerang, Différentiels impossibles)
Résultat du 1er AddRoundKey => texte clair ⊕ clé
Crypto’Puces 17 avril 2007
-
P. Manet
-
31
Conclusion
DFA
Attaques diverses
Difficulté de mise en œuvre
En pratique, on risque souvent de toucher plusieurs octets
Comportement
Contournement des contre-mesures existantes
Très difficiles à mettre en œuvre
Collisions
Difficulté à repérer les collisions en pratique
Machine d’état
Probablement difficile à réaliser en pratique mais à prendre en
compte absolument
Crypto’Puces 17 avril 2007
-
P. Manet
-
32
Ce travail a été en partie financé par le Fonds Social Européen
(FSE) et la Direction Générale des Entreprises (DGE)
Crypto’Puces 17 avril 2007
-
P. Manet
-
33