đ 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 :
- Comprendre les menaces pesant sur la sécurité matérielle
- MaĂźtriser les attaques par canaux auxiliaires (timing, cache, puissance)
- Analyser les vulnérabilités des implémentations cryptographiques
- Découvrir les attaques par dépassement de tampon et injection de code
- Implémenter des contre-mesures efficaces
- Ăvaluer la sĂ©curitĂ© physique des systĂšmes embarquĂ©s
Position dans le cursus
Ce module complÚte la formation en sécurité :
- Architecture Matérielle (S6) : fonctionnement processeurs, caches, mémoires
- MicrocontrÎleurs (S6) : systÚmes embarqués, ARM Cortex
- SystĂšmes dâExploitation (S5) : gestion mĂ©moire, processus
- Langage C et Assemblage (S5, S6) : programmation bas niveau
Il prépare à :
- Embedded IA for IoT (S9) : sécurité des objets connectés
- Projets professionnels : conception de systÚmes sécurisés
- Cybersécurité : approche globale hardware/software
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) :
- Introduction à la sécurité matérielle
- Attaques par canaux auxiliaires (timing, cache, puissance)
- Analyse de la consommation électrique (SPA, DPA, CPA)
- Attaques par injection de fautes
- Vulnérabilités logicielles (buffer overflow, shellcode)
- Contre-mesures matérielles et logicielles
Travaux pratiques (12h) :
- TP1 : Analyse de consommation sur microcontrĂŽleur STM32
- TP Cache et SCA : Attaques par analyse de cache, dĂ©tection dâouverture de fichiers
- TP3 Overflow : Exploitation de dépassements de tampon, shellcode, injection de code
- TP AES : Analyse de vulnérabilités dans implémentations OpenSSL
Ressources :
- 6 polycopiés de cours (slides, polycopiés détaillés)
- 2 TD avec corrections
- Outils : ChipWhisperer (analyse de puissance), GDB (débogage)
- Code source AES (OpenSSL versions 0.9.7a et 1.1.1t)
- Annales (4 sujets dâexamens)
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
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 :
- Consommation électrique
- Temps dâexĂ©cution
- Ămissions Ă©lectromagnĂ©tiques
- Contenu du cache
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 :
- Mesurer le temps dâexĂ©cution pour diffĂ©rents messages
- Analyser les variations temporelles
- Déduire quelle partie de la S-box a été accédée
- Récupérer progressivement les octets de la clé
Contre-mesures :
- ImplĂ©mentations Ă temps constant (mĂȘme durĂ©e quel que soit lâinput)
- Désactivation du cache pour opérations sensibles
- Ajout de bruit temporel (jitter)
Attaques par analyse de cache :
Le cache CPU peut révéler des informations sensibles.
Technique Prime+Probe :
- Attaquant remplit le cache avec ses propres données (Prime)
- Victime exécute opération cryptographique
- Attaquant mesure quelles lignes de cache ont été évincées (Probe)
- En déduire les accÚs mémoire de la victime
TP rĂ©alisĂ© : DĂ©tection dâouverture de fichier :
Programme spy.c :
- Vide (flush) le cache pour une adresse du fichier cible
- Attend un délai
- Mesure le temps dâaccĂšs Ă cette adresse
- Si temps < seuil : fichier en cache â fichier a Ă©tĂ© ouvert rĂ©cemment
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 :
- OpĂ©ration âcarrĂ©â visible
- OpĂ©ration âcarrĂ© puis multiplicationâ visible
- On déduit directement les bits de la clé privée
Differential Power Analysis (DPA) :
Analyse statistique sur de nombreuses traces.
Principe :
- Capturer N traces de consommation pour N messages différents
- Faire des hypothÚses sur une partie de la clé
- Prédire la consommation pour chaque hypothÚse
- Corréler prédictions avec traces réelles
- 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) :
- MicrocontrÎleur exécute des opérations (multiplications répétées)
- Oscilloscope capture la consommation électrique
- Analyse des traces pour identifier les opérations
- Corrélation entre données manipulées et consommation
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 :
- Le test échoue (mauvais mot de passe)
- Mais la faute inverse le rĂ©sultat â accĂšs accordĂ©
Contre-mesures :
- Redondance (double vérification)
- Codes correcteurs dâerreurs
- Détecteurs de glitches (capteurs de tension/horloge)
- Vérifications de cohérence
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 :
- Remplir le buffer avec du code malveillant (shellcode)
- Ăcraser lâadresse de retour pour pointer vers le shellcode
- 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 :
- Calcul de lâadresse du shellcode
- Construction du payload (NOP sled + shellcode + adresse retour)
- Injection via upload.py
- Obtention dâun shell avec privilĂšges
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) :
- Fonction memaccesstime(ptr) : mesure le temps pour accéder à une adresse
- Fonction clflush(ptr) : vide (flush) lâadresse du cache
- Boucle de profiling :
- AccĂ©der â mesurer (cache hit)
- Flush â accĂ©der â mesurer (cache miss)
- GĂ©nĂ©ration dâhistogrammes avec gnuplot
Résultats typiques :
- Cache hit : 10-50 cycles
- Cache miss : 200-400 cycles
Exploitation pour attaque :
Technique Flush+Reload :
- Flush une ligne de cache partagée avec la victime
- Victime exécute son code
- Attaquant mesure le temps de rechargement
- Si rapide : victime a accédé à cette ligne
Application : DĂ©tection dâouverture de fichier (spy.c) :
- Surveiller une adresse dâun fichier sensible
- Si le fichier est ouvert par un processus, il sera en cache
- Détection sans accÚs au systÚme de fichiers
5. Vulnérabilités cryptographiques - AES
AES (Advanced Encryption Standard) :
Algorithme de chiffrement par blocs, standard depuis 2001.
Structure :
- Blocs de 128 bits
- Clés de 128, 192 ou 256 bits
- 10, 12 ou 14 rondes selon taille de clé
- Opérations : SubBytes (S-box), ShiftRows, MixColumns, AddRoundKey
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) :
- AccĂšs direct aux tables T0, T1, T2, T3
- Indices dépendent des données et de la clé
- Vulnérable aux cache timing attacks
OpenSSL 1.1.1t (protégée) :
- Implémentation AES-NI (instructions matérielles)
- Pas dâaccĂšs mĂ©moire dĂ©pendant de la clĂ©
- Résistant aux cache timing attacks
AES-NI :
Instructions processeur dédiées (Intel, AMD depuis 2010) :
- AESENC, AESENCLAST : chiffrement
- AESDEC, AESDECLAST : déchiffrement
- AESIMC, AESKEYGENASSIST : génération de clés
Avantages :
- Performance élevée
- Implémentation résistante aux canaux auxiliaires
- Pas de tables en mémoire
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 :
- Surcoût en calcul et en aléatoire
- Difficile à implémenter correctement (fuites possibles)
Hiding :
Réduire le rapport signal/bruit dans les traces de consommation.
Techniques :
- Randomisation de lâordre des opĂ©rations
- Insertion dâopĂ©rations factices (dummy operations)
- Consommation constante (circuits Ă double rail)
Sécurité physique :
Capteurs :
- DĂ©tecteurs dâouverture du boĂźtier
- Capteurs de température, lumiÚre
- Capteurs de tension/fréquence anormales
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 :
- Capture de traces de consommation électrique
- Synchronisation avec cible (trigger)
- Analyses DPA, CPA
- Injection de glitches (clock, voltage)
GDB (GNU Debugger) :
Utilisé pour analyser les programmes vulnérables :
- Poser des breakpoints
- Examiner la pile et les registres
- Calculer les offsets pour exploitations
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é :
- Audit de sécurité de systÚmes embarqués
- Conception de produits résistants aux attaques physiques
- Certification sécuritaire (Common Criteria, FIPS)
Pour développeur embarqué :
- Ăcrire du code rĂ©sistant aux attaques (timing constant)
- Ăviter les vulnĂ©rabilitĂ©s classiques (buffer overflow)
- Tester la robustesse face aux fautes
Pour concepteur hardware :
- Intégrer des contre-mesures matérielles (capteurs, masking)
- Choisir des composants sécurisés (TEE, Secure Element)
- Ăvaluer les risques dĂšs la phase de design
Dans la vie courante :
- Comprendre les risques des objets connectés (caméras, serrures)
- Ăvaluer la sĂ©curitĂ© de produits (cartes bancaires, smartphones)
- Sensibiliser aux enjeux de cybersécurité
Limites et ouvertures
Limites du module :
- Peu dâapprofondissement sur les attaques EM (Ă©lectromagnĂ©tiques)
- Pas de manipulation rĂ©elle dâinjection laser ou voltage glitching
- Aspects légaux et éthiques peu abordés
Ouvertures vers :
- Secure Elements : HSM, TPM, Trusted Execution Environments (TEE)
- Post-Quantum Cryptography : résistance aux ordinateurs quantiques
- Formal Verification : preuves formelles de sécurité
- Bug Bounty : recherche éthique de vulnérabilités
Ă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 :
- Attaques adversariales (perturbations imperceptibles)
- Extraction de modĂšles par observation
- Backdoors dans modĂšles
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 :
- Analyse critique de la sĂ©curitĂ© dâun systĂšme
- Compréhension profonde du fonctionnement des processeurs et mémoires
- Capacité à intégrer la sécurité dÚs la conception
- Vision multidisciplinaire (hardware, software, cryptographie, physique)
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 :
- Approfondir avec des cours avancés (Riscure Academy, Coursera)
- Suivre les conférences de sécurité (Black Hat, DEF CON, CHES)
- Pratiquer sur des plateformes (Hack The Box, CTF sécurité hardware)
- Rejoindre des communautés (r/ReverseEngineering, forums spécialisés)
- Rester informé des nouvelles vulnérabilités (CVE, bulletins de sécurité)
Liens avec les autres cours :
- Architecture Matérielle - S6 : caches, processeurs
- MicrocontrÎleurs - S6 : ARM Cortex, systÚmes embarqués
- SystĂšmes dâExploitation - S5 : gestion mĂ©moire
- Langage C - S5 : programmation bas niveau
- Embedded IA for IoT - S9 : sécurité des objets connectés
đ Documents de Cours
đ Cours Complet
Cours complet de sécurité matérielle : attaques par canaux cachés, buffer overflow, vulnérabilités Spectre/Meltdown.
đ Buffer Overflow
Cours sur les attaques par dépassement de tampon : exploitation, stack smashing, protections et contre-mesures.
đ TP Cache Side-Channel Attack
Sujet de TP sur les attaques par canaux cachés via cache : timing attacks, Flush+Reload et expérimentations.
Cours suivi en 2023-2024 Ă lâINSA Toulouse, DĂ©partement GĂ©nie Ălectrique et Informatique.