M2_SETI/A1/Cours.md

72 lines
3 KiB
Markdown
Raw Normal View History

2022-10-19 09:12:47 +02:00
# Cours A1
2022-10-30 14:21:09 +01:00
## 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)
2022-10-19 09:12:47 +02:00
## 19/10 Side-Channel Analysis
2022-10-30 14:21:09 +01:00
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
2022-10-19 09:12:47 +02:00
2022-10-30 14:21:09 +01:00
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.