90 lines
3.7 KiB
Markdown
90 lines
3.7 KiB
Markdown
# Cours A1
|
|
|
|
## Cours/TP 12/10
|
|
|
|
Injection de fautes, exploiter les failles.
|
|
Mecanismes cryptographiques, algo mathematiquement robustes. Quand on veut les implémenter, ils peuvent êtres soumis à différentes attaques.
|
|
|
|
Attaque par injection de code. (Injecter des données, qui peuvent correspondre à du code donné, exploitation de bug dans le code logiciel)
|
|
Attaque par canaux auxiliaires. (temps d'execution, consommation elec, connexion)
|
|
|
|
Raison d'optimisation (multiplication), multiplier par 0 -> pas de calcul, temps de calcul très long donc si secret = 0, temps de calcul court.
|
|
Attaque physique. (Ouvrir le circuit, sonder (microprobing) entre la mémoire et le processeur, FIB ?)
|
|
|
|
Certaines attaques nécessitent le composant physique, d'autres à distances (marron et bleu p4)
|
|
Tirs lasers pour modifier la mémoire, injecter des fautes.
|
|
|
|
|
|
p9. nécessite une précision en cycle processeur très grande. Il faut cibler une ou quelques cycles.
|
|
p10. Algo plus connus/utilisé.
|
|
|
|
Evaluation : QCM sur toutes les parties. (qu'est-ce qu'une attaque etc... Contres mesures et classification) Dans quel cas on utilise certaines contre mesure et dans cette attaque là quelle contre mesure utiliser ?
|
|
|
|
p12. CRC pour protéger les CSP (critical security parameters) pour éviter de changer les p,q qui sont premiers.
|
|
|
|
p14. On faute l'exposant d_i de proche en proche pour obtenir les m_i
|
|
p15. Contre mesure = rajouter un produit avec un nombre aléatoire (Stratégie Résilience)
|
|
|
|
Vérification de valeur -> Stratégie détection
|
|
|
|
p19. On déplace l'instant d'exécution de l'instruction sensible -> Observation de la consommation électrique
|
|
On peut rajouter des capteurs (lumière pour l'ouverture de la puce, f_clk pour le downclocking pour observer les signaux)
|
|
|
|
### TD
|
|
|
|
Q1 Donner l'équation de R_16 en fonction de R_15 et L_15
|
|
R_16 = L_15 ^ f(R_15,K_16) #f(.,.) p40
|
|
f(R_15,K_16) = P(S_1-8(E(R_15) ^ K_16))
|
|
|
|
Q2 Entrée R_15 fautée : R_15'
|
|
R_16' = L_15' ^ P(S_1-8(E(R_15') ^ K_16))
|
|
|
|
Q3 Delta(R_16) = R_16 ^ R_16'
|
|
= Delta(L_15) ^ P(a) ^ P(b)
|
|
= Delta(L_15) ^ P(S_1-8(E(R_15) ^ K_16) ^ S_1-8(E(R_15') ^ K_16))
|
|
|
|
Q4
|
|
Connues : R_16, R_15 = L_16 et R_15' = L_16'
|
|
Inconnues : Delta(L_15) et K_16
|
|
|
|
On veut Delta(L_15) = 0 donc ne pas toucher L_15 lors de la faute.
|
|
|
|
Q5
|
|
P⁻¹(Delta(R_16)) = S_1-8(E(R_15) ^ K_16) ^ S_1-8(E(R_15') ^ K_16)
|
|
|
|
On teste les clés K_16 pour avoir égalité des deux côtés, si elle c'est vérifié, la clé est une candidate.
|
|
|
|
Défi 4 :
|
|
|
|
Q1
|
|
P⁻¹_1(Delta(R_16)) = S_1(E(R_15) ^ K_16,1) ^ S_1(E(R_15') ^ K_16,1)
|
|
|
|
|
|
## 19/10 Side-Channel Analysis
|
|
|
|
p9: ce qu'on attaque, c'est pas l'algo, c'est l'implémentation de celui-ci.
|
|
|
|
p10: 10000 essais en force brute, 40 avec canal auxiliaire en regardant le temps d'exécution et sa variation pour chaque digit.
|
|
|
|
p15: le pic de courant indique le nombre de portes logiques qui ont changé d'état
|
|
|
|
p58: Si on a pas de connaissances à priori sur le système, on regarde une fenetre temporelle élevée pour déterminer la trace. On réduit la fenêtre quand on cible l'attaque.
|
|
|
|
## Reverse Engineering 02/11
|
|
|
|
x = f o g o h. On donne toute la fonction x mais on ne retrouve pas le secret g.
|
|
|
|
Regarder les mesures de protection contre les attaques DES. Balance-logic pour le calcul inversé.
|
|
|
|
Split des variables : on sépare en plusieurs une variable de plusieurs octets en plusieurs variable de 1 octet.
|
|
Inversement pour plusieurs petites variables.
|
|
|
|
Remplacer une une instruction par un équivalent moins évident (exemple addition A + B + C -> fonction de xor & et |)
|
|
|
|
Garbage code : rajouter du code de bruit pour perdre l'attaquant.
|
|
|
|
Code mort : condition toujours vraie pour executer le reste du code.
|
|
|
|
Code flattening : remplacer des if par des switch.
|
|
|
|
Code tiles loops : Remplacer des boucles 1D par des boucles à plusieurs dimensions.
|