🔐 SĂ©curitĂ© MatĂ©rielle - Semestre 7

Année académique : 2023-2024
ECTS : 2
Catégorie : Sécurité et SystÚmes Embarqués


PART A - Présentation Générale du Module

Vue d'ensemble

Ce cours aborde la sĂ©curitĂ© matĂ©rielle, un domaine essentiel Ă  l’ùre des objets connectĂ©s et des systĂšmes embarquĂ©s. Il couvre les vulnĂ©rabilitĂ©s physiques des systĂšmes Ă©lectroniques, les attaques par canaux auxiliaires, les mĂ©canismes de protection, et les techniques de conception sĂ©curisĂ©e pour prĂ©venir l’extraction d’informations sensibles.

Objectifs pédagogiques :

Position dans le cursus

Ce module complÚte la formation en sécurité :

Il prépare à :


PART B - ExpĂ©rience Personnelle et Contexte d’Apprentissage

Organisation et ressources

Le module était organisé en cours magistraux et travaux pratiques intensifs :

Cours magistraux (12h) :

Travaux pratiques (12h) :

Ressources :

Méthodologie d'étude

Phase 1 : Assimiler les concepts théoriques : Comprendre les principes des attaques (canaux auxiliaires, injection de fautes, overflow).

Phase 2 : Manipuler en TP : Réaliser les attaques concrÚtes pour comprendre leur fonctionnement et leur puissance.

Phase 3 : Analyser le code : Étudier le code vulnĂ©rable (AES, programmes C) pour identifier les failles.

Phase 4 : Concevoir des contre-mesures : Réfléchir aux protections possibles et à leurs limites.

Phase 5 : DĂ©velopper une vision critique : Évaluer la sĂ©curitĂ© globale d’un systĂšme en considĂ©rant tous les vecteurs d’attaque.

Difficultés rencontrées

Attaque par buffer overflow

Figure : Principe d'une attaque par buffer overflow - Écrasement de l'adresse de retour

Complexité des attaques : Les attaques par canaux auxiliaires nécessitent des connaissances en électronique, traitement du signal, et statistiques.

Environnement technique : Manipuler des outils spécialisés (ChipWhisperer, oscilloscopes) et du code assembleur requiert de la pratique.

Équilibre sĂ©curitĂ©/performance : Concevoir des contre-mesures efficaces sans dĂ©grader les performances est un dĂ©fi constant.

Diversité des vulnérabilités : La sécurité matérielle couvre un spectre large : du cache au dépassement de tampon, chaque domaine a ses spécificités.


PART C - Aspects Techniques Détaillés

1. Attaques par canaux auxiliaires

Principe général :

Les attaques par canaux auxiliaires exploitent les fuites d’information physiques lors de l’exĂ©cution d’algorithmes :

MĂȘme si l’algorithme est mathĂ©matiquement sĂ»r, son implĂ©mentation peut rĂ©vĂ©ler des secrets.

Attaques temporelles (Timing Attacks) :

Exploitent les variations du temps d’exĂ©cution.

Exemple classique : Cache timing sur AES :

AES utilise des tables de substitution (S-box). L’accĂšs Ă  ces tables dĂ©pend de la clĂ© et du message.

Si une partie de la table est en cache (accÚs rapide) et une autre non (accÚs lent), on peut déduire quelle partie a été accédée en mesurant le temps.

Attaque :

  1. Mesurer le temps d’exĂ©cution pour diffĂ©rents messages
  2. Analyser les variations temporelles
  3. Déduire quelle partie de la S-box a été accédée
  4. Récupérer progressivement les octets de la clé

Contre-mesures :

Attaques par analyse de cache :

Le cache CPU peut révéler des informations sensibles.

Technique Prime+Probe :

  1. Attaquant remplit le cache avec ses propres données (Prime)
  2. Victime exécute opération cryptographique
  3. Attaquant mesure quelles lignes de cache ont été évincées (Probe)
  4. En déduire les accÚs mémoire de la victime

TP rĂ©alisĂ© : DĂ©tection d’ouverture de fichier :

Programme spy.c :

Application : espionnage d’activitĂ© sans accĂšs systĂšme.

Attaques par analyse de la consommation (Power Analysis) :

Simple Power Analysis (SPA) :

Observation directe de la trace de consommation.

Chaque instruction consomme différemment : multiplication, addition, lecture mémoire ont des signatures distinctes.

Exemple : Exponentiation modulaire en RSA :

Differential Power Analysis (DPA) :

Analyse statistique sur de nombreuses traces.

Principe :

  1. Capturer N traces de consommation pour N messages différents
  2. Faire des hypothÚses sur une partie de la clé
  3. Prédire la consommation pour chaque hypothÚse
  4. Corréler prédictions avec traces réelles
  5. L’hypothĂšse correcte donne la meilleure corrĂ©lation

Correlation Power Analysis (CPA) :

Variante améliorée utilisant le coefficient de corrélation de Pearson.

Permet d’attaquer des implĂ©mentations plus rĂ©sistantes.

TP réalisé : Analyse de consommation sur STM32 :

Programme main.c (TP1) :

2. Attaques par injection de fautes

Principe :

Provoquer volontairement des erreurs lors de l’exĂ©cution pour obtenir des informations ou contourner des protections.

Techniques d’injection :

Technique Description Effet
Clock glitching Impulsions sur horloge Instructions sautées
Voltage glitching Variation tension alimentation Erreurs calcul
Laser Faisceau laser focalisé Modification bit mémoire
Température Chauffage/refroidissement Instabilités
EM Impulsion électromagnétique Perturbation circuits

Exemple : Attaque sur authentification :

Code vulnérable :

if (password == correct_password) {
    grant_access();
} else {
    deny_access();
}

Injection de faute au moment du test :

Contre-mesures :

3. Vulnérabilités logicielles : Buffer Overflow

Principe :

DĂ©passement de tampon : Ă©crire au-delĂ  de la taille allouĂ©e d’un buffer, Ă©crasant des donnĂ©es adjacentes (adresse de retour, variables).

Mécanisme sur la pile (stack) :

Organisation de la pile lors d’un appel de fonction :

[paramĂštres]
[adresse de retour]
[ancien ebp]
[variables locales]
[buffer]

Si on Ă©crit trop dans buffer, on Ă©crase les variables, ebp, et l’adresse de retour.

Exploitation :

  1. Remplir le buffer avec du code malveillant (shellcode)
  2. Écraser l’adresse de retour pour pointer vers le shellcode
  3. Quand la fonction retourne, le shellcode s’exĂ©cute

TP réalisé : Exploitation de buffer overflow :

Part 1 : Organisation mémoire : Analyse de la pile avec GDB, calcul des offsets.

Part 2 : Exploitation simple : Programme vulnérable avec strcpy sans vérification de taille. Injection pour modifier une variable ou sauter une vérification.

Part 3 : Injection de shellcode :

shellcode.c :

void shellcode() {
  asm(
    "mov $0x3b, %rax"    // syscall execve
    "mov $0x0, %rdx"
    "movabs $0x0068732f6e69622f, %r8"  // "/bin/sh"
    "push %r8"
    "mov %rsp, %rdi"     // adresse de "/bin/sh"
    "syscall"            // execve("/bin/sh", ...)
  );
}

Objectif : injecter ce code et rediriger l’exĂ©cution pour ouvrir un shell.

Part 4 & 5 : Exploitation complĂšte :

Contre-mesures modernes :

Contre-mesure Description
Stack canaries Valeur sentinelle avant adresse retour, vérifiée
ASLR (Address Space Layout Randomization) Adresses mémoire aléatoires
DEP/NX (Data Execution Prevention) Mémoire non exécutable (pile, tas)
RELRO (Relocation Read-Only) Sections mémoire en lecture seule
Compilation sécurisée Options -fstack-protector, -D_FORTIFY_SOURCE

4. Analyse de cache - Profiling

Hiérarchie mémoire :

CPU → Cache L1 (1-3 cycles) → Cache L2 (10-20 cycles) → Cache L3 (40-75 cycles) → RAM (100-300 cycles)

Le cache accĂ©lĂšre l’accĂšs aux donnĂ©es frĂ©quemment utilisĂ©es.

Mesure du temps d’accùs :

TP Cache Profiling (profiling.c) :

Résultats typiques :

Exploitation pour attaque :

Technique Flush+Reload :

  1. Flush une ligne de cache partagée avec la victime
  2. Victime exécute son code
  3. Attaquant mesure le temps de rechargement
  4. Si rapide : victime a accédé à cette ligne

Application : DĂ©tection d’ouverture de fichier (spy.c) :

5. Vulnérabilités cryptographiques - AES

AES (Advanced Encryption Standard) :

Algorithme de chiffrement par blocs, standard depuis 2001.

Structure :

VulnĂ©rabilitĂ©s d’implĂ©mentation :

Implémentation naïve : AccÚs tables dépendant de la clé

AES utilise des tables de substitution (S-box). L’implĂ©mentation classique stocke ces tables en mĂ©moire.

Lors de l’exĂ©cution :

state[i] = Sbox[state[i] XOR key[i]]

L’indice d’accĂšs dĂ©pend de la clĂ© : vulnĂ©rabilitĂ© aux attaques par cache.

TP : Comparaison OpenSSL versions

OpenSSL 0.9.7a (vulnérable) :

OpenSSL 1.1.1t (protégée) :

AES-NI :

Instructions processeur dédiées (Intel, AMD depuis 2010) :

Avantages :

6. Autres contre-mesures

Masquage (Masking) :

Technique contre les attaques DPA.

Principe : Randomiser les valeurs intermédiaires.

Au lieu de manipuler directement x, on manipule x XOR m (m aléatoire).

Les fuites de consommation portent sur x XOR m, qui est aléatoire.

Exemple :

x' = x XOR m
y' = f(x') = f(x XOR m)
y = y' XOR m' (oĂč m' dĂ©coule de m)

Inconvénients :

Hiding :

Réduire le rapport signal/bruit dans les traces de consommation.

Techniques :

Sécurité physique :

Capteurs :

MĂ©moire effaçable : En cas de dĂ©tection d’attaque, effacer les clĂ©s.

Encapsulation : Protéger les circuits sensibles dans des résines difficiles à retirer.

7. Outils et méthodologies

ChipWhisperer :

Plateforme open-source pour analyse de canaux auxiliaires.

Fonctionnalités :

GDB (GNU Debugger) :

Utilisé pour analyser les programmes vulnérables :

Commandes utiles :

info registers    # état des registres
x/32x $rsp       # examiner la pile
disassemble      # désassembler une fonction

Gnuplot :

Visualisation des distributions de temps d’accùs (cache hit/miss).

8. Domaines d'application

Cartes Ă  puce :

Cibles privilégiées : paiement, authentification, SIM. Menaces : clonage, extraction de clés. Protections : masquage, capteurs, hardware sécurisé.

SystÚmes embarqués critiques :

Automobile (CAN bus, ECU), aéronautique, médical. Risques : injection de fautes, reverse engineering.

IoT (Internet of Things) :

Objets connectés souvent peu protégés. Attaques possibles : extraction firmware, clonage, botnets.

Infrastructures cloud :

Attaques par cache entre machines virtuelles (VM). Risque de fuite d’informations entre locataires (tenants).


PART D - Analyse Réflexive et Perspectives

Compétences acquises

Compréhension des menaces matérielles : Capacité à identifier les vulnérabilités physiques et logicielles des systÚmes embarqués.

Maütrise des attaques par canaux auxiliaires : Aptitude à analyser les fuites d’information (timing, cache, puissance) et à exploiter ces failles.

Exploitation de vulnérabilités logicielles : Compétence en exploitation de buffer overflow, injection de shellcode, et compréhension des protections modernes.

Conception sécurisée : Développement de réflexes pour intégrer la sécurité dÚs la conception (secure by design).

Vision d’ensemble : CapacitĂ© Ă  Ă©valuer la sĂ©curitĂ© globale d’un systĂšme en considĂ©rant hardware, software, et attaques physiques.

Points clés à retenir

1. SĂ©curitĂ© ≠ Cryptographie seule : Un algorithme mathĂ©matiquement sĂ»r peut ĂȘtre vulnĂ©rable si son implĂ©mentation fuit des informations.

2. Les canaux auxiliaires sont réels : Timing, cache, consommation : ces attaques sont pratiques et ont compromis des systÚmes réels (cartes bancaires, DRM).

3. DĂ©fense en profondeur : Pas de solution miracle. Combiner plusieurs contre-mesures pour augmenter le coĂ»t de l’attaque.

4. Trade-off sécurité/performance : Les protections coûtent en performance, énergie, et complexité. Trouver le bon équilibre selon le contexte.

5. Évolution constante : Nouvelles attaques rĂ©guliĂšrement dĂ©couvertes (Spectre, Meltdown, Rowhammer). Veille technologique indispensable.

Retour d'expérience

Aspect révélateur : Ce cours a ouvert les yeux sur la fragilité des systÚmes face aux attaques physiques. Voir des attaques théoriques fonctionner en TP est impressionnant.

Difficulté de la sécurité : Concevoir un systÚme sûr est difficile. Il faut penser comme un attaquant pour identifier toutes les failles possibles.

Outils spécialisés : Manipuler ChipWhisperer, GDB, et analyser des traces demande de la pratique. Les TP ont permis de se familiariser avec ces outils professionnels.

Équilibre nĂ©cessaire : Les contre-mesures ajoutent de la complexitĂ©. Il faut Ă©valuer le niveau de menace et adapter la protection.

Applications pratiques

Pour ingénieur en sécurité :

Pour développeur embarqué :

Pour concepteur hardware :

Dans la vie courante :

Limites et ouvertures

Limites du module :

Ouvertures vers :

Évolutions rĂ©centes

Attaques Spectre et Meltdown (2018) :

Exploitation de l’exĂ©cution spĂ©culative des processeurs modernes.

Spectre : forcer un programme Ă  rĂ©vĂ©ler ses secrets via le cache. Meltdown : lire la mĂ©moire du noyau depuis l’espace utilisateur.

Impact : tous les processeurs Intel, AMD, ARM concernés.

Rowhammer (2014) :

Attaque sur mémoire DRAM : accÚs répétés à des lignes de mémoire peuvent induire des flips de bits sur lignes adjacentes.

Exploitation : élévation de privilÚges, évasion de machines virtuelles.

Attaques sur IA embarquée :

Les réseaux de neurones sont vulnérables :

Enjeu croissant avec l’IA embarquĂ©e (reconnaissance vocale, vision).

5G et IoT :

Explosion du nombre d’objets connectĂ©s. Surface d’attaque considĂ©rable. Besoin de sĂ©curitĂ© lĂ©gĂšre et efficace Ă©nergĂ©tiquement.

Conseils pour réussir

1. Comprendre avant d’exploiter : Bien maütriser le fonctionnement normal d’un systùme avant de chercher les failles.

2. Pratiquer les TP sérieusement : Les manipulations pratiques sont essentielles pour intégrer les concepts.

3. Lire le code : Analyser le code source (shellcode, AES) pour comprendre les vulnérabilités.

4. Penser en attaquant : Adopter la mentalitĂ© d’un attaquant : chercher le maillon faible, les hypothĂšses implicites.

5. Se documenter : Lire des articles académiques, des rapports de vulnérabilités (CVE), des blogs de sécurité.

6. Respecter l’éthique : Ne jamais utiliser ces connaissances de maniĂšre illĂ©gale. Hacking Ă©thique uniquement.

Conclusion

Ce module est fondamental pour toute personne travaillant sur des systÚmes embarqués ou critiques. La sécurité matérielle est souvent négligée au profit de la sécurité logicielle, mais les attaques physiques sont réelles et efficaces.

Compétences transférables :

Pertinence professionnelle : Avec l’explosion de l’IoT, de l’industrie 4.0, et des vĂ©hicules autonomes, la sĂ©curitĂ© matĂ©rielle est un domaine en forte demande. Les ingĂ©nieurs formĂ©s Ă  ces problĂ©matiques sont recherchĂ©s.

Message principal : La sĂ©curitĂ© est un processus, pas un produit. Il faut constamment Ă©valuer, tester, et amĂ©liorer. Un systĂšme n’est jamais 100% sĂ»r, mais on peut augmenter considĂ©rablement le coĂ»t de l’attaque.

Recommandations :

Liens avec les autres cours :


📚 Documents de Cours

📖 Cours Complet

Cours complet de sécurité matérielle : attaques par canaux cachés, buffer overflow, vulnérabilités Spectre/Meltdown.

đŸ“„ TĂ©lĂ©charger

📖 Buffer Overflow

Cours sur les attaques par dépassement de tampon : exploitation, stack smashing, protections et contre-mesures.

đŸ“„ TĂ©lĂ©charger

📖 TP Cache Side-Channel Attack

Sujet de TP sur les attaques par canaux cachés via cache : timing attacks, Flush+Reload et expérimentations.

đŸ“„ TĂ©lĂ©charger


Cours suivi en 2023-2024 Ă  l’INSA Toulouse, DĂ©partement GĂ©nie Électrique et Informatique.